Browse Source

修改luckysheet源码,到底什么原理看不懂打着debugger改的

luckysheet-xiaowang-Intelligen
mk 6 months ago
parent
commit
c238382366
  1. 4
      public/luckysheet/luckysheet.umd.js
  2. 4
      public/luckysheet/luckysheet.umd.js.map
  3. 17
      src/views/modules/base/smartExcel/cpts/excel-upload-data.vue
  4. 135
      src/views/modules/base/smartExcel/cpts/excel-view.vue

4
public/luckysheet/luckysheet.umd.js

File diff suppressed because one or more lines are too long

4
public/luckysheet/luckysheet.umd.js.map

File diff suppressed because one or more lines are too long

17
src/views/modules/base/smartExcel/cpts/excel-upload-data.vue

@ -154,10 +154,6 @@ export default {
type: Array,
default: () => []
},
sheetRow:{
type:Number,
default:0
}
},
created() {
this.loadPersonGroup();
@ -204,21 +200,12 @@ export default {
const url = '/actual/base/residentBaseInfo/exportOneSheet'
const { data, code, msg } = await requestPost(url, this.formData)
if (code === 0) {
this.updataSheet(data)
this.dataListLoading = false;
this.$emit('handleUploadDataHide',data)
} else {
console.log(msg);
}
},
updataSheet(list) {
list.forEach((item, index) => {
luckysheet.insertRow(this.currentTable[0].data.length, 1)
for (let k in item) {
luckysheet.setCellValue(index + this.sheetRow + 1, k - 1, item[k])
}
})
this.dataListLoading = false;
this.$emit('handelUploadDataHide')
},
async loadPersonGroup() {
const url = "/oper/customize/fileModeColumns/listModule";
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/isServiceProject/service/serviceScopeTree'

135
src/views/modules/base/smartExcel/cpts/excel-view.vue

@ -3,10 +3,10 @@
<div class='flex'>
<div class="left_menu flex flex-y" v-if="!sheetTotal">
<el-button type="text" round @click="handelClickBack" icon="el-icon-back">返回</el-button>
<section >
<h3>{{menuList[0].taskTitle}}</h3>
<p>{{menuList[0].agencyName}}</p>
</section>
<section>
<h3>{{ menuList[0].taskTitle }}</h3>
<p>{{ menuList[0].agencyName }}</p>
</section>
<section>
<div :class="{ 'menu_item': true, 'active': menuActive === index }" v-for="(item, index) in menuList"
:key="index" @click="handleClickMenu(index, item)">
@ -25,17 +25,20 @@
</div>
<div>
<!-- -->
<el-button type="danger" v-if="pageType === 'add' && !sheetTotal&&mergeObj.taskStateName=='已提交'" @click="handleClickCurrencyEvent('rejected')"> 驳回重提</el-button>
<el-button type="primary" v-if="pageType === 'add'&& !sheetTotal&&mergeObj.taskStateName=='已提交'" @click="handleClickCurrencyEvent('archived')"> 审核存档</el-button>
<el-button type="primary" v-if="pageType === 'filling'&& (taskStateName=='处理中'|| taskStateName=='已驳回')" @click="handleClickCurrencyEvent('submit')"> 提交</el-button>
<el-button type="danger" v-if="pageType === 'add' && !sheetTotal && mergeObj.taskStateName == '已提交'"
@click="handleClickCurrencyEvent('rejected')"> 驳回重提</el-button>
<el-button type="primary" v-if="pageType === 'add' && !sheetTotal && mergeObj.taskStateName == '已提交'"
@click="handleClickCurrencyEvent('archived')"> 审核存档</el-button>
<el-button type="primary" v-if="pageType === 'filling' && (taskStateName == '处理中' || taskStateName == '已驳回')"
@click="handleClickCurrencyEvent('submit')"> 提交</el-button>
</div>
</div>
<div id="luckysheet"></div>
</div>
<el-dialog title="上传共享数据" v-if="showUploadData" :visible.sync="showUploadData" width="60%"
:close-on-click-modal="false">
<excelUploadData @handelUploadDataHide="handelUploadDataHide" :currentTable="currentTable"
:btnLoading="btnLoading" :sheetRow="sheetR">
<excelUploadData @handleUploadDataHide="handleUploadDataHide" :currentTable="currentTable"
:btnLoading="btnLoading">
</excelUploadData>
</el-dialog>
</div>
@ -47,6 +50,8 @@ import LuckyExcel from 'luckyexcel';
import options from "@/utils/luckysheetConfig.js";
import { mapGetters } from 'vuex'
import { requestPost, requestGet } from "@/js/dai/request";
import nextTick from "dai-js/tools/nextTick";
export default {
data() {
@ -57,7 +62,7 @@ export default {
socket: null,
currentTable: null,
currentId: '',
btnLoading:false,
btnLoading: false,
};
},
props: {
@ -73,17 +78,17 @@ export default {
type: Boolean,
default: false
},
infoObj:{
type:Object,
default:()=>{}
infoObj: {
type: Object,
default: () => { }
},
mergeObj:{
type:Object,
default:()=>{}
mergeObj: {
type: Object,
default: () => { }
},
userId:{
type:String,
default:''
userId: {
type: String,
default: ''
},
taskStateName: {
type: String,
@ -101,13 +106,13 @@ export default {
},
watch: {},
async mounted() {
console.log(this.mergeObj,"dskjlfsdklf");
console.log(this.mergeObj, "dskjlfsdklf");
if (this.sheetTotal) {
this.currentId = this.workbookId;
this.loadWorkBook()
} else {
this.getTaskList()
this.getTaskList()
}
},
methods: {
@ -116,7 +121,7 @@ export default {
taskId: this.workbookId,//Id
pageNo: 1,
pageSize: 1000,
userId:this.userId
userId: this.userId
}
let { data, code, msg } = await requestGet('/actual/base/communityOneTablePeriodPublish/myPageList', parm)
if (code === 0) {
@ -150,19 +155,24 @@ export default {
this.$message.success('没有找到异常');
}
}
},
},
findUniqueElements(A, B) {
// Brc
const bCombinations = new Set(B.map(item => `${item.r},${item.c}`));
// AB
return A.filter(item => !bCombinations.has(`${item.r},${item.c}`));
},
findUniqueElements(A, B) {
// Brc
const bCombinations = new Set(B.map(item => `${item.r},${item.c}`));
// AB
return A.filter(item => !bCombinations.has(`${item.r},${item.c}`));
},
onClickUplond() {
this.showUploadData = true;
let list = luckysheet.getAllSheets()
this.currentTable = list.filter(item => item.status == '1')
},
async handleUploadDataHide(val) {
this.showUploadData = false;
luckysheet.insertRow(this.currentTable[0].data.length, 1)
const findLastNonNullIndex = (arr) => {
for (let i = arr.length - 1; i >= 0; i--) {
const subArray = arr[i];
@ -174,12 +184,29 @@ export default {
return -1; // -1
};
this.sheetR = findLastNonNullIndex(this.currentTable[0].data)
if (this.sheetR != -1) {
luckysheet.insertRow(this.currentTable[0].data.length, 5)//5
}
console.log(this.currentTable[0].data.length, val.length);
luckysheet.insertRow(this.currentTable[0].data.length, { number: val.length });
await nextTick(2000)
let newArray = val.map(obj => {
return Object.keys(obj).map(key => {
return { m: obj[key], "ct": { "fa": "General", "t": "g" }, v: obj[key] };
});
});
console.log(newArray, '处理后数据');
let bottomRightCorner = this.numberToLetter(Object.keys(val[0]).length)//
luckysheet.setRangeValue(newArray, {
range: `A${this.sheetR + 2}:${bottomRightCorner}${this.sheetR + val.length}`,
})
},
handelUploadDataHide() {
this.showUploadData = false
//
numberToLetter(num) {
let letter = '';
while (num > 0) {
num -= 1; // 0 1 -> 'A'2 -> 'B'...
letter = String.fromCharCode(num % 26 + 65) + letter; // 65 'A' Unicode
num = Math.floor(num / 26);
}
return letter;
},
loadWorkBook() {
window.luckysheet.destroy();
@ -212,30 +239,30 @@ export default {
},
//
async handleClickCurrencyEvent(val){
const url = '/actual/base/communityOneTablePeriodPublish/update'
let parm = {
...this.infoObj
}
parm.taskState = val;
if(val === 'archived'){
this.workbookMerge()
}
const {data,code,msg} = await requestPost(url,parm)
if(code === 0){
this.$message.success('操作成功')
}else{
console.log(msg);
}
async handleClickCurrencyEvent(val) {
const url = '/actual/base/communityOneTablePeriodPublish/update'
let parm = {
...this.infoObj
}
parm.taskState = val;
if (val === 'archived') {
this.workbookMerge()
}
const { data, code, msg } = await requestPost(url, parm)
if (code === 0) {
this.$message.success('操作成功')
} else {
console.log(msg);
}
},
async workbookMerge(){
async workbookMerge() {
const url = '/actual/base/luckySheet/workbook/merge'
let parm = {
sourceWorkbookId:this.mergeObj.subWorkBookId,
targetWorkbookId:this.mergeObj.workBookId
sourceWorkbookId: this.mergeObj.subWorkBookId,
targetWorkbookId: this.mergeObj.workBookId
}
const {data,code,msg} = await requestPost(url,parm)
if(code === 0){
const { data, code, msg } = await requestPost(url, parm)
if (code === 0) {
console.log('合并成功');
}
},

Loading…
Cancel
Save