Procházet zdrojové kódy

feature_20260319_质感服务商拜访任务

zhujindu před 3 týdny
rodič
revize
be3721de27

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

@@ -193,6 +193,7 @@ export default {
     };
     };
   },
   },
   activated() {
   activated() {
+    this.tabVal = 'insidePlan';
     this.toastLoading(0, '加载中...', true);
     this.toastLoading(0, '加载中...', true);
     // 获取详情
     // 获取详情
     this.getDetail();
     this.getDetail();

+ 45 - 31
src/views/storeManagement/FSQStoreEdit.vue

@@ -10,14 +10,23 @@
         @click-right="clickSubmit" />
         @click-right="clickSubmit" />
     </div>
     </div>
     <div class="content">
     <div class="content">
-      <van-tabs class="myTab" v-model="tabVal" color="#0057ba" @change="tabChange">
+      <div class="detailHeader">
+        <van-icon name="volume" color="#64a8eb" size="18" />
+        <span>如需修改服务商的姓名和手机号,请提IT工单到低代码合同系统修改</span>
+      </div>
+      <van-tabs
+        class="myTab"
+        v-model="tabVal"
+        color="#0057ba"
+        @change="tabChange"
+        :lazy-render="false">
         <van-tab title="基础信息" name="insidePlan" ref="dispsps">
         <van-tab title="基础信息" name="insidePlan" ref="dispsps">
           <van-form
           <van-form
             ref="tabstoreVal"
             ref="tabstoreVal"
             @submit="onSubmit"
             @submit="onSubmit"
             :scroll-to-error="true"
             :scroll-to-error="true"
             :show-error="false">
             :show-error="false">
-            <van-field readonly :value="fromData.storeCode" label="编号">
+            <van-field disabled :value="fromData.storeCode" label="编号">
               <template #left-icon>
               <template #left-icon>
                 <span class="van-f-red"></span>
                 <span class="van-f-red"></span>
               </template>
               </template>
@@ -26,14 +35,14 @@
               v-model="fromData.storeName"
               v-model="fromData.storeName"
               label="名称"
               label="名称"
               placeholder="请输入名称"
               placeholder="请输入名称"
-              readonly
+              disabled
               :rules="[{ required: true, message: '请输入名称' }]">
               :rules="[{ required: true, message: '请输入名称' }]">
               <template #left-icon>
               <template #left-icon>
                 <span class="van-f-red"></span>
                 <span class="van-f-red"></span>
               </template>
               </template>
             </van-field>
             </van-field>
             <van-field
             <van-field
-              readonly
+              disabled
               clickable
               clickable
               name="picker"
               name="picker"
               :value="fromData.storeCategoryName"
               :value="fromData.storeCategoryName"
@@ -47,7 +56,7 @@
               v-model="fromData.orgName"
               v-model="fromData.orgName"
               label="销售部"
               label="销售部"
               placeholder="请输入销售部"
               placeholder="请输入销售部"
-              readonly
+              disabled
               :rules="[{ required: true, message: '请输入销售部' }]">
               :rules="[{ required: true, message: '请输入销售部' }]">
               <template #left-icon>
               <template #left-icon>
                 <span class="van-f-red"></span>
                 <span class="van-f-red"></span>
@@ -58,7 +67,7 @@
                 rows="1"
                 rows="1"
                 autosize
                 autosize
                 type="textarea"
                 type="textarea"
-                readonly
+                disabled
                 clickable
                 clickable
                 name="picker"
                 name="picker"
                 :value="fromData.chainName"
                 :value="fromData.chainName"
@@ -76,7 +85,7 @@
               </van-field>
               </van-field>
             </van-row>
             </van-row>
             <van-field
             <van-field
-              readonly
+              disabled
               clickable
               clickable
               name="picker"
               name="picker"
               :value="fromData.provinceName"
               :value="fromData.provinceName"
@@ -87,7 +96,7 @@
               </template>
               </template>
             </van-field>
             </van-field>
             <van-field
             <van-field
-              readonly
+              disabled
               clickable
               clickable
               name="picker"
               name="picker"
               :value="fromData.cityName"
               :value="fromData.cityName"
@@ -98,7 +107,7 @@
               </template>
               </template>
             </van-field>
             </van-field>
             <van-field
             <van-field
-              readonly
+              disabled
               clickable
               clickable
               name="picker"
               name="picker"
               :value="fromData.districtName"
               :value="fromData.districtName"
@@ -109,7 +118,7 @@
               </template>
               </template>
             </van-field>
             </van-field>
             <van-field
             <van-field
-              readonly
+              disabled
               clickable
               clickable
               name="picker"
               name="picker"
               :value="fromData.townName"
               :value="fromData.townName"
@@ -130,13 +139,13 @@
                 <span class="van-f-red"></span>
                 <span class="van-f-red"></span>
               </template>
               </template>
             </van-field>
             </van-field>
-            <van-field readonly v-model="fromData.contactName" label="实际经营人">
+            <van-field disabled v-model="fromData.contactName" label="实际经营人">
               <template #left-icon>
               <template #left-icon>
                 <span class="van-f-red"></span>
                 <span class="van-f-red"></span>
               </template>
               </template>
             </van-field>
             </van-field>
             <van-field
             <van-field
-              readonly
+              disabled
               type="tel"
               type="tel"
               v-model="fromData.telephone"
               v-model="fromData.telephone"
               label="实际经营人电话"
               label="实际经营人电话"
@@ -153,7 +162,7 @@
               </template>
               </template>
             </van-field>
             </van-field>
             <van-field
             <van-field
-              readonly
+              disabled
               v-model="fromData.salesmanName"
               v-model="fromData.salesmanName"
               label="所属销售员"
               label="所属销售员"
               placeholder="所属销售员">
               placeholder="所属销售员">
@@ -165,7 +174,11 @@
         </van-tab>
         </van-tab>
         <!-- 质感服务商档案 -->
         <!-- 质感服务商档案 -->
         <van-tab title="服务商档案" name="outsidePlan">
         <van-tab title="服务商档案" name="outsidePlan">
-          <FSQattributeEdit :storeArchives="fromData.serviceProviderArchives"></FSQattributeEdit>
+          <FSQattributeEdit
+            ref="FSQattribute"
+            :storeArchives="fromData.serviceProviderArchives"
+            :fromData="fromData"
+            @onClickLeft="onClickLeft"></FSQattributeEdit>
         </van-tab>
         </van-tab>
       </van-tabs>
       </van-tabs>
     </div>
     </div>
@@ -174,7 +187,6 @@
 
 
 <script>
 <script>
 import { getById, phoneCheck } from '@/api/index';
 import { getById, phoneCheck } from '@/api/index';
-import { updateStore } from '@/api/FSQStore';
 import FSQattributeEdit from './FSQattributeEdit.vue';
 import FSQattributeEdit from './FSQattributeEdit.vue';
 export default {
 export default {
   components: { FSQattributeEdit },
   components: { FSQattributeEdit },
@@ -199,6 +211,7 @@ export default {
     };
     };
   },
   },
   activated() {
   activated() {
+    this.tabVal = 'insidePlan';
     this.toastLoading(0, '加载中...', true);
     this.toastLoading(0, '加载中...', true);
     // 获取详情
     // 获取详情
     this.getDetail();
     this.getDetail();
@@ -219,25 +232,12 @@ export default {
       });
       });
     },
     },
     clickSubmit(values) {
     clickSubmit(values) {
+      // 基础信息校验
       this.$refs.tabstoreVal.submit();
       this.$refs.tabstoreVal.submit();
     },
     },
     onSubmit(value) {
     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();
-            });
-        }
-      });
+      //属性信息校验
+      this.$refs.FSQattribute.$refs.tabstoreVal.submit();
     },
     },
     FSQValidatePhone(telephone) {
     FSQValidatePhone(telephone) {
       return new Promise((resolve, reject) => {
       return new Promise((resolve, reject) => {
@@ -278,6 +278,20 @@ export default {
   .header {
   .header {
     height: 46px;
     height: 46px;
   }
   }
+  .detailHeader {
+    padding: 10px 20px;
+    background: #dfeeff;
+    font-size: 14px;
+    display: flex;
+    flex-direction: row;
+    .van-icon {
+      margin-right: 8px;
+    }
+    span {
+      line-height: 20px;
+      color: #323233;
+    }
+  }
   .content {
   .content {
     flex: 1;
     flex: 1;
     overflow-y: auto;
     overflow-y: auto;

+ 67 - 7
src/views/storeManagement/FSQattributeEdit.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <div class="FSQattributeEdit">
   <div class="FSQattributeEdit">
     <div class="content">
     <div class="content">
-      <van-form ref="tabstoreVal" @submit="onSubmit">
+      <van-form ref="tabstoreVal" @submit="onSubmit" @failed="onFailed">
         <van-field
         <van-field
           v-model="detail.estimateSalesYearTarget"
           v-model="detail.estimateSalesYearTarget"
           type="number"
           type="number"
@@ -29,18 +29,57 @@
             <span class="van-f-red">*</span>
             <span class="van-f-red">*</span>
           </template>
           </template>
         </van-field>
         </van-field>
+        <van-field
+          label="是否经营竞品:"
+          :rules="[{ required: true, message: '请选择是否经营竞品' }]">
+          <template #left-icon>
+            <span class="van-f-red">*</span>
+          </template>
+          <template #input>
+            <van-radio-group v-model="detail.operateCompetitor" direction="horizontal">
+              <van-radio name="是">是</van-radio>
+              <van-radio name="否">否</van-radio>
+            </van-radio-group>
+          </template>
+        </van-field>
+        <van-field
+          v-if="detail.operateCompetitor == '是'"
+          v-model="detail.mainCompetitorBrand"
+          label="主营竞品品牌:"
+          rows="1"
+          autosize
+          :rules="[{ required: true, message: '请输入主营竞品品牌' }]"
+          type="textarea">
+          <template #left-icon>
+            <span class="van-f-red">*</span>
+          </template>
+        </van-field>
+        <van-field
+          v-if="detail.operateCompetitor == '是'"
+          v-model="detail.mainCompetitorSalesYear"
+          type="number"
+          :rules="[{ required: true, message: '请输入主营竞品年销售额/干元' }]"
+          label="主营竞品年销售额/干元:">
+          <template #left-icon>
+            <span class="van-f-red">*</span>
+          </template>
+        </van-field>
       </van-form>
       </van-form>
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
+import { updateStore } from '@/api/FSQStore';
 export default {
 export default {
   name: 'FSQattributeEdit',
   name: 'FSQattributeEdit',
   props: {
   props: {
     storeArchives: {
     storeArchives: {
       type: Object,
       type: Object,
     },
     },
+    fromData: {
+      type: Object,
+    },
   },
   },
   data() {
   data() {
     return {
     return {
@@ -50,20 +89,38 @@ export default {
   watch: {
   watch: {
     storeArchives: {
     storeArchives: {
       handler(val) {
       handler(val) {
-        this.detail = JSON.parse(JSON.stringify(val));
+        if (val) this.detail = JSON.parse(JSON.stringify(val));
       },
       },
       deep: true,
       deep: true,
       immediate: true,
       immediate: true,
     },
     },
   },
   },
   methods: {
   methods: {
-    // 保存
-    confirmShare() {
-      this.$refs.tabstoreVal.submit();
-    },
     onSubmit(value) {
     onSubmit(value) {
       this.toastLoading(0, '加载中...', true);
       this.toastLoading(0, '加载中...', true);
-      let params = JSON.parse(JSON.stringify(this.detail));
+      let params = {
+        ...this.fromData,
+      };
+      params.serviceProviderArchives = this.detail;
+      params.serviceProviderArchives.storeCode = this.fromData.storeCode;
+      params.storeId = this.$route.query.id;
+      updateStore(params).then((res) => {
+        this.toastLoading().clear();
+        if (res.code == 200) {
+          this.$dialog
+            .confirm({
+              title: '系统提示',
+              message: '修改成功',
+              showCancelButton: false,
+            })
+            .then(() => {
+              this.$emit('onClickLeft');
+            });
+        }
+      });
+    },
+    onFailed(errorInfo) {
+      this.$toast('服务商档案:' + errorInfo.errors[0].message);
     },
     },
   },
   },
 };
 };
@@ -90,6 +147,9 @@ export default {
       width: 4px;
       width: 4px;
       display: inline-block;
       display: inline-block;
     }
     }
+    .van-field__label {
+      width: 7em;
+    }
   }
   }
 }
 }
 </style>
 </style>