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. 141
      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, type: Array,
default: () => [] default: () => []
}, },
sheetRow:{
type:Number,
default:0
}
}, },
created() { created() {
this.loadPersonGroup(); this.loadPersonGroup();
@ -204,21 +200,12 @@ export default {
const url = '/actual/base/residentBaseInfo/exportOneSheet' const url = '/actual/base/residentBaseInfo/exportOneSheet'
const { data, code, msg } = await requestPost(url, this.formData) const { data, code, msg } = await requestPost(url, this.formData)
if (code === 0) { if (code === 0) {
this.updataSheet(data) this.dataListLoading = false;
this.$emit('handleUploadDataHide',data)
} else { } else {
console.log(msg); 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() { async loadPersonGroup() {
const url = "/oper/customize/fileModeColumns/listModule"; const url = "/oper/customize/fileModeColumns/listModule";
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/isServiceProject/service/serviceScopeTree' // const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/isServiceProject/service/serviceScopeTree'

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

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

Loading…
Cancel
Save