cz 1 год назад
Родитель
Сommit
ccb320285b

+ 17 - 0
src/components/process/Contract.vue

@@ -1259,6 +1259,7 @@ const changeShroffAccount = (val) => {
     }
   }
 };
+
 watch(
   props.queryData,
   () => {
@@ -1370,6 +1371,22 @@ onMounted(() => {
       }
     });
   }
+  if(route.query&&route.query.businessId){
+    proxy.post("/contract/detail", { id: route.query.businessId }).then((res) => {
+      setTimeout(()=>{
+        formData.data.id = res.id
+        for (let i = 0; i < formData.data.contractProductList.length; i++) {
+          formData.data.contractProductList[i].id=res.contractProductList[i].id
+        }
+        for (let i = 0; i < formData.data.contractProjectList.length; i++) {
+          formData.data.contractProjectList[i].id=res.contractProjectList[i].id
+        }
+        for (let i = 0; i < formData.data.contractShipmentList.length; i++) {
+          formData.data.contractShipmentList[i].id=res.contractShipmentList[i].id
+        }
+      },2000)
+    });
+  }
 });
 </script>
 

+ 81 - 2
src/views/customer/file/index.vue

@@ -143,7 +143,28 @@
                       </div>
                       <div v-else>
                         <div style="word-wrap: break-word; margin: 8px 0">
-                          {{ getContent(record) }}
+                          <!-- {{ getContent(record) }} -->
+                          <span v-if="record.type === '10'"
+                            >跟进记录:报价单总金额
+                          </span>
+                          <span v-if="record.type === '20'"
+                            >跟进记录:合同总金额
+                          </span>
+                          <span>{{ moneyFormat(record.amount, 2) }}</span>
+                          <span
+                            v-if="record.type === '10' && record.code"
+                            :class="{ 'code-class': isHave }"
+                            @click="
+                              isHaveOne ? handlePushRoute(record) : () => {}
+                            "
+                            >({{ record.code }})</span
+                          >
+                          <span
+                            v-if="record.type === '20' && record.contractCode"
+                            :class="{ 'code-class': isHaveOne }"
+                            @click="isHave ? handlePushRoute(record) : () => {}"
+                            >({{ record.contractCode }})</span
+                          >
                         </div>
                       </div>
                       <div
@@ -529,7 +550,26 @@
                   </div>
                   <div v-else>
                     <div style="word-wrap: break-word; margin: 8px 0">
-                      {{ getContent(record) }}
+                      <!-- {{ getContent(record) }} -->
+                      <span v-if="record.type === '10'"
+                        >跟进记录:报价单总金额
+                      </span>
+                      <span v-if="record.type === '20'"
+                        >跟进记录:合同总金额
+                      </span>
+                      <span>{{ moneyFormat(record.amount, 2) }}</span>
+                      <span
+                        v-if="record.type === '10' && record.code"
+                        :class="{ 'code-class': isHave }"
+                        @click="isHaveOne ? handlePushRoute(record) : () => {}"
+                        >({{ record.code }})</span
+                      >
+                      <span
+                        v-if="record.type === '20' && record.contractCode"
+                        :class="{ 'code-class': isHaveOne }"
+                        @click="isHave ? handlePushRoute(record) : () => {}"
+                        >({{ record.contractCode }})</span
+                      >
                     </div>
                   </div>
                   <div
@@ -1750,6 +1790,41 @@ const changeSearchTag = (val) => {
   addSearchTag.value = "";
 };
 
+// 判断当前用户有无销售合同页面权限
+const isHave = ref(false);
+if (
+  useUserStore().permissions &&
+  useUserStore().permissions.includes("contract")
+) {
+  isHave.value = true;
+}
+// 判断当前用户有无报价单页面权限
+const isHaveOne = ref(false);
+if (
+  useUserStore().permissions &&
+  useUserStore().permissions.includes("priceSheet")
+) {
+  isHaveOne.value = true;
+}
+
+const handlePushRoute = (row) => {
+  if (row.type === "10") {
+    proxy.$router.push({
+      name: "PriceSheet",
+      query: {
+        code: row.code,
+      },
+    });
+  } else if (row.type === "20") {
+    proxy.$router.push({
+      name: "Contract",
+      query: {
+        code: row.contractCode,
+      },
+    });
+  }
+};
+
 const table = ref(null);
 onMounted(() => {
   watch(
@@ -1763,6 +1838,10 @@ onMounted(() => {
 </script>
 
 <style lang="scss" scoped>
+.code-class {
+  cursor: pointer;
+  color: #409eff;
+}
 .tenant {
   padding: 20px;
 }

+ 80 - 2
src/views/customer/highseas/index.vue

@@ -144,7 +144,28 @@
                       </div>
                       <div v-else>
                         <div style="word-wrap: break-word; margin: 8px 0">
-                          {{ getContent(record) }}
+                          <!-- {{ getContent(record) }} -->
+                          <span v-if="record.type === '10'"
+                            >跟进记录:报价单总金额
+                          </span>
+                          <span v-if="record.type === '20'"
+                            >跟进记录:合同总金额
+                          </span>
+                          <span>{{ moneyFormat(record.amount, 2) }}</span>
+                          <span
+                            v-if="record.type === '10' && record.code"
+                            :class="{ 'code-class': isHave }"
+                            @click="
+                              isHaveOne ? handlePushRoute(record) : () => {}
+                            "
+                            >({{ record.code }})</span
+                          >
+                          <span
+                            v-if="record.type === '20' && record.contractCode"
+                            :class="{ 'code-class': isHaveOne }"
+                            @click="isHave ? handlePushRoute(record) : () => {}"
+                            >({{ record.contractCode }})</span
+                          >
                         </div>
                       </div>
                       <div
@@ -506,7 +527,26 @@
                   </div>
                   <div v-else>
                     <div style="word-wrap: break-word; margin: 8px 0">
-                      {{ getContent(record) }}
+                      <!-- {{ getContent(record) }} -->
+                      <span v-if="record.type === '10'"
+                        >跟进记录:报价单总金额
+                      </span>
+                      <span v-if="record.type === '20'"
+                        >跟进记录:合同总金额
+                      </span>
+                      <span>{{ moneyFormat(record.amount, 2) }}</span>
+                      <span
+                        v-if="record.type === '10' && record.code"
+                        :class="{ 'code-class': isHave }"
+                        @click="isHaveOne ? handlePushRoute(record) : () => {}"
+                        >({{ record.code }})</span
+                      >
+                      <span
+                        v-if="record.type === '20' && record.contractCode"
+                        :class="{ 'code-class': isHaveOne }"
+                        @click="isHave ? handlePushRoute(record) : () => {}"
+                        >({{ record.contractCode }})</span
+                      >
                     </div>
                   </div>
                   <div
@@ -1603,6 +1643,40 @@ const changeSearchTag = (val) => {
   addTagSearchShow.value = false;
   addSearchTag.value = "";
 };
+// 判断当前用户有无销售合同页面权限
+const isHave = ref(false);
+if (
+  useUserStore().permissions &&
+  useUserStore().permissions.includes("contract")
+) {
+  isHave.value = true;
+}
+// 判断当前用户有无报价单页面权限
+const isHaveOne = ref(false);
+if (
+  useUserStore().permissions &&
+  useUserStore().permissions.includes("priceSheet")
+) {
+  isHaveOne.value = true;
+}
+
+const handlePushRoute = (row) => {
+  if (row.type === "10") {
+    proxy.$router.push({
+      name: "PriceSheet",
+      query: {
+        code: row.code,
+      },
+    });
+  } else if (row.type === "20") {
+    proxy.$router.push({
+      name: "Contract",
+      query: {
+        code: row.contractCode,
+      },
+    });
+  }
+};
 
 const table = ref(null);
 onMounted(() => {
@@ -1617,6 +1691,10 @@ onMounted(() => {
 </script>
 
 <style lang="scss" scoped>
+.code-class {
+  cursor: pointer;
+  color: #409eff;
+}
 .tenant {
   padding: 20px;
 }

+ 104 - 18
src/views/customer/portrait/com/LatestProgress.vue

@@ -1,22 +1,52 @@
 <template>
   <div v-loading="loading" class="progress">
     <el-timeline reverse>
-      <el-timeline-item v-for="(item, index) in progressList" :key="index" color="#0084FF" placement="top" hide-timestamp>
+      <el-timeline-item
+        v-for="(item, index) in progressList"
+        :key="index"
+        color="#0084FF"
+        placement="top"
+        hide-timestamp
+      >
         <div class="details" :style="getColor(item.type)">
           <div class="t">{{ getTitle(item.type) }}</div>
           <div class="content11" v-if="item.type != 30">
             <span class="gray">跟进摘要: </span>
-            <span class="val"> {{ getContent(item) }} </span>
+            <span class="val">
+              <!-- {{ getContent(item) }} -->
+              <span v-if="item.type === 10">报价单总金额</span>
+              <span v-if="item.type === 20">合同总金额</span>
+              <span>{{ moneyFormat(item.amount, 2) }}</span>
+              <span
+                v-if="item.type === 10 && item.code"
+                :class="{ 'code-class': isHave }"
+                @click="isHaveOne ? handlePushRoute(item) : () => {}"
+                >({{ item.code }})</span
+              >
+              <span
+                v-if="item.type === 20 && item.contractCode"
+                :class="{ 'code-class': isHaveOne }"
+                @click="isHave ? handlePushRoute(item) : () => {}"
+                >({{ item.contractCode }})</span
+              >
+            </span>
           </div>
           <div class="content11" v-else>
             <span class="gray">跟进记录: </span>
             <span class="val"> {{ item.remark }} </span>
           </div>
-          <div style="margin: 8px 0; display: flex" v-if="item.fileList && item.fileList.length > 0">
+          <div
+            style="margin: 8px 0; display: flex"
+            v-if="item.fileList && item.fileList.length > 0"
+          >
             <div style="width: 36px; color: #999999">附件:</div>
             <div style="width: calc(100% - 36px)">
               <div v-for="(file, index) in item.fileList" :key="index">
-                <a style="color: #409eff; cursor: pointer" @click="openFile(file.fileUrl)">{{ file.fileName }}</a>
+                <a
+                  style="color: #409eff; cursor: pointer"
+                  @click="openFile(file.fileUrl)"
+                  >{{ file.fileName }}</a
+                >
               </div>
             </div>
           </div>
@@ -28,6 +58,8 @@
 </template>
 
 <script setup>
+import useUserStore from "@/store/modules/user";
+
 const props = defineProps({
   customerId: {
     type: String,
@@ -36,21 +68,49 @@ const props = defineProps({
 const { proxy } = getCurrentInstance();
 const loading = ref(false);
 const progressList = ref([]);
+// 判断当前用户有无销售合同页面权限
+const isHave = ref(false);
+if (
+  useUserStore().permissions &&
+  useUserStore().permissions.includes("contract")
+) {
+  isHave.value = true;
+}
+// 判断当前用户有无报价单页面权限
+const isHaveOne = ref(false);
+if (
+  useUserStore().permissions &&
+  useUserStore().permissions.includes("priceSheet")
+) {
+  isHaveOne.value = true;
+}
+
 const getData = () => {
   loading.value = true;
-  proxy.post("/saleQuotation/latestFollowUp", { id: props.customerId }).then((res) => {
-    progressList.value = res.rows;
-    if (res.rows && res.rows.length > 0 && res.rows.map((rows) => rows.id).length > 0) {
-      proxy.post("/fileInfo/getList", { businessIdList: res.rows.map((rows) => rows.id) }).then((fileObj) => {
-        for (let i = 0; i < res.rows.length; i++) {
-          progressList.value[i].fileList = fileObj[progressList.value[i].id] || [];
-        }
-      });
-    }
-    setTimeout(() => {
-      loading.value = false;
-    }, 200);
-  });
+  proxy
+    .post("/saleQuotation/latestFollowUp", { id: props.customerId })
+    .then((res) => {
+      progressList.value = res.rows;
+      if (
+        res.rows &&
+        res.rows.length > 0 &&
+        res.rows.map((rows) => rows.id).length > 0
+      ) {
+        proxy
+          .post("/fileInfo/getList", {
+            businessIdList: res.rows.map((rows) => rows.id),
+          })
+          .then((fileObj) => {
+            for (let i = 0; i < res.rows.length; i++) {
+              progressList.value[i].fileList =
+                fileObj[progressList.value[i].id] || [];
+            }
+          });
+      }
+      setTimeout(() => {
+        loading.value = false;
+      }, 200);
+    });
 };
 onMounted(() => {
   if (props.customerId) {
@@ -74,7 +134,11 @@ const getContent = (item) => {
   if (item.type === 10) {
     return "报价单总金额 " + proxy.moneyFormat(item.amount, 2);
   } else if (item.type === 20) {
-    return "合同总金额 " + proxy.moneyFormat(item.amount, 2) + ` (${item.contractCode}) `;
+    return (
+      "合同总金额 " +
+      proxy.moneyFormat(item.amount, 2) +
+      ` (${item.contractCode}) `
+    );
   }
 };
 const openFile = (path) => {
@@ -90,9 +154,31 @@ const getColor = (type) => {
   };
   return "background-color: " + obj[type];
 };
+
+const handlePushRoute = (row) => {
+  if (row.type === 10) {
+    proxy.$router.push({
+      name: "PriceSheet",
+      query: {
+        code: row.code,
+      },
+    });
+  } else if (row.type === 20) {
+    proxy.$router.push({
+      name: "Contract",
+      query: {
+        code: row.contractCode,
+      },
+    });
+  }
+};
 </script>
 
 <style lang="scss" scoped>
+.code-class {
+  cursor: pointer;
+  color: #409eff;
+}
 :deep(.el-timeline-item) {
   padding-bottom: 10px;
 }

+ 81 - 2
src/views/customer/privatesea/index.vue

@@ -144,7 +144,28 @@
                       </div>
                       <div v-else>
                         <div style="word-wrap: break-word; margin: 8px 0">
-                          {{ getContent(record) }}
+                          <!-- {{ getContent(record) }} -->
+                          <span v-if="record.type === '10'"
+                            >跟进记录:报价单总金额
+                          </span>
+                          <span v-if="record.type === '20'"
+                            >跟进记录:合同总金额
+                          </span>
+                          <span>{{ moneyFormat(record.amount, 2) }}</span>
+                          <span
+                            v-if="record.type === '10' && record.code"
+                            :class="{ 'code-class': isHave }"
+                            @click="
+                              isHaveOne ? handlePushRoute(record) : () => {}
+                            "
+                            >({{ record.code }})</span
+                          >
+                          <span
+                            v-if="record.type === '20' && record.contractCode"
+                            :class="{ 'code-class': isHaveOne }"
+                            @click="isHave ? handlePushRoute(record) : () => {}"
+                            >({{ record.contractCode }})</span
+                          >
                         </div>
                       </div>
                       <div
@@ -506,7 +527,26 @@
                   </div>
                   <div v-else>
                     <div style="word-wrap: break-word; margin: 8px 0">
-                      {{ getContent(record) }}
+                      <!-- {{ getContent(record) }} -->
+                      <span v-if="record.type === '10'"
+                        >跟进记录:报价单总金额
+                      </span>
+                      <span v-if="record.type === '20'"
+                        >跟进记录:合同总金额
+                      </span>
+                      <span>{{ moneyFormat(record.amount, 2) }}</span>
+                      <span
+                        v-if="record.type === '10' && record.code"
+                        :class="{ 'code-class': isHave }"
+                        @click="isHaveOne ? handlePushRoute(record) : () => {}"
+                        >({{ record.code }})</span
+                      >
+                      <span
+                        v-if="record.type === '20' && record.contractCode"
+                        :class="{ 'code-class': isHaveOne }"
+                        @click="isHave ? handlePushRoute(record) : () => {}"
+                        >({{ record.contractCode }})</span
+                      >
                     </div>
                   </div>
                   <div
@@ -1607,6 +1647,41 @@ const changeSearchTag = (val) => {
   addSearchTag.value = "";
 };
 
+// 判断当前用户有无销售合同页面权限
+const isHave = ref(false);
+if (
+  useUserStore().permissions &&
+  useUserStore().permissions.includes("contract")
+) {
+  isHave.value = true;
+}
+// 判断当前用户有无报价单页面权限
+const isHaveOne = ref(false);
+if (
+  useUserStore().permissions &&
+  useUserStore().permissions.includes("priceSheet")
+) {
+  isHaveOne.value = true;
+}
+
+const handlePushRoute = (row) => {
+  if (row.type === "10") {
+    proxy.$router.push({
+      name: "PriceSheet",
+      query: {
+        code: row.code,
+      },
+    });
+  } else if (row.type === "20") {
+    proxy.$router.push({
+      name: "Contract",
+      query: {
+        code: row.contractCode,
+      },
+    });
+  }
+};
+
 const table = ref(null);
 onMounted(() => {
   watch(
@@ -1620,6 +1695,10 @@ onMounted(() => {
 </script>
 
 <style lang="scss" scoped>
+.code-class {
+  cursor: pointer;
+  color: #409eff;
+}
 .tenant {
   padding: 20px;
 }

+ 1 - 0
src/views/process/dealWith/backlog.vue

@@ -173,6 +173,7 @@ const config = computed(() => {
 											flowKey: row.flowKey,
 											id: row.id,
 											processType:nodeType == 1 ? 30 : 10,
+											businessId:row.businessId,
 											version:row.version
 										},
 									});

+ 1 - 2
src/views/salesMange/saleContract/priceSheet/index.vue

@@ -273,7 +273,7 @@
               style="width: 100px; text-align: center"
             ></div>
             <div class="contentRow" style="width: 100px; text-align: center">
-              {{ statistics("quantity", 0) }}
+              {{ statistics("quantity", 2) }}
             </div>
             <div
               class="contentRow"
@@ -718,7 +718,6 @@ const clickPrint = (row) => {
   openPrint.value = true;
   proxy.post("/saleQuotation/detail", { id: row.id }).then((res) => {
     printDetails.value = res;
-    console.log(res, "aaa");
   });
 };
 const clickDownload = () => {