Selaa lähdekoodia

feature_20250917_仿石漆潜在客户区域创建

zhujindu 2 kuukautta sitten
vanhempi
commit
1eac8b6cac

+ 27 - 0
src/api/store.js

@@ -27,3 +27,30 @@ export function checkStoreBeforeAdd(data) {
     data,
   });
 }
+
+// 获取潜在客户类型接口
+export function qzStoreCategory(query) {
+  return request({
+    url: 'mobile/store/qzStoreCategory',
+    method: 'get',
+    params: query,
+  });
+}
+
+// 获取下级销售部接口
+export function getChildDeptList(query) {
+  return request({
+    url: 'mobile/store/getChildDeptList',
+    method: 'get',
+    params: query,
+  });
+}
+
+// 新增潜在客户接口
+export function addQzStore(data) {
+  return request({
+    url: 'mobile/store/addQzStore',
+    method: 'post',
+    data,
+  });
+}

+ 82 - 67
src/views/storeManagement/competingStoresAdd.vue

@@ -6,7 +6,7 @@
         title="潜在店"
         left-arrow
         @click-left="onClickLeft"
-        right-text="保存"
+        right-text="提交"
         @click-right="clickSubmit" />
     </div>
     <div class="content">
@@ -32,6 +32,7 @@
           :value="fromData.storeCategoryName"
           label="客户类型"
           placeholder="点击选择客户类型"
+          @click="showPicker = true"
           :rules="[{ required: true, message: '请选择客户类型' }]">
           <template #left-icon>
             <span class="van-f-red">*</span>
@@ -164,7 +165,7 @@
           </template>
         </van-field>
         <van-field
-          v-model="fromData.salesmanName"
+          v-model="fromData.contactName"
           label="门店联系人"
           placeholder="请输入门店联系人"
           :rules="[{ required: true, message: '请输入门店联系人' }]">
@@ -174,6 +175,15 @@
         </van-field>
       </van-form>
     </div>
+    <!--客户类型-->
+    <van-popup v-model="showPicker" position="bottom">
+      <van-picker
+        show-toolbar
+        value-key="dictLabel"
+        :columns="storeCategoryList"
+        @confirm="onConfirm"
+        @cancel="showPicker = false" />
+    </van-popup>
     <!--省、市、区、街道-->
     <van-popup v-model="showProvincePicker" position="bottom">
       <van-picker
@@ -264,11 +274,12 @@
 </template>
 
 <script>
-import { phoneCheck, streetQuery, getChainsByDeptCode } from '@/api/index';
+import { phoneCheck, streetQuery } from '@/api/index';
 import { updateStore } from '@/api/FSQStore';
-import { getPosition, getTicketFun, getMapPoi, getkeywordPoi, getGeocoder } from '@/utils/TXApiFun';
+import { getPosition, getTicketFun, getGeocoder } from '@/utils/TXApiFun';
 import { jsonp } from 'vue-jsonp';
 import { getstreetInfoList } from '@/api/addDesigner';
+import { qzStoreCategory, getChildDeptList, addQzStore } from '@/api/store';
 export default {
   data() {
     return {
@@ -281,7 +292,7 @@ export default {
         districtName: '',
         addressLine: '',
         orgName: '',
-        salesmanName: '',
+        contactName: '',
         lat: '',
         lon: '',
         cityNameOld: '',
@@ -305,6 +316,8 @@ export default {
       deptShow: false,
       showPickerDept: false,
       deptList: [],
+      showPicker: false,
+      storeCategoryList: [],
       // 地图信息
       showmap: false,
       search: '',
@@ -325,7 +338,7 @@ export default {
       districtName: '',
       addressLine: '',
       orgName: '',
-      salesmanName: '',
+      contactName: '',
       lat: '',
       lon: '',
       cityNameOld: '',
@@ -429,24 +442,31 @@ export default {
     clickSubmit(values) {
       this.$refs.tabstoreVal.submit();
     },
+    onConfirm(value) {
+      if (!value) return;
+      this.fromData.storeCategoryName = value.dictLabel;
+      this.fromData.storeCategory = value.dictValue;
+      this.showPicker = false;
+    },
     getStoreCategoryList() {
-      // designerStoreCategory().then((res) => {
-      //   if (res.code == 200) {
-      //     this.storeCategoryList = res.data;
-      //     this.fromData.storeCategoryName = this.storeCategoryList[0].dictLabel;
-      //     this.fromData.storeCategory = this.storeCategoryList[0].dictValue;
-      //   }
-      // });
+      qzStoreCategory().then((res) => {
+        if (res.code == 200) {
+          this.storeCategoryList = res.data;
+          this.fromData.storeCategoryName = this.storeCategoryList[0].dictLabel;
+          this.fromData.storeCategory = this.storeCategoryList[0].dictValue;
+        }
+      });
     },
     onSubmit(value) {
       this.toastLoading(0, '提交中...', true);
-      updateStore(this.fromData).then((res) => {
+      console.log(this.fromData);
+      addQzStore(this.fromData).then((res) => {
         this.toastLoading().clear();
         if (res.code == 200) {
           this.$dialog
             .confirm({
               title: '系统提示',
-              message: '修改成功',
+              message: '添加成功',
               showCancelButton: false,
             })
             .then(() => {
@@ -460,7 +480,7 @@ export default {
         if (telephone == '') {
           resolve();
         }
-        var telrg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
+        var telrg = /^1[123456789]\d{9}$/;
         if (telephone.trim() == '') {
           reject();
         } else if (!telrg.test(telephone)) {
@@ -749,9 +769,8 @@ export default {
       );
     },
     PickerDept() {
-      if (this.deptShow) {
-        this.showPickerDept = true;
-      }
+      this.getChildDeptListFun();
+      this.showPickerDept = true;
     },
     onDeptConfirm(value) {
       this.fromData.orgName = value.text;
@@ -759,66 +778,62 @@ export default {
       this.fromData.orgId = value.deptId;
       // this.fromData.chainCode = '';
       // this.fromData.chainName = '';
-      this.getChainsByDeptId(value.deptId, this.fromData.ifJzStoreType);
       this.showPickerDept = false;
     },
-    getChainsByDeptId(deptCode, ifJzStoreType) {
-      getChainsByDeptCode({
+    getChildDeptListFun() {
+      getChildDeptList({
         cityName: this.fromData.cityName,
         districtName: this.fromData.districtName,
-        deptId: deptCode,
-        ifJzStoreType: ifJzStoreType,
-        storeCategory: this.fromData.storeCategory,
       }).then((res) => {
-        if (res.data.sfaOrderProducts != null) {
-          res.data.sfaOrderProducts.forEach((item) => {
-            item.orderNum = '';
-            item.storeProductId = item.orderProductId;
-          });
-          this.sfaOrderProducts = res.data.sfaOrderProducts;
-        }
-        this.ChainsList = res.data.sfaChains;
-      });
-    },
-    getChainsByDeptCode(deptId, ifJzStoreType, type) {
-      getChainsByDeptCode({
-        cityName: this.fromData.cityNameOld,
-        districtName: this.fromData.districtNameOld,
-        deptId: deptId,
-        ifJzStoreType: ifJzStoreType,
-        storeCategory: this.fromData.storeCategory,
-      }).then((res) => {
-        // if (this.ChainsList.length == 1) {
-        //   this.fromData.chainName = this.ChainsList[0].chainName;
-        //   this.fromData.chainCode = this.ChainsList[0].chainCode;
-        // }
-        if (res.data.sfaOrderProducts != null) {
-          res.data.sfaOrderProducts.forEach((item) => {
-            item.orderNum = '';
-            item.storeProductId = item.orderProductId;
-          });
-          this.sfaOrderProducts = res.data.sfaOrderProducts;
-        }
         var deptList = [];
-        for (var t1 = 0; t1 < res.data.deptList.length; t1++) {
+        for (var t1 = 0; t1 < res.data.length; t1++) {
           deptList.push({
-            deptId: res.data.deptList[t1].deptId,
-            text: res.data.deptList[t1].deptName,
+            deptId: res.data[t1].deptId,
+            text: res.data[t1].deptName,
           });
         }
         this.deptList = deptList;
-        if (deptList.length == 1) {
-          this.fromData.orgId = deptList[0].deptId;
-          this.fromData.orgName = deptList[0].text;
-          localStorage.setItem('orgName', deptList[0].text);
-          this.deptShow = false;
-          this.ChainsList = res.data.sfaChains;
-        } else {
-          this.ChainsList = [];
-          this.deptShow = true;
-        }
       });
     },
+    // getChainsByDeptCode(deptId, ifJzStoreType, type) {
+    //   getChainsByDeptCode({
+    //     cityName: this.fromData.cityNameOld,
+    //     districtName: this.fromData.districtNameOld,
+    //     deptId: deptId,
+    //     ifJzStoreType: ifJzStoreType,
+    //     storeCategory: this.fromData.storeCategory,
+    //   }).then((res) => {
+    //     // if (this.ChainsList.length == 1) {
+    //     //   this.fromData.chainName = this.ChainsList[0].chainName;
+    //     //   this.fromData.chainCode = this.ChainsList[0].chainCode;
+    //     // }
+    //     if (res.data.sfaOrderProducts != null) {
+    //       res.data.sfaOrderProducts.forEach((item) => {
+    //         item.orderNum = '';
+    //         item.storeProductId = item.orderProductId;
+    //       });
+    //       this.sfaOrderProducts = res.data.sfaOrderProducts;
+    //     }
+    //     var deptList = [];
+    //     for (var t1 = 0; t1 < res.data.deptList.length; t1++) {
+    //       deptList.push({
+    //         deptId: res.data.deptList[t1].deptId,
+    //         text: res.data.deptList[t1].deptName,
+    //       });
+    //     }
+    //     this.deptList = deptList;
+    //     if (deptList.length == 1) {
+    //       this.fromData.orgId = deptList[0].deptId;
+    //       this.fromData.orgName = deptList[0].text;
+    //       localStorage.setItem('orgName', deptList[0].text);
+    //       this.deptShow = false;
+    //       this.ChainsList = res.data.sfaChains;
+    //     } else {
+    //       this.ChainsList = [];
+    //       this.deptShow = true;
+    //     }
+    //   });
+    // },
     onClickLeft() {
       this.$router.go(-1);
     },

+ 1 - 1
src/views/storeManagement/competingStoresDetail.vue

@@ -2,7 +2,7 @@
   <div class="FSQStoreDetail">
     <div class="header">
       <van-nav-bar class="navBar" title="客户详情" left-arrow @click-left="onClickLeft">
-        <template #right>
+        <template #right v-if="fromData.updatable">
           <span style="color: #0057ba" @click="editorFn">编辑 </span>
         </template>
       </van-nav-bar>

+ 117 - 62
src/views/storeManagement/competingStoresEdit.vue

@@ -32,6 +32,7 @@
           :value="fromData.storeCategoryName"
           label="客户类型"
           placeholder="点击选择客户类型"
+          @click="getStoreCategoryListFun"
           :rules="[{ required: true, message: '请选择客户类型' }]">
           <template #left-icon>
             <span class="van-f-red">*</span>
@@ -111,6 +112,11 @@
             <span class="van-f-red">*</span>
           </template>
         </van-field>
+        <van-field readonly v-model="fromData.cityLevel" label="城市等级">
+          <template #left-icon>
+            <span class="van-f-red">*</span>
+          </template>
+        </van-field>
         <!-- <van-field
           readonly
           clickable
@@ -159,7 +165,7 @@
           </template>
         </van-field>
         <van-field
-          v-model="fromData.salesmanName"
+          v-model="fromData.contactName"
           label="门店联系人"
           placeholder="请输入门店联系人"
           :rules="[{ required: true, message: '请输入门店联系人' }]">
@@ -169,6 +175,15 @@
         </van-field>
       </van-form>
     </div>
+    <!--客户类型-->
+    <van-popup v-model="showPicker" position="bottom">
+      <van-picker
+        show-toolbar
+        value-key="dictLabel"
+        :columns="storeCategoryList"
+        @confirm="onConfirm"
+        @cancel="showPicker = false" />
+    </van-popup>
     <!--省、市、区、街道-->
     <van-popup v-model="showProvincePicker" position="bottom">
       <van-picker
@@ -259,16 +274,15 @@
 </template>
 
 <script>
-import { phoneCheck, streetQuery, getChainsByDeptCode } from '@/api/index';
-import { updateStore } from '@/api/FSQStore';
-import { getPosition, getTicketFun, getMapPoi, getkeywordPoi, getGeocoder } from '@/utils/TXApiFun';
+import { phoneCheck, streetQuery, getById } from '@/api/index';
+import { getPosition, getTicketFun, getGeocoder } from '@/utils/TXApiFun';
 import { jsonp } from 'vue-jsonp';
 import { getstreetInfoList } from '@/api/addDesigner';
+import { qzStoreCategory, getChildDeptList, addQzStore } from '@/api/store';
 export default {
   data() {
     return {
       fromData: {
-        storeCode: '',
         storeName: '',
         telephone: '',
         storeCategoryName: '',
@@ -277,9 +291,7 @@ export default {
         districtName: '',
         addressLine: '',
         orgName: '',
-        // chainName: '',
-        // townName: '',
-        salesmanName: '',
+        contactName: '',
         lat: '',
         lon: '',
         cityNameOld: '',
@@ -303,6 +315,8 @@ export default {
       deptShow: false,
       showPickerDept: false,
       deptList: [],
+      showPicker: false,
+      storeCategoryList: [],
       // 地图信息
       showmap: false,
       search: '',
@@ -314,6 +328,21 @@ export default {
     };
   },
   activated() {
+    this.fromData = {
+      storeName: '',
+      telephone: '',
+      storeCategoryName: '',
+      provinceName: '',
+      cityName: '',
+      districtName: '',
+      addressLine: '',
+      orgName: '',
+      contactName: '',
+      lat: '',
+      lon: '',
+      cityNameOld: '',
+      districtNameOld: '',
+    };
     this.showmap = false;
     // this.toastLoading(0, '加载中...', true);
     // 授权
@@ -324,6 +353,14 @@ export default {
     });
   },
   methods: {
+    getDetail() {
+      getById({ storeId: this.$route.query.id }).then((res) => {
+        this.toastLoading().clear();
+        if (res.code == 200) {
+          this.fromData = res.data;
+        }
+      });
+    },
     getLocation() {
       getPosition()
         .then((res) => {
@@ -337,6 +374,8 @@ export default {
           this.location.lon1 = resData.longitude;
           this.addVisits();
           this.initData();
+          // 获取详情
+          this.getDetail();
         })
         .catch((error) => {
           // this.beforeAddFn();
@@ -361,6 +400,7 @@ export default {
                 this.fromData.provinceName = response.data.provinceName;
                 this.fromData.cityName = response.data.cityName;
                 this.fromData.districtName = response.data.countyName;
+                this.fromData.cityLevel = response.data.countyLevel;
                 this.$nextTick(() => {
                   this.getStreetQuery();
                   this.getStreetQuery('1');
@@ -410,15 +450,35 @@ export default {
     clickSubmit(values) {
       this.$refs.tabstoreVal.submit();
     },
+    getStoreCategoryListFun() {
+      this.getStoreCategoryList();
+      this.showPicker = true;
+    },
+    onConfirm(value) {
+      if (!value) return;
+      this.fromData.storeCategoryName = value.dictLabel;
+      this.fromData.storeCategory = value.dictValue;
+      this.showPicker = false;
+    },
+    getStoreCategoryList() {
+      qzStoreCategory().then((res) => {
+        if (res.code == 200) {
+          this.storeCategoryList = res.data;
+          this.fromData.storeCategoryName = this.storeCategoryList[0].dictLabel;
+          this.fromData.storeCategory = this.storeCategoryList[0].dictValue;
+        }
+      });
+    },
     onSubmit(value) {
       this.toastLoading(0, '提交中...', true);
-      updateStore(this.fromData).then((res) => {
+      console.log(this.fromData);
+      addQzStore(this.fromData).then((res) => {
         this.toastLoading().clear();
         if (res.code == 200) {
           this.$dialog
             .confirm({
               title: '系统提示',
-              message: '修改成功',
+              message: '添加成功',
               showCancelButton: false,
             })
             .then(() => {
@@ -432,7 +492,7 @@ export default {
         if (telephone == '') {
           resolve();
         }
-        var telrg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
+        var telrg = /^1[123456789]\d{9}$/;
         if (telephone.trim() == '') {
           reject();
         } else if (!telrg.test(telephone)) {
@@ -721,9 +781,8 @@ export default {
       );
     },
     PickerDept() {
-      if (this.deptShow) {
-        this.showPickerDept = true;
-      }
+      this.getChildDeptListFun();
+      this.showPickerDept = true;
     },
     onDeptConfirm(value) {
       this.fromData.orgName = value.text;
@@ -731,66 +790,62 @@ export default {
       this.fromData.orgId = value.deptId;
       // this.fromData.chainCode = '';
       // this.fromData.chainName = '';
-      this.getChainsByDeptId(value.deptId, this.fromData.ifJzStoreType);
       this.showPickerDept = false;
     },
-    getChainsByDeptId(deptCode, ifJzStoreType) {
-      getChainsByDeptCode({
+    getChildDeptListFun() {
+      getChildDeptList({
         cityName: this.fromData.cityName,
         districtName: this.fromData.districtName,
-        deptId: deptCode,
-        ifJzStoreType: ifJzStoreType,
-        storeCategory: this.fromData.storeCategory,
-      }).then((res) => {
-        if (res.data.sfaOrderProducts != null) {
-          res.data.sfaOrderProducts.forEach((item) => {
-            item.orderNum = '';
-            item.storeProductId = item.orderProductId;
-          });
-          this.sfaOrderProducts = res.data.sfaOrderProducts;
-        }
-        this.ChainsList = res.data.sfaChains;
-      });
-    },
-    getChainsByDeptCode(deptId, ifJzStoreType, type) {
-      getChainsByDeptCode({
-        cityName: this.fromData.cityNameOld,
-        districtName: this.fromData.districtNameOld,
-        deptId: deptId,
-        ifJzStoreType: ifJzStoreType,
-        storeCategory: this.fromData.storeCategory,
       }).then((res) => {
-        // if (this.ChainsList.length == 1) {
-        //   this.fromData.chainName = this.ChainsList[0].chainName;
-        //   this.fromData.chainCode = this.ChainsList[0].chainCode;
-        // }
-        if (res.data.sfaOrderProducts != null) {
-          res.data.sfaOrderProducts.forEach((item) => {
-            item.orderNum = '';
-            item.storeProductId = item.orderProductId;
-          });
-          this.sfaOrderProducts = res.data.sfaOrderProducts;
-        }
         var deptList = [];
-        for (var t1 = 0; t1 < res.data.deptList.length; t1++) {
+        for (var t1 = 0; t1 < res.data.length; t1++) {
           deptList.push({
-            deptId: res.data.deptList[t1].deptId,
-            text: res.data.deptList[t1].deptName,
+            deptId: res.data[t1].deptId,
+            text: res.data[t1].deptName,
           });
         }
         this.deptList = deptList;
-        if (deptList.length == 1) {
-          this.fromData.orgId = deptList[0].deptId;
-          this.fromData.orgName = deptList[0].text;
-          localStorage.setItem('orgName', deptList[0].text);
-          this.deptShow = false;
-          this.ChainsList = res.data.sfaChains;
-        } else {
-          this.ChainsList = [];
-          this.deptShow = true;
-        }
       });
     },
+    // getChainsByDeptCode(deptId, ifJzStoreType, type) {
+    //   getChainsByDeptCode({
+    //     cityName: this.fromData.cityNameOld,
+    //     districtName: this.fromData.districtNameOld,
+    //     deptId: deptId,
+    //     ifJzStoreType: ifJzStoreType,
+    //     storeCategory: this.fromData.storeCategory,
+    //   }).then((res) => {
+    //     // if (this.ChainsList.length == 1) {
+    //     //   this.fromData.chainName = this.ChainsList[0].chainName;
+    //     //   this.fromData.chainCode = this.ChainsList[0].chainCode;
+    //     // }
+    //     if (res.data.sfaOrderProducts != null) {
+    //       res.data.sfaOrderProducts.forEach((item) => {
+    //         item.orderNum = '';
+    //         item.storeProductId = item.orderProductId;
+    //       });
+    //       this.sfaOrderProducts = res.data.sfaOrderProducts;
+    //     }
+    //     var deptList = [];
+    //     for (var t1 = 0; t1 < res.data.deptList.length; t1++) {
+    //       deptList.push({
+    //         deptId: res.data.deptList[t1].deptId,
+    //         text: res.data.deptList[t1].deptName,
+    //       });
+    //     }
+    //     this.deptList = deptList;
+    //     if (deptList.length == 1) {
+    //       this.fromData.orgId = deptList[0].deptId;
+    //       this.fromData.orgName = deptList[0].text;
+    //       localStorage.setItem('orgName', deptList[0].text);
+    //       this.deptShow = false;
+    //       this.ChainsList = res.data.sfaChains;
+    //     } else {
+    //       this.ChainsList = [];
+    //       this.deptShow = true;
+    //     }
+    //   });
+    // },
     onClickLeft() {
       this.$router.go(-1);
     },