{"remainingRequest":"D:\\jenkins\\workspace\\cssc-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\cssc-fvue\\src\\components\\ImportExportData\\DataTemplateSetting.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\cssc-fvue\\src\\components\\ImportExportData\\DataTemplateSetting.vue","mtime":1667804638384},{"path":"D:\\jenkins\\workspace\\cssc-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\cssc-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\cssc-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport utils from '@/hotent-ui-util'\r\nimport portal from '@/api/portal'\r\nimport AddFields from '@/components/ImportExportData/AddFields'\r\nimport FormatJson from '@/components/ImportExportData/FormatJson'\r\nexport default {\r\n name: 'DataTemplateSetting',\r\n components: {AddFields, FormatJson},\r\n props: {\r\n // 页面组件别名\r\n bizCode: {\r\n type: String,\r\n default: '',\r\n required: true,\r\n },\r\n // 模板文件名称\r\n tempFiles: {\r\n type: String,\r\n default: '',\r\n required: true,\r\n },\r\n type: {\r\n type: String,\r\n default: 'import',\r\n required: true,\r\n validator: (type) => {\r\n if (type == 'import' || 'export') {\r\n return true\r\n } else {\r\n return false\r\n }\r\n },\r\n },\r\n originAPIOptions: {\r\n type: Object,\r\n default: () => {},\r\n required: true,\r\n },\r\n dataBaseOptions: {\r\n type: Object,\r\n default: () => {},\r\n required: true,\r\n },\r\n },\r\n computed: {\r\n title() {\r\n if (this.type == 'import') {\r\n return '导入模板配置'\r\n } else {\r\n return '导出模板配置'\r\n }\r\n },\r\n },\r\n data() {\r\n return {\r\n dialogShow: false,\r\n tableHeight: 300,\r\n tempId: '',\r\n tempData: {}, // 模板基础数据\r\n data: [],\r\n loading: false,\r\n }\r\n },\r\n mounted() {\r\n this.calcTableHeight()\r\n this.$root.$on('resize', () => {\r\n this.calcTableHeight(500)\r\n })\r\n },\r\n methods: {\r\n changeViewType(index, row) {\r\n let tempRow = utils.deepClone(row)\r\n tempRow.fieldDataJson = ''\r\n this.data.splice(index, 1, tempRow)\r\n },\r\n checkNumber(index, row, num) {\r\n let number\r\n if (!num) {\r\n number = 0\r\n } else {\r\n number = parseInt(num)\r\n if (number < 0) {\r\n number = 0\r\n }\r\n }\r\n row.orderIndex = number\r\n this.data.splice(index, 1, row)\r\n },\r\n sortData() {\r\n this.data.sort((a, b) => {\r\n const nameA = a.orderIndex\r\n const nameB = b.orderIndex\r\n if (nameA < nameB) {\r\n return -1\r\n }\r\n if (nameA > nameB) {\r\n return 1\r\n }\r\n return 0\r\n })\r\n },\r\n kvJson(json) {\r\n let kvJson = {}\r\n if (json) {\r\n let temp = JSON.parse(json)\r\n temp.forEach((item) => {\r\n kvJson[item.value] = item.label\r\n })\r\n kvJson = JSON.stringify(kvJson)\r\n }\r\n return kvJson\r\n },\r\n // 保存配置\r\n handleSave() {\r\n if(!this.data.length){\r\n this.$message.warning('请配置模板!')\r\n return\r\n }\r\n let dataParams = utils.deepClone(this.data)\r\n dataParams.forEach((item, index) => {\r\n if (this.tempId) {\r\n item.tempId = this.tempId;\r\n }\r\n\r\n item.type = this.type == 'import' ? 2 : 1\r\n item.fieldType = 1\r\n delete item.dataType\r\n delete item.fieldDesc\r\n delete item.key\r\n delete item.tableName\r\n delete item.columnComment\r\n delete item.columnName\r\n })\r\n let data = {\r\n excelTemp: {\r\n id: this.tempData.id,\r\n tempFiles: this.tempFiles,\r\n bizCode: this.bizCode,\r\n dbDataBase: this.dataBaseOptions.tableSchema,\r\n dbSourceId: this.dataBaseOptions.dataBaseId,\r\n dbTable: this.dataBaseOptions.tableName,\r\n type:\r\n this.type == 'import'\r\n ? 2\r\n : this.type == 'export'\r\n ? 1\r\n : 'null', // 类型不对报错 类型(1:导出 2:导入)\r\n },\r\n fields: dataParams,\r\n }\r\n portal.saveTemplate(data).then((res) => {\r\n console.log(res)\r\n if (res.state) {\r\n this.$message.success('保存成功')\r\n this.closeDialog();\r\n this.$emit('reload')\r\n }\r\n })\r\n },\r\n // 返回json赋值\r\n handleGetJSon(json, scope) {\r\n let tempRow = utils.deepClone(scope.row)\r\n tempRow.fieldDataJson = json\r\n this.data.splice(scope.$index, 1, tempRow)\r\n },\r\n // 编辑json\r\n openSetJson(scope) {\r\n this.$refs.setJson.openDialog(scope)\r\n },\r\n // 打开配置\r\n openDialog(tempId) {\r\n this.tempId = tempId\r\n this.dialogShow = true\r\n if (tempId) {\r\n this.loadTempData(tempId)\r\n }\r\n\r\n // 取消拖拽排序\r\n // this.$nextTick(() => {\r\n // this.setDraggable()\r\n // })\r\n },\r\n // 查询已有配置\r\n loadTempData(id) {\r\n this.loading = true\r\n portal.loadTempData(id).then((res) => {\r\n this.tempData = res.excelTemp\r\n this.data = this.formatData(res.fields)\r\n this.loading = false\r\n })\r\n },\r\n // 格式化回填数据\r\n formatData(data) {\r\n data.forEach((item, index) => {\r\n item.key = index\r\n item.fieldViewType = parseInt(item.fieldViewType)\r\n })\r\n return data\r\n },\r\n // 关闭页面重置数据\r\n closeDialog() {\r\n this.data = []\r\n this.dialogShow = false\r\n },\r\n // 打开添加字段弹窗\r\n openAddFieldsDialog() {\r\n this.$refs.AddFields.openDialog()\r\n },\r\n // 对象数组去重\r\n unique(arr) {\r\n const res = new Map()\r\n return arr.filter(\r\n (arr) => !res.has(arr.fieldName) && res.set(arr.fieldName, 1)\r\n )\r\n },\r\n // 添加字段\r\n handleAddFields(row) {\r\n const addFields = utils.deepClone(row)\r\n const originFields = utils.deepClone(this.data)\r\n let newTarget = originFields.concat(addFields)\r\n if (this.type == 'export') {\r\n newTarget.sort((a, b) => {\r\n const nameA = a.fieldName.toUpperCase()\r\n const nameB = b.fieldName.toUpperCase()\r\n if (nameA < nameB) {\r\n return -1\r\n }\r\n if (nameA > nameB) {\r\n return 1\r\n }\r\n return 0\r\n })\r\n } else if (this.type == 'import') {\r\n newTarget = this.unique(newTarget)\r\n }\r\n newTarget.forEach((item, index) => {\r\n item.key = index\r\n item.fieldViewType = 1\r\n item.orderIndex = index\r\n })\r\n this.data = newTarget\r\n console.log(this.data, 'this.data')\r\n this.$forceUpdate()\r\n },\r\n handleUp(row, index) {\r\n if (index !== 0) {\r\n let targetItem = row // 当前Item\r\n let upItem = this.data[index - 1] // 前一个Item\r\n let targetIndex = this.data[index].orderIndex // 当前ItemIndex\r\n let upIndex = this.data[index - 1].orderIndex // 前一个ItemIndex\r\n // 交换orderIndex\r\n targetItem.orderIndex = upIndex\r\n upItem.orderIndex = targetIndex\r\n this.data.splice(index - 1, 2, targetItem, upItem)\r\n } else {\r\n this.$message.warning('已经处于置顶,无法上移')\r\n }\r\n },\r\n handleDown(row, index) {\r\n if (index !== this.data.length - 1) {\r\n let targetItem = row // 当前Item\r\n let downItem = this.data[index + 1] // 前一个Item\r\n let targetIndex = this.data[index].orderIndex // 当前ItemIndex\r\n let downIndex = this.data[index + 1].orderIndex // 前一个ItemIndex\r\n // 交换orderIndex\r\n targetItem.orderIndex = downIndex\r\n downItem.orderIndex = targetIndex\r\n this.data.splice(index, 2, downItem, targetItem)\r\n } else {\r\n this.$message.warning('已经处于置底,无法下移')\r\n }\r\n },\r\n // 删除字段\r\n handleDelFields(row) {\r\n if (row.id) {\r\n portal.DeleteExportFields(row.id).then((res) => {\r\n if (res.state) {\r\n let data = utils.deepClone(this.data)\r\n let target = data.filter((item) => item.key != row.key)\r\n this.data = target\r\n this.$message.success('删除成功')\r\n }\r\n })\r\n } else {\r\n let data = utils.deepClone(this.data)\r\n let target = data.filter((item) => item.key != row.key)\r\n this.data = target\r\n this.$message.success('删除成功')\r\n }\r\n },\r\n debounce(fn, delay) {\r\n clearTimeout(this.timer)\r\n this.timer = setTimeout(function () {\r\n fn()\r\n }, delay)\r\n },\r\n // 设置表格拖拽\r\n setDraggable() {\r\n const table = this.$refs.DTTable\r\n const $data = table.data\r\n const tbody = table.$el.querySelector(\r\n '.el-table__body-wrapper tbody'\r\n )\r\n const $this = this\r\n const trArr = tbody.querySelectorAll('tr')\r\n let dragStartY = 0\r\n if (trArr) {\r\n trArr.forEach((item, index) => {\r\n item.setAttribute('draggable', true)\r\n item.setAttribute('data-index', index)\r\n })\r\n }\r\n // 开始拖拽\r\n function dragstart(e) {\r\n console.log(e, 'dfsf')\r\n $this.debounce(() => {\r\n dragStartY = e.y\r\n }, 50)\r\n }\r\n // 结束拖拽\r\n function dragend(e) {\r\n if (!e.target) return\r\n const index = Number(e.target.dataset.index, 10)\r\n const trHeight = e.target.offsetHeight || 45\r\n $this.debounce(async () => {\r\n const dVal = e.y - dragStartY\r\n const absVal = Math.abs(dVal)\r\n let step = 0\r\n if (absVal >= trHeight) {\r\n if (dVal > 0) {\r\n step = Math.floor(dVal / trHeight)\r\n if (step >= $data.length - index) {\r\n step = $data.length - index - 1\r\n }\r\n } else {\r\n step = Math.ceil(dVal / trHeight)\r\n if (Math.abs(step) > index) {\r\n step = index * -1\r\n }\r\n }\r\n if (index === 0 && step <= 0) {\r\n return\r\n }\r\n if (index === $data.length - 1 && step >= 0) {\r\n return\r\n }\r\n // const params = {\r\n // id: $data[index].id,\r\n // step: step * -1,\r\n // }\r\n const params = {\r\n index,\r\n step: step * -1,\r\n }\r\n console.log(params, 'params')\r\n $this.changeSort(params)\r\n // $this.loading = true\r\n // // 后端接口\r\n // await $this.$api.url.setContentSort(params)\r\n // // 重新获取数据\r\n // $this.reloadData()\r\n }\r\n }, 50)\r\n }\r\n tbody.addEventListener('dragstart', dragstart)\r\n tbody.addEventListener('dragend', dragend)\r\n },\r\n // 拖拽结束重新排序\r\n changeSort(params) {\r\n let data = utils.deepClone(this.data)\r\n const targetIndex = params.index - params.step\r\n let targetItem = data.splice(params.index, 1)\r\n data.splice(targetIndex, 0, targetItem[0])\r\n this.data = data\r\n this.$forceUpdate()\r\n },\r\n // 动态计算表格的高度,自适应当前容器\r\n calcTableHeight(delay) {\r\n setTimeout(() => {\r\n this.tableHeight =\r\n document.documentElement.clientHeight * 0.9 - 200\r\n }, delay || 0)\r\n },\r\n },\r\n}\r\n",null]}