瀏覽代碼

Merge branch 'stag' into dev

lxf 1 年之前
父節點
當前提交
25477f8478

+ 3 - 1
src/main.js

@@ -2,7 +2,7 @@ import { createApp } from "vue";
 import App from "./App.vue";
 import router from "./router";
 import i18n from "@/lang/";
-import { moneyFormat, getDictOne, compareTime, dictValueLabel, formChange, formChangeTwo } from "@/utils/util";
+import { moneyFormat, getDictOne, compareTime, dictValueLabel, formChange, formChangeTwo, deepClone } from "@/utils/util";
 const app = createApp(App);
 app.use(router);
 app.use(i18n).mount("#app");
@@ -25,6 +25,8 @@ app.config.globalProperties.uploadDdRightBtn = uploadDdRightBtn;
 // form组件 select change事件回填
 app.config.globalProperties.formChange = formChange;
 app.config.globalProperties.formChangeTwo = formChangeTwo;
+// 深拷贝
+app.config.globalProperties.deepClone = deepClone;
 //pinia
 app.use(store);
 

+ 33 - 0
src/utils/util.js

@@ -99,3 +99,36 @@ export function formChangeTwo(val, data, index, indexTwo, propName, formData) {
     formData.data[propName][index][data.prop + "Name"] = "";
   }
 }
+
+// 深拷贝
+export function checkType(target) {
+  return Object.prototype.toString.call(target).slice(8, -1);
+}
+export function deepClone(data) {
+  const obj = checkType(data) === "Array" ? [] : {};
+  let arr = ["Object", "Array"];
+  if (arr.includes(checkType(data))) {
+    for (let key in data) {
+      let value = data[key];
+      //value为简单类型,直接赋值
+      if (!arr.includes(checkType(value))) {
+        obj[key] = value;
+      } else {
+        // 定义一个映射,初始化时,将data本身加入映射中
+        const map = new WeakMap();
+        // 如果拷贝的是复杂数据类型第一次拷贝后存入map
+        // 第二次再遇到该值时,直接赋值为null,结束递归
+        map.set(data, true);
+        if (map.has(value)) {
+          obj[key] = null;
+        } else {
+          map.set(value, true);
+          obj[key] = deepClone(value);
+        }
+      }
+    }
+  } else {
+    return data;
+  }
+  return obj;
+}

+ 55 - 4
src/views/processApproval/components/Contract.vue

@@ -48,8 +48,8 @@ const proxy = getCurrentInstance().proxy;
 const route = useRoute();
 const active = ref(0);
 const tabsChange = () => {
-	active.value ++
-}
+  active.value++;
+};
 const formData = reactive({
   data: {
     contractType: "1",
@@ -824,7 +824,7 @@ const handleChangeAmount = () => {
     for (let i = 0; i < formData.data.contractProjectList.length; i++) {
       if (formData.data.contractProjectList[i].amount) {
         money = Number(Math.round((Number(money) + Number(formData.data.contractProjectList[i].amount)) * 10000) / 10000);
-        amountProduct = Number(Math.round((Number(amountProduct) + Number(formData.data.contractProjectList[i].amount)) * 10000) / 10000);
+        amountProject = Number(Math.round((Number(amountProject) + Number(formData.data.contractProjectList[i].amount)) * 10000) / 10000);
       }
     }
   }
@@ -871,6 +871,7 @@ const handleSubmit = async () => {
     return formData.data;
   }
 };
+let status = ref(true);
 watch(
   refProps.queryData,
   () => {
@@ -881,6 +882,19 @@ watch(
       formDom1.value.formDataShowLabelOne();
       formDom2.value.formDataListShowLabelOne();
       formDom6.value.formDataShowLabelOne();
+      if (!formData.data.sellCity) {
+        let sellCity = "";
+        if (formData.data.sellCountryName) {
+          sellCity = formData.data.sellCountryName;
+        }
+        if (formData.data.sellProvinceName) {
+          sellCity = sellCity + " " + formData.data.sellProvinceName;
+        }
+        if (formData.data.sellCityName) {
+          sellCity = sellCity + " " + formData.data.sellCityName;
+        }
+        formData.data.sellCity = sellCity;
+      }
       if (["10", "20"].includes(route.query.processType)) {
         formOption.readonly = true;
         formGoodsOption.readonly = true;
@@ -889,6 +903,43 @@ watch(
         formProjectOption.btnConfig.isNeed = false;
         formShipmentOption.readonly = true;
       }
+      handleChangeAmount();
+      if (status.value) {
+        if (!formData.data.countryCityName) {
+          if (formData.data.countryId) {
+            let countryCityName = "";
+            formData.data.countryCity = formData.data.countryId;
+            proxy.post("/customizeArea/list", { parentId: "0" }).then((res) => {
+              let list = res.data.filter((item) => item.id == formData.data.countryId);
+              if (list && list.length > 0) {
+                countryCityName = list[0].name;
+                formData.data.countryCityName = countryCityName;
+              }
+              if (formData.data.provinceId) {
+                formData.data.countryCity = formData.data.provinceId;
+                proxy.post("/customizeArea/list", { parentId: formData.data.countryId }).then((res) => {
+                  let list = res.data.filter((item) => item.id == formData.data.provinceId);
+                  if (list && list.length > 0) {
+                    countryCityName = countryCityName + " " + list[0].name;
+                    formData.data.countryCityName = countryCityName;
+                  }
+                  if (formData.data.cityId) {
+                    formData.data.countryCity = formData.data.cityId;
+                    proxy.post("/customizeArea/list", { parentId: formData.data.provinceId }).then((res) => {
+                      let list = res.data.filter((item) => item.id == formData.data.cityId);
+                      if (list && list.length > 0) {
+                        countryCityName = countryCityName + " " + list[0].name;
+                        formData.data.countryCityName = countryCityName;
+                      }
+                    });
+                  }
+                });
+              }
+            });
+          }
+        }
+        status.value = false;
+      }
     }
   },
   {
@@ -897,7 +948,7 @@ watch(
 );
 defineExpose({
   handleSubmit,
-  tabsChange
+  tabsChange,
 });
 onMounted(() => {});
 </script>

+ 54 - 3
src/views/processApproval/components/PriceSheet.vue

@@ -43,8 +43,8 @@ const proxy = getCurrentInstance().proxy;
 const route = useRoute();
 const active = ref(0);
 const tabsChange = () => {
-	active.value ++
-}
+  active.value++;
+};
 const formData = reactive({
   data: {
     quotationProductList: [],
@@ -711,7 +711,7 @@ const handleChangeAmount = () => {
     for (let i = 0; i < formData.data.quotationPayList.length; i++) {
       if (formData.data.quotationPayList[i].amount) {
         money = Number(Math.round((Number(money) + Number(formData.data.quotationPayList[i].amount)) * 10000) / 10000);
-        amountProduct = Number(Math.round((Number(amountProduct) + Number(formData.data.quotationPayList[i].amount)) * 10000) / 10000);
+        amountProject = Number(Math.round((Number(amountProject) + Number(formData.data.quotationPayList[i].amount)) * 10000) / 10000);
       }
     }
   }
@@ -758,6 +758,7 @@ const handleSubmit = async () => {
     return formData.data;
   }
 };
+const status = ref(false);
 watch(
   refProps.queryData,
   () => {
@@ -768,6 +769,19 @@ watch(
       formDom1.value.formDataShowLabelOne();
       formDom2.value.formDataListShowLabelOne();
       formDom6.value.formDataShowLabelOne();
+      if (!formData.data.sellCity) {
+        let sellCity = "";
+        if (formData.data.sellCountryName) {
+          sellCity = formData.data.sellCountryName;
+        }
+        if (formData.data.sellProvinceName) {
+          sellCity = sellCity + " " + formData.data.sellProvinceName;
+        }
+        if (formData.data.sellCityName) {
+          sellCity = sellCity + " " + formData.data.sellCityName;
+        }
+        formData.data.sellCity = sellCity;
+      }
       if (["10", "20"].includes(route.query.processType)) {
         formOption.readonly = true;
         formGoodsOption.readonly = true;
@@ -775,6 +789,43 @@ watch(
         formProjectOption.readonly = true;
         formProjectOption.btnConfig.isNeed = false;
       }
+      handleChangeAmount();
+      if (status.value) {
+        if (!formData.data.countryCityName) {
+          if (formData.data.countryId) {
+            let countryCityName = "";
+            formData.data.countryCity = formData.data.countryId;
+            proxy.post("/customizeArea/list", { parentId: "0" }).then((res) => {
+              let list = res.data.filter((item) => item.id == formData.data.countryId);
+              if (list && list.length > 0) {
+                countryCityName = list[0].name;
+                formData.data.countryCityName = countryCityName;
+              }
+              if (formData.data.provinceId) {
+                formData.data.countryCity = formData.data.provinceId;
+                proxy.post("/customizeArea/list", { parentId: formData.data.countryId }).then((res) => {
+                  let list = res.data.filter((item) => item.id == formData.data.provinceId);
+                  if (list && list.length > 0) {
+                    countryCityName = countryCityName + " " + list[0].name;
+                    formData.data.countryCityName = countryCityName;
+                  }
+                  if (formData.data.cityId) {
+                    formData.data.countryCity = formData.data.cityId;
+                    proxy.post("/customizeArea/list", { parentId: formData.data.provinceId }).then((res) => {
+                      let list = res.data.filter((item) => item.id == formData.data.cityId);
+                      if (list && list.length > 0) {
+                        countryCityName = countryCityName + " " + list[0].name;
+                        formData.data.countryCityName = countryCityName;
+                      }
+                    });
+                  }
+                });
+              }
+            });
+          }
+        }
+        status.value = false;
+      }
     }
   },
   {