Przeglądaj źródła

Merge branch 'feature_20250822_新增质感外墙服务商' into release

zhujindu 3 miesięcy temu
rodzic
commit
7e4618a6ca

+ 10 - 0
src/api/FSQStore.js

@@ -0,0 +1,10 @@
+import request from '@/utils/request';
+
+//设计师招募修改接口
+export function updateStore(data) {
+  return request({
+    url: 'mobile/store/updateStore',
+    method: 'post',
+    data,
+  });
+}

+ 12 - 0
src/router/index.js

@@ -149,6 +149,18 @@ const router = new VueRouter({
           component: () => import('@/views/storeManagement/JPattributeEditor.vue'),
           meta: { title: '金牌店档案编辑', keepAlive: true },
         },
+        {
+          path: '/FSQStoreDetail',
+          name: 'FSQStoreDetail',
+          component: () => import('@/views/storeManagement/FSQStoreDetail.vue'),
+          meta: { title: '仿石漆', keepAlive: true },
+        },
+        {
+          path: '/FSQStoreEdit',
+          name: 'FSQStoreEdit',
+          component: () => import('@/views/storeManagement/FSQStoreEdit.vue'),
+          meta: { title: '仿石漆', keepAlive: true },
+        },
       ],
     },
     {

+ 4 - 1
src/utils/index.js

@@ -297,7 +297,10 @@ export function getMonthCommon() {
 
 export function validatePhone(telephone) {
   return new Promise((resolve, reject) => {
-    if (telephone == '' || !telephone) reject();
+    if (telephone == '' || !telephone) {
+      Toast('请输入手机号');
+      reject();
+    }
     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}$/;
     if (telephone.trim() == '') {
       reject();

+ 9 - 2
src/views/deviceOutside/index.vue

@@ -2030,8 +2030,15 @@ export default {
         buryingPointName: '客户信息',
         buryingPointPosition: this.tabVal == 1 ? '我的' : '销售部',
       });
-      // designerStore 是否为设计师招募门店,true-是,false-否
-      if (val.designerStore) {
+      // FSQ 仿石漆服务商
+      if (/^FSQ/.test(val.storeCode)) {
+        this.$router.push({
+          path: '/FSQStoreDetail',
+          query: { id: val.storeId },
+        });
+        return;
+      } else if (val.designerStore) {
+        // designerStore 是否为设计师招募门店,true-是,false-否
         this.$router.push({
           path: '/addDesignerDetail',
           query: { id: val.storeId },

+ 9 - 2
src/views/deviceWithin/index.vue

@@ -1444,8 +1444,15 @@ export default {
         buryingPointName: '客户信息',
         buryingPointPosition: '计划内',
       });
-      // designerStore 是否为设计师招募门店,true-是,false-否
-      if (val.designerStore) {
+      // FSQ 仿石漆服务商
+      if (/^FSQ/.test(val.storeCode)) {
+        this.$router.push({
+          path: '/FSQStoreDetail',
+          query: { id: val.storeId },
+        });
+        return;
+      } else if (val.designerStore) {
+        // designerStore 是否为设计师招募门店,true-是,false-否
         this.$router.push({
           path: '/addDesignerDetail',
           query: { id: val.storeId },

+ 219 - 0
src/views/storeManagement/FSQStoreDetail.vue

@@ -0,0 +1,219 @@
+<template>
+  <div class="FSQStoreDetail">
+    <div class="header">
+      <van-nav-bar class="navBar" title="仿石漆服务商详情" left-arrow @click-left="onClickLeft">
+        <template #right>
+          <span v-if="fromData.updatable" style="color: #0057ba" @click="editorFn">编辑 </span>
+        </template>
+      </van-nav-bar>
+    </div>
+    <div class="content">
+      <van-form ref="tabstoreVal" readonly :scroll-to-error="true" :show-error="false">
+        <van-field readonly :value="fromData.storeCode" label="编号">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          v-model="fromData.storeName"
+          label="名称"
+          placeholder="请输入名称"
+          :rules="[{ required: true, message: '请输入名称' }]">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          readonly
+          clickable
+          name="picker"
+          :value="fromData.storeCategoryName"
+          label="类型"
+          placeholder="点击选择类型">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          v-model="fromData.orgName"
+          label="销售部"
+          placeholder="请输入销售部"
+          :rules="[{ required: true, message: '请输入销售部' }]">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-row style="border-bottom: 1px solid #ebedf0">
+          <van-field
+            rows="1"
+            autosize
+            type="textarea"
+            readonly
+            clickable
+            name="picker"
+            :value="fromData.chainName"
+            label="经销商名称"
+            placeholder="点击选择经销商名称"
+            :rules="[
+              {
+                required: true,
+                message: '请选择经销商',
+              },
+            ]">
+            <template #left-icon>
+              <span class="van-f-red"></span>
+            </template>
+          </van-field>
+        </van-row>
+        <van-field
+          readonly
+          clickable
+          name="picker"
+          :value="fromData.provinceName"
+          label="省(州)"
+          placeholder="点击选择省(州)">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          readonly
+          clickable
+          name="picker"
+          :value="fromData.cityName"
+          label="城市"
+          placeholder="点击选择城市">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          readonly
+          clickable
+          name="picker"
+          :value="fromData.districtName"
+          label="区(县)"
+          placeholder="点击选择区(县)">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          readonly
+          clickable
+          name="picker"
+          :value="fromData.townName"
+          label="街道"
+          placeholder="点击选择街道">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          v-model="fromData.addressLine"
+          label="地址"
+          placeholder="请输入地址"
+          rows="1"
+          autosize
+          type="textarea"
+          :rules="[
+            {
+              required: true,
+              message: '请输入地址',
+            },
+          ]">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field readonly v-model="fromData.contactName" label="实际经营人">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          type="tel"
+          v-model="fromData.telephone"
+          label="实际经营人电话"
+          placeholder="请输入实际经营人电话">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          readonly
+          v-model="fromData.salesmanName"
+          label="所属销售员"
+          placeholder="所属销售员">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+      </van-form>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getById } from '@/api/index';
+export default {
+  data() {
+    return {
+      fromData: {
+        storeCode: '',
+        storeName: '',
+        telephone: '',
+        storeCategoryName: '',
+        provinceName: '',
+        cityName: '',
+        districtName: '',
+        addressLine: '',
+        orgName: '',
+        chainName: '',
+        townName: '',
+        contactName: '',
+        salesmanName: '',
+      },
+    };
+  },
+  activated() {
+    this.toastLoading(0, '加载中...', true);
+    // 获取详情
+    this.getDetail();
+  },
+  methods: {
+    editorFn() {
+      this.$router.push({
+        path: '/FSQStoreEdit',
+        query: { id: this.$route.query.id },
+      });
+    },
+    getDetail() {
+      getById({ storeId: this.$route.query.id }).then((res) => {
+        this.toastLoading().clear();
+        if (res.code == 200) {
+          this.fromData = res.data;
+        }
+      });
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.FSQStoreDetail {
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+  height: 100%;
+  .header {
+    height: 46px;
+  }
+  .content {
+    flex: 1;
+    overflow-y: auto;
+  }
+}
+</style>

+ 269 - 0
src/views/storeManagement/FSQStoreEdit.vue

@@ -0,0 +1,269 @@
+<template>
+  <div class="FSQStoreDetail">
+    <div class="header">
+      <van-nav-bar
+        class="navBar"
+        title="仿石漆服务商编辑"
+        left-arrow
+        @click-left="onClickLeft"
+        right-text="保存"
+        @click-right="clickSubmit" />
+    </div>
+    <div class="content">
+      <van-form ref="tabstoreVal" @submit="onSubmit" :scroll-to-error="true" :show-error="false">
+        <van-field readonly :value="fromData.storeCode" label="编号">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          v-model="fromData.storeName"
+          label="名称"
+          placeholder="请输入名称"
+          readonly
+          :rules="[{ required: true, message: '请输入名称' }]">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          readonly
+          clickable
+          name="picker"
+          :value="fromData.storeCategoryName"
+          label="类型"
+          placeholder="点击选择类型">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          v-model="fromData.orgName"
+          label="销售部"
+          placeholder="请输入销售部"
+          readonly
+          :rules="[{ required: true, message: '请输入销售部' }]">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-row style="border-bottom: 1px solid #ebedf0">
+          <van-field
+            rows="1"
+            autosize
+            type="textarea"
+            readonly
+            clickable
+            name="picker"
+            :value="fromData.chainName"
+            label="经销商名称"
+            placeholder="点击选择经销商名称"
+            :rules="[
+              {
+                required: true,
+                message: '请选择经销商',
+              },
+            ]">
+            <template #left-icon>
+              <span class="van-f-red"></span>
+            </template>
+          </van-field>
+        </van-row>
+        <van-field
+          readonly
+          clickable
+          name="picker"
+          :value="fromData.provinceName"
+          label="省(州)"
+          placeholder="点击选择省(州)">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          readonly
+          clickable
+          name="picker"
+          :value="fromData.cityName"
+          label="城市"
+          placeholder="点击选择城市">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          readonly
+          clickable
+          name="picker"
+          :value="fromData.districtName"
+          label="区(县)"
+          placeholder="点击选择区(县)">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          readonly
+          clickable
+          name="picker"
+          :value="fromData.townName"
+          label="街道"
+          placeholder="点击选择街道">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          v-model="fromData.addressLine"
+          label="地址"
+          placeholder="请输入地址"
+          rows="1"
+          autosize
+          type="textarea">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field v-model="fromData.contactName" label="实际经营人">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          type="tel"
+          v-model="fromData.telephone"
+          label="实际经营人电话"
+          placeholder="请输入实际经营人电话"
+          :rules="[
+            {
+              required: false,
+              validator: FSQValidatePhone,
+              message: '请输入手机号',
+            },
+          ]">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+        <van-field
+          readonly
+          v-model="fromData.salesmanName"
+          label="所属销售员"
+          placeholder="所属销售员">
+          <template #left-icon>
+            <span class="van-f-red"></span>
+          </template>
+        </van-field>
+      </van-form>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getById, phoneCheck } from '@/api/index';
+import { updateStore } from '@/api/FSQStore';
+export default {
+  data() {
+    return {
+      fromData: {
+        storeCode: '',
+        storeName: '',
+        telephone: '',
+        storeCategoryName: '',
+        provinceName: '',
+        cityName: '',
+        districtName: '',
+        addressLine: '',
+        orgName: '',
+        chainName: '',
+        townName: '',
+        contactName: '',
+        salesmanName: '',
+      },
+    };
+  },
+  activated() {
+    this.toastLoading(0, '加载中...', true);
+    // 获取详情
+    this.getDetail();
+  },
+  methods: {
+    editorFn() {
+      this.$router.push({
+        path: '/addDesignerEdit',
+        query: { id: this.$route.query.id },
+      });
+    },
+    getDetail() {
+      getById({ storeId: this.$route.query.id }).then((res) => {
+        this.toastLoading().clear();
+        if (res.code == 200) {
+          this.fromData = res.data;
+        }
+      });
+    },
+    clickSubmit(values) {
+      this.$refs.tabstoreVal.submit();
+    },
+    onSubmit(value) {
+      this.toastLoading(0, '提交中...', true);
+      this.fromData.storeId = this.$route.query.id;
+      updateStore(this.fromData).then((res) => {
+        this.toastLoading().clear();
+        if (res.code == 200) {
+          this.$dialog
+            .confirm({
+              title: '系统提示',
+              message: '修改成功',
+              showCancelButton: false,
+            })
+            .then(() => {
+              this.onClickLeft();
+            });
+        }
+      });
+    },
+    FSQValidatePhone(telephone) {
+      return new Promise((resolve, reject) => {
+        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}$/;
+        if (telephone.trim() == '') {
+          reject();
+        } else if (!telrg.test(telephone)) {
+          this.Toast('手机号格式错误');
+          reject();
+        } else {
+          phoneCheck({ phoneNumber: telephone }).then((res) => {
+            if (res.code == 200) {
+              resolve();
+            } else {
+              this.Toast('手机号格式错误');
+              reject();
+            }
+          });
+        }
+      });
+    },
+    onClickLeft() {
+      this.$router.go(-1);
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.FSQStoreDetail {
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+  height: 100%;
+  .header {
+    height: 46px;
+  }
+  .content {
+    flex: 1;
+    overflow-y: auto;
+  }
+}
+</style>

+ 8 - 2
src/views/storeManagement/index.vue

@@ -935,8 +935,14 @@ export default {
     },
     storeDetailFn(item) {
       localStorage.setItem('tabVal', this.tabVal);
-      // designerStore 是否为设计师招募门店,true-是,false-否
-      if (item.designerStore) {
+      // FSQ 仿石漆服务商
+      if (item.storeCategory == 'FSQ01') {
+        this.$router.push({
+          path: '/FSQStoreDetail',
+          query: { id: item.storeId },
+        });
+      } else if (item.designerStore) {
+        // designerStore 是否为设计师招募门店,true-是,false-否
         this.$router.push({
           path: '/addDesignerDetail',
           query: { id: item.storeId },