yusheng hai 1 ano
pai
achega
af3a53bf0a

+ 1 - 1
public/fromQRCode/designDrawing.html

@@ -70,7 +70,7 @@
         let ids=['name','code','unifiedSocialCreditCode','serialNo']
         ids.forEach(id=>{
             if(queryObj[id]){
-                document.querySelector(id).innerHTML = decodeURIComponent(queryObj[id]);
+                document.querySelector('#'+id).innerHTML = decodeURIComponent(queryObj[id]);
             }
         })
 

+ 2 - 3
src/components/timeDialog/index.vue

@@ -187,9 +187,8 @@
           if (valid) {
             this.$emit(
               'chooseTime',
-              this.current,
-              copyObj(this.form.arrivalBatch),
-              this.currentIndex
+              {arrivalBatch:copyObj(this.form.arrivalBatch),index:this.currentIndex}
+           
             );
             this.handleClose();
           }

+ 3 - 0
src/views/contractManage/contractBook/components/inventoryTable.vue

@@ -631,6 +631,8 @@
         default: true,
         type: Boolean
       },
+      customerMark:'',
+      
       contractBookType: {
         default: 1
       },
@@ -1294,6 +1296,7 @@
       },
       //选择产品回调
       changeParent(obj, idx) {
+        console.log(this.customerMark,'sadsa')
         obj.forEach((item, index) => {
           let i = idx == -1 ? index : idx;
           let row = JSON.parse(JSON.stringify(this.defaultForm));

+ 5 - 6
src/views/purchasingManage/purchaseNeedManage/components/inventoryTable.vue

@@ -274,7 +274,7 @@
           <el-link
             type="primary"
             :underline="false"
-            @click.native="handleMethod(scope.row)"
+            @click.native="handleMethod(scope.row,scope.$index)"
           >
             设置分批时间
           </el-link>
@@ -614,12 +614,11 @@ export default {
         this.$refs.table.reload()
       }
     },
-    handleMethod(row) {
-      this.$refs.timeDialogRef.open(row);
+    handleMethod(row,index) {
+      this.$refs.timeDialogRef.open(row,index);
     },
-    chooseTime(row, arrivalBatch) {
-      row.arrivalBatch = copyObj(arrivalBatch);
-      console.log(row, 'row');
+    chooseTime({arrivalBatch,index}) {
+      this.$set(this.form.datasource[index], 'arrivalBatch',  copyObj(arrivalBatch));
     },
     //cbom新增
     handCBom(row, index) {

+ 10 - 0
src/views/purchasingManage/purchaseOrder/index.vue

@@ -249,6 +249,16 @@ export default {
           minWidth: 200,
           fixed: 'left'
 
+        },
+        {
+          prop: 'sourceTypeName',
+          label: '订单类型',
+          align: 'center',
+          sortable: true,
+          showOverflowTooltip: true,
+          minWidth: 200,
+          fixed: 'left'
+
         },
         {
           prop: 'progress',

+ 14 - 7
src/views/purchasingManage/purchaseOrder/invoice/components/detailDialog.vue

@@ -316,17 +316,24 @@ import modalTitle from '@/BIZComponents/modalTitle.vue';
           {
             width: 80,
             prop: 'totalCount',
-            label: '货数量',
+            label: '货数量',
             slot: 'totalCount',
             align: "center"
           },
           {
-            width: 120,
-            prop: 'orderTotalCount',
-            label: '总数量',
-            slot: 'orderTotalCount',
-            align: "center"
-          },
+          width: 120,
+          prop: 'orderTotalCount',
+          label: '采购总数',
+          slot: 'orderTotalCount',
+          align: 'center'
+        },
+        {
+          width: 120,
+          prop: 'orderTotalCount1',
+          label: '已收货总数',
+          slot: 'orderTotalCount1',
+          align: 'center'
+        },
           {
             width: 80,
             prop: 'measuringUnit',

+ 9 - 2
src/views/purchasingManage/purchaseOrder/invoice/components/inventoryTable.vue

@@ -334,7 +334,7 @@ export default {
         {
           width: 120,
           prop: 'totalCount',
-          label: '货数量',
+          label: '货数量',
           slot: 'totalCount',
           headerSlot: 'headerTotalCount',
           align: 'center'
@@ -342,10 +342,17 @@ export default {
         {
           width: 120,
           prop: 'orderTotalCount',
-          label: '总数',
+          label: '采购总数',
           slot: 'orderTotalCount',
           align: 'center'
         },
+        {
+          width: 120,
+          prop: 'orderTotalCount1',
+          label: '已收货总数',
+          slot: 'orderTotalCount1',
+          align: 'center'
+        },
         {
           width: 80,
           prop: 'measuringUnit',

+ 9 - 9
src/views/purchasingManage/purchasePlanManage/components/inventoryTable.vue

@@ -49,7 +49,7 @@
             v-model="row.productName"
             placeholder="请输入"
             style="width: 60%; margin-right: 10px"
-            :disabled="!!row.productCode||isNeedInquiry===0"
+            :disabled="!!row.productCode"
           ></el-input>
           <el-button
             size="small"
@@ -316,13 +316,13 @@
 
           :prop="'datasource.' + scope.$index + '.supplierName'"
           :rules="{
-            required: isNeedInquiry===0,
+            required: isNeedInquiry===1,
             message: '请选择供应商',
             trigger: 'change'
           }"
         >
           <el-input
-            :disabled="isNeedInquiry!==0"
+            
             clearable
             @click.native="(e)=>handleGetSup(e,scope.row,scope.$index)"
             v-model="scope.row.supplierName"
@@ -344,7 +344,7 @@
         <span class="is-required">{{ column.label }}</span>
       </template>
       <template v-slot:headerSupplierName="{ column }">
-        <span :class="{'is-required':isNeedInquiry===0}">{{ column.label }}</span>
+        <span :class="{'is-required':isNeedInquiry===1}">{{ column.label }}</span>
       </template>
 
       <!-- 操作列 -->
@@ -419,11 +419,11 @@ export default {
   computed: {
     isNeedInquiry() {
       if (this.needInquiry === 1) {
-        this.form.datasource.forEach(item => {
-          item.supplierCode = ''
-          item.supplierId = ''
-          item.supplierName = ''
-        })
+        // this.form.datasource.forEach(item => {
+        //   item.supplierCode = ''
+        //   item.supplierId = ''
+        //   item.supplierName = ''
+        // })
       }
       return this.needInquiry
     }

+ 72 - 0
src/views/saleManage/contact/components/qsCode.vue

@@ -0,0 +1,72 @@
+<template>
+  <el-dialog
+      class="ele-dialog-form"
+      :visible.sync="codeVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      width="200px"
+      append-to-body
+      title="二维码"
+    >
+    <ele-qr-code :value="text" :size="120" />
+      <template v-slot:footer>
+        <el-button @click="codeVisible=false">返回</el-button>
+      </template>
+    </el-dialog>
+</template>
+
+<script>
+
+
+import EleQrCode from 'ele-admin/es/ele-qr-code';
+
+export default {
+
+  data() {
+    return {
+      codeVisible: false,
+      text:''
+
+
+    }
+  },
+  components: {
+
+    EleQrCode
+  },
+  watch: {},
+  methods: {
+    open(row) {
+      this.codeVisible=true
+      let addr =
+              '' + row.addressName ? row.addressName.replaceAll(',', '') : '';
+            addr += row.address ? row.address : '';
+      const paramsStr = this.obj_to_str({
+        name: encodeURIComponent(row.name),
+        addr: encodeURIComponent(addr),
+        code: encodeURIComponent(row.code),
+        unifiedSocialCreditCode: encodeURIComponent(row.unifiedSocialCreditCode),
+   
+      });
+      this.text =
+        window.location.origin +
+        '/eos/fromQRCode/designDrawing.html' +
+        '?' +
+        paramsStr;
+    },
+
+    obj_to_str(obj) {
+      var str = '';
+      for (var k in obj) {
+        str += `${k}=${obj[k]}&`;
+      }
+      return str;
+    },
+    
+
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 440 - 399
src/views/saleManage/contact/contactListAdmin.vue

@@ -54,17 +54,17 @@
             >
               新建
             </el-button>
-<!--            <el-button-->
-<!--              size="small"-->
-<!--              type="danger"-->
-<!--              el-icon-delete-->
-<!--              class="ele-btn-icon"-->
-<!--              v-if="$hasPermission('eom:contact:delete')"-->
-<!--              @click="allDelBtn"-->
-<!--              :disabled="selection?.length === 0"-->
-<!--            >-->
-<!--              批量删除-->
-<!--            </el-button>-->
+            <!--            <el-button-->
+            <!--              size="small"-->
+            <!--              type="danger"-->
+            <!--              el-icon-delete-->
+            <!--              class="ele-btn-icon"-->
+            <!--              v-if="$hasPermission('eom:contact:delete')"-->
+            <!--              @click="allDelBtn"-->
+            <!--              :disabled="selection?.length === 0"-->
+            <!--            >-->
+            <!--              批量删除-->
+            <!--            </el-button>-->
             <el-button
               size="small"
               type="primary"
@@ -86,7 +86,11 @@
               批量释放
             </el-button>
           </template>
-
+          <template v-slot:qrCode="{ row }">
+            <el-link type="primary" :underline="false" @click="setCode(row)">
+              二维码</el-link
+            >
+          </template>
           <template v-slot:name="{ row }">
             <el-link type="primary" :underline="false" @click="openDetail(row)">
               {{ row.name }}</el-link
@@ -100,31 +104,39 @@
               :underline="false"
               icon="el-icon-edit"
               @click="openEdit('编辑', row)"
-              v-if="row.assignStatus !== 1&& $hasPermission('eom:contact:update')&&[0, 3].includes(row.approvalStatus)"
+              v-if="
+                row.assignStatus !== 1 &&
+                $hasPermission('eom:contact:update') &&
+                [0, 3].includes(row.approvalStatus)
+              "
             >
               修改
             </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-->
+            <!--              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
               type="primary"
               v-if="
-                row.assignStatus === 0 && $hasPermission('eom:contact:assign')&&[2].includes(row.approvalStatus)
-            "
+                row.assignStatus === 0 &&
+                $hasPermission('eom:contact:assign') &&
+                [2].includes(row.approvalStatus)
+              "
               :underline="false"
               @click="assign('', row)"
             >
               指派
             </el-link>
             <el-link
-              v-if="row.assignStatus === 1&& $hasPermission('eom:contact:free')"
+              v-if="
+                row.assignStatus === 1 && $hasPermission('eom:contact:free')
+              "
               type="warning"
               :underline="false"
               @click="setFree('', row)"
@@ -132,7 +144,11 @@
               释放
             </el-link>
             <el-link
-              v-if="row.status === 2 && row.assignStatus !== 1&& $hasPermission('eom:contact:update')"
+              v-if="
+                row.status === 2 &&
+                row.assignStatus !== 1 &&
+                $hasPermission('eom:contact:update')
+              "
               type="primary"
               :underline="false"
               icon="el-icon-check"
@@ -141,7 +157,11 @@
               启用
             </el-link>
             <el-link
-              v-if="row.status === 1 && row.assignStatus !== 1&& $hasPermission('eom:contact:update')"
+              v-if="
+                row.status === 1 &&
+                row.assignStatus !== 1 &&
+                $hasPermission('eom:contact:update')
+              "
               type="primary"
               :underline="false"
               icon="el-icon-close"
@@ -153,7 +173,15 @@
             <el-popconfirm
               class="ele-action"
               title="确定要删除此信息吗?"
-              v-if="(row.assignStatus !== 1&& $hasPermission('eom:contact:delete')&&[0, 3].includes(row.approvalStatus)&&isNeed_process_is_close)||(row.assignStatus !== 1&& $hasPermission('eom:contact:delete')&&!isNeed_process_is_close)"
+              v-if="
+                (row.assignStatus !== 1 &&
+                  $hasPermission('eom:contact:delete') &&
+                  [0, 3].includes(row.approvalStatus) &&
+                  isNeed_process_is_close) ||
+                (row.assignStatus !== 1 &&
+                  $hasPermission('eom:contact:delete') &&
+                  !isNeed_process_is_close)
+              "
               @confirm="remove(row)"
             >
               <template v-slot:reference>
@@ -181,402 +209,415 @@
       @done="commitBtn"
     />
     <drawer ref="drawerRef"></drawer>
-    <process-submit-dialog :processSubmitDialogFlag.sync="processSubmitDialogFlag" v-if="processSubmitDialogFlag" ref="processSubmitDialogRef" @reload="reload"></process-submit-dialog>
+    <process-submit-dialog
+      :processSubmitDialogFlag.sync="processSubmitDialogFlag"
+      v-if="processSubmitDialogFlag"
+      ref="processSubmitDialogRef"
+      @reload="reload"
+    ></process-submit-dialog>
+  <myqsCode ref="qsCodeRef"></myqsCode>
 
   </ele-split-layout>
-  <!-- </el-card> -->
 
-  <!-- </div> -->
 </template>
 
 <script>
-import ContactSearch from './components/contactSearch.vue';
-import AddContactDialog from './components/addContactDialog.vue';
-import assignDialog from './components/assignDialog.vue';
-import ContactDetailDialog from './components/contactDetailDialog.vue';
-import popModal from '@/components/pop-modal';
-import AssetTree from '@/components/AssetTree';
-import {
-  contactDelete,
-  contactPage,
-  contactTypeTree,
-  updateStatus,
-  free
-} from '@/api/saleManage/contact';
-import dictMixins from '@/mixins/dictMixins';
-import drawer from './components/drawer.vue';
-import { mapGetters } from 'vuex';
-import {reviewStatus} from "@/enum/dict";
-import processSubmitDialog from "@/BIZComponents/processSubmitDialog/processSubmitDialog.vue";
+  import ContactSearch from './components/contactSearch.vue';
+  import AddContactDialog from './components/addContactDialog.vue';
+  import assignDialog from './components/assignDialog.vue';
+  import ContactDetailDialog from './components/contactDetailDialog.vue';
+  import popModal from '@/components/pop-modal';
+  import AssetTree from '@/components/AssetTree';
+  import {
+    contactDelete,
+    contactPage,
+    contactTypeTree,
+    updateStatus,
+    free
+  } from '@/api/saleManage/contact';
+  import dictMixins from '@/mixins/dictMixins';
+  import drawer from './components/drawer.vue';
+  import { mapGetters } from 'vuex';
+  import { reviewStatus } from '@/enum/dict';
+  import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
+  import myqsCode from './components/qsCode.vue';
 
-export default {
-  mixins: [dictMixins],
-  components: {
-    processSubmitDialog,
-    AssetTree,
-    ContactSearch,
-    popModal,
-    AddContactDialog,
-    ContactDetailDialog,
-    assignDialog,
-    drawer
-  },
-  data() {
-    return {
-      selection: [],
-      defaultExpandedKeys: [],
-      delVisible: false,
-      processSubmitDialogFlag: false,
-      // 加载状态
-      loading: false,
-      columns: [
-        {
-          width: 45,
-          type: 'selection',
-          columnKey: 'selection',
-          align: 'center'
-        },
-        {
-          columnKey: 'index',
-          label: '序号',
-          type: 'index',
-          width: 55,
-          align: 'center',
-          showOverflowTooltip: true,
-          fixed: 'left'
-        },
-        {
-          prop: 'code',
-          label: '编码',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 140,    fixed: 'left'
-        },
-        {
-          prop: 'name',
-          label: '名称',
-          align: 'center',
-          slot: 'name',
-          showOverflowTooltip: true,
-          minWidth: 200,    fixed: 'left'
-        },
-        {
-          prop: 'serialNo',
-          label: '代号',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 140
-        },
-        {
-          prop: 'phone',
-          label: '电话',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 120
-        },
-        {
-          prop: 'addressName',
-          label: '单位地址',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 120,
-          formatter: (_row, _column, cellValue) => {
-            let addr =
-              '' + _row.addressName ? _row.addressName.replaceAll(',', '') : '';
-            addr += _row.address ? _row.address : '';
-            return addr;
-          }
-        },
-        {
-          prop: 'linkName',
-          label: '联系人',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 120
-        },
-        {
-          prop: 'linkPhone',
-          label: '联系人电话',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 120
-        },
+  export default {
+    mixins: [dictMixins],
+    components: {
+      processSubmitDialog,
+      AssetTree,
+      ContactSearch,
+      popModal,
+      AddContactDialog,
+      ContactDetailDialog,
+      assignDialog,
+      drawer,myqsCode
+    },
+    data() {
+      return {
+        selection: [],
+        defaultExpandedKeys: [],
+        delVisible: false,
+        processSubmitDialogFlag: false,
+        
+        // 加载状态
+        loading: false,
+        columns: [
+          {
+            width: 45,
+            type: 'selection',
+            columnKey: 'selection',
+            align: 'center'
+          },
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'code',
+            label: '编码',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 140,
+            fixed: 'left'
+          },
+          {
+            prop: 'name',
+            label: '名称',
+            align: 'center',
+            slot: 'name',
+            showOverflowTooltip: true,
+            minWidth: 200,
+            fixed: 'left'
+          },
+          {
+            prop: 'serialNo',
+            label: '代号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 140
+          },
+          {
+            prop: 'phone',
+            label: '电话',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'addressName',
+            label: '单位地址',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 120,
+            formatter: (_row, _column, cellValue) => {
+              let addr =
+                '' + _row.addressName
+                  ? _row.addressName.replaceAll(',', '')
+                  : '';
+              addr += _row.address ? _row.address : '';
+              return addr;
+            }
+          },
+          {
+            prop: 'linkName',
+            label: '联系人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'linkPhone',
+            label: '联系人电话',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
 
-        {
-          prop: 'parentName',
-          label: '上级单位',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 120
-        },
-        {
-          prop: 'salesmanName',
-          label: '销售员',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 120
-        },
-        {
-          prop: 'assignStatus',
-          label: '是否指派',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100,
-          formatter: (_row, _column, cellValue) => {
-            return _row.assignStatus === 1 ? '是' : '否';
-          }
-        },
+          {
+            prop: 'parentName',
+            label: '上级单位',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'salesmanName',
+            label: '销售员',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'assignStatus',
+            label: '是否指派',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100,
+            formatter: (_row, _column, cellValue) => {
+              return _row.assignStatus === 1 ? '是' : '否';
+            }
+          },
 
-        {
-          prop: 'status',
-          label: '状态',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100,
-          formatter: (_row, _column, cellValue) => {
-            return _row.status === 1 ? '启用' : '禁用';
-          }
-        },
-        {
-          prop: 'approvalStatus',
-          label: '审批状态',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100,
-          formatter: (_row, _column, cellValue) => {
-            return reviewStatus[_row.approvalStatus];
-          }
-        },
-        {
-          prop: 'createUsername',
-          label: '创建人',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
-        {
-          prop: 'createTime',
-          label: '创建时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 160,
-          formatter: (_row, _column, cellValue) => {
-            return this.$util.toDateString(cellValue);
+          {
+            prop: 'status',
+            label: '状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100,
+            formatter: (_row, _column, cellValue) => {
+              return _row.status === 1 ? '启用' : '禁用';
+            }
+          },
+          {
+            prop: 'approvalStatus',
+            label: '审批状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100,
+            formatter: (_row, _column, cellValue) => {
+              return reviewStatus[_row.approvalStatus];
+            }
+          },
+          {
+            prop: 'createUsername',
+            label: '创建人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 160,
+            formatter: (_row, _column, cellValue) => {
+              return this.$util.toDateString(cellValue);
+            }
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 280,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true,
+            fixed: 'right'
           }
+        ],
+        current: {},
+        curNodeData: {},
+        treeList: [],
+        treeLoading: false,
+        formData: {},
+        rootTreeId: null,
+        defaultProps: {
+          children: 'children',
+          label: 'name'
         },
-        {
-          columnKey: 'action',
-          label: '操作',
-          width: 280,
-          align: 'center',
-          resizable: false,
-          slot: 'action',
-          showOverflowTooltip: true,
-          fixed: 'right'
-        }
-      ],
-      current: {},
-      curNodeData: {},
-      treeList: [],
-      treeLoading: false,
-      formData: {},
-      rootTreeId: null,
-      defaultProps: {
-        children: 'children',
-        label: 'name'
-      },
-      showEdit: true
-    };
-  },
-
-  computed: {
-    ...mapGetters(['user'])
-  },
-  created() {
-    this.requestDict('状态');
-    this.getTreeData();
-  },
-  methods: {
-    /* 表格数据源 */
-    datasource({ page, limit, where, order }) {
-      return contactPage({
-        pageNum: page,
-        size: limit,
-        type: 1,
-        ...where
-      });
-    },
-    async getTreeData() {
-      try {
-        this.treeLoading = true;
-        const res = await contactTypeTree({ type: 17 });
-        this.treeLoading = false;
-        if (res?.code === '0') {
-          this.treeList = res.data;
-          this.$nextTick(() => {
-            this.defaultExpandedKeys = this.treeList?.map(
-              (item) => item.id
-            ) || [17];
-            // 默认高亮第一级树节点
-            // if (this.treeList[0]) {
-            //   this.rootTreeId = this.treeList[0].id;
-            //   this.getDetail(this.treeList[0].id);
-            // }
-          });
-          return this.treeList;
-        }
-      } catch (error) {}
-      this.treeLoading = false;
-    },
-    handleNodeClick(data, node) {
-      this.curNodeData = data;
-      this.reload({ categoryId: data.id });
-    },
-    /* 刷新表格 */
-    reload(where) {
-      this.$refs.table.reload({ page: 1, where });
+        showEdit: true
+      };
     },
-    openEdit(type,row) {
-      // console.log(row,'user')
-      // this.user.info.id
-      this.current = row;
-      this.showEdit = true;
-      this.$refs.addContactDialogRef.open( type,row, this.curNodeData.id);
-      this.$refs.addContactDialogRef.$refs.form &&
-        this.$refs.addContactDialogRef.$refs.form.clearValidate();
-    },
-    sub(res) {
-      this.processSubmitDialogFlag = true
-      this.$nextTick(()=>{
-        let params = {
-          businessId:res.id,
-          businessKey : 'contact_approve',
-          formCreateUserId: res.createUserId,
-          variables:{
-            certificationType: 1
-          },
-          // 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: res.id
-      // }).then((res) => {
-      //   this.$message.success('提交成功!');
-      //   this.reload();
-      // });
-    },
-    //批量删除
-    allDelBtn() {
-      if (this.selection.length === 0) return;
-      this.delVisible = true;
-    },
-    commitBtn() {
-      const dataId = this.selection.map((v) => v.id);
-      contactDelete(dataId).then((res) => {
-        this.$message.success('删除成功!');
-        this.reload();
-      });
+    computed: {
+      ...mapGetters(['user'])
     },
-    remove(row) {
-      contactDelete([row.id]).then((res) => {
-        this.$message.success('删除成功!');
-        this.reload();
-      });
+    created() {
+      this.requestDict('状态');
+      this.getTreeData();
     },
-    /** 启用 */
-    enableOption(row) {
-      updateStatus(row.id, 1)
-        .then((msg) => {
-          this.$message.success('启用成功');
+    methods: {
+      /* 表格数据源 */
+      datasource({ page, limit, where, order }) {
+        return contactPage({
+          pageNum: page,
+          size: limit,
+          type: 1,
+          ...where
+        });
+      },
+      async getTreeData() {
+        try {
+          this.treeLoading = true;
+          const res = await contactTypeTree({ type: 17 });
+          this.treeLoading = false;
+          if (res?.code === '0') {
+            this.treeList = res.data;
+            this.$nextTick(() => {
+              this.defaultExpandedKeys = this.treeList?.map(
+                (item) => item.id
+              ) || [17];
+              // 默认高亮第一级树节点
+              // if (this.treeList[0]) {
+              //   this.rootTreeId = this.treeList[0].id;
+              //   this.getDetail(this.treeList[0].id);
+              // }
+            });
+            return this.treeList;
+          }
+        } catch (error) {}
+        this.treeLoading = false;
+      },
+      handleNodeClick(data, node) {
+        this.curNodeData = data;
+        this.reload({ categoryId: data.id });
+      },
+      /* 刷新表格 */
+      reload(where) {
+        this.$refs.table.reload({ page: 1, where });
+      },
+      openEdit(type, row) {
+        // console.log(row,'user')
+        // this.user.info.id
+        this.current = row;
+        this.showEdit = true;
+        this.$refs.addContactDialogRef.open(type, row, this.curNodeData.id);
+        this.$refs.addContactDialogRef.$refs.form &&
+          this.$refs.addContactDialogRef.$refs.form.clearValidate();
+      },
+      sub(res) {
+        this.processSubmitDialogFlag = true;
+        this.$nextTick(() => {
+          let params = {
+            businessId: res.id,
+            businessKey: 'contact_approve',
+            formCreateUserId: res.createUserId,
+            variables: {
+              certificationType: 1
+            }
+            // 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: res.id
+        // }).then((res) => {
+        //   this.$message.success('提交成功!');
+        //   this.reload();
+        // });
+      },
+      //批量删除
+      allDelBtn() {
+        if (this.selection.length === 0) return;
+        this.delVisible = true;
+      },
+      commitBtn() {
+        const dataId = this.selection.map((v) => v.id);
+        contactDelete(dataId).then((res) => {
+          this.$message.success('删除成功!');
           this.reload();
-        })
-        .catch((e) => {
-          this.$message.error(e.message);
         });
-    },
-    /** 禁用 */
-    disableOption(row) {
-      updateStatus(row.id, 2)
-        .then((msg) => {
-          this.$message.success('禁用成功');
+      },
+      remove(row) {
+        contactDelete([row.id]).then((res) => {
+          this.$message.success('删除成功!');
           this.reload();
-        })
-        .catch((e) => {
-          this.$message.error(e.message);
         });
-    },
-    //指派
-    assign(type, row) {
-      let contactIds = [];
-      let contactNames = [];
-      let isAssign = false;
-      if (type == 'all') {
-        contactIds = this.selection.map((item) => item.id);
-        contactNames = this.selection.map((item) => item.name);
-        this.selection.forEach((item) => {
-          if (item.assignStatus === 1) {
-            isAssign = true;
-          }
+      },
+      /** 启用 */
+      enableOption(row) {
+        updateStatus(row.id, 1)
+          .then((msg) => {
+            this.$message.success('启用成功');
+            this.reload();
+          })
+          .catch((e) => {
+            this.$message.error(e.message);
+          });
+      },
+      /** 禁用 */
+      disableOption(row) {
+        updateStatus(row.id, 2)
+          .then((msg) => {
+            this.$message.success('禁用成功');
+            this.reload();
+          })
+          .catch((e) => {
+            this.$message.error(e.message);
+          });
+      },
+      //指派
+      assign(type, row) {
+        let contactIds = [];
+        let contactNames = [];
+        let isAssign = false;
+        if (type == 'all') {
+          contactIds = this.selection.map((item) => item.id);
+          contactNames = this.selection.map((item) => item.name);
+          this.selection.forEach((item) => {
+            if (item.assignStatus === 1) {
+              isAssign = true;
+            }
+          });
+        } else {
+          contactIds = [row.id];
+          contactNames = [row.name];
+        }
+        if (isAssign) {
+          this.$message.warning('请先释放已指派的!');
+          return;
+        }
+        this.$refs.assignDialogRef.open(contactIds, contactNames);
+      },
+      setCode(row){
+        this.$refs.qsCodeRef.open(row)
+         
+      },
+      //释放
+      setFree(type, row) {
+        let contactIds = [];
+        let contactNames = [];
+        if (type == 'all') {
+          contactIds = this.selection.map((item) => item.id).toString();
+          contactNames = this.selection.map((item) => item.name).toString();
+        } else {
+          contactIds = row.id;
+          contactNames = row.name;
+        }
+        free({ contactIds, contactNames }).then((res) => {
+          this.$message.success('释放成功');
+          this.reload();
         });
-      } else {
-        contactIds = [row.id];
-        contactNames = [row.name];
-      }
-      if (isAssign) {
-        this.$message.warning('请先释放已指派的!');
-        return;
-      }
-      this.$refs.assignDialogRef.open(contactIds, contactNames);
-    },
-    //释放
-    setFree(type, row) {
-      let contactIds = [];
-      let contactNames = [];
-      if (type == 'all') {
-        contactIds = this.selection.map((item) => item.id).toString();
-        contactNames = this.selection.map((item) => item.name).toString();
-      } else {
-        contactIds = row.id;
-        contactNames = row.name;
-      }
-      free({ contactIds, contactNames }).then((res) => {
-        this.$message.success('释放成功');
-        this.reload();
-      });
-    },
+      },
 
-    openDetail(row) {
-      // this.$refs.contactDetailDialogRef.open(row);
-      this.$refs.drawerRef.open(row,'allList');
+      openDetail(row) {
+        // this.$refs.contactDetailDialogRef.open(row);
+        this.$refs.drawerRef.open(row, 'allList');
+      }
     }
-  }
-};
+  };
 </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 :deep(.el-tree-node__content) {
-  height: 40px;
-  & > .el-tree-node__expand-icon {
-    margin-left: 10px;
+  .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;
+    & > .el-tree-node__expand-icon {
+      margin-left: 10px;
+    }
   }
-}
 </style>

+ 10 - 41
src/views/saleManage/contact/index.vue

@@ -212,30 +212,18 @@
     >
       <followList ref="followListRef" @success="followListSuccess"></followList>
     </ele-modal>
-    <el-dialog
-      class="ele-dialog-form"
-      :visible.sync="codeVisible"
-      :close-on-click-modal="false"
-      :close-on-press-escape="false"
-      width="200px"
-      append-to-body
-      title="二维码"
-    >
-    <ele-qr-code :value="text" :size="120" />
-      <template v-slot:footer>
-        <el-button @click="codeVisible=false">返回</el-button>
-      </template>
-    </el-dialog>
+    <myqsCode ref="qsCodeRef"></myqsCode>
+
   </div>
 </template>
 
 <script>
 import addOpportunityDialog from '@/views/saleManage/businessOpportunity/components/addOpportunityDialog.vue';
-import EleQrCode from 'ele-admin/es/ele-qr-code';
 
 import ContactSearch from './components/contactSearch.vue';
 import AddContactDialog from './components/addContactDialog.vue';
 import ContactDetailDialog from './components/contactDetailDialog.vue';
+import myqsCode from './components/qsCode.vue';
 import drawer from './components/drawer.vue';
 import contactList from './contactList.vue';
 import contactListAdmin from './contactListAdmin.vue';
@@ -263,8 +251,7 @@ export default {
     contactList,
     addOpportunityDialog,
     drawer,
-    followList,
-    EleQrCode
+    followList,myqsCode
   },
   data() {
     return {
@@ -552,32 +539,14 @@ export default {
         this.reload();
       });
     },
-    obj_to_str(obj) {
-      var str = '';
-      for (var k in obj) {
-        str += `${k}=${obj[k]}&`;
-      }
-      return str;
-    },
-    setCode(row) {
-      this.codeVisible = true;
+    setCode(row){
+      this.$nextTick(()=>{
+        this.$refs.qsCodeRef.open(row)
 
-      let addr =
-              '' + row.addressName ? row.addressName.replaceAll(',', '') : '';
-            addr += row.address ? row.address : '';
-      const paramsStr = this.obj_to_str({
-        name: encodeURIComponent(row.name),
-        addr: encodeURIComponent(addr),
-        code: encodeURIComponent(row.code),
-        unifiedSocialCreditCode: encodeURIComponent(row.unifiedSocialCreditCode),
-   
-      });
-      this.text =
-        window.location.origin +
-        '/eom/fromQRCode/designDrawing.html' +
-        '?' +
-        paramsStr;
+      })
     },
+    
+
     /** 启用 */
     enableOption(row) {
       updateStatus(row.id, 1)