Quellcode durchsuchen

Merge branch 'stage' into dev0.3

lxf vor 1 Jahr
Ursprung
Commit
8b27025e1a

+ 1 - 1
.env.development

@@ -7,6 +7,6 @@ VITE_APP_ENV = 'development'
 # 若依管理系统/开发环境
 VITE_APP_BASE_API = '/dev-api'
 
-VITE_APP_WS_API = '/test-api'
+VITE_APP_WS_API = ':20001/test-api'
 
 VITE_APP_IP = '121.37.194.75'

+ 1 - 1
.env.production

@@ -7,7 +7,7 @@ VITE_APP_ENV = 'production'
 # 若依管理系统/生产环境
 VITE_APP_BASE_API = '/prod-api'
 
-VITE_APP_WS_API = '/prod-api'
+VITE_APP_WS_API = ':9898/prod-api'
 
 VITE_APP_IP = '139.159.251.109'
 

+ 1 - 1
.env.staging

@@ -7,7 +7,7 @@ VITE_APP_ENV = 'staging'
 # 若依管理系统/生产环境
 VITE_APP_BASE_API = '/test-api'
 
-VITE_APP_WS_API = '/test-api'
+VITE_APP_WS_API = ':20001/test-api'
 
 # 是否在打包时开启压缩,支持 gzip 和 brotli
 VITE_BUILD_COMPRESS = gzip

+ 3 - 2
src/components/byTable/index.vue

@@ -73,7 +73,7 @@
       </li>
     </ul>
   </div>
-  <div class="table-list-container by-table">
+  <div class="table-list-container by-table" v-loading="loading">
     <!-- v-if="!hideHeader" -->
     <header v-if="false" class="header">
       <h2>{{ title }}</h2>
@@ -157,7 +157,7 @@
 
       <el-table
         ref="hocElTable"
-        v-loading="loading"
+        
         :data="source"
         v-if="!hideTable"
         style="width: 100%"
@@ -454,6 +454,7 @@ export default defineComponent({
       return isFn(fn);
     };
     const searchFn = (val) => {
+      if(props.loading) return;
       proxy.$emit(
         "getList",
         Object.assign(props.filterParams, {

+ 20 - 7
src/components/notice/index.vue

@@ -51,11 +51,15 @@
 			<div class="notice-table" @click.stop  v-loading="loading" >
 				<div class="tabs">
 					<ul>
-						<li style="padding-left: 0; border: none" @click="pushInfoReq.whetherFlow = '';getPushInfo()" :class="pushInfoReq.whetherFlow === '' ? 'active' : ''">
-							全部({{pushInfoReq.total}})
+						<li style="padding-left: 0; border: none" @click="pushInfoReq.whetherFlow = '';getPushInfoInit()" :class="pushInfoReq.whetherFlow === '' ? 'active' : ''">
+							全部<span v-if="pushInfoReq.whetherFlow === ''">({{pushInfoReq.total}})</span>
+						</li>
+						<li  @click="pushInfoReq.whetherFlow = 1;getPushInfoInit()" :class="pushInfoReq.whetherFlow === 1 ? 'active' : ''">
+							流程<span v-if="pushInfoReq.whetherFlow === 1">({{pushInfoReq.total}})</span>
+						</li>
+						<li  @click="pushInfoReq.whetherFlow = 0;getPushInfoInit()" :class="pushInfoReq.whetherFlow === 0 ? 'active' : ''">
+							业务<span v-if="pushInfoReq.whetherFlow === 0">({{pushInfoReq.total}})</span>
 						</li>
-						<li  @click="pushInfoReq.whetherFlow = 1;getPushInfo()" :class="pushInfoReq.whetherFlow === 1 ? 'active' : ''">流程</li>
-						<li  @click="pushInfoReq.whetherFlow = 0;getPushInfo()" :class="pushInfoReq.whetherFlow === 0 ? 'active' : ''">业务</li>
 					</ul>
 					<!-- <div class="more">查看更多&gt;</div> -->
 				</div>
@@ -85,7 +89,12 @@
 					</el-table-column>
 				</el-table>
 				<div >
-					<el-pagination style="text-align: center;" :page-size="5" layout="prev, pager, next" :total="pushInfoReq.total" @current-change="handlePageChange" />
+					<el-pagination 
+						style="text-align: center;" 
+						:page-size="5" layout="prev, pager, next" 
+						:current-page="pushInfoReq.pageNum" 
+						:total="pushInfoReq.total" 
+						@current-change="handlePageChange" />
 				</div>
 				<div class="notice-btn-box" style="margin-top: 20px">
 					<!-- <el-button plain disabled>点击清空</el-button> -->
@@ -181,7 +190,7 @@ const confirm = () => {
 
 const socketInit = () => {
 	window.ws = new WebSocket(
-		'ws://'+ import.meta.env.VITE_APP_IP +':20001'+ import.meta.env.VITE_APP_WS_API +'/webStock/' +
+		'ws://'+ import.meta.env.VITE_APP_IP + import.meta.env.VITE_APP_WS_API +'/webStock/' +
 			getToken()
 		// 'ws://192.168.1.97:8300/webStock/' + window.localStorage.getItem('token')
 	)
@@ -240,11 +249,15 @@ const handlePageChange = (val) => {
 }
 
 const loading = ref(false)
+const getPushInfoInit = () => {
+	pushInfoReq.value.pageNum = 1
+	getPushInfo()
+}
 const getPushInfo = () => {
 	loading.value = true
 	proxy.post('/pushInfo/page',pushInfoReq.value).then(res=>{
 		noticeData.value = res.rows
-		pushInfoReq.value.total = pushInfoReq.value.whetherFlow === '' ? res.total : pushInfoReq.value.total
+		pushInfoReq.value.total = res.total
 		console.log(pushInfoReq)
 		setTimeout(() => {
 			loading.value = false

+ 2 - 2
src/utils/request.js

@@ -64,7 +64,7 @@ service.interceptors.request.use(config => {
       const s_url = sessionObj.url; // 请求地址
       const s_data = sessionObj.data; // 请求数据
       const s_time = sessionObj.time; // 请求时间
-      const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交
+      const interval = 300; // 间隔时间(ms),小于此时间视为重复提交
       if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
         const message = '数据正在处理,请勿重复提交';
         // console.warn(`[${s_url}]: ` + message)
@@ -88,7 +88,7 @@ service.interceptors.response.use(res => {
     // 获取错误信息
     const msg = errorCode[code] || res.data.msg || errorCode['default']
     // 二进制数据则直接返回
-    if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
+    if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') { 
       return res.data
     }
     if (code === 401) {

+ 77 - 206
src/views/customer/file/index.vue

@@ -5,217 +5,17 @@
         >添加客户</el-button
       >
     </div>
-    <div
-      style="padding: 20px 20px 0 20px; background: #fff; margin-bottom: 20px"
-    >
-      <div style="display: flex">
-        <div style="font-size: 14px; cursor: pointer" class="by-dropdown">
-          <div class="by-dropdown-title">
-            <span>{{
-              dictValueLabel(
-                sourceList.paginationTwo.statisticsType,
-                statisticsType
-              )
-            }}</span>
-            <el-icon style="margin-left: 5px; font-size: 16px"
-              ><CaretBottom
-            /></el-icon>
-          </div>
-          <ul class="by-dropdown-lists">
-            <li
-              v-for="item in statisticsType"
-              :key="item.value"
-              @click="searchItemSelect(item.value)"
-              style="
-                display: flex;
-                align-items: center;
-                justify-content: center;
-              "
-            >
-              {{ item.label }}
-            </li>
-          </ul>
-        </div>
-      </div>
-      <div
-        style="
-          display: flex;
-          width: 100%;
-          margin: 10px 0 0 10px;
-          flex-wrap: wrap;
-        "
-      >
-        <div
-          style="
-            padding: 20px;
-            border-radius: 10px;
-            width: 200px;
-            background-color: #d1caff59;
-            margin: 0 20px 20px 0;
-          "
-        >
-          <div style="margin-bottom: 10px; display: flex">
-            <div
-              style="
-                width: 8px;
-                height: 8px;
-                background-color: #5bacff;
-                border-radius: 50px;
-                margin-top: 6px;
-              "
-            ></div>
-            <span style="padding-left: 8px">合计</span>
-          </div>
-          <div style="color: black; font-size: 20px; font-weight: 700">
-            {{ statisticalData.countAmount }}
-          </div>
-        </div>
-        <template v-if="sourceList.paginationTwo.statisticsType === 1">
-          <div v-for="(item, index) in customerSource" :key="index">
-            <div
-              v-if="getNum(item.value) > 0"
-              style="
-                padding: 20px;
-                border-radius: 10px;
-                width: 200px;
-                background-color: #a2d8ff70;
-                margin: 0 20px 20px 0;
-              "
-            >
-              <div style="margin-bottom: 10px; display: flex">
-                <div
-                  style="
-                    width: 8px;
-                    height: 8px;
-                    background-color: #5bacff;
-                    border-radius: 50px;
-                    margin-top: 6px;
-                  "
-                ></div>
-                <el-tooltip class="box-item" effect="light" placement="bottom">
-                  <template #content>
-                    <div
-                      style="
-                        max-width: 400px;
-                        max-height: 50vh;
-                        word-break: break-all;
-                      "
-                    >
-                      {{ item.label }}
-                    </div>
-                  </template>
-                  <div class="statistics-text" style="cursor: pointer">
-                    {{ item.label }}
-                  </div>
-                </el-tooltip>
-              </div>
-              <div style="color: black; font-size: 20px; font-weight: 700">
-                {{ getNum(item.value) }}
-              </div>
-            </div>
-          </div>
-        </template>
-        <template v-else-if="sourceList.paginationTwo.statisticsType === 2">
-          <div v-for="(item, index) in customerStatus" :key="index">
-            <div
-              v-if="getNum(item.value) > 0"
-              style="
-                padding: 20px;
-                border-radius: 10px;
-                width: 200px;
-                background-color: #a2d8ff70;
-                margin: 0 20px 20px 0;
-              "
-            >
-              <div style="margin-bottom: 10px; display: flex">
-                <div
-                  style="
-                    width: 8px;
-                    height: 8px;
-                    background-color: #5bacff;
-                    border-radius: 50px;
-                    margin-top: 6px;
-                  "
-                ></div>
-                <el-tooltip class="box-item" effect="light" placement="bottom">
-                  <template #content>
-                    <div
-                      style="
-                        max-width: 400px;
-                        max-height: 50vh;
-                        word-break: break-all;
-                      "
-                    >
-                      {{ item.label }}
-                    </div>
-                  </template>
-                  <div class="statistics-text" style="cursor: pointer">
-                    {{ item.label }}
-                  </div>
-                </el-tooltip>
-              </div>
-              <div style="color: black; font-size: 20px; font-weight: 700">
-                {{ getNum(item.value) }}
-              </div>
-            </div>
-          </div>
-        </template>
-        <template v-else-if="sourceList.paginationTwo.statisticsType === 3">
-          <div v-for="(item, index) in userList" :key="index">
-            <div
-              v-if="getNum(item.value) > 0"
-              style="
-                padding: 20px;
-                border-radius: 10px;
-                width: 200px;
-                background-color: #a2d8ff70;
-                margin: 0 20px 20px 0;
-              "
-            >
-              <div style="margin-bottom: 10px; display: flex">
-                <div
-                  style="
-                    width: 8px;
-                    height: 8px;
-                    background-color: #5bacff;
-                    border-radius: 50px;
-                    margin-top: 6px;
-                  "
-                ></div>
-                <el-tooltip class="box-item" effect="light" placement="bottom">
-                  <template #content>
-                    <div
-                      style="
-                        max-width: 400px;
-                        max-height: 50vh;
-                        word-break: break-all;
-                      "
-                    >
-                      {{ item.label }}
-                    </div>
-                  </template>
-                  <div class="statistics-text" style="cursor: pointer">
-                    {{ item.label }}
-                  </div>
-                </el-tooltip>
-              </div>
-              <div style="color: black; font-size: 20px; font-weight: 700">
-                {{ getNum(item.value) }}
-              </div>
-            </div>
-          </div>
-        </template>
-      </div>
-    </div>
     <byTable
       :source="sourceList.data"
       :pagination="sourceList.pagination"
       :config="config"
       :loading="loading"
       :selectConfig="selectConfig"
+      :statConfig="statConfig"
       highlight-current-row
       @moreSearch="moreSearch"
       @get-list="getList"
+      ref="table"
     >
       <template #isTop="{ item }">
         <div>
@@ -933,6 +733,69 @@ const sourceList = ref({
     type: null,
   },
 });
+
+const statConfig = computed(() => [
+  {
+    label: "客户来源统计",
+    data: [
+      {
+        label: "合计",
+        num: statisticalData.value.countAmount,
+        type: 2,
+      },
+      ...customerSource.value
+        .filter((a) => getNum(a.value) > 0)
+        .map((b) => {
+          let num = getNum(b.value);
+          return {
+            label: b.label,
+            num,
+            type: 1,
+          };
+        }),
+    ],
+  },
+  {
+    label: "客户类型统计",
+    data: [
+      {
+        label: "合计",
+        num: statisticalData.value.countAmount,
+        type: 2,
+      },
+      ...customerStatus.value
+        .filter((a) => getNum(a.value) > 0)
+        .map((b) => {
+          let num = getNum(b.value);
+          return {
+            label: b.label,
+            num,
+            type: 1,
+          };
+        }),
+    ],
+  },
+  {
+    label: "业务员统计",
+    data: [
+      {
+        label: "合计",
+        num: statisticalData.value.countAmount,
+        type: 2,
+      },
+      ...userList.value
+        .filter((a) => getNum(a.value) > 0)
+        .map((b) => {
+          let num = getNum(b.value);
+          return {
+            label: b.label,
+            num,
+            type: 1,
+          };
+        }),
+    ],
+  },
+]);
 const selectConfig = computed(() => {
   return [
     {
@@ -1713,10 +1576,7 @@ const addTop = (item) => {
     item.isTop = 1;
   });
 };
-const searchItemSelect = (val) => {
-  sourceList.value.paginationTwo.statisticsType = val;
-  obtainStatisticalData();
-};
+
 const statisticalData = ref({
   countAmount: 0,
   customerList: [],
@@ -1889,6 +1749,17 @@ const changeSearchTag = (val) => {
   addTagSearchShow.value = false;
   addSearchTag.value = "";
 };
+
+const table = ref(null);
+onMounted(() => {
+  watch(
+    () => table.value.statSelectVal,
+    (val) => {
+      sourceList.value.paginationTwo.statisticsType = val + 1;
+      obtainStatisticalData();
+    }
+  );
+});
 </script>
 
 <style lang="scss" scoped>

Datei-Diff unterdrückt, da er zu groß ist
+ 506 - 213
src/views/customer/highseas/index.vue


+ 2 - 2
src/views/customer/portrait/com/CustomerInfo.vue

@@ -1,9 +1,9 @@
 <template>
   <div class="content" v-loading="loading">
     <div class="line">
-      <span class="title_" v-if="detailsData.customerCode">客户代码:{{ detailsData.customerCode }}</span>
+      <span class="title_" v-if="detailsData.customerCode">客户代码:<span style="color:#000">{{ detailsData.customerCode }}</span></span>
       <span class="title_" v-if="detailsData.customerCode && detailsData.status" style="margin: 0 6px">|</span>
-      <span class="title_" v-if="detailsData.status">客户类型:{{ dictValueLabel(detailsData.status, customerStatus) }}</span>
+      <span class="title_" v-if="detailsData.status">客户类型:<span style="color:#000">{{ dictValueLabel(detailsData.status, customerStatus) }}</span></span>
     </div>
     <div class="line" v-if="detailsData.source">
       <span class="title_">客户来源:</span>

+ 8 - 3
src/views/customer/portrait/com/SalesDetails.vue

@@ -10,7 +10,7 @@
         :selectConfig="[]"
         :table-events="{}"
         :action-list="[]"
-        @get-list="getList"
+        @get-list="getData"
         :hideSearch="true"
       >
         <template #advanceCharge="{ item }">
@@ -90,10 +90,15 @@ const config = computed(() => {
     },
   ];
 });
-const getData = () => {
+const getData = (req = {}) => {
   loading.value = true;
+  sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
   proxy
-    .post("/saleQuotation/saleDetail", { id: props.customerId })
+    .post("/saleQuotation/saleDetail", {
+      id: props.customerId,
+      ...sourceList.value.pagination,
+      ...req,
+    })
     .then((res) => {
       sourceList.value.data = res.rows;
       sourceList.value.pagination.total = res.total;

Datei-Diff unterdrückt, da er zu groß ist
+ 501 - 221
src/views/customer/privatesea/index.vue


+ 1 - 1
src/views/finance/fundManage/accountPayment/index.vue

@@ -264,7 +264,7 @@ const config = computed(() => {
     {
       attrs: {
         label: "申请时间",
-        prop: "createTime",
+        prop: "applyForTime",
         width: 160,
       },
     },

+ 5 - 5
src/views/salesMange/shipmentMange/document/index.vue

@@ -561,7 +561,7 @@
           <tr>
             <td colspan="2" style="background-color: #dce6f1">
               <div>发件公司清关负责人</div>
-              <div>联系电话/手机(必填)</div>
+              <div>联系电话/手机(必填)</div>
             </td>
             <td colspan="2" style="background-color: #ebf1de">
               <div style="word-wrap: break-word; padding: 0 4px" v-if="textShow">
@@ -574,7 +574,7 @@
               <el-input autosize type="textarea" v-if="!textShow" v-model="printCustomsDeclaration.content.contactsMobile" size="small" />
             </td>
             <td colspan="2" style="background-color: #dce6f1">
-              <span>联系人邮箱</span>
+              <span>联系人邮箱</span>
             </td>
             <td colspan="2" style="background-color: #ebf1de; text-align: left">
               <div style="word-wrap: break-word; padding: 0 4px" v-if="textShow">
@@ -848,7 +848,7 @@
           </tr>
           <tr>
             <td colspan="3" style="background-color: #dce6f1">
-              <span>随附单证及编号(常见如通关单号、原进口报关单号)</span>
+              <span>随附单证及编号(常见如通关单号、原进口报关单号)</span>
             </td>
             <td colspan="5">
               <div style="word-wrap: break-word; padding: 0 4px" v-if="textShow">
@@ -859,7 +859,7 @@
           </tr>
           <tr>
             <td colspan="2" style="background-color: #dce6f1">
-              <span>标记唛码及备注</span>
+              <span>标记唛码及备注</span>
             </td>
             <td colspan="2" style="background-color: #ebf1de">
               <div style="word-wrap: break-word; padding: 0 4px" v-if="textShow">
@@ -868,7 +868,7 @@
               <el-input autosize type="textarea" v-if="!textShow" v-model="printCustomsDeclaration.content.shippingMark" size="small" />
             </td>
             <td style="background-color: #dce6f1">
-              <span>境内货源地</span>
+              <span>境内货源地</span>
             </td>
             <td colspan="3" style="background-color: #ebf1de; text-align: left">
               <div style="word-wrap: break-word; padding: 0 4px" v-if="textShow">

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.