Răsfoiți Sursa

导入模块添加唯一值选项,导入时有重复数据改为修改

shenqilong 1 an în urmă
părinte
comite
5093ef0787

+ 46 - 3
src/business/platform/data/templaterender/components/import-columns-dialog.vue

@@ -119,10 +119,24 @@
                         </el-tooltip>
                         </el-tooltip>
                         部门:
                         部门:
                     </el-col>
                     </el-col>
-                    <el-col :span="22">
+                    <el-col :span="16">
                         <el-radio-group v-model="buMenRadio">
                         <el-radio-group v-model="buMenRadio">
                             <el-radio v-for="(item,index) in positionsList" :key="index" :label="item.id">{{ item.name }}</el-radio>
                             <el-radio v-for="(item,index) in positionsList" :key="index" :label="item.id">{{ item.name }}</el-radio>
                         </el-radio-group>
                         </el-radio-group>
+
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form> <el-form-item label="唯一值:">
+                            <el-select v-model="onlyKey" value-key="key" clearable placeholder="请选择">
+                                <el-option
+                                    v-for="item in selectFieldsTableData.filter(el=> el.key)"
+                                    :key="item.key"
+                                    :label="item.title"
+                                    :value="item"
+                                />
+                            </el-select>
+                        </el-form-item>
+                        </el-form>
                     </el-col>
                     </el-col>
                 </el-row>
                 </el-row>
 
 
@@ -200,6 +214,7 @@ export default {
     },
     },
     data () {
     data () {
         return {
         return {
+            onlyKey: {},
             active: 0,
             active: 0,
             fileList: [],
             fileList: [],
             input: 1,
             input: 1,
@@ -300,6 +315,7 @@ export default {
                 }
                 }
             })
             })
             this.selectFieldsTableData = selectFieldsTableData
             this.selectFieldsTableData = selectFieldsTableData
+
             this.active = this.active + 1
             this.active = this.active + 1
         },
         },
         checkExcel (fileName) {
         checkExcel (fileName) {
@@ -369,6 +385,10 @@ export default {
         //   }
         //   }
         //   return target
         //   return target
         // },
         // },
+        findkey (obj, value, fn = (a, b) => a === b) {
+            return Object.keys(obj).find(k => fn(obj[k], value))
+        },
+
         async handleSaveUpload () {
         async handleSaveUpload () {
             // 获取勾选字段
             // 获取勾选字段
 
 
@@ -380,6 +400,7 @@ export default {
             // 列表数据处理
             // 列表数据处理
             const tableData = JSON.parse(JSON.stringify(this.tableData.data))
             const tableData = JSON.parse(JSON.stringify(this.tableData.data))
             const saveData = []
             const saveData = []
+            console.log(this.importData, tableData, fields)
             switch (formKey) {
             switch (formKey) {
                 default:
                 default:
                     tableData.forEach(data => {
                     tableData.forEach(data => {
@@ -394,23 +415,45 @@ export default {
                         saveData.push(obj)
                         saveData.push(obj)
                     })
                     })
             }
             }
-            const frist = this.$store.getters.level.frist
+            const first = this.$store.getters.level.first
             const second = this.$store.getters.level.second
             const second = this.$store.getters.level.second
             const userId = this.$store.getters.userId
             const userId = this.$store.getters.userId
+            let datalist = []
+            if (this.onlyKey?.key) {
+                const diDian = second || first
+                const sql = `select * FROM ${'t_' + formKey} WHERE di_dian_ = ${diDian}`
+                const response = await this.$common.request('sql', sql)
+                datalist = response?.variables?.data
+            }
             saveData.forEach(item => {
             saveData.forEach(item => {
+                if (this.onlyKey?.key) {
+                    console.log(this.selectFieldsTableData)
+
+                    for (let index = 0; index < datalist.length; index++) {
+                        // console.log('11111', datalist[index], item, this.onlyKey, key)
+                        if (datalist[index][this.onlyKey?.key] === item[this.findkey(fields, this.onlyKey?.title)]) {
+                            // console.log('222')
+                            item.id = datalist[index].id_
+                        }
+                    }
+                }
                 item.bianZhiBuMen = this.buMenRadio
                 item.bianZhiBuMen = this.buMenRadio
                 item.bianZhiRen = userId
                 item.bianZhiRen = userId
                 item.bianZhiShiJian = this.getTime(16)
                 item.bianZhiShiJian = this.getTime(16)
-                item.diDian = second || frist
+                item.diDian = second || first
             })
             })
             // 提交
             // 提交
+            console.log(this.$store.getters.level, saveData)
+
             this.active = this.active + 1
             this.active = this.active + 1
             saveUpload({
             saveUpload({
                 data: JSON.stringify(saveData),
                 data: JSON.stringify(saveData),
                 formKey
                 formKey
             }).then(res => {
             }).then(res => {
                 this.show = true
                 this.show = true
+                this.onlyKey = {}
                 this.$emit('saveUpload')
                 this.$emit('saveUpload')
+                this.$message.success(`新增${saveData.filter(el => !el.id).length}条数据,修改${saveData.filter(el => el.id).length}条数据`)
             }).catch(err => {
             }).catch(err => {
                 console.error(err)
                 console.error(err)
             })
             })