yusheng 11 месяцев назад
Родитель
Сommit
89bee4e8bc

+ 149 - 0
src/views/bpm/handleTask/components/saleOrder/bomList.vue

@@ -0,0 +1,149 @@
+<template>
+  <ele-pro-table
+    ref="table"
+    :columns="columns"
+    :datasource="tableList"
+    class="dict-table"
+    tool-class="ele-toolbar-actions"
+    :needPage="false"
+  >
+  </ele-pro-table>
+</template>
+
+<script>
+  const statusOpt = {
+    '': '全部',
+    0: '草稿',
+    1: '已发布'
+  };
+  const rootCategoryLevelIdList = {
+    9: '产品',
+    1: '物料',
+    4: '生产设备',
+    5: '模具',
+    6: '备品备件',
+    3: '零部件',
+    8: '舟皿',
+    10: '消耗材料',
+    13: '包装材料',
+    14: '生产辅助设备',
+    15: '仪表计量设备',
+    23: '会计科目',
+    26: '周转盘',
+    28: '废品'
+  };
+  const sxtList = {
+    1: '自制件',
+    2: '采购件',
+    3: '外协件',
+    4: '受托件'
+  };
+  export default {
+    components: {},
+    props: {
+      tableList: {
+        default: () => {
+          return [];
+        }
+      }
+    },
+    data() {
+      return {
+        // 表格列配置
+        columns: [
+          {
+            label: '序号',
+            columnKey: 'index',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'code',
+            label: '物品编码',
+            showOverflowTooltip: true,
+            width: 120
+          },
+          {
+            prop: 'name',
+            label: '名称',
+            width: 150
+          },
+          {
+            prop: 'level',
+            label: '层级'
+          },
+          {
+            prop: 'brandNum',
+            label: '牌号'
+          },
+          {
+            prop: 'modelType',
+            label: '型号',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'specification',
+            label: '规格',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'dosage',
+            label: '用量',
+            width: 100
+          },
+          {
+            prop: 'componentAttribute',
+            label: '属性类型',
+            formatter: (row) => {
+              return row.componentAttribute
+                ?.map((val) => sxtList[val])
+                ?.toString();
+            },
+            width: 260
+          },
+          {
+            prop: 'materialsCode',
+            label: '物料代号',
+            width: 150
+          },
+          {
+            prop: 'versions',
+            label: '版本',
+            formatter: (row) => {
+              return row.versions + '.0';
+            }
+          },
+          {
+            prop: 'status ',
+            label: '状态',
+            formatter: (row) => {
+              return statusOpt[+row.status];
+            }
+          },
+          {
+            prop: 'createName',
+            label: '创建人',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'createTime',
+            label: '创建日期',
+            width: 160
+          }
+        ]
+      };
+    },
+    computed: {},
+    created() {},
+    methods: {
+      open(tableList) {
+        this.tableList = tableList;
+      }
+    }
+  };
+</script>
+<style scoped lang="scss"></style>

+ 64 - 335
src/views/bpm/handleTask/components/saleOrder/detailDialog.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <!-- <div class="switch">
+    <div class="switch">
       <div class="switch_left">
         <ul>
           <li
@@ -13,38 +13,22 @@
           </li>
         </ul>
       </div>
-    </div> -->
-    <div>
+    </div>
+    <div v-show="activeComp == 'main'">
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <headerTitle title="订单信息"> </headerTitle>
         <el-row>
           <el-col :span="12">
-            <el-form-item
-              label="订单编号:"
-              prop="orderNo"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="订单编号:" prop="orderNo">
               {{ form.orderNo }}
             </el-form-item>
-            <el-form-item
-              label="合同名称:"
-              prop="contractName"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="合同名称:" prop="contractName">
               {{ form.contractName }}
             </el-form-item>
-            <el-form-item
-              label="合同编号:"
-              prop="contractNumber"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="合同编号:" prop="contractNumber">
               {{ form.contractNumber }}
             </el-form-item>
-            <el-form-item
-              label="结算方式:"
-              prop="settlementModeName"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="结算方式:" prop="settlementModeName">
               {{ detailData.settlementModeName }}
             </el-form-item>
             <el-form-item prop="orderFiles" label="订单附件:">
@@ -64,18 +48,10 @@
               <!--              </div>-->
             </el-form-item>
 
-            <el-form-item
-              label="客户收货地址:"
-              prop="receiveAddress"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="客户收货地址:" prop="receiveAddress">
               {{ form.receiveAddress }}
             </el-form-item>
-            <el-form-item
-              label="订单备注:"
-              prop="remark"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="订单备注:" prop="remark">
               {{ form.remark }}
             </el-form-item>
           </el-col>
@@ -83,52 +59,27 @@
             <!-- <el-form-item
               label="交货日期:"
               prop="deliveryDate"
-              style="margin-bottom: 16px"
             >
               {{ form.deliveryDate }}
             </el-form-item> -->
 
-            <el-form-item
-              label="项目名称:"
-              prop="projectName"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="项目名称:" prop="projectName">
               {{ form.projectName }}
             </el-form-item>
-            <el-form-item
-              label="销售部门:"
-              prop="salesDeptName"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="销售部门:" prop="salesDeptName">
               {{ form.salesDeptName }}
             </el-form-item>
-            <el-form-item
-              label="销售类型:"
-              prop="saleTypeName"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="销售类型:" prop="saleTypeName">
               {{ form.saleTypeName }}
             </el-form-item>
-            <el-form-item
-              label="应付金额:"
-              prop="payAmount"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="应付金额:" prop="payAmount">
               {{ form.payAmount }}元
             </el-form-item>
-            <el-form-item
-              label="订单总金额:"
-              prop="totalAmount"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="订单总金额:" prop="totalAmount">
               {{ form.totalAmount }}元
             </el-form-item>
 
-            <el-form-item
-              label="订单类型:"
-              prop="totalAmount"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="订单类型:" prop="totalAmount">
               {{
                 form.needProduce == 1
                   ? '有客户生产性订单'
@@ -152,60 +103,34 @@
         <headerTitle title="基本信息"></headerTitle>
         <el-row>
           <el-col :span="12">
-            <el-form-item
-              label="客户名称:"
-              prop="partaName"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="客户名称:" prop="partaName">
               {{ form.partaName }}
             </el-form-item>
             <el-form-item
               label="客户统一社会信用代码"
               prop="partaUnifiedSocialCreditCode"
               label-width="160px"
-              style="margin-bottom: 16px"
             >
               {{ form.partaUnifiedSocialCreditCode }}
             </el-form-item>
-            <el-form-item
-              label="客户联系人:"
-              prop="partaLinkName"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="客户联系人:" prop="partaLinkName">
               {{ form.partaLinkName }}
             </el-form-item>
-            <el-form-item
-              label="客户电话:"
-              prop="partaTel"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="客户电话:" prop="partaTel">
               {{ form.partaTel }}
             </el-form-item>
-            <el-form-item
-              label="客户传真:"
-              prop="partaFax"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="客户传真:" prop="partaFax">
               {{ form.partaFax }}
             </el-form-item>
-            <el-form-item
-              label="	客户Email:"
-              prop="partaEmail"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="	客户Email:" prop="partaEmail">
               {{ form.partaEmail }}
             </el-form-item>
-            <el-form-item
-              label="客户地址:"
-              prop="partaAddress"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="客户地址:" prop="partaAddress">
               {{ form.partaAddress }}
             </el-form-item>
             <!-- <el-form-item
               label="客户税号"
               prop="contactAddress"
-              style="margin-bottom: 16px"
             >
               <el-input
                 clearable
@@ -216,26 +141,17 @@
           </el-col>
 
           <el-col :span="12">
-            <el-form-item
-              label="售出方名称:"
-              prop="partbName"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="售出方名称:" prop="partbName">
               {{ form.partbName }}
             </el-form-item>
             <el-form-item
               label="售出方统一社会信用代码"
               prop="partbUnifiedSocialCreditCode"
               label-width="180px"
-              style="margin-bottom: 16px"
             >
               {{ form.partbUnifiedSocialCreditCode }}
             </el-form-item>
-            <el-form-item
-              label="售出方联系人:"
-              prop="partbLinkName"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="售出方联系人:" prop="partbLinkName">
               {{ form.partbLinkName }}
             </el-form-item>
             <el-form-item
@@ -249,25 +165,16 @@
               {{ form.partbFax }}
             </el-form-item>
 
-            <el-form-item
-              label="售出方Email:"
-              prop="partbEmail"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="售出方Email:" prop="partbEmail">
               {{ form.partbEmail }}
             </el-form-item>
 
-            <el-form-item
-              label="售出方地址:"
-              prop="partbAddress"
-              style="margin-bottom: 16px"
-            >
+            <el-form-item label="售出方地址:" prop="partbAddress">
               {{ form.partbAddress }}
             </el-form-item>
             <!-- <el-form-item
               label="售出方税号"
               prop="contactAddress"
-              style="margin-bottom: 16px"
             >
               <el-input
                 clearable
@@ -295,37 +202,30 @@
         type="view"
       ></typeList>
     </div>
-    <!-- <div v-if="activeComp=='invoice'">
-      <invoiceList :orderId="detailId"></invoiceList>
-      </div>
-      <div v-if="activeComp=='returnorder'">
-      <returnGoodsList :orderId="detailId"></returnGoodsList>
-      </div>
-      <div v-if="activeComp=='accountstatement'">
-        <accountstatementList :orderId="detailId"></accountstatementList>
-      </div> -->
+    <div v-show="activeComp == '1'">
+      <bomList :tableList="orderBomList2"></bomList>
+    </div>
+    <div v-show="activeComp == '2'">
+      <bomList :tableList="orderBomList1"></bomList>
+    </div>
+    <div v-show="activeComp == '3'">
+      <bomList :tableList="orderBomList3"></bomList>
+    </div>
   </div>
 </template>
 
 <script>
   import { getSaleOrderDetail } from '@/api/bpm/components/saleManage/saleorder';
-
-  // import invoiceList from '@/views/saleManage/saleOrder/orderAssociation/invoiceList.vue'
-  // import returnGoodsList from '@/views/saleManage/saleOrder/orderAssociation/returnGoodsList.vue'
-  // import accountstatementList from '@/views/saleManage/saleOrder/orderAssociation/accountstatementList.vue'
-  import { getFile } from '@/api/system/file';
   import dictMixins from '@/mixins/dictMixins';
-  import { copyObj } from '@/utils/util';
   import inventoryTabledetail from '@/BIZComponents/inventoryTableDetails.vue';
-  // import fileMain from '@/components/addDoc/index.vue';
   import typeList from './typeList.vue';
-  
+  import bomList from './bomList.vue';
   export default {
     mixins: [dictMixins],
     components: {
-      // fileMain,
       inventoryTabledetail,
-      typeList
+      typeList,
+      bomList
     },
     props: {
       businessId: {
@@ -334,212 +234,25 @@
     },
     data() {
       return {
-        activeComp: 'order',
-        tabOptions: [
-          { key: 'order', name: '订单详情' },
-          { key: 'invoice', name: '发货列表' },
-          { key: 'returnorder', name: '退货列表' },
-          { key: 'accountstatement', name: '对账列表' }
-        ],
+        activeComp: 'main',
+        tabOptions: [{ key: 'main', name: '订单信息' }],
         visible: false,
         detailId: '',
         title: '详情',
         row: {},
         activeName: 'base',
-        form: {
-          orderFiles: [{ name: '222' }]
-        },
+        form: {},
         rules: {},
         detailData: {},
-        receiptPaymentListcolumns: [
-          {
-            width: 45,
-            type: 'index',
-            columnKey: 'index',
-            align: 'center',
-            fixed: 'left'
-          },
-          {
-            width: 200,
-            prop: 'moneyName',
-            label: '款项名称',
-            slot: 'moneyName'
-          },
-          {
-            width: 100,
-            prop: 'price',
-            label: '金额',
-            slot: 'price',
-            formatter: (_row, _column, cellValue) => {
-              return _row.price + '元';
-            }
-          },
-          {
-            width: 100,
-            prop: 'ratio',
-            label: '比例',
-            slot: 'ratio',
-            formatter: (_row, _column, cellValue) => {
-              return _row.ratio + '%';
-            }
-          },
-          {
-            width: 160,
-            prop: 'deadLine',
-            label: '截止日期',
-            slot: 'deadLine'
-          },
-          {
-            prop: 'remark',
-            label: '	说明',
-            slot: 'remark'
-          }
-        ],
-        competAnalysisListcolumns: [
-          {
-            width: 45,
-            type: 'index',
-            columnKey: 'index',
-            align: 'center',
-            fixed: 'left'
-          },
-          {
-            width: 200,
-            prop: 'productName',
-            label: '名称',
-            slot: 'productName'
-          },
-          {
-            width: 120,
-            prop: 'productCode',
-            label: '编码',
-            slot: 'productCode'
-          },
-          {
-            width: 200,
-            prop: 'productCategoryName',
-            label: '类型',
-            slot: 'productCategoryName'
-          },
-          {
-            width: 160,
-            prop: 'productBrand',
-            label: '牌号',
-            slot: 'productBrand'
-          },
-          {
-            width: 120,
-            prop: 'modelType',
-            label: '型号',
-            slot: 'modelType'
-          },
-          {
-            width: 120,
-            prop: 'specification',
-            label: '规格',
-            slot: 'specification'
-          },
-
-          {
-            width: 120,
-            prop: 'totalCount',
-            label: '数量',
-            slot: 'totalCount'
-          },
-          {
-            width: 120,
-            prop: 'measuringUnit',
-            label: '计量单位',
-            slot: 'measuringUnit'
-          },
-          {
-            width: 160,
-            prop: 'singlePrice',
-            label: '单价',
-            slot: 'singlePrice'
-          },
-          {
-            width: 120,
-            prop: 'totalPrice',
-            label: '销售总金额',
-            slot: 'totalPrice',
-            formatter: (_row, _column, cellValue) => {
-              return _row.totalPrice + '元';
-            }
-          },
-
-          {
-            width: 120,
-            prop: 'deliveryDays',
-            label: '交期(天)',
-            slot: 'deliveryDays'
-          },
-          {
-            width: 200,
-            prop: 'guaranteePeriod',
-            label: '有效期',
-            slot: 'guaranteePeriod',
-            formatter: (_row, _column, cellValue) => {
-              return (
-                (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName
-              );
-            }
-          },
-          // {
-          //   width: 120,
-          //   prop: 'guaranteePeriodUnitCode',
-          //   label: '',
-          //   slot: 'guaranteePeriodUnitCode'
-          // },
-          {
-            width: 120,
-            prop: 'technicalAnswerName',
-            label: '技术答疑人',
-            slot: 'technicalAnswerName'
-          },
-          {
-            width: 220,
-            prop: 'technicalParams',
-            label: '技术参数',
-            slot: 'technicalParams'
-          },
-          {
-            width: 240,
-            prop: 'technicalDrawings',
-            label: '技术图纸',
-            slot: 'technicalDrawings',
-            formatter: (_row, _column, cellValue) => {
-              return (
-                (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName
-              );
-            }
-          },
-          {
-            width: 220,
-            prop: 'remark',
-            label: '备注',
-            slot: 'remark'
-          }
-        ]
+        orderBomList1: [], //生产计划
+        orderBomList2: [], //生产性物资采购
+        orderBomList3: [] //客供料外协采购
       };
     },
     created() {
       this.getDetailData(this.businessId);
     },
     methods: {
-      cancel() {
-        this.$nextTick(() => {
-          // 关闭后,销毁所有的表单数据
-          (this.form = copyObj(this.formDef)),
-            (this.otherForm = copyObj(this.otherFormDef)),
-            (this.tableBankData = []);
-          this.tableLinkData = [];
-          this.visible = false;
-        });
-      },
-      downloadFile(file) {
-        getFile({ objectName: file.storePath }, file.name);
-      },
       async getDetailData(id) {
         this.loading = true;
         const data = await getSaleOrderDetail(id);
@@ -547,6 +260,25 @@
         if (data) {
           this.form = data;
           this.detailData = data;
+          this.orderBomList1 = data.orderBomList.filter(
+            (item) => item.disposeType === 1
+          );
+          this.orderBomList2 = data.orderBomList.filter(
+            (item) => item.disposeType === 2
+          );
+          this.orderBomList3 = data.orderBomList.filter(
+            (item) => item.disposeType === 3
+          );
+          if (this.orderBomList1?.length) {
+            this.tabOptions.push({ key: '2', name: '生产计划物品清单' });
+          }
+          if (this.orderBomList2?.length) {
+            this.tabOptions.push({ key: '1', name: '生产性物资采购清单' });
+          }
+          if (this.orderBomList3?.length) {
+            this.tabOptions.push({ key: '3', name: '客供料外协采购清单' });
+          }
+
           this.$nextTick(() => {
             this.$refs.inventoryTabledetailRef &&
               this.$refs.inventoryTabledetailRef.putTableValue(data);
@@ -560,12 +292,9 @@
 </script>
 
 <style scoped lang="scss">
-  .ele-dialog-form {
-    .el-form-item {
-      margin-bottom: 10px;
-    }
+  :deep(.el-form-item) {
+    margin-bottom: 4px !important;
   }
-
   .headbox {
     display: flex;
     justify-content: flex-start;