فهرست منبع

部分新需求

cz 1 سال پیش
والد
کامیت
51d3d1534a

+ 1 - 0
src/components/byTable/index.vue

@@ -464,6 +464,7 @@ export default defineComponent({
         Object.assign(props.filterParams, {
           ...props.pagination,
           [props.searchKey]: str,
+          total: Math.max(...Array.from(paginationTotalData)),
         })
       );
     };

+ 2 - 2
src/components/process/SF/Contract.vue

@@ -497,7 +497,7 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column label="业务供货价" prop="businessCostPrice" width="100">
+            <el-table-column label="业务供货价" prop="factoryPrice" width="100">
             </el-table-column>
             <el-table-column prop="amount" label="小计" width="110">
               <template #default="{ row, $index }">
@@ -1978,7 +1978,7 @@ const calculationAmount = (flag = false) => {
       ).toFixed(2);
       formData.data.contractProductList[i].amountTwo = parseFloat(
         Number(formData.data.contractProductList[i].quantity) *
-          Number(formData.data.contractProductList[i].businessCostPrice)
+          Number(formData.data.contractProductList[i].factoryPrice)
       ).toFixed(2);
       let row = formData.data.contractProductList[i];
       if (flag && row.quantity) {

+ 12 - 0
src/components/process/SF/CostControl.vue

@@ -161,6 +161,16 @@
                 </el-form-item>
               </template>
             </el-table-column>
+            <!-- 采购货款才有的批次 -->
+            <el-table-column prop="batchInfo" label="批次" width="150" v-if="isShowAtt('accountPeriod','detailObj')">
+              <template #default="{ row, $index }">
+                <el-form-item :prop="'costControlDetailList.' + $index + '.batchInfo'" :rules="rules.batchInfo" :inline-message="true"
+                              class="margin-b-0">
+                  <el-input v-model="row.batchInfo" placeholder="请输入"></el-input>
+                </el-form-item>
+              </template>
+            </el-table-column>
+
             <el-table-column prop="accountPeriodAmountTax" label="本账期金额(含税)" width="140" v-if="isShowAtt('accountPeriodAmountTax','detailObj')">
               <template #default="{ row, $index }">
                 <el-form-item :prop="'costControlDetailList.' + $index + '.accountPeriodAmountTax'" :rules="rules.accountPeriodAmountTax"
@@ -1399,6 +1409,7 @@ const changeAccountSubjectsId = (val, index) => {
 const changeCostType = (val) => {
   currentCostTypeData.value = paymentTypeData.value.find((x) => x.value == val);
   formData.data.tradeType = currentCostTypeData.value.tradeType;
+  formData.data.costTypeName = currentCostTypeData.value.name;
   getCheckBoxMap(val);
   checkDisabled();
   // 赋值id 以及其他相关字段
@@ -1445,6 +1456,7 @@ const changeCostType = (val) => {
   } else {
     formData.data.isAdvance = 0;
   }
+  clickAdd();
 };
 
 const changeIsPublicTransfer = (val) => {

+ 7 - 0
src/components/product/SelectProduct.vue

@@ -208,6 +208,13 @@ const config = computed(() => {
     },
     {
       attrs: {
+        label: "业务员",
+        prop: "saleUserName",
+        width: 100,
+      },
+    },
+    {
+      attrs: {
         label: "产品分类",
         prop: "classifyName",
         "min-width": 200,

+ 62 - 1
src/views/EHSD/procurement/arrivalRecord/index.vue

@@ -21,6 +21,19 @@
 
         </template>
 
+        <template #accountPeriod="{item}">
+          <div style="width:100%">
+            <el-date-picker v-model="item.accountPeriod" type="month" placeholder="请选择" style="width: 100%" value-format="YYYY-MM"
+                            :disabled-date="disabledFn" :clearable="false" @change="(val)=>handleChangeAccountPeriod(val,item)" />
+          </div>
+        </template>
+
+        <template #arrivalBatch="{item}">
+          <div style="width:100%">
+            <el-input v-model="item.arrivalBatch" placeholder=" " @change="(val)=>changeData(val,item)"></el-input>
+          </div>
+        </template>
+
       </byTable>
     </div>
 
@@ -88,6 +101,8 @@ import byForm from "@/components/byForm/index";
 import { ElMessage } from "element-plus";
 import SelectAllGood from "@/components/product/SelectAllGood";
 // import SelectMaterial from "@/components/product/SelectMaterial.vue";
+import moment from "moment";
+
 const { proxy } = getCurrentInstance();
 const warehouseList = ref([]);
 const warehouseListOne = ref([]);
@@ -243,6 +258,13 @@ const config = computed(() => {
     },
     {
       attrs: {
+        label: "单位",
+        prop: "productUnit",
+        width: 100,
+      },
+    },
+    {
+      attrs: {
         label: "到货数量",
         prop: "quantity",
         width: 100,
@@ -269,7 +291,16 @@ const config = computed(() => {
       attrs: {
         label: "账期",
         prop: "accountPeriod",
-        width: 100,
+        slot: "accountPeriod",
+        width: 150,
+      },
+    },
+    {
+      attrs: {
+        label: "批次",
+        prop: "arrivalBatch",
+        slot: "arrivalBatch",
+        width: 150,
       },
     },
   ];
@@ -681,6 +712,36 @@ const acquireSelectList = () => {
 const handleClickFile = (fileUrl) => {
   window.open(fileUrl, "_blank");
 };
+
+const disabledFn = (date) => {
+  // 当前日期
+  let current = moment(date).format("YYYY-MM");
+  // 禁用已选日期和比当前日期小的
+  // return moment(current).add(1, "month").isBefore(moment());
+  return moment(current).isAfter(moment());
+};
+
+const handleChangeAccountPeriod = (val, row) => {
+  proxy
+    .post("/arrivalDetail/editAccountPeriods", {
+      id: row.id,
+      accountPeriod: val,
+    })
+    .then(
+      (res) => {
+        // return proxy.msgTip("操作成功");
+      },
+      (err) => {}
+    );
+};
+
+const changeData = (val, item) => {
+  let data = {
+    id: item.id,
+    arrivalBatch: val,
+  };
+  proxy.post("/arrivalDetail/editArrivalBatch", data).then((res) => {});
+};
 </script>
 
 <style lang="scss" scoped>

+ 37 - 0
src/views/EHSD/procurement/purchasedEHSD/index.vue

@@ -72,6 +72,7 @@
                       </div>
                     </template>
                   </el-table-column>
+                  <el-table-column label="单位" prop="productUnit" width="100" />
                   <el-table-column label="采购数量" prop="purchaseQuantity" width="100" />
                   <el-table-column label="可登记最大数量(105%)" prop="maxQuantity" width="190" />
                   <el-table-column label="已到货数量" prop="arrivalQuantity" width="100" />
@@ -108,6 +109,7 @@
                       </div>
                     </template>
                   </el-table-column>
+                  <el-table-column label="单位" prop="productUnit" width="100" />
                   <el-table-column label="采购数量" prop="purchaseQuantity" width="100" />
                   <el-table-column label="到货数量" prop="quantity" width="100" />
                 </el-table>
@@ -138,6 +140,7 @@
                   </div>
                 </template>
               </el-table-column>
+              <el-table-column label="单位" prop="productUnit" width="100" />
               <!-- <el-table-column label="采购数量" prop="purchaseQuantity" width="100" /> -->
               <el-table-column label="到货数量" prop="quantity" width="100" />
               <el-table-column label="实际入库数量" prop="receiptQuantity" width="110" />
@@ -218,6 +221,20 @@ const status = ref([
     value: 99,
   },
 ]);
+const arrivalStatusData = ref([
+  {
+    label: "未到货",
+    value: 0,
+  },
+  {
+    label: "部分到货",
+    value: 1,
+  },
+  {
+    label: "已到货",
+    value: 2,
+  },
+]);
 const inBoundStatus = ref([
   {
     label: "待入库",
@@ -376,6 +393,17 @@ const config = computed(() => {
     },
     {
       attrs: {
+        label: "到货状态",
+        prop: "arrivalStatus",
+        width: 100,
+      },
+      render(type) {
+        return proxy.dictValueLabel(type, arrivalStatusData.value);
+      },
+    },
+
+    {
+      attrs: {
         label: "付款状态",
         prop: "payStatus",
         slot: "payStatus",
@@ -713,6 +741,7 @@ const handleArrival = (row) => {
         productLength: x.productLength,
         productWidth: x.productWidth,
         productHeight: x.productHeight,
+        productUnit: x.productUnit,
         purchaseDetailId: x.id,
         purchaseQuantity: x.quantity,
         maxQuantity: parseFloat(x.quantity * 1.05).toFixed(0),
@@ -814,6 +843,14 @@ const exportExcel = () => {
       proxy.downloadFile(res, "采购订单.xlsx");
     });
 };
+
+const disabledFn = (date) => {
+  // 当前日期
+  let current = moment(date).format("YYYY-MM");
+  // 禁用已选日期和比当前日期小的
+  // return moment(current).add(1, "month").isBefore(moment());
+  return moment(current).isAfter(moment());
+};
 </script>
 
 <style lang="scss" scoped>

+ 32 - 0
src/views/EHSD/productLibrary/companyProduct/index.vue

@@ -542,6 +542,7 @@ const treeDataOne = ref([]);
 const treeListData = ref([]);
 const technologyData = ref([]);
 const companyData = ref([]);
+const userList = ref([]);
 const currencyData = computed(
   () => proxy.useUserStore().allDict["account_currency"]
 );
@@ -640,6 +641,13 @@ const config = computed(() => {
     },
     {
       attrs: {
+        label: "业务员",
+        prop: "saleUserName",
+        width: 100,
+      },
+    },
+    {
+      attrs: {
         label: "产品分类",
         prop: "classifyName",
         "min-width": 200,
@@ -866,6 +874,14 @@ const formConfig = computed(() => {
       itemWidth: 50,
     },
     {
+      type: "select",
+      prop: "saleUserId",
+      label: "业务员",
+      data: userList.value,
+      itemWidth: 50,
+      disabled: false,
+    },
+    {
       type: "treeSelect",
       prop: "productClassifyId",
       label: "产品分类",
@@ -1222,6 +1238,22 @@ const getDict = () => {
       }));
       treeDataOne.value = proxy.handleTree(res.data, "deptId");
     });
+
+  proxy
+    .get("/tenantUser/list", {
+      pageNum: 1,
+      pageSize: 10000,
+      tenantId: proxy.useUserStore().user.tenantId,
+      // companyId: proxy.useUserStore().user.companyId,
+    })
+    .then((res) => {
+      userList.value = res.rows.map((item) => {
+        return {
+          label: item.nickName,
+          value: item.userId,
+        };
+      });
+    });
 };
 getDict();
 const treeChange = (e) => {

+ 25 - 0
src/views/EHSD/productLibrary/waitCreateProduct/index.vue

@@ -387,6 +387,7 @@ const treeDataOne = ref([]);
 const treeListData = ref([]);
 const technologyData = ref([]);
 const companyData = ref([]);
+const userList = ref([]);
 const currencyData = computed(
   () => proxy.useUserStore().allDict["account_currency"]
 );
@@ -701,6 +702,14 @@ const formConfig = computed(() => {
       disabled: true,
     },
     {
+      type: "select",
+      prop: "saleUserId",
+      label: "业务员",
+      data: userList.value,
+      itemWidth: 50,
+      disabled: false,
+    },
+    {
       type: "treeSelect",
       prop: "productClassifyId",
       label: "产品分类",
@@ -1036,6 +1045,22 @@ const getDict = () => {
       }));
       treeDataOne.value = proxy.handleTree(res.data, "deptId");
     });
+
+  proxy
+    .get("/tenantUser/list", {
+      pageNum: 1,
+      pageSize: 10000,
+      tenantId: proxy.useUserStore().user.tenantId,
+      // companyId: proxy.useUserStore().user.companyId,
+    })
+    .then((res) => {
+      userList.value = res.rows.map((item) => {
+        return {
+          label: item.nickName,
+          value: item.userId,
+        };
+      });
+    });
 };
 getDict();
 const getTreeList = () => {

+ 16 - 0
src/views/EHSD/saleContract/collectionRegistration/index.vue

@@ -19,6 +19,14 @@
           </div>
         </template>
 
+        <template #customer="{ item }">
+          <div style="width:100%">
+            <div v-for="row in item.claimContractList" :key="row.contractId">
+              {{row.contractBuyCorporationName}}
+            </div>
+          </div>
+        </template>
+
       </byTable>
     </div>
     <el-dialog :title="modalType == 'add' ? '订单回款登记' : '编辑客户联系人'" v-model="dialogVisible" width="70%" destroy-on-close>
@@ -175,6 +183,14 @@ const config = computed(() => {
     },
     {
       attrs: {
+        label: "客户名称",
+        slot: "customer",
+        "min-width": 150,
+        fixed: "left",
+      },
+    },
+    {
+      attrs: {
         label: "交易日期",
         prop: "transactionTime",
         width: 160,

+ 211 - 0
src/views/MES/productionOrder/index.vue

@@ -26,6 +26,14 @@
           </div>
         </template>
 
+        <template #shortageMaterials="{item}">
+          <div style="width: 100%">
+            <span v-if="item.lackStatus=='1'" class="red" style="cursor:pointer" @click="lookDetail(item)">
+              欠料</span>
+            <span v-else>未欠料</span>
+          </div>
+        </template>
+
         <template #prodTag="{ item }">
           <div style="width: 100%">
             <el-popover placement="top-start" :width="300" trigger="hover">
@@ -304,6 +312,88 @@
       </template>
     </el-dialog>
 
+    <el-dialog :title="'欠料明细'" v-model="shortageMaterialDialog" width="80%" destroy-on-close>
+      <el-tabs v-model="shortageMaterialTab" type="card" class="demo-tabs">
+        <el-tab-pane label="待采购" name="1">
+        </el-tab-pane>
+        <el-tab-pane label="未到货" name="2">
+        </el-tab-pane>
+        <el-tab-pane label="待入库" name="3">
+        </el-tab-pane>
+      </el-tabs>
+      <div style="width: 100%" v-show="shortageMaterialTab=='1'">
+        <el-table :data="shortageMaterialData.data.waitPurchase" style="width: 100%;">
+          <el-table-column prop="subscribeCode" label="单号" />
+          <el-table-column label="图片" width="80">
+            <template #default="{ row }">
+              <div v-if="row.fileUrl">
+                <img :src="row.fileUrl" class="pic" @click="onPicture(row.fileUrl)" />
+              </div>
+              <div v-else></div>
+            </template>
+          </el-table-column>
+          <!-- <el-table-column prop="productCategory" label="分类名称" /> -->
+          <el-table-column prop="productCustomCode" label="编码" width="200" />
+          <el-table-column prop="productName" label="名称" min-width="150" />
+          <el-table-column label="规格尺寸 (cm)" width="150">
+            <template #default="{ row, $index }">
+              <div style="width: 100%">
+                {{row.productLength}} * {{row.productWidth}} * {{row.productHeight}}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column prop="productColor" label="颜色" width="170" />
+          <el-table-column prop="productUnit" label="单位" width="100" />
+          <el-table-column prop="count" label="需采购量" width="100" />
+          <el-table-column prop="purchaseCount" label="已采购量" width="100" />
+        </el-table>
+      </div>
+
+      <div style="width: 100%" v-show="shortageMaterialTab=='2'">
+        <el-table :data="shortageMaterialData.data.undeliveredGoods" style="width: 100%;">
+          <el-table-column prop="code" label="采购单号" />
+          <el-table-column prop="sellCorporationName" label="供应商" />
+          <el-table-column prop="deliveryTime" label="交付日期" />
+          <el-table-column prop="status" label="采购状态" :formatter="(row)=>dictValueLabel(row.status,purchaseStatus)" />
+          <el-table-column prop="userName" label="采购人" />
+          <el-table-column prop="createTime" label="采购时间" />
+          <el-table-column prop="arrivalStatus" label="到货状态" :formatter="(row)=>dictValueLabel(row.arrivalStatus,arrivalStatusData)" />
+        </el-table>
+      </div>
+
+      <div style="width: 100%" v-show="shortageMaterialTab=='3'">
+        <el-table :data="shortageMaterialData.data.waitInbound" style="width: 100%;">
+          <el-table-column prop="businessCode" label="单号" />
+          <el-table-column label="图片" width="80">
+            <template #default="{ row }">
+              <div v-if="row.fileUrl">
+                <img :src="row.fileUrl" class="pic" @click="onPicture(row.fileUrl)" />
+              </div>
+              <div v-else></div>
+            </template>
+          </el-table-column>
+          <!-- <el-table-column prop="productCategory" label="分类名称" /> -->
+          <el-table-column prop="productCustomCode" label="编码" width="200" />
+          <el-table-column prop="productName" label="名称" min-width="150" />
+          <el-table-column label="规格尺寸 (cm)" width="150">
+            <template #default="{ row, $index }">
+              <div style="width: 100%">
+                {{row.productLength}} * {{row.productWidth}} * {{row.productHeight}}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column prop="productColor" label="颜色" width="170" />
+          <el-table-column prop="productUnit" label="单位" width="100" />
+          <el-table-column prop="quantity" label="需入库数量" width="100" />
+          <el-table-column prop="receiptQuantity" label="已入库数量" width="100" />
+          <el-table-column prop="waitQuantity" label="待入库数量" width="100" />
+        </el-table>
+      </div>
+      <template #footer>
+        <el-button @click="shortageMaterialDialog = false" size="defualt">关 闭</el-button>
+      </template>
+    </el-dialog>
+
   </div>
 </template>
 
@@ -314,6 +404,7 @@ import moment from "moment";
 import * as date from "@/utils/date.js";
 import { ArrowLeftBold, ArrowRightBold } from "@element-plus/icons-vue";
 import { async } from "@antv/x6/lib/registry/marker/main";
+import { reactive } from "vue";
 
 const { proxy } = getCurrentInstance();
 const contractTag = computed(
@@ -385,6 +476,54 @@ const statusData = ref([
     value: "99",
   },
 ]);
+const arrivalStatusData = ref([
+  {
+    label: "未到货",
+    value: 0,
+  },
+  {
+    label: "部分到货",
+    value: 1,
+  },
+  {
+    label: "已到货",
+    value: 2,
+  },
+]);
+const purchaseStatus = ref([
+  {
+    label: "草稿",
+    value: 0,
+  },
+  {
+    label: "审批中",
+    value: 10,
+  },
+  {
+    label: "驳回",
+    value: 20,
+  },
+  {
+    label: "已采购",
+    value: 30,
+  },
+  {
+    label: "变更中",
+    value: 60,
+  },
+  {
+    label: "已变更",
+    value: 70,
+  },
+  {
+    label: "作废",
+    value: 88,
+  },
+  {
+    label: "终止",
+    value: 99,
+  },
+]);
 
 const isOverdueData = ref([
   {
@@ -524,6 +663,14 @@ const config = computed(() => {
     },
     {
       attrs: {
+        label: "欠料状态",
+        prop: "produceStatus",
+        slot: "shortageMaterials",
+        width: 100,
+      },
+    },
+    {
+      attrs: {
         label: "交期",
         prop: "deliveryPeriod",
         width: 100,
@@ -1240,6 +1387,70 @@ const getRowClass = ({ row }) => {
   }
   return "";
 };
+
+const shortageMaterialDialog = ref(false);
+const shortageMaterialTab = ref("1");
+const shortageMaterialData = reactive({
+  data: {
+    waitInbound: [],
+    waitPurchase: [],
+    undeliveredGoods: [],
+  },
+});
+const lookDetail = (row) => {
+  let contractId = row.contractId;
+
+  proxy
+    .post("/subscribeDetail/page", { contractId, status: "15,30" })
+    .then((res) => {
+      shortageMaterialData.data.waitPurchase = res.rows;
+      let productIds = res.rows.map((x) => x.productId);
+      proxy.getFileData({
+        businessIdList: productIds,
+        data: shortageMaterialData.data.waitPurchase,
+        att: "productId",
+        businessType: "0",
+        fileAtt: "fileList",
+        filePathAtt: "fileUrl",
+      });
+    });
+
+  proxy
+    .post("/ehsdPurchase/page", {
+      dataResourceId: contractId,
+      arrivalStatus: "0,1",
+    })
+    .then((res) => {
+      shortageMaterialData.data.undeliveredGoods = res.rows;
+    });
+
+  proxy.post("/stockWait/page", { contractId }).then((res) => {
+    let arr = [];
+    for (let i = 0; i < res.rows.length; i++) {
+      const ele = res.rows[i];
+      for (let j = 0; j < ele.stockWaitDetailsList.length; j++) {
+        const jele = ele.stockWaitDetailsList[j];
+        jele.businessCode = ele.businessCode;
+        jele.waitQuantity =
+          Number(jele.quantity) - Number(jele.receiptQuantity);
+        arr.push(jele);
+      }
+    }
+    shortageMaterialData.data.waitInbound = arr;
+    let productIds = arr.map((x) => x.productId);
+    proxy.getFileData({
+      businessIdList: productIds,
+      data: shortageMaterialData.data.waitInbound,
+      att: "productId",
+      businessType: "0",
+      fileAtt: "fileList",
+      filePathAtt: "fileUrl",
+    });
+  });
+
+  shortageMaterialTab.value = "1";
+  shortageMaterialDialog.value = true;
+};
 </script>
 <style lang="scss" scoped>
 ::v-deep(.el-progress__text) {

+ 52 - 52
src/views/finance/fundManage/account/index.vue

@@ -337,58 +337,58 @@ const formConfig = computed(() => {
       prop: "jdSubjectName",
       label: "银行科目名称",
     },
-    // {
-    //   type: "title1",
-    //   title: "外汇信息",
-    // },
-    // {
-    //   type: "input",
-    //   prop: "beneficiaryName",
-    //   label: "Beneficiary Name",
-    //   required: true,
-    //   itemType: "text",
-    //   itemWidth: 50,
-    // },
-    // {
-    //   type: "input",
-    //   prop: "beneficiaryBank",
-    //   label: "Beneficiary Bank",
-    //   required: true,
-    //   itemType: "text",
-    //   itemWidth: 50,
-    // },
-    // {
-    //   type: "input",
-    //   prop: "beneficiaryBankAddress",
-    //   label: "Beneficiary Bank Address",
-    //   required: true,
-    //   itemType: "text",
-    //   itemWidth: 50,
-    // },
-    // {
-    //   type: "input",
-    //   prop: "beneficiaryAccountNumber",
-    //   label: "Beneficiary Account Number",
-    //   required: true,
-    //   itemType: "text",
-    //   itemWidth: 50,
-    // },
-    // {
-    //   type: "input",
-    //   prop: "swiftCode",
-    //   label: "Swift Code",
-    //   required: true,
-    //   itemType: "text",
-    //   itemWidth: 50,
-    // },
-    // {
-    //   type: "input",
-    //   prop: "beneficiaryAddress",
-    //   label: "Beneficiary Address",
-    //   required: true,
-    //   itemType: "text",
-    //   itemWidth: 50,
-    // },
+    {
+      type: "title1",
+      title: "外汇信息",
+    },
+    {
+      type: "input",
+      prop: "beneficiaryName",
+      label: "Beneficiary Name",
+      required: true,
+      itemType: "text",
+      itemWidth: 50,
+    },
+    {
+      type: "input",
+      prop: "beneficiaryBank",
+      label: "Beneficiary Bank",
+      required: true,
+      itemType: "text",
+      itemWidth: 50,
+    },
+    {
+      type: "input",
+      prop: "beneficiaryBankAddress",
+      label: "Beneficiary Bank Address",
+      required: true,
+      itemType: "text",
+      itemWidth: 50,
+    },
+    {
+      type: "input",
+      prop: "beneficiaryAccountNumber",
+      label: "Beneficiary Account Number",
+      required: true,
+      itemType: "text",
+      itemWidth: 50,
+    },
+    {
+      type: "input",
+      prop: "swiftCode",
+      label: "Swift Code",
+      required: true,
+      itemType: "text",
+      itemWidth: 50,
+    },
+    {
+      type: "input",
+      prop: "beneficiaryAddress",
+      label: "Beneficiary Address",
+      required: true,
+      itemType: "text",
+      itemWidth: 50,
+    },
     {
       type: "title1",
       title: "账户余额",

+ 22 - 1
src/views/finance/fundManage/costControl/index.vue

@@ -233,7 +233,20 @@ const config = computed(() => {
         return val == 1 ? "是" : "否";
       },
     },
-
+    {
+      attrs: {
+        label: "付款说明",
+        prop: "paymentRemark",
+        "min-width": 150,
+      },
+    },
+    {
+      attrs: {
+        label: "付款单位",
+        prop: "paymentAccountName",
+        width: 125,
+      },
+    },
     // {
     //   attrs: {
     //     label: "开户行",
@@ -257,6 +270,14 @@ const config = computed(() => {
     // },
     {
       attrs: {
+        label: "当前审批人",
+        prop: "flowHandleUserName",
+        width: 150,
+        fixed: "right",
+      },
+    },
+    {
+      attrs: {
         label: "审批状态",
         prop: "status",
         width: 100,

+ 32 - 10
src/views/purchaseSales/outAndInWarehouse/record/index.vue

@@ -1,8 +1,16 @@
 <template>
   <div class="pageIndexClass">
-    <div class="content">
-      <byTable :source="sourceList.data" :pagination="sourceList.pagination" :config="config" :loading="loading" :selectConfig="selectConfig"
-               highlight-current-row :action-list="[
+    <div style="background:#fff;padding:10px 0 0 10px">
+      <el-tabs v-model="pageActiveName" type="card" class="demo-tabs" @tab-change="handlePageTabChange">
+        <el-tab-pane label="全部" name="all">
+        </el-tab-pane>
+        <el-tab-pane v-for="item in warehouseList" :key="item.value" :label="item.label" :name="item.value">
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+    <div>
+      <byTable :source="sourceList.data" :otherHeight="70" :pagination="sourceList.pagination" :config="config" :loading="loading"
+               :selectConfig="selectConfig" highlight-current-row :action-list="[
          
         ]" @get-list="getList">
         <!-- {
@@ -197,6 +205,7 @@ const sourceList = ref({
     pageSize: 10,
     keyword: "",
     opType: "",
+    type: "",
     productId: "",
     warehouseId: "",
   },
@@ -211,6 +220,11 @@ const selectConfig = computed(() => {
       prop: "companyId",
       data: proxy.useUserStore().allDict["list_company_data"],
     },
+    // {
+    //   label: "仓库名称",
+    //   prop: "warehouseId",
+    //   data: warehouseList.value,
+    // },
     {
       label: "操作类型",
       prop: "opType",
@@ -354,8 +368,11 @@ const getDict = () => {
     }
   });
 };
+const pageActiveName = ref("all");
 const getList = async (req) => {
   sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
+  sourceList.value.pagination.warehouseId =
+    pageActiveName.value == "all" ? "" : pageActiveName.value;
   loading.value = true;
   proxy
     .post("/stockJournalDetails/page", sourceList.value.pagination)
@@ -380,16 +397,21 @@ const getList = async (req) => {
       }
     });
 };
+
+const handlePageTabChange = (val) => {
+  // sourceList.value.pagination.warehouseId = val == "all" ? "" : val;
+  getList();
+};
 getDict();
+getList();
 
 onMounted(() => {
-  if (route.query.productId) {
-    sourceList.value.pagination.productId = route.query.productId;
-  }
-  if (route.query.warehouseId) {
-    sourceList.value.pagination.warehouseId = route.query.warehouseId;
-  }
-  getList();
+  // if (route.query.productId) {
+  //   sourceList.value.pagination.productId = route.query.productId;
+  // }
+  // if (route.query.warehouseId) {
+  //   sourceList.value.pagination.warehouseId = route.query.warehouseId;
+  // }
 });
 
 const deriveExcel = () => {

+ 3 - 0
src/views/purchaseSales/outAndInWarehouse/waitingForDelivery/index.vue

@@ -68,6 +68,9 @@
                 <el-table-column prop="productFrontalTexture" label="纹路" width="130"
                                  :formatter="(row) => dictKeyValue(row.productFrontalTexture, frontLinesData)" />
                 <el-table-column prop="productUnit" label="单位" width="100" />
+                <el-table-column label="业务成本价" prop="contractProductBusinessCostPrice" width="100" v-if="rowBusinessType==2" />
+                <el-table-column label="工厂供货价" prop="contractProductFactoryPrice" width="100" v-if="rowBusinessType==2" />
+                <el-table-column label="销售价" prop="contractProductPrice" width="100" v-if="rowBusinessType==2" />
                 <el-table-column label="可用库存" prop="availableQuantity" width="100" fixed="right" />
                 <el-table-column label="需出库数量" prop="needQuantity" width="100" fixed="right" />
                 <el-table-column label="可出库最大数量(105%)" prop="maxQuantity" width="190" fixed="right" v-if="rowBusinessType==9" />

+ 11 - 0
src/views/purchaseSales/outAndInWarehouse/waitingForStorage/index.vue

@@ -422,6 +422,7 @@ const formConfig = computed(() => {
       data: businessType.value,
       itemWidth: 25,
     },
+
     {
       type: "input",
       prop: "businessCode",
@@ -432,6 +433,15 @@ const formConfig = computed(() => {
     },
     {
       type: "input",
+      prop: "supplierName",
+      label: "供应商",
+      itemType: "text",
+      disabled: true,
+      itemWidth: 25,
+      isShow: rowBusinessType.value == "104",
+    },
+    {
+      type: "input",
       prop: "purchaseUserName",
       label: "采购员",
       itemType: "text",
@@ -597,6 +607,7 @@ const clickOperation = (row) => {
     companyId: row.companyId,
     businessType: row.businessType + "",
     businessCode: row.businessCode,
+    supplierName: row.supplierName,
     purchaseUserName: row.purchaseUserName,
     warehouseId: row.warehouseId || "",
     stockWaitDetailsList: row.stockWaitDetailsList.map((x) => ({

+ 6 - 0
src/views/report/accountBalance/index.vue

@@ -821,6 +821,12 @@ const refreshData = (index, col, oldVal) => {
         amount
     ).toFixed(2)
   );
+  let allBalanceAmount = 0;
+  for (let i = 0; i < sourceList.value.data.length - 1; i++) {
+    const ele = sourceList.value.data[i];
+    allBalanceAmount += ele.balanceAmount;
+  }
+  lastRow.balanceAmount = Number(parseFloat(allBalanceAmount).toFixed(2));
 };
 
 let date = new Date();

+ 8 - 2
src/views/report/remittanceDetails/index.vue

@@ -24,7 +24,10 @@
 
         <template #saleGroupExpenseCategory="{item}">
           <div style="width:100%">
-            <el-input v-model="item.saleGroupExpenseCategory" placeholder=" " @change="(val)=>changeData(item,val)"></el-input>
+            <!-- <el-input v-model="item.saleGroupExpenseCategory" placeholder=" " @change="(val)=>changeData(item,val)"></el-input> -->
+            <el-select v-model="item.saleGroupExpenseCategory" placeholder=" " style="width: 100%" filterable @change="(val)=>changeData(item,val)">
+              <el-option v-for="item in costCategory" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" />
+            </el-select>
           </div>
         </template>
 
@@ -59,6 +62,9 @@ import byForm from "@/components/byForm/index";
 
 const { proxy } = getCurrentInstance();
 const sealType = computed(() => proxy.useUserStore().allDict["seal_type"]);
+const costCategory = computed(
+  () => proxy.useUserStore().allDict["cost_category"]
+);
 const userList = ref([]);
 const deptData = ref([]);
 const typeData = ref([
@@ -731,7 +737,7 @@ const changeData = (item) => {
     oppositeSubjectName: item.oppositeSubjectName1,
     saleExpenseCategory: item.saleGroupExpenseCategory,
   };
-  proxy.postTwo("/report/finance/remitDetail/edit", data).then((res) => {});
+  proxy.post("/report/finance/remitDetail/edit", data).then((res) => {});
 };
 </script>
 

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1478 - 808
src/views/salesMange/shipmentMange/document/index.vue


+ 12 - 12
src/views/salesMange/shipmentMange/packing/index.vue

@@ -772,18 +772,18 @@ const config = computed(() => {
       },
       renderHTML(row) {
         return [
-          {
-            attrs: {
-              label: "出货通知",
-              type: "primary",
-              text: true,
-              disabled: false,
-            },
-            el: "button",
-            click() {
-              clickShippingNotice(row);
-            },
-          },
+          // {
+          //   attrs: {
+          //     label: "出货通知",
+          //     type: "primary",
+          //     text: true,
+          //     disabled: false,
+          //   },
+          //   el: "button",
+          //   click() {
+          //     clickShippingNotice(row);
+          //   },
+          // },
           {
             attrs: {
               label: "删除",

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است