Commit 1aac41fc authored by lvzhuangzhuang's avatar lvzhuangzhuang

Merge remote-tracking branch 'origin/master'

parents 6589c838 24fa7fd9
...@@ -36,16 +36,21 @@ ...@@ -36,16 +36,21 @@
"url": "https://gitee.com/y_project/RuoYi-Vue.git" "url": "https://gitee.com/y_project/RuoYi-Vue.git"
}, },
"dependencies": { "dependencies": {
"@riophae/vue-treeselect": "0.4.0",
"@vue/cli-plugin-babel": "4.4.6", "@vue/cli-plugin-babel": "4.4.6",
"@vue/cli-plugin-eslint": "4.4.6", "@vue/cli-plugin-eslint": "4.4.6",
"@vue/cli-service": "4.4.6", "@vue/cli-service": "4.4.6",
"@riophae/vue-treeselect": "0.4.0",
"af-table-column": "^1.0.3", "af-table-column": "^1.0.3",
"axios": "0.21.0", "axios": "0.21.0",
"babel-eslint": "10.1.0",
"chalk": "4.1.0",
"clipboard": "2.0.6", "clipboard": "2.0.6",
"connect": "3.6.6",
"core-js": "3.8.1", "core-js": "3.8.1",
"echarts": "4.9.0", "echarts": "4.9.0",
"element-ui": "2.15.0", "element-ui": "2.15.0",
"eslint": "7.15.0",
"eslint-plugin-vue": "7.2.0",
"exceljs": "^4.3.0", "exceljs": "^4.3.0",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"fuse.js": "6.4.3", "fuse.js": "6.4.3",
...@@ -54,45 +59,44 @@ ...@@ -54,45 +59,44 @@
"js-beautify": "1.13.0", "js-beautify": "1.13.0",
"js-cookie": "2.2.1", "js-cookie": "2.2.1",
"jsencrypt": "3.0.0-rc.1", "jsencrypt": "3.0.0-rc.1",
"lint-staged": "10.5.3",
"luckyexcel": "^1.0.1", "luckyexcel": "^1.0.1",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"quill": "1.3.7", "quill": "1.3.7",
"runjs": "4.4.2",
"sass": "1.32.0",
"sass-loader": "10.1.0",
"screenfull": "5.0.2", "screenfull": "5.0.2",
"script-ext-html-webpack-plugin": "2.1.5",
"scriptjs": "^2.5.9", "scriptjs": "^2.5.9",
"sortablejs": "1.10.2", "svg-sprite-loader": "5.1.1",
"uuid": "^9.0.0",
"vue": "2.6.12", "vue": "2.6.12",
"vue-append": "^2.2.0", "vue-append": "^2.2.0",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",
"vue-cropper": "0.5.5", "vue-cropper": "0.5.5",
"vue-router": "3.4.9", "vue-router": "3.4.9",
"vue-template-compiler": "2.6.12",
"vuedraggable": "2.24.3", "vuedraggable": "2.24.3",
"vuex": "3.6.0", "vuex": "3.6.0",
"xlsx": "^0.17.5", "xlsx": "^0.17.5"
"babel-eslint": "10.1.0",
"chalk": "4.1.0",
"connect": "3.6.6",
"eslint": "7.15.0",
"eslint-plugin-vue": "7.2.0",
"lint-staged": "10.5.3",
"runjs": "4.4.2",
"sass": "1.32.0",
"sass-loader": "10.1.0",
"script-ext-html-webpack-plugin": "2.1.5",
"svg-sprite-loader": "5.1.1",
"vue-template-compiler": "2.6.12"
}, },
"devDependencies": { "devDependencies": {
"@riophae/vue-treeselect": "0.4.0",
"@vue/cli-plugin-babel": "4.4.6", "@vue/cli-plugin-babel": "4.4.6",
"@vue/cli-plugin-eslint": "4.4.6", "@vue/cli-plugin-eslint": "4.4.6",
"@vue/cli-service": "4.4.6", "@vue/cli-service": "4.4.6",
"@riophae/vue-treeselect": "0.4.0",
"af-table-column": "^1.0.3", "af-table-column": "^1.0.3",
"axios": "0.21.0", "axios": "0.21.0",
"babel-eslint": "10.1.0",
"chalk": "4.1.0",
"clipboard": "2.0.6", "clipboard": "2.0.6",
"connect": "3.6.6",
"core-js": "3.8.1", "core-js": "3.8.1",
"echarts": "4.9.0", "echarts": "4.9.0",
"element-ui": "2.15.0", "element-ui": "2.15.0",
"eslint": "7.15.0",
"eslint-plugin-vue": "7.2.0",
"exceljs": "^4.3.0", "exceljs": "^4.3.0",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"fuse.js": "6.4.3", "fuse.js": "6.4.3",
...@@ -101,33 +105,27 @@ ...@@ -101,33 +105,27 @@
"js-beautify": "1.13.0", "js-beautify": "1.13.0",
"js-cookie": "2.2.1", "js-cookie": "2.2.1",
"jsencrypt": "3.0.0-rc.1", "jsencrypt": "3.0.0-rc.1",
"lint-staged": "10.5.3",
"luckyexcel": "^1.0.1", "luckyexcel": "^1.0.1",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"quill": "1.3.7", "quill": "1.3.7",
"runjs": "4.4.2",
"sass": "1.32.0",
"sass-loader": "10.1.0",
"screenfull": "5.0.2", "screenfull": "5.0.2",
"script-ext-html-webpack-plugin": "2.1.5",
"scriptjs": "^2.5.9", "scriptjs": "^2.5.9",
"sortablejs": "1.10.2", "sortablejs": "^1.10.2",
"svg-sprite-loader": "5.1.1",
"vue": "2.6.12", "vue": "2.6.12",
"vue-append": "^2.2.0", "vue-append": "^2.2.0",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",
"vue-cropper": "0.5.5", "vue-cropper": "0.5.5",
"vue-router": "3.4.9", "vue-router": "3.4.9",
"vue-template-compiler": "2.6.12",
"vuedraggable": "2.24.3", "vuedraggable": "2.24.3",
"vuex": "3.6.0", "vuex": "3.6.0",
"xlsx": "^0.17.5", "xlsx": "^0.17.5"
"babel-eslint": "10.1.0",
"chalk": "4.1.0",
"connect": "3.6.6",
"eslint": "7.15.0",
"eslint-plugin-vue": "7.2.0",
"lint-staged": "10.5.3",
"runjs": "4.4.2",
"sass": "1.32.0",
"sass-loader": "10.1.0",
"script-ext-html-webpack-plugin": "2.1.5",
"svg-sprite-loader": "5.1.1",
"vue-template-compiler": "2.6.12"
}, },
"engines": { "engines": {
"node": ">=8.9", "node": ">=8.9",
......
<template> <template>
<div class="index"> <div class="container">
<!--<div class="el-login-header">
<img src="../assets/logo/logo.png" width="80" height="80" style="vertical-align: middle;margin-bottom: 20px;">
<span class="text">开滦(集团)有限责任公司</span>
</div>-->
<div class="main-content">
</div>
<div class="main-footer">
<span>开滦集团财务共享中心</span>
<span class="split">|</span>
<span>河北天翼科贸发展有限公司</span>
</div> </div>
</div>
<!-- 开滦(集团)财务共享中心&河北天翼科贸发展有限公司-->
</template> </template>
<script> <script>
...@@ -28,21 +34,102 @@ export default { ...@@ -28,21 +34,102 @@ export default {
} }
} }
</script> </script>
<style rel="stylesheet/scss" lang="scss"> <style scoped>
.index { .container{
display: flex; display: flex;
justify-content: center; flex-direction: column;
align-items: center; height: calc(100vh - 84px);
height: 855px;
background-image: url("../assets/images/login-background2.jpg"); background-image: url("../assets/images/login-background2.jpg");
background-position: center;
background-size: cover; background-size: cover;
} }
.title {
margin: 0px auto 30px auto;
text-align: center;
color: #707070;
}
.main-footer{
position: absolute;
left: 0;
bottom: 0;
right: 0;
z-index: 10;
color: #fff;
font-size: 18px;
display: flex;
align-items: center;
justify-content: center;
padding: 15px;
}
.main-footer .split{
padding: 0 10px;
font-size: 12px;
}
</style> </style>
<!--<template>-->
<!-- <div class="container">-->
<!-- <div class="index">-->
<!-- </div>-->
<!-- <div class="input" style="position: absolute; bottom: 0;">-->
<!-- 开发中心-->
<!-- </div>-->
<!-- </div>-->
<!--&lt;!&ndash; 开滦(集团)财务共享中心&河北天翼科贸发展有限公司&ndash;&gt;-->
<!--</template>-->
<!--<script>-->
<!--export default {-->
<!-- name: 'Index',-->
<!-- components: {-->
<!-- },-->
<!-- data() {-->
<!-- return {-->
<!-- }-->
<!-- },-->
<!-- methods: {-->
<!-- }-->
<!--}-->
<!--</script>-->
<!--<style rel="stylesheet/scss" lang="scss">-->
<!-- .index {-->
<!-- display: flex;-->
<!-- justify-content: center;-->
<!-- align-items: center;-->
<!-- flex: 9;-->
<!-- height: 90vh;-->
<!-- background-image: url("../assets/images/login-background2.jpg");-->
<!-- background-position: center;-->
<!-- background-size: cover;-->
<!-- }-->
<!-- .title {-->
<!-- margin: 0px auto 30px auto;-->
<!-- text-align: center;-->
<!-- color: #707070;-->
<!-- }-->
<!-- .input{-->
<!-- flex: 1;-->
<!-- font-size: 30px;-->
<!-- color: #1b1b19;-->
<!-- }-->
<!-- .container {-->
<!-- display: flex;-->
<!-- flex-direction: column;-->
<!-- height: 100vh;-->
<!-- }-->
<!--</style>-->
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
...@@ -42,17 +41,22 @@ ...@@ -42,17 +41,22 @@
:limit="1" :limit="1"
:file-list="fileList" :file-list="fileList"
:disabled="disableNextButton" :disabled="disableNextButton"
:show-file-list=false
> >
<el-button plain size="mini" icon="el-icon-download" type="primary" :disabled="disableNextButton" >导入</el-button> <el-button plain size="mini" icon="el-icon-download" type="primary" :disabled="disableNextButton" >导入</el-button>
</el-upload> </el-upload>
</el-col> </el-col>
</el-row> </el-row>
<!-- luckysheet容器 --> <!-- luckysheet容器 -->
<div <div
id="luckysheet" id="luckysheet"
style="margin: 0px; padding: 0px; position: absolute; width: 100%;left: 0px; top: 110px; height: 1000px; z-index: 0" style="margin: 0px; padding: 0px; position: absolute; width: 100%; height:78vh; z-index: 0"
> >
</div> </div>
<div v-if="showMask" class="mask">
<div class="loading-spinner"></div>
</div>
</div> </div>
</template> </template>
...@@ -77,6 +81,7 @@ export default { ...@@ -77,6 +81,7 @@ export default {
name: "Mymodule", name: "Mymodule",
data() { data() {
return { return {
showMask:false,
uuid:'', uuid:'',
//弹出页面的表名 //弹出页面的表名
from_name : "", from_name : "",
...@@ -245,7 +250,7 @@ export default { ...@@ -245,7 +250,7 @@ export default {
/** 导入事件*/ /** 导入事件*/
async handleFileChange(evt) { async handleFileChange(evt) {
let exx; let exx;
this.showMask = true;
const cons = new Promise((resolve, reject) => { const cons = new Promise((resolve, reject) => {
LuckyExcel.transformExcelToLucky(evt, exportJson => { LuckyExcel.transformExcelToLucky(evt, exportJson => {
exx = exportJson; exx = exportJson;
...@@ -257,7 +262,10 @@ export default { ...@@ -257,7 +262,10 @@ export default {
const exportJson = await cons; const exportJson = await cons;
await this.summary(exportJson); await this.summary(exportJson);
console.log('summary 执行完毕'); console.log('summary 执行完毕');
// 导入完成后关闭遮罩层
this.showMask = false;
this.submit(exportJson); this.submit(exportJson);
} catch (Error) { } catch (Error) {
this.$message({ this.$message({
message: Error.message, message: Error.message,
...@@ -1056,4 +1064,34 @@ function generateUUID() { ...@@ -1056,4 +1064,34 @@ function generateUUID() {
return array.join("-"); return array.join("-");
} }
</script> </script>
<style>
.mask {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
}
.loading-spinner {
/* 添加你的加载动画样式 */
width: 40px;
height: 40px;
border-radius: 50%;
border: 4px solid #f3f3f3;
border-top: 4px solid #3498db;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
</style>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
maxlength="8" maxlength="8"
/> />
</el-form-item> </el-form-item>
<!-- <el-form-item> <!-- <el-form-item>
<el-checkbox v-model="zero">是否比较0或空</el-checkbox> <el-checkbox v-model="zero">是否比较0或空</el-checkbox>
</el-form-item>--> </el-form-item>-->
<el-form-item> <el-form-item>
...@@ -60,18 +60,15 @@ ...@@ -60,18 +60,15 @@
>导出</el-button> >导出</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button icon="el-icon-s-opportunity <el-button icon="el-icon-s-opportunity" size="mini" @click="addToMap">生成</el-button>
" size="mini" @click="addToMap">生成</el-button>
</el-col> </el-col>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery" class="right-float">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" class="right-float">重置</el-button>
</el-row> </el-row>
<!-- luckysheet容器 --> <!-- luckysheet容器 -->
<div <div
id="luckysheet" id="luckysheet"
style="margin: 0px; padding: 0px; position: absolute; width: 100%;left: 0px; top: 105px; height: 1000px; z-index: 0" style="margin: 0px; padding: 0px; position: absolute; width: 100%;left: 0px; top: 105px; height: 75vh; z-index: 0"
> ></div>
</div>
</div> </div>
</template> </template>
...@@ -247,10 +244,12 @@ export default { ...@@ -247,10 +244,12 @@ export default {
for(let i=0;i<value.length;i++){ for(let i=0;i<value.length;i++){
let row=value[i][0]-1,cell=this.stringTonum(value[i][1])-1; let row=value[i][0]-1,cell=this.stringTonum(value[i][1])-1;
//let row=value[i][0]-1,cell=value[i][1]-1; //let row=value[i][0]-1,cell=value[i][1]-1;
let sd=luckysheet.getCellValue(row,cell,{type:"ps"}); let sd=luckysheet.getCellValue(row,cell,{type:"bg"});
if(sd===null){ //用批注进行比较的时候把下面的!==判断去掉
luckysheet.setCellValue(row, cell, {bg: "#e85f5f"}) //let sd=luckysheet.getCellValue(row,cell,{type:"ps"});
luckysheet.setCellValue(row, cell, { if(sd===null || sd!=="#e85f61"){
luckysheet.setCellValue(row, cell, {bg: "#e85f61"})
/* luckysheet.setCellValue(row, cell, {
ps: { //批注 ps: { //批注
"left": 92, //批注框左边距 "left": 92, //批注框左边距
"top": 10, //批注框上边距 "top": 10, //批注框上边距
...@@ -259,11 +258,11 @@ export default { ...@@ -259,11 +258,11 @@ export default {
"value": key+"表有误", //批准内容 "value": key+"表有误", //批准内容
"isshow": false //批注框为显示状态 "isshow": false //批注框为显示状态
} }
}) })*/
maper.set("("+(row+1)+","+value[i][1]+")",1); maper.set("("+(row+1)+","+value[i][1]+")",1);
}else{ }else{
let sd=luckysheet.getCellValue(row,cell,{type:"ps"}).value; //let sd=luckysheet.getCellValue(row,cell,{type:"ps"}).value;
luckysheet.setCellValue(row, cell, { /*luckysheet.setCellValue(row, cell, {
ps: { //批注 ps: { //批注
"left": 92, //批注框左边距 "left": 92, //批注框左边距
"top": 10, //批注框上边距 "top": 10, //批注框上边距
...@@ -272,29 +271,12 @@ export default { ...@@ -272,29 +271,12 @@ export default {
"value": sd+'\n;'+key+"表有误", //批准内容 "value": sd+'\n;'+key+"表有误", //批准内容
"isshow": false //批注框为显示状态 "isshow": false //批注框为显示状态
} }
}) })*/
maper.set("("+(row+1)+","+value[i][1]+")",maper.get("("+(row+1)+","+value[i][1]+")")+1); maper.set("("+(row+1)+","+value[i][1]+")",maper.get("("+(row+1)+","+value[i][1]+")")+1);
} }
} }
}) })
/*let num=luckysheet.getSheet().data[0].length;
let data=luckysheet.getSheet().data;
for(let j=0;j<map.size;j++){
let cell;
for(let i=0;i<num;i++){
if(data[0][i]==null){
cell=i;
break;
}
}
let dfs=map.get(2);
let a=value.join("==");
luckysheet.setCellValue(j,cell,map);
luckysheet.setCellValue(j,cell+1 ,);
}*/
let row; let row;
let num=luckysheet.getSheet().data.length; let num=luckysheet.getSheet().data.length;
let data=luckysheet.getSheet().data; let data=luckysheet.getSheet().data;
...@@ -305,7 +287,11 @@ export default { ...@@ -305,7 +287,11 @@ export default {
} }
} }
//生成多少条数据添加多少行 //生成多少条数据添加多少行
for (let i=0;i<maper.size;i++){ let asd=maper.size+map.size;
if(row+asd>=num){
for (let i=0;i<=row+asd-num;i++){
luckysheet.insertRow(row + 1);
}
luckysheet.insertRow(row + 1); luckysheet.insertRow(row + 1);
} }
row=row+1; row=row+1;
...@@ -326,24 +312,6 @@ export default { ...@@ -326,24 +312,6 @@ export default {
luckysheet.setCellValue(row+k,1 ,froms[i][1]); luckysheet.setCellValue(row+k,1 ,froms[i][1]);
k++; k++;
} }
/*let k=0;
map.forEach((value,key)=>{
let num=luckysheet.getSheet().data[0].length;
let data=luckysheet.getSheet().data;
let cell;
for(let i=0;i<num;i++){
if(data[0][i]==null){
cell=i;
break;
}
}
let a=value.join("==");
luckysheet.setCellValue(k,cell,key);
luckysheet.setCellValue(k,cell+1 ,a);
k++
})
*/
}, },
handleFileChange1(evt) { handleFileChange1(evt) {
if (this.row==="") { if (this.row==="") {
...@@ -376,11 +344,13 @@ export default { ...@@ -376,11 +344,13 @@ export default {
let as=0; let as=0;
let d1=window.luckysheet.transToData(ddd.celldata); let d1=window.luckysheet.transToData(ddd.celldata);
let d2=window.luckysheet.transToData(exportJson.sheets[0].celldata); let d2=window.luckysheet.transToData(exportJson.sheets[0].celldata);
let r1=d1.length,r2=d2.length,c1=d1[0].length,c2=d2[0].length;
let row=(r1<=r2)?r1:r2;
let cell=(c1<=c2)?c1:c2;
let array=[]; let array=[];
let r=this.row-1; let r=this.row-1;
try { for(let i=r;i<row;i++) {
for(let i=r;i<d1.length;i++) { for (let j = 0; j <cell; j++) {
for (let j = 0; j <=d1[0].length; j++) {
//第一个表的单元格为null直接跳出 //第一个表的单元格为null直接跳出
if(d1[i][j]==null ){ if(d1[i][j]==null ){
continue continue
...@@ -401,12 +371,20 @@ export default { ...@@ -401,12 +371,20 @@ export default {
/*if((typeof(d1[i][j].v)=="string" && d2[i][j].v==undefined)){ /*if((typeof(d1[i][j].v)=="string" && d2[i][j].v==undefined)){
continue continue
}*/ }*/
if((isNaN(d1[i][j].v) && d2[i][j].v==undefined)){ //第一个表为合并单元格 且第二个内没有值
if(d1[i][j].mc!=undefined &&d2[i][j].v==undefined){
continue
}
//第二个表为合并单元格 且第一个内没有值
if(d2[i][j].mc!=undefined &&d1[i][j].v==undefined){
continue continue
}
if((isNaN(d1[i][j].v) && d2[i][j].v==undefined)){
} }
// 第二个表内数据为string型 且 第一个表只有样式内部为空 // 第二个表内数据为string型 且 第一个表只有样式内部为空
if(isNaN(d2[i][j].v)&& d1[i][j].v==undefined){ if(isNaN(d2[i][j].v)&& d1[i][j].v==undefined){
continue
} }
// 没有选只比较数值 且 第一个表内数据为string型 且 第二个表内数据位string型 // 没有选只比较数值 且 第一个表内数据为string型 且 第二个表内数据位string型
if(this.numm!=false &&(isNaN(d1[i][j].v)&&isNaN(d2[i][j].v))){ if(this.numm!=false &&(isNaN(d1[i][j].v)&&isNaN(d2[i][j].v))){
...@@ -459,15 +437,8 @@ export default { ...@@ -459,15 +437,8 @@ export default {
type: "success"}); type: "success"});
} }
}catch (err){
this.$message({
message: "导入失败,导入文件与对比文件有所不匹",
type: "error"});
}
} })
)
}, },
/** 导出设置 */ /** 导出设置 */
handleExport: debounce(function() { handleExport: debounce(function() {
...@@ -521,4 +492,3 @@ function debounce(func, delay) { ...@@ -521,4 +492,3 @@ function debounce(func, delay) {
}; };
} }
</script> </script>
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<!-- luckysheet容器 --> <!-- luckysheet容器 -->
<div <div
id="luckysheet" id="luckysheet"
style="margin: 0px; padding: 0px; position: absolute; width: 100%;left: 0px; top: 60px; height: 1000px; z-index: 0" style="margin: 0px; padding: 0px; position: absolute; width: 100%;height: 78vh; z-index: 0"
> >
</div> </div>
...@@ -244,9 +244,12 @@ export default { ...@@ -244,9 +244,12 @@ export default {
let as=0; let as=0;
let d1=window.luckysheet.transToData(ddd.celldata); let d1=window.luckysheet.transToData(ddd.celldata);
let d2=window.luckysheet.transToData(exportJson.sheets[0].celldata); let d2=window.luckysheet.transToData(exportJson.sheets[0].celldata);
let r1=d1.length,r2=d2.length,c1=d1[0].length,c2=d2[0].length;
let row=(r1<=r2)?r1:r2;
let cell=(c1<=c2)?c1:c2;
try { try {
for(let i=0;i<d1.length;i++) { for(let i=0;i<row;i++) {
for (let j = 0; j <=d1[0].length; j++) { for (let j = 0; j <cell; j++) {
//第一个表的单元格为null直接跳出 //第一个表的单元格为null直接跳出
if(d1[i][j]==null ){ if(d1[i][j]==null ){
continue continue
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment