Forráskód Böngészése

解决重复外协项的问题

yuhan 1 éve%!(EXTRA string=óta)
szülő
commit
c018325872

+ 115 - 13
src/views/module_kzks/costModelWxPrice/CostModelWxPriceList.vue

@@ -45,9 +45,15 @@
     <div class="table-operator">
       <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('外协价格库')">导出</a-button>
-      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+      <a-upload v-if="isalarm === 0" name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
       </a-upload>
+      <a-tooltip v-if="isalarm === 1" placement="bottom">
+        <template slot="title">
+          <span>请先处理重复项</span>
+        </template>
+        <a-button type="primary" icon="import" disabled>导入</a-button>
+      </a-tooltip>
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
@@ -66,9 +72,9 @@
 
         <span style="float:right;">
           <a @click="loadData()"><a-icon type="sync" />刷新</a>
-          <a-divider type="vertical" />
+          <a-divider type="vertical" v-if="isalarm === 1" />
           
-          <a style="color: #ffa11e;" @click="visibleRepeat = true"><a-icon type="exclamation-circle" />有重复项!请处理!</a>
+          <a v-if="isalarm === 1" style="color: #ffa11e;" @click="visibleRepeat = true"><a-icon type="exclamation-circle" />有重复项!请处理!</a>
 
         </span>
 
@@ -110,9 +116,11 @@
 
         <span slot="action" slot-scope="text, record">
           <a @click="handleEdit(record)">编辑</a>
-
           <a-divider type="vertical" />
-          <a-dropdown>
+          <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+            <a>删除</a>
+          </a-popconfirm>
+          <!-- <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
             <a-menu slot="overlay">
               <a-menu-item>
@@ -124,7 +132,7 @@
                 </a-popconfirm>
               </a-menu-item>
             </a-menu>
-          </a-dropdown>
+          </a-dropdown> -->
         </span>
 
       </a-table>
@@ -138,10 +146,10 @@
       :visible="visibleRepeat"
       switchFullscreen
       @ok="handleOk"
-      :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
       @cancel="handleCancel"
       cancelText="关闭">
-      <cost-model-wx-repeat-list></cost-model-wx-repeat-list>
+      <!-- :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" -->
+      <cost-model-wx-repeat-list ref="wxRepeatRef" @ok="handleSure"></cost-model-wx-repeat-list>
     </j-modal>
 
   </a-card>
@@ -154,6 +162,7 @@
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   import CostModelWxPriceModal from './modules/CostModelWxPriceModal'
 import CostModelWxRepeatList from '../costModelWxRepeat/CostModelWxRepeatList.vue'
+import { getAction } from '@/api/manage'
 
   export default {
     name: 'CostModelWxPriceList',
@@ -239,6 +248,7 @@ import CostModelWxRepeatList from '../costModelWxRepeat/CostModelWxRepeatList.vu
 
         // 处理重复项
         visibleRepeat: false,
+        isalarm: 0
       }
     },
     created() {
@@ -250,6 +260,93 @@ import CostModelWxRepeatList from '../costModelWxRepeat/CostModelWxRepeatList.vu
       },
     },
     methods: {
+      loadData(arg) {
+        if(!this.url.list){
+          this.$message.error("请设置url.list属性!")
+          return
+        }
+        //加载数据 若传入参数1则加载第一页的内容
+        if (arg === 1) {
+          this.ipagination.current = 1;
+        }
+        var params = this.getQueryParams();//查询条件
+        this.loading = true;
+        getAction(this.url.list, params).then((res) => {
+          if (res.success) {
+            //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
+            this.dataSource = res.result.content.records||res.result.content;
+            this.isalarm = res.result.isalarm
+            if(res.result.total)
+            {
+              this.ipagination.total = res.result.total;
+            }else{
+              this.ipagination.total = 0;
+            }
+            //update-end---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
+          }else{
+            this.$message.warning(res.message)
+          }
+        }).finally(() => {
+          this.loading = false
+        })
+      },
+      /* 导入 */
+      handleImportExcel(info){
+        this.loading = true;
+        if (info.file.status !== 'uploading') {
+          console.log(info.file, info.fileList);
+        }
+        if (info.file.status === 'done') {
+          this.loading = false;
+          console.log(info)
+          if (info.file.response.success) {
+            // this.$message.success(`${info.file.name} 文件上传成功`);
+            if (info.file.response.code === 201) {
+              let { message, result: { msg, fileUrl, fileName } } = info.file.response
+              let href = window._CONFIG['domianURL'] + fileUrl
+              this.$warning({
+                title: message,
+                content: (<div>
+                    <span>{msg}</span><br/>
+                    <span>具体详情请 <a href={href} target="_blank" download={fileName}>点击下载</a> </span>
+                  </div>
+                )
+              })
+            } else {
+              this.$message.success(info.file.response.message || `${info.file.name} 文件上传成功`)
+            }
+            this.loadData()
+          } else if (info.file.response.code === 111){
+            // 数据有半重复的(外协项目、外协单位、计量单位相同,但价格不同时)
+            this.$message.success(info.file.response.message || `${info.file.name} 文件上传成功`)
+            this.loadData()
+          } else {
+            this.$message.error(`${info.file.name} ${info.file.response.message}.`);
+          }
+        } else if (info.file.status === 'error') {
+          this.loading = false;
+          if (info.file.response.status === 500) {
+            let data = info.file.response
+            const token = Vue.ls.get(ACCESS_TOKEN)
+            if (token && data.message.includes("Token失效")) {
+              this.$error({
+                title: '登录已过期',
+                content: '很抱歉,登录已过期,请重新登录',
+                okText: '重新登录',
+                mask: false,
+                onOk: () => {
+                  store.dispatch('Logout').then(() => {
+                    Vue.ls.remove(ACCESS_TOKEN)
+                    window.location.reload();
+                  })
+                }
+              })
+            }
+          } else {
+            this.$message.error(`文件上传失败: ${info.file.msg} `);
+          }
+        }
+      },
       initDictConfig(){
       },
       getSuperFieldList(){
@@ -262,13 +359,18 @@ import CostModelWxRepeatList from '../costModelWxRepeat/CostModelWxRepeatList.vu
         this.superFieldList = fieldList
       },
       handleOk () {
+        if (this.$refs.wxRepeatRef.selectedRowKeys.length <= 0) {
+          this.$message.warning('请选择一条记录!');
+          return;
+        } else {
+          this.$refs.wxRepeatRef.handleRepeat();
+        }
+      },
+      // 实现异步关闭页面并刷新页面,不这样写会有同步页面不刷新的问题
+      handleSure(){
+        this.loadData()
         this.close()
-        // this.$refs.realForm.submitForm();
       },
-      // submitCallback(){
-      //   this.$emit('ok');
-      //   this.visible = false;
-      // },
       handleCancel () {
         this.close()
       },

+ 37 - 29
src/views/module_kzks/costModelWxRepeat/CostModelWxRepeatList.vue

@@ -52,7 +52,7 @@
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
       </a-dropdown>
     </div> -->
-
+    <span>※上一次导入的文件中存在外协项目、外协单位、计量单位相同,但价格不同的项,请选择需要保留的项※</span>
     <!-- table区域-begin -->
     <div>
       <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
@@ -126,6 +126,7 @@
   import { mixinDevice } from '@/utils/mixin'
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   import CostModelWxRepeatModal from './modules/CostModelWxRepeatModal'
+  import { deleteAction } from '@/api/manage'
 
   export default {
     name: 'CostModelWxRepeatList',
@@ -159,21 +160,6 @@
             dataIndex: 'wxCompany'
           },
           {
-            title:'单价',
-            align:"center",
-            dataIndex: 'danjia'
-          },
-          {
-            title:'计量单位',
-            align:"center",
-            dataIndex: 'unit'
-          },
-          {
-            title:'备注',
-            align:"center",
-            dataIndex: 'remark'
-          },
-          {
             title:'单价(最大值)',
             align:"center",
             dataIndex: 'maxPrice'
@@ -184,26 +170,27 @@
             dataIndex: 'minPrice'
           },
           {
-            title:'平均值',
+            title:'计量单位',
             align:"center",
-            dataIndex: 'avePrice'
+            dataIndex: 'unit'
           },
           {
-            title: '操作',
-            dataIndex: 'action',
+            title:'备注',
             align:"center",
-            fixed:"right",
-            width:147,
-            scopedSlots: { customRender: 'action' }
-          }
+            dataIndex: 'remark'
+          },
+          // {
+          //   title: '操作',
+          //   dataIndex: 'action',
+          //   align:"center",
+          //   fixed:"right",
+          //   width:147,
+          //   scopedSlots: { customRender: 'action' }
+          // }
         ],
         url: {
           list: "/costModelWxRepeat/costModelWxRepeat/list",
-          delete: "/costModelWxRepeat/costModelWxRepeat/delete",
-          deleteBatch: "/costModelWxRepeat/costModelWxRepeat/deleteBatch",
-          exportXlsUrl: "/costModelWxRepeat/costModelWxRepeat/exportXls",
-          importExcelUrl: "costModelWxRepeat/costModelWxRepeat/importExcel",
-          
+          handleRepeat: "/costModelWxRepeat/costModelWxRepeat/deleteBatch1"
         },
         dictOptions:{},
         superFieldList:[],
@@ -220,6 +207,27 @@
     methods: {
       initDictConfig(){
       },
+      handleRepeat() {
+        var ids = "";
+        for (var a = 0; a < this.selectedRowKeys.length; a++) {
+          ids += this.selectedRowKeys[a] + ",";
+        }
+        this.loading = true;
+        deleteAction(this.url.handleRepeat, {ids: ids}).then((res) => {
+          if (res.success) {
+            //重新计算分页问题
+            this.reCalculatePage(this.selectedRowKeys.length)
+            this.$message.success(res.message);
+            // this.loadData();
+            this.onClearSelected();
+            this.$emit('ok')
+          } else {
+            this.$message.warning(res.message);
+          }
+        }).finally(() => {
+          this.loading = false;
+        });
+      },
       getSuperFieldList(){
         let fieldList=[];
         fieldList.push({type:'string',value:'wxProject',text:'外协项目',dictCode:''})