Browse Source

销售模板审核

yusheng 1 year ago
parent
commit
07eeb08e35

BIN
public/importTemplate/客户信息导入模板.xlsx


+ 2 - 2
src/api/system/file/index.js

@@ -87,12 +87,12 @@ export async function getFileList(data) {
  * 导入文件 批量
  * @param file 文件
  */
-export async function importBatch(data) {
+export async function importBatch(data,api) {
   const formData = new FormData();
   data.multiPartFiles.forEach((item, index) => {
     formData.append(`file`, item);
   });
-  const res = await request.post(`/eom/saleorder/importFile`, formData);
+  const res = await request.post(api, formData);
   if (res.data.code === '0') {
     return res.data;
   }

+ 9 - 0
src/api/targetManage/index.js

@@ -61,3 +61,12 @@ export async function settlementAccountRemoveAPI(data) {
     }
     return Promise.reject(new Error(res.data.message));
 }
+
+// 获取详情
+export async function getById(id) {
+    const res = await request.get(`/eom/sales_target/getById/${id}`);
+    if (res.data.code == 0) {
+      return res.data.data;
+    }
+    return Promise.reject(new Error(res.data.message));
+  }

+ 2 - 1
src/components/upload/import-dialog.vue

@@ -52,6 +52,7 @@ export default {
     defModule: '',
     fileUrl: '',
     fileName: '',
+    apiUrl:''
   },
   //注册组件
   data() {
@@ -99,7 +100,7 @@ export default {
       await importBatch({
         module: this.module,
         multiPartFiles: this.attaments
-      });
+      },this.apiUrl);
       this.$message.success('操作成功!');
       this.dialogVisible = false;
       this.$emit('success');

+ 1 - 0
src/views/purchasingManage/inquiryManage/components/addDialog.vue

@@ -218,6 +218,7 @@
   import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
 
   export default {
+    name: "inquiryManageAddDialog",
     props: {
       categoryTreeList: Array
     },

+ 21 - 1
src/views/purchasingManage/supplierManage/index.vue

@@ -56,6 +56,14 @@
                 >
                   批量删除
                 </el-button>
+                <el-button
+                  type="primary"
+                  size="small"
+                  icon="el-icon-upload2"
+                  plain
+                  @click="uploadFile"
+                  >导入</el-button
+                >
               </template>
 
               <template v-slot:name="{ row }">
@@ -131,6 +139,13 @@
       content="是否确定删除?"
       @done="commitBtn"
     />
+    <importDialog
+      ref="importDialogRef"
+      @success="reload"
+      :fileUrl="'/eos/importTemplate/客户信息导入模板.xlsx'"
+      fileName="供应商信息导入模板"
+      apiUrl="/eom/contact/importFileSupplier"
+    />
   </div>
 </template>
 
@@ -151,6 +166,7 @@
   import dictMixins from '@/mixins/dictMixins';
   import { getPcTreeByPids } from '@/api/classifyManage';
   import tabMixins from '@/mixins/tableColumnsMixin';
+  import importDialog from '@/components/upload/import-dialog.vue';
 
   export default {
     mixins: [dictMixins, tabMixins],
@@ -164,7 +180,7 @@
       ContactSearch,
       popModal,
       AddContactDialog,
-      ContactDetailDialog
+      ContactDetailDialog,importDialog
     },
     data() {
       return {
@@ -360,6 +376,10 @@
       reload(where) {
         this.$refs.table.reload({ page: 1, where });
       },
+      uploadFile() {
+        this.$refs.importDialogRef.open();
+
+      },
       openEdit(type, row) {
         this.current = row;
         this.showEdit = true;

+ 21 - 29
src/views/saleManage/contact/contactList.vue

@@ -66,6 +66,14 @@
             >
               申请
             </el-button>
+            <el-button
+                  type="primary"
+                  size="small"
+                  icon="el-icon-upload2"
+                  plain
+                  @click="uploadFile"
+                  >导入</el-button
+                >
           </template>
 
           <template v-slot:name="{ row }">
@@ -89,33 +97,7 @@
             >
               修改
             </el-link>
-            <!--            <el-link-->
-            <!--              type="primary"-->
-            <!--              v-if="isNeed_process_is_close&&[0, 3].includes(row.approvalStatus)"-->
-            <!--              :underline="false"-->
-            <!--              icon="el-icon-plus"-->
-            <!--              @click="sub(row)"-->
-            <!--            >-->
-            <!--              提交-->
-            <!--            </el-link>-->
-            <!--                <el-link-->
-            <!--                  v-if="row.status===2"-->
-            <!--                  type="primary"-->
-            <!--                  :underline="false"-->
-            <!--                  icon="el-icon-check"-->
-            <!--                  @click="enableOption(row)"-->
-            <!--                >-->
-            <!--                  启用-->
-            <!--                </el-link>-->
-            <!--                <el-link-->
-            <!--                  v-if="row.status===1"-->
-            <!--                  type="primary"-->
-            <!--                  :underline="false"-->
-            <!--                  icon="el-icon-close"-->
-            <!--                  @click="disableOption(row)"-->
-            <!--                >-->
-            <!--                  禁用-->
-            <!--                </el-link>-->
+
 
             <el-popconfirm
               class="ele-action"
@@ -154,6 +136,13 @@
       ref="processSubmitDialogRef"
       @reload="reload"
     ></process-submit-dialog>
+    <importDialog
+      ref="importDialogRef"
+      @success="reload"
+      :fileUrl="'/eos/importTemplate/客户信息导入模板.xlsx'"
+      fileName="客户信息导入模板"
+      apiUrl="/eom/contact/importFile"
+    />
   </ele-split-layout>
   <!-- </el-card> -->
 
@@ -181,6 +170,7 @@
   import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
   import { mapGetters } from 'vuex';
   import tabMixins from '@/mixins/tableColumnsMixin';
+  import importDialog from '@/components/upload/import-dialog.vue';
 
   export default {
     mixins: [dictMixins,tabMixins],
@@ -191,7 +181,7 @@
       // popModal,
       AddContactDialog,
       ContactDetailDialog,
-      drawer
+      drawer,importDialog
     },
     data() {
       return {
@@ -513,8 +503,10 @@
           });
         });
       },
+      uploadFile() {
+        this.$refs.importDialogRef.open();
+      },
       openDetail(row) {
-        // this.$refs.contactDetailDialogRef.open(row);
         this.$refs.drawerRef.open(row);
       }
     }

+ 20 - 2
src/views/saleManage/contact/contactListAdmin.vue

@@ -87,6 +87,14 @@
             >
               批量释放
             </el-button>
+            <el-button
+                  type="primary"
+                  size="small"
+                  icon="el-icon-upload2"
+                  plain
+                  @click="uploadFile"
+                  >导入</el-button
+                >
           </template>
           <template v-slot:qrCode="{ row }">
             <el-link type="primary" :underline="false" @click="setCode(row)">
@@ -218,6 +226,13 @@
       @reload="reload"
     ></process-submit-dialog>
     <myqsCode ref="qsCodeRef"></myqsCode>
+    <importDialog
+      ref="importDialogRef"
+      @success="reload"
+      :fileUrl="'/eos/importTemplate/客户信息导入模板.xlsx'"
+      fileName="客户信息导入模板"
+      apiUrl="/eom/contact/importFile"
+    />
   </ele-split-layout>
 </template>
 
@@ -242,6 +257,7 @@
   import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
   import myqsCode from './components/qsCode.vue';
   import tabMixins from '@/mixins/tableColumnsMixin';
+  import importDialog from '@/components/upload/import-dialog.vue';
 
   export default {
     mixins: [dictMixins,tabMixins],
@@ -254,7 +270,7 @@
       ContactDetailDialog,
       assignDialog,
       drawer,
-      myqsCode
+      myqsCode,importDialog
     },
     data() {
       return {
@@ -608,7 +624,9 @@
           this.reload();
         });
       },
-
+      uploadFile() {
+        this.$refs.importDialogRef.open();
+      },
       openDetail(row) {
         // this.$refs.contactDetailDialogRef.open(row);
         this.$refs.drawerRef.open(row, 'allList');

+ 3 - 1
src/views/saleManage/contact/index.vue

@@ -217,6 +217,7 @@
       <followList ref="followListRef" @success="followListSuccess"></followList>
     </ele-modal>
     <myqsCode ref="qsCodeRef"></myqsCode>
+
   </div>
 </template>
 
@@ -591,7 +592,8 @@
         // this.$refs.contactDetailDialogRef.open(row);
 
         this.$refs.drawerRef.open(row, 'myList');
-      }
+      },
+    
     }
   };
 </script>

+ 4 - 12
src/views/saleManage/saleOrder/index.vue

@@ -246,6 +246,7 @@
       @success="reload"
       :fileUrl="'/eos/importTemplate/销售订单导入模板.xlsx'"
       fileName="销售订单导入模板"
+      apiUrl="/eom/saleorder/importFile"
     />
   </div>
 </template>
@@ -512,6 +513,7 @@
         cacheKeyUrl: 'eos-c2e9664a-saleManage-saleOrder'
       };
     },
+
     computed: {},
     created() {
       this.requestDict('客户状态');
@@ -611,21 +613,11 @@
             variables: {
               businessCode: data.orderNo
             }
-            // callBackMethodType : '1',
-            // callBackMethod : 'proTargetPlanApproveApiImpl.updatePlanApprovalStatus',
-            // pcHandle : '/bpm/handleTask/components/project-manage/plan-manage/submit.vue',
-            // pcView : '/bpm/handleTask/components/project-manage/plan-manage/detailDialog.vue',
-            // miniHandle : '',
-            // miniView : '',
+ 
           };
           this.$refs.processSubmitDialogRef.init(params);
         });
-        // submit({
-        //   businessId: id
-        // }).then(() => {
-        //   this.$message.success('提交成功');
-        //   this.reload();
-        // });
+  
       },
       saleOrderSubmitOrGenerate(res) {
         this.saleOrderSubmit(res.id);

+ 201 - 176
src/views/targetManage/salesTarget/components/viewDialog.vue

@@ -11,12 +11,27 @@
     :maxable="true"
     :resizable="true"
   >
+    <div class="switch">
+      <div class="switch_left">
+        <ul>
+          <li
+            v-for="item in tabOptions"
+            :key="item.key"
+            :class="{ active: activeComp == item.key }"
+            @click="activeComp = item.key"
+          >
+            {{ item.name }}
+          </li>
+        </ul>
+      </div>
+    </div>
     <el-form
       ref="form"
       class="el-form-box"
       :model="form"
       label-width="120px"
       :disabled="true"
+      v-show="activeComp == 'main'"
     >
       <el-row :gutter="15">
         <el-col :span="4">
@@ -38,7 +53,6 @@
                   v-model="form.type"
                   clearable
                   style="width: 100%"
-                  @change="typeChange"
                 >
                   <el-option label="年度" :value="1"></el-option>
                   <el-option label="季度" :value="2"></el-option>
@@ -110,13 +124,13 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="负责人" prop="branchName">
-                <el-input v-model="form.branchName"></el-input>
+              <el-form-item label="负责人" prop="superintendentName">
+                <el-input v-model="form.superintendentName"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="可见人" prop="branchName">
-                <el-input v-model="form.branchName"></el-input>
+              <el-form-item label="可见人" prop="superintendentName">
+                <el-input v-model="participantsName"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
@@ -143,196 +157,207 @@
     <div slot="footer">
       <el-button @click="cancel">返回</el-button>
     </div>
+    <bpmDetail
+      v-if="activeComp === 'bpm' && form.processInstanceId"
+      :id="form.processInstanceId"
+    ></bpmDetail>
   </ele-modal>
 </template>
 <script>
-import {
-  targetDefinitionPage,
-  salesTargetSave
-} from '@/api/targetManage/index.js';
-import {
-  getTargetManageTree,
-  renderInput,
-  renderSelect
-} from '@/views/targetManage/util.js';
-import deptSelect from '@/components/CommomSelect/dept-select.vue';
-import { getUserPage } from '@/api/system/organization';
-import dictMixins from '@/mixins/dictMixins';
-
-export default {
-  components: { deptSelect },
-  mixins: [dictMixins],
-  computed: {},
-  data() {
-    return {
-      form: {
-        name: '', //名称
-        targetDefinitionList: [], //目标规则
-        assessmentObject: '', // //考核对象 1公司 2部门 3个人
-        assessmentDimensions: [], //统计财年
-        assessmentCycle: '', //起始月份
-        departmentId: '', //部门id
-        departmentName: '', //部门名称
-        userId: '', //用户id
-        userName: '', //用户名称
-        superintendentId: '', //负责人id
-        superintendentName: '', //负责人名称
-        participantsId: '',
-        participantsName: '',
-        status: '',
-        type: 1,
-        describes: ''
-      },
-      title: '',
-      unitOption: [],
-      addOrEditDialogFlag: false,
-      treeData: { label: '销售目标', children: [], expand: true },
-      fullscreen:false,
-      targetDefinitionList: []
-    };
-  },
-  mounted() {},
-  created() {},
-  methods: {
-    renderContent(h, data) {
-      let ratio = +((data.number / data.value) * 100 || 0).toFixed(1);
-      return (
-        <div>
-          <div class={!data.type ? 'treeItem1 treeItem' : 'treeItem'}>
-            <span class="label">{data.label}</span>
-            {data.type && <span class="tree_value">{data.value || 0}</span>}
-            {data.type && <span class="tree_unit">{data.unit}</span>}
-          </div>
-          {(data.type &&
-            data.value &&
-            h('el-progress', {
-              attrs: {
-                percentage: ratio
-              }
-            })) ||
-            ''}
-        </div>
-      );
-    },
 
-    //初始化
-    async open(row = {}) {
-      this.addOrEditDialogFlag = true;
-      this.title = '';
-      this.form = JSON.parse(JSON.stringify(row));
-      this.form.assessmentDimensions =
-        this.form.assessmentDimensions.split(',');
-      this.treeData.children = this.form.targetDefinitionList;
+  import dictMixins from '@/mixins/dictMixins';
+  import bpmDetail from '@/views/bpm/processInstance/detail.vue';
+  import {
+    getById
+} from '@/api/targetManage/index.js';
+  
+  export default {
+    mixins: [dictMixins],
+    components: {bpmDetail},
+    data() {
+      return {
+        form: {
+          name: '', //名称
+          targetDefinitionList: [], //目标规则
+          assessmentObject: '', // //考核对象 1公司 2部门 3个人
+          assessmentDimensions: [], //统计财年
+          assessmentCycle: '', //起始月份
+          departmentId: '', //部门id
+          departmentName: '', //部门名称
+          userId: '', //用户id
+          userName: '', //用户名称
+          superintendentId: '', //负责人id
+          superintendentName: '', //负责人名称
+          participantsId: '',
+          participantsName: '',
+          status: '',
+          type: 1,
+          describes: '',
+          processInstanceId:''
+        },
+        title: '',
+        unitOption: [],
+        participantsName:'',
+        addOrEditDialogFlag: false,
+        treeData: { label: '销售目标', children: [], expand: true },
+        fullscreen: false,
+        targetDefinitionList: [],
+        activeComp: 'main',
+        tabOptions: [
+          { key: 'main', name: '目标详情' },
+          { key: 'bpm', name: '流程详情' }
+        ]
+      };
     },
+    mounted() {},
+    created() {},
+    methods: {
+      renderContent(h, data) {
+        let ratio = +((data.number / data.value) * 100 || 0).toFixed(1);
+        return (
+          <div>
+            <div class={!data.type ? 'treeItem1 treeItem' : 'treeItem'}>
+              <span class="label">{data.label}</span>
+              {data.type && <span class="tree_value">{data.value || 0}</span>}
+              {data.type && <span class="tree_unit">{data.unit}</span>}
+            </div>
+            {(data.type &&
+              data.value &&
+              h('el-progress', {
+                attrs: {
+                  percentage: ratio
+                }
+              })) ||
+              ''}
+          </div>
+        );
+      },
 
-    onExpand(e, data) {
-      if ('expand' in data) {
-        data.expand = !data.expand;
-        if (!data.expand && data.children) {
-          this.collapse(data.children);
+      //初始化
+      async open(row = {}) {
+        this.addOrEditDialogFlag = true;
+        this.title = '';
+        this.activeComp='main'
+        this.form = await getById(row.id)
+        console.log( this.form,' this.form')
+        this.form.assessmentDimensions =
+          this.form.assessmentDimensions.split(',');
+        this.treeData.children = this.form.targetDefinitionList;
+        if (this.form.discernibleUserList) {
+          this.participantsName = this.form.discernibleUserList
+            .map((item) => item.name)
+            .toString();
         }
-      } else {
-        this.$set(data, 'expand', true);
-      }
-    },
-    collapse(list) {
-      var _this = this;
-      list.forEach(function (child) {
-        if (child.expand) {
-          child.expand = false;
+      },
+
+      onExpand(e, data) {
+        if ('expand' in data) {
+          data.expand = !data.expand;
+          if (!data.expand && data.children) {
+            this.collapse(data.children);
+          }
+        } else {
+          this.$set(data, 'expand', true);
         }
-        child.children && _this.collapse(child.children);
-      });
-    },
+      },
+      collapse(list) {
+        var _this = this;
+        list.forEach(function (child) {
+          if (child.expand) {
+            child.expand = false;
+          }
+          child.children && _this.collapse(child.children);
+        });
+      },
 
-    //关闭弹窗
-    cancel() {
-      this.addOrEditDialogFlag = false;
+      //关闭弹窗
+      cancel() {
+        this.addOrEditDialogFlag = false;
+      }
     }
-  }
-};
+  };
 </script>
 <style scoped lang="scss">
-@import '~vue2-org-tree/dist/style.css';
-:deep(.treeItem1) {
-  padding: 15px 15px !important;
-  color: #3942a7;
-  background: url(../../../../assets/main_item.png);
-  background-size: cover;
-  .label {
-    font-size: 14px;
-    font-weight: bold;
+  @import '~vue2-org-tree/dist/style.css';
+  :deep(.treeItem1) {
+    padding: 15px 15px !important;
+    color: #3942a7;
+    background: url(../../../../assets/main_item.png);
+    background-size: cover;
+    .label {
+      font-size: 14px;
+      font-weight: bold;
+    }
+  }
+  :deep(.org-tree-node-btn) {
+    background-color: #bb90f5;
   }
-}
-:deep(.org-tree-node-btn) {
-  background-color: #bb90f5;
-}
-:deep(.treeItem) {
-  display: flex;
-  justify-content: center;
-  padding: 6px 15px;
-  align-items: center;
-  .label {
+  :deep(.treeItem) {
     display: flex;
-    // maxwidth: 100%;
-    min-width: 80px;
     justify-content: center;
+    padding: 6px 15px;
     align-items: center;
+    .label {
+      display: flex;
+      // maxwidth: 100%;
+      min-width: 80px;
+      justify-content: center;
+      align-items: center;
+    }
+    .ratioInput {
+      width: 77px;
+    }
+    .valueInput,
+    .tree_value {
+      width: 105px;
+    }
+    .tree_value {
+      background: #f1f1f1;
+      height: 24px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+    }
+    .tree_unit {
+      margin-left: 10px;
+    }
+    .el-select {
+      width: 80px;
+    }
+    .el-input {
+      width: auto;
+    }
+    input {
+      margin-left: 5px;
+    }
+    .el-input__suffix {
+      line-height: 36px;
+    }
+  }
+
+  :deep(.long-dialog-form .el-dialog__body) {
+    max-height: calc(100vh - 192px);
+    min-height: 700px;
   }
-  .ratioInput {
-    width: 77px;
+  :deep(.org-tree-node-label .org-tree-node-label-inner) {
+    padding: 0;
   }
-  .valueInput,
-  .tree_value {
-    width: 105px;
+  :deep(
+      .horizontal .org-tree-node.collapsed,
+      .horizontal .org-tree-node.is-leaf
+    ) {
+    padding-bottom: 8px;
+    padding-top: 8px;
   }
-  .tree_value {
-    background: #f1f1f1;
-    height: 24px;
+  :deep(.el-progress) {
+    width: 100%;
+    padding: 3px;
     display: flex;
     align-items: center;
-    justify-content: center;
-  }
-  .tree_unit {
-    margin-left: 10px;
-  }
-  .el-select {
-    width: 80px;
-  }
-  .el-input {
-    width: auto;
-  }
-  input {
-    margin-left: 5px;
-  }
-  .el-input__suffix {
-    line-height: 36px;
-  }
-}
-
-:deep(.long-dialog-form .el-dialog__body) {
-  max-height: calc(100vh - 192px);
-  min-height: 700px;
-}
-:deep(.org-tree-node-label .org-tree-node-label-inner) {
-  padding: 0;
-}
-:deep(
-    .horizontal .org-tree-node.collapsed,
-    .horizontal .org-tree-node.is-leaf
-  ) {
-  padding-bottom: 8px;
-  padding-top: 8px;
-}
-:deep(.el-progress) {
-  width: 100%;
-  padding: 3px;
-  display: flex;
-  align-items: center;
-  .el-progress__text {
-    color: #1890ff !important;
-    width: 41px;
-    text-align: left;
+    .el-progress__text {
+      color: #1890ff !important;
+      width: 41px;
+      text-align: left;
+    }
   }
-}
-</style>
+</style>

+ 265 - 215
src/views/targetManage/salesTarget/index.vue

@@ -39,11 +39,21 @@
         </template>
         <!-- 操作 -->
         <template v-slot:action="{ row }">
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="submit(row)"
+            v-if="[0, 3].includes(row.reviewStatus)"
+          >
+            提交
+          </el-link>
           <el-link
             type="primary"
             :underline="false"
             icon="el-icon-edit"
             @click="handleAddOrEdit(row, 'update')"
+            v-if="[0, 3].includes(row.reviewStatus)"
           >
             修改
           </el-link>
@@ -51,6 +61,7 @@
             class="ele-action"
             title="确定要删除此信息吗?"
             @confirm="remove([row.id])"
+            v-if="[0, 3].includes(row.reviewStatus)"
           >
             <template v-slot:reference>
               <el-link type="danger" :underline="false" icon="el-icon-delete">
@@ -70,7 +81,13 @@
         </template>
       </ele-pro-table>
     </el-card>
-
+    <process-submit-dialog
+      :isNotNeedProcess="false"
+      :processSubmitDialogFlag.sync="processSubmitDialogFlag"
+      v-if="processSubmitDialogFlag"
+      ref="processSubmitDialogRef"
+      @reload="reload"
+    ></process-submit-dialog>
     <add-or-edit-dialog
       ref="addOrEditDialogRef"
       @reload="reload"
@@ -80,237 +97,270 @@
 </template>
 
 <script>
-import tabMixins from '@/mixins/tableColumnsMixin';
-import dictMixins from '@/mixins/dictMixins';
-import addOrEditDialog from './components/addOrEditDialog.vue';
-import viewDialog from './components/viewDialog.vue';
-import searchTable from './components/searchTable.vue';
-import { salesTargetPage ,settlementAccountRemoveAPI} from '@/api/targetManage/index.js';
+  import tabMixins from '@/mixins/tableColumnsMixin';
+  import dictMixins from '@/mixins/dictMixins';
+  import addOrEditDialog from './components/addOrEditDialog.vue';
+  import viewDialog from './components/viewDialog.vue';
+  import searchTable from './components/searchTable.vue';
+  import {
+    salesTargetPage,
+    settlementAccountRemoveAPI
+  } from '@/api/targetManage/index.js';
+  import { reviewStatus } from '@/enum/dict';
+  import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
 
-export default {
-  mixins: [dictMixins,tabMixins],
-  components: {
-    addOrEditDialog,
-    searchTable,
-    viewDialog
-  },
-  data() {
-    return {
-      // 加载状态
-      loading: false,
-      delVisible: false,
-      selection: [],
-      cacheKeyUrl:'eos-be72e790-targetManage-salesTarget',
-      columnsVersion:1,
-    };
-  },
-  computed: {
-    columns() {
-      // 当columnsVersion变化时会重新计算,用作更新列配置
-      const version = this.columnsVersion;
-      return [
-        {
-          width: 45,
-          type: 'selection',
-          columnKey: 'selection',
-          align: 'center'
-        },
-        {
-          width: 60,
-          label: '序号',
-          type: 'index',
-          columnKey: 'index',
-          align: 'center'
-        },
-        {
-          minWidth: 200,
-          prop: 'code',
-          label: '编码',
-          align: 'center',
-          slot: 'code',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 200,
-          prop: 'name',
-          label: '名称',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 80,
-          prop: 'type',
-          label: '类型',
-          align: 'center',
-          showOverflowTooltip: true,
-          formatter: (row, column) => {
-            return row.type == 1 ? '年度' : row.type == 2 ? '季度' : '月度';
-          }
-        },
-        {
-          minWidth: 200,
-          prop: 'assessmentObject',
-          label: '目标对象',
-          align: 'center',
-          showOverflowTooltip: true,
-          formatter: (row, column) => {
-            return row.assessmentObject == 1
-              ? '公司'
-              : row.assessmentObject == 2
-              ? '部门'
-              : '个人';
-          }
-        },
+  export default {
+    mixins: [dictMixins, tabMixins],
+    components: {
+      addOrEditDialog,
+      searchTable,
+      viewDialog,processSubmitDialog
+    },
+    data() {
+      return {
+        // 加载状态
+        loading: false,
+        delVisible: false,
+        selection: [],
+        cacheKeyUrl: 'eos-be72e790-targetManage-salesTarget',
+        columnsVersion: 1,
+        processSubmitDialogFlag:false
+      };
+    },
+    computed: {
+      columns() {
+        // 当columnsVersion变化时会重新计算,用作更新列配置
+        const version = this.columnsVersion;
+        return [
+          {
+            width: 45,
+            type: 'selection',
+            columnKey: 'selection',
+            align: 'center'
+          },
+          {
+            width: 60,
+            label: '序号',
+            type: 'index',
+            columnKey: 'index',
+            align: 'center'
+          },
+          {
+            minWidth: 200,
+            prop: 'code',
+            label: '编码',
+            align: 'center',
+            slot: 'code',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 200,
+            prop: 'name',
+            label: '名称',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 80,
+            prop: 'type',
+            label: '类型',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.type == 1 ? '年度' : row.type == 2 ? '季度' : '月度';
+            }
+          },
+          {
+            minWidth: 200,
+            prop: 'assessmentObject',
+            label: '目标对象',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.assessmentObject == 1
+                ? '公司'
+                : row.assessmentObject == 2
+                ? '部门'
+                : '个人';
+            }
+          },
 
-        {
-          minWidth: 150,
-          prop: 'departmentName',
-          label: '部门',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 100,
-          prop: 'userName',
-          label: '姓名',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 200,
-          prop: 'assessmentDimensions',
-          label: '统计财年',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 80,
-          prop: 'enabled',
-          label: '状态',
-          align: 'center',
-          slot: 'modelType',
-          showOverflowTooltip: true,
-          formatter: (row, column) => {
-            // return row.enabled ? '进行中' : '已完成';
+          {
+            minWidth: 150,
+            prop: 'departmentName',
+            label: '部门',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 100,
+            prop: 'userName',
+            label: '姓名',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 200,
+            prop: 'assessmentDimensions',
+            label: '统计财年',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 80,
+            prop: 'status',
+            label: '状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.status == 1 ? '已发布' : '待发布';
+            }
+          },
+          {
+            minWidth: 80,
+            prop: 'reviewStatus',
+            label: '审核状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return reviewStatus[row.reviewStatus];
+            }
+          },
+          {
+            minWidth: 100,
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+            slot: 'createTime',
+            showOverflowTooltip: true
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 180,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true,
+            fixed: 'right'
           }
-        },
-        {
-          minWidth: 100,
-          prop: 'createTime',
-          label: '创建时间',
-          align: 'center',
-          slot: 'createTime',
-          showOverflowTooltip: true
-        },
-        {
-          columnKey: 'action',
-          label: '操作',
-          width: 120,
-          align: 'center',
-          resizable: false,
-          slot: 'action',
-          showOverflowTooltip: true,
-          fixed: 'right'
+        ];
+      }
+    },
+    created() {},
+    methods: {
+      //新增、修改
+      handleAddOrEdit(row = {}, type) {
+        if (type == 'view') {
+          this.$nextTick(() => {
+            this.$refs.viewDialogRef.open(row);
+          });
+          return;
         }
-      ];
-    }
-  },
-  created() {},
-  methods: {
-    //新增、修改
-    handleAddOrEdit(row = {}, type) {
-      if (type == 'view') {
         this.$nextTick(() => {
-          this.$refs.viewDialogRef.open(row);
+          this.$refs.addOrEditDialogRef.open(row, type);
         });
-        return;
-      }
-      this.$nextTick(() => {
-        this.$refs.addOrEditDialogRef.open(row, type);
-      });
-    },
-    //新增、修改
-    handleDetail(row = {}, type) {
-      this.detailDialogFlag = true;
-      this.$nextTick(() => {
-        this.$refs.detailDialogRef.init(row, type);
-      });
-    },
-
-    /* 表格数据源 */
-    datasource({ page, limit, where, order }) {
-      return salesTargetPage({
-        pageNum: page,
-        size: limit,
-        ...where
-      });
-    },
-
-    /* 刷新表格 */
-    reload(where = {}) {
-      console.log(1111);
-      this.$refs.table.reload({ page: 1, where });
-    },
+      },
+      //新增、修改
+      handleDetail(row = {}, type) {
+        this.detailDialogFlag = true;
+        this.$nextTick(() => {
+          this.$refs.detailDialogRef.init(row, type);
+        });
+      },
+      submit(row){
+        this.processSubmitDialogFlag = true;
+        this.$nextTick(() => {
+          let params = {
+            businessId: row.id,
+            businessKey: 'sales_target_approve',
+            formCreateUserId: row.createUserId,
+            variables: {
+              businessCode: row.code
+            }
+ 
+          };
+          this.$refs.processSubmitDialogRef.init(params);
+        });
+  
+      },
+    
+      /* 表格数据源 */
+      datasource({ page, limit, where, order }) {
+        return salesTargetPage({
+          pageNum: page,
+          size: limit,
+          ...where
+        });
+      },
 
-    //批量删除
-    allDelBtn() {
-      if (this.selection.length === 0) return;
-      let flag = this.selection.some((item) =>
-        [1, 2].includes(item.approvalStatus)
-      );
-      if (flag)
-        return this.$message.warning('抱歉已审核、审核中的数据不能删除,请检查');
-      this.delVisible = true;
-    },
+      /* 刷新表格 */
+      reload(where = {}) {
+        console.log(1111);
+        this.$refs.table.reload({ page: 1, where });
+      },
 
-    commitBtn() {
-      const dataId = this.selection.map((v) => v.id);
-      settlementAccountRemoveAPI(dataId).then((res) => {
-        this.$message.success('删除成功!');
-        this.reload();
-      });
-    },
-    remove(row) {
-      settlementAccountRemoveAPI(row).then((res) => {
-        this.$message.success('删除成功!');
-        this.reload();
-      });
-    },
+      //批量删除
+      allDelBtn() {
+        if (this.selection.length === 0) return;
+        let flag = this.selection.some((item) =>
+          [1, 2].includes(item.approvalStatus)
+        );
+        if (flag)
+          return this.$message.warning(
+            '抱歉已审核、审核中的数据不能删除,请检查'
+          );
+        this.delVisible = true;
+      },
 
-    sub(res) {
-      settlementAccountSubmit({
-        businessId: res.id
-      })
-        .then((res) => {
-          this.$message.success('提交成功');
+      commitBtn() {
+        const dataId = this.selection.map((v) => v.id);
+        settlementAccountRemoveAPI(dataId).then((res) => {
+          this.$message.success('删除成功!');
+          this.reload();
+        });
+      },
+      remove(row) {
+        settlementAccountRemoveAPI(row).then((res) => {
+          this.$message.success('删除成功!');
           this.reload();
-        })
-        .catch((e) => {
-          this.$message.error(e.message);
         });
+      },
+
+      sub(res) {
+        settlementAccountSubmit({
+          businessId: res.id
+        })
+          .then((res) => {
+            this.$message.success('提交成功');
+            this.reload();
+          })
+          .catch((e) => {
+            this.$message.error(e.message);
+          });
+      }
     }
-  }
-};
+  };
 </script>
 
 <style lang="scss" scoped>
-:deep(.el-link--inner) {
-  margin-left: 0px !important;
-}
+  :deep(.el-link--inner) {
+    margin-left: 0px !important;
+  }
 
-.sys-organization-list {
-  height: calc(100vh - 264px);
-  box-sizing: border-box;
-  border-width: 1px;
-  border-style: solid;
-  overflow: auto;
-}
+  .sys-organization-list {
+    height: calc(100vh - 264px);
+    box-sizing: border-box;
+    border-width: 1px;
+    border-style: solid;
+    overflow: auto;
+  }
 
-.sys-organization-list :deep(.el-tree-node__content) {
-  height: 40px;
+  .sys-organization-list :deep(.el-tree-node__content) {
+    height: 40px;
 
-  & > .el-tree-node__expand-icon {
-    margin-left: 10px;
+    & > .el-tree-node__expand-icon {
+      margin-left: 10px;
+    }
   }
-}
 </style>