Browse Source

Merge branch 'master' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend-wt

yusheng 1 week ago
parent
commit
1f81f8488c

+ 1 - 1
src/BIZComponents/inventoryTableDetails.vue

@@ -960,7 +960,7 @@
             productList,
             productList,
             'productId'
             'productId'
           );
           );
-          this.$refs.table.reload();
+          this.$refs.table?.reload();
         }
         }
       }
       }
     }
     }

+ 487 - 9
src/views/bpm/handleTask/components/adjustNote/detailDialog.vue

@@ -112,11 +112,84 @@
         </el-col>
         </el-col>
       </el-row>
       </el-row>
       <headerTitle title="物品清单" style="margin-top: 30px"></headerTitle>
       <headerTitle title="物品清单" style="margin-top: 30px"></headerTitle>
-      <inventoryTableDetails
-        ref="inventoryTableDetailsRef"
-        :isDiscountTotalPrice="true"
-        :isSelected="true"
-      ></inventoryTableDetails>
+      <div v-if="form.sourceType == 2">
+          <ele-pro-table
+              ref="table"
+              :needPage="false"
+              :columns="columns"
+              @columns-change="handleColumnChange"
+              :cache-key="cacheKeyUrl"
+              :datasource="form.originalList"
+              row-key="id"
+              max-height="500px"
+            >
+              <template v-slot:toolbar>
+                <div class="headbox">
+                  <span class="amount">总计:{{ form.amount }}元</span>
+                  <span class="amount"
+                    >应付金额:{{ form.discountAmount }}元</span
+                  >
+                </div>
+              </template>
+              <template v-slot:technicalDrawings="{ row }">
+                <fileMain v-model="row.technicalDrawings" type="view"></fileMain>
+              </template>
+              <template v-slot:requirementTotalCount="{ row, $index }">
+                <!-- <el-button type="text" @click="handleGetBillDetail(row, 1)">{{ -->
+                  {{row.requirementTotalCount}}
+                <!-- }}</el-button> -->
+                <span v-if="row.requirementTotalCount">{{
+                  row.measuringUnit || ''
+                }}</span>
+              </template>
+              <template v-slot:planTotalCount="{ row, $index }">
+                <!-- <el-button type="text" @click="handleGetBillDetail(row, 2)">{{ -->
+                  {{row.planTotalCount}}
+                <!-- }}</el-button> -->
+                <span v-if="row.planTotalCount">{{
+                  row.measuringUnit || ''
+                }}</span>
+              </template>
+              <template v-slot:inquiryTotalCount="{ row, $index }">
+                <!-- <el-button type="text" @click="handleGetBillDetail(row, 3)">{{ -->
+                  {{row.inquiryTotalCount}}
+                <!-- }}</el-button> -->
+                <span v-if="row.inquiryTotalCount">{{
+                  row.measuringUnit || ''
+                }}</span>
+              </template>
+              <template v-slot:contractTotalCount="{ row, $index }">
+                <!-- <el-button type="text" @click="handleGetBillDetail(row, 4)">{{ -->
+                  {{row.contractTotalCount}}
+                <!-- }}</el-button> -->
+                <span v-if="row.contractTotalCount">{{
+                  row.measuringUnit || ''
+                }}</span>
+              </template>
+              <template v-slot:doneTotalCount="{ row, $index }">
+                <!-- <el-button type="text" @click="handleGetBillDetail(row, 5)">{{ -->
+                  {{row.doneTotalCount}}
+                <!-- }}</el-button> -->
+                <span v-if="row.doneTotalCount">{{
+                  row.measuringUnit || ''
+                }}</span>
+              </template>
+              <template v-slot:waitTotalCount="{ row, $index }">
+                <!-- <el-button type="text" @click="handleGetBillDetail(row, 6)">{{ -->
+                  {{row.waitTotalCount}}
+                <!-- }}</el-button> -->
+                <span v-if="row.waitTotalCount">{{
+                  row.measuringUnit || ''
+                }}</span>
+              </template>
+            </ele-pro-table>
+        </div>
+        <div v-else>
+          <inventoryTableDetails
+            ref="inventoryTableDetailsRef"
+            :isDiscountTotalPrice="true"
+          ></inventoryTableDetails>
+        </div>
       <headerTitle
       <headerTitle
         title="冲差信息"
         title="冲差信息"
         style="margin-top: 30px"
         style="margin-top: 30px"
@@ -170,7 +243,8 @@
   import inventoryTable from './inventoryTable.vue';
   import inventoryTable from './inventoryTable.vue';
   import inventoryTableDetails from '@/BIZComponents/inventoryTableDetails.vue';
   import inventoryTableDetails from '@/BIZComponents/inventoryTableDetails.vue';
   import { reduce } from 'lodash';
   import { reduce } from 'lodash';
-
+  import { pricingWayList, lbjtList, levelList, quoteTypeOp } from '@/enum/dict.js';
+  import tabMixins from '@/mixins/tableColumnsMixin';
   const defForm = {
   const defForm = {
     name: '',
     name: '',
     changeCode: '',
     changeCode: '',
@@ -184,6 +258,7 @@
     relationType: ''
     relationType: ''
   };
   };
   export default {
   export default {
+    mixins: [tabMixins],
     components: { inventoryTable, inventoryTableDetails },
     components: { inventoryTable, inventoryTableDetails },
     computed: {
     computed: {
       ...mapGetters(['user'])
       ...mapGetters(['user'])
@@ -197,7 +272,410 @@
       return {
       return {
         form: {
         form: {
           ...defForm
           ...defForm
-        }
+        },
+        cacheKeyUrl: '202606051537-eom-purchase-order-detail',
+        quoteTypeOp,
+        columns: [
+          {
+            width: 45,
+            type: 'index',
+            columnKey: 'index',
+            align: 'center',
+            fixed: 'left'
+          },
+          {
+            width: 45,
+            type: 'selection',
+            columnKey: 'selection',
+            align: 'center',
+            selectable: (row, index) => {
+              return !row.sendTotalCount;
+            }
+          },
+          {
+            width: 200,
+            prop: 'productName',
+            label: '名称',
+            slot: 'productName',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'productCode',
+            label: '编码',
+            slot: 'productCode',
+            align: 'center'
+          },
+          {
+            width: 200,
+            prop: 'productCategoryName',
+            label: '类型',
+            slot: 'productCategoryName',
+            align: 'center'
+          },
+          {
+            width: 160,
+            prop: 'productBrand',
+            label: '牌号',
+            slot: 'productBrand',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'modelType',
+            label: '型号',
+            slot: 'modelType',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'supplierMark',
+            label: '供应商代号',
+            slot: 'supplierMark',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'specification',
+            label: '规格',
+            slot: 'specification',
+            align: 'center'
+          },
+          {
+            minWidth: 200,
+            prop: 'taskName',
+            label: '工序',
+            slot: 'taskName',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'requirementTotalCount',
+            label: '采购需求数量',
+            slot: 'requirementTotalCount',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'planTotalCount',
+            label: '采购计划数量',
+            slot: 'planTotalCount',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'inquiryTotalCount',
+            label: '采购核价数量',
+            slot: 'inquiryTotalCount',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'contractTotalCount',
+            label: '采购合同数量',
+            slot: 'contractTotalCount',
+            align: 'center'
+          },
+          {
+            width: 80,
+            prop: 'doneTotalCount',
+            label: '已采数量',
+            slot: 'doneTotalCount',
+            align: 'center'
+          },
+          {
+            width: 100,
+            prop: 'waitTotalCount',
+            label: '待采数量',
+            // slot: 'waitTotalCount',
+            align: 'center',
+            formatter: (row, column) => {
+              if (row.waitTotalCount) {
+                return row.waitTotalCount + ' ' + row.measuringUnit;
+              }
+            }
+          },
+          {
+            width: 100,
+            prop: 'doneReceiveCount',
+            label: '已收货数量',
+            align: 'center',
+            formatter: (row, column) => {
+              if (row.doneReceiveCount) {
+                return row.doneReceiveCount + ' ' + (row.measuringUnit || '');
+              }
+            }
+          },
+          {
+            width: 100,
+            prop: 'waitReceiveCount',
+            label: '未收货数量',
+            align: 'center',
+            formatter: (row, column) => {
+              if (row.waitReceiveCount) {
+                return row.waitReceiveCount + ' ' + (row.measuringUnit || '');
+              }
+            }
+          },
+          {
+            width: 170,
+            prop: 'purchaseCount',
+            label: '数量',
+            align: 'center',
+            formatter: (row, column) => {
+              if (row.purchaseCount) {
+                return row.purchaseCount + ' ' + (row.purchaseUnit || '');
+              }
+            }
+          },
+
+          {
+            minWidth: 180,
+            prop: 'packingSpecification',
+            align: 'center',
+            label: '包装规格',
+            showOverflowTooltip: true
+          },
+          {
+            width: 150,
+            prop: 'totalCount',
+            label: '计量数量',
+            slot: 'totalCount',
+            align: 'center',
+            formatter: (row, column) => {
+              if (row.totalCount) {
+                return row.totalCount + ' ' + (row.measuringUnit || '');
+              }
+            }
+          },
+
+          {
+            width: 120,
+            prop: 'produceType',
+            align: 'center',
+            label: '属性类型',
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              if (row.produceType) {
+                return row.produceType
+                  .map((item) => {
+                    return lbjtList[item];
+                  })
+                  .toString();
+              }
+            }
+          },
+
+          {
+            width: 120,
+            prop: 'singleWeight',
+            label: '单重',
+            slot: 'singleWeight',
+            align: 'center',
+            formatter: (row, column) => {
+              if (row.singleWeight) {
+                return row.singleWeight + ' ' + (row.weightUnit || '');
+              }
+            }
+          },
+          {
+            width: 120,
+            prop: 'totalWeight',
+            label: '总重',
+            slot: 'totalWeight',
+            align: 'center',
+            formatter: (row, column) => {
+              if (row.totalWeight) {
+                return row.totalWeight + ' ' + (row.weightUnit || '');
+              }
+            }
+          },
+
+          {
+            width: 140,
+            prop: 'pricingWay',
+            label: '计价方式',
+            align: 'center',
+            fixed: 'left',
+            formatter: (row, column) => {
+              return pricingWayList.find((item) => item.id == row.pricingWay)
+                ?.name;
+            }
+          },
+          {
+            minWidth: 120,
+            prop: 'goodsLevel',
+            label: '物品级别',
+            formatter: (_row, _column, cellValue) => {
+              return levelList.find((item) => item.value == _row.goodsLevel)
+                ?.label;
+            },
+            align: 'center'
+          },
+          {
+            width: 160,
+            prop: 'singlePrice',
+            label: '单价',
+            slot: 'singlePrice',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'taxRate',
+            label: '税率',
+            formatter: (row, column) => {
+              return row.taxRate && row.taxRate + '%';
+            },
+            align: 'center'
+          },
+          {
+            width: 150,
+            prop: 'notaxSinglePrice',
+            label: '不含税单价',
+            align: 'center'
+          },
+          {
+            width: 160,
+            prop: 'quoteWay',
+            label: '报价方式',
+            align: 'center',
+            formatter: (_row, _column, cellValue) => {
+              return this.quoteTypeOp.find((item) => item.value == _row.quoteWay)
+                ?.label || '';
+            }
+          },
+          {
+            width: 160,
+            prop: 'discountRatio',
+            label: '折后比例',
+            align: 'center',
+            formatter: (row) => {
+              return row.discountRatio ? row.discountRatio + '%' : '';
+            }
+          },
+          {
+            width: 160,
+            prop: 'discountSinglePrice',
+            label: '折后单价',
+            slot: 'discountSinglePrice',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'totalPrice',
+            label: '合计',
+            slot: 'totalPrice',
+            formatter: (_row, _column, cellValue) => {
+              return _row.totalPrice + '元';
+            },
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'discountTotalPrice',
+            label: '折后合计',
+            slot: 'discountTotalPrice',
+            formatter: (_row, _column, cellValue) => {
+              return _row.discountTotalPrice + '元';
+            },
+            align: 'center'
+          },
+          {
+            width: 110,
+            prop: 'batchNo',
+            label: '批次号',
+            slot: 'batchNo',
+            align: 'center'
+          },
+          {
+            prop: 'provenance',
+            label: '产地',
+            slot: 'provenance',
+            align: 'center',
+            minWidth: 200,
+            showOverflowTooltip: true,
+            formatter: (row, column) => {
+              return row.provenance && row.provenance.length
+                ? row.provenance
+                    .map((item) => this.getDictValue('产地', item))
+                    .join(',')
+                : '';
+            }
+          },
+          {
+            minWidth: 120,
+            prop: 'modelKey',
+            label: '机型',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+          {
+            minWidth: 120,
+            prop: 'colorKey',
+            showOverflowTooltip: true,
+            label: '颜色',
+            align: 'center'
+          },
+          {
+            width: 160,
+            prop: 'deliveryDeadline',
+            label: '交期截止日期',
+            slot: 'deliveryDeadline',
+            align: 'center'
+          },
+          {
+            width: 200,
+            prop: 'guaranteePeriod',
+            label: '有效期',
+            slot: 'guaranteePeriod',
+            formatter: (_row, _column, cellValue) => {
+              return (
+                (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName
+              );
+            },
+            align: 'center'
+          },
+          {
+            width: 160,
+            prop: 'guaranteePeriodDeadline',
+            label: '有效期截止日期',
+            slot: 'guaranteePeriodDeadline',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'technicalAnswerName',
+            label: '技术答疑人',
+            slot: 'technicalAnswerName',
+            align: 'center'
+          },
+          {
+            width: 220,
+            prop: 'technicalParams',
+            label: '技术参数',
+            slot: 'technicalParams',
+            align: 'center'
+          },
+          {
+            width: 240,
+            prop: 'technicalDrawings',
+            label: '技术图纸',
+            slot: 'technicalDrawings',
+            formatter: (_row, _column, cellValue) => {
+              return (
+                (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName
+              );
+            },
+            align: 'center'
+          },
+          {
+            width: 220,
+            prop: 'remark',
+            label: '备注',
+            slot: 'remark',
+            align: 'center'
+          }
+        ],
       };
       };
     },
     },
     created() {
     created() {
@@ -211,8 +689,8 @@
           // console.log('data~~~~', reduce(data.originalList, (total, item) => total + item.amount, 0));
           // console.log('data~~~~', reduce(data.originalList, (total, item) => total + item.amount, 0));
           const tempdata = {
           const tempdata = {
             // ...data,
             // ...data,
-            totalPrice: reduce(data.originalList, (total, item) => total + item.totalPrice, 0),
-            discountTotalPrice: reduce(data.originalList, (total, item) => total + item.discountTotalPrice, 0),
+            totalPrice: reduce(data.originalList, (total, item) => total + +item.totalPrice, 0),
+            discountTotalPrice: reduce(data.originalList, (total, item) => total + +item.discountTotalPrice, 0),
             productList: data.originalList
             productList: data.originalList
           }
           }
           this.businessId = data.id;
           this.businessId = data.id;