Browse Source

Merge branch 'feature_20260319_质感服务商拜访任务' into uat(dev)

# Conflicts:
#	src/api/index.js
zhujindu 3 weeks ago
parent
commit
d571d9e138

+ 9 - 0
src/api/index.js

@@ -1169,3 +1169,12 @@ export function shareReportMobile(data) {
     data,
     data,
   });
   });
 }
 }
+
+// 获取服务商档案信息接口
+export function getServiceProviderArchives(query) {
+  return request({
+    url: 'mobile/store/getServiceProviderArchives',
+    method: 'get',
+    params: query,
+  });
+}

+ 168 - 142
src/views/storeManagement/FSQStoreDetail.vue

@@ -12,157 +12,169 @@
         <van-icon name="volume" color="#64a8eb" size="18" />
         <van-icon name="volume" color="#64a8eb" size="18" />
         <span>如需修改服务商的姓名和手机号,请提IT工单到低代码合同系统修改</span>
         <span>如需修改服务商的姓名和手机号,请提IT工单到低代码合同系统修改</span>
       </div>
       </div>
-      <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>
+      <van-tabs class="myTab" v-model="tabVal" color="#0057ba" @change="tabChange">
+        <van-tab title="基础信息" name="insidePlan" ref="dispsps">
+          <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>
+        </van-tab>
+        <!-- 质感服务商档案 -->
+        <van-tab title="服务商档案" name="outsidePlan">
+          <FSQattributeDetail
+            :storeArchives="fromData.serviceProviderArchives"></FSQattributeDetail>
+        </van-tab>
+      </van-tabs>
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
 import { getById } from '@/api/index';
 import { getById } from '@/api/index';
+import FSQattributeDetail from './FSQattributeDetail.vue';
 export default {
 export default {
+  components: { FSQattributeDetail },
   data() {
   data() {
     return {
     return {
+      tabVal: 'insidePlan',
       fromData: {
       fromData: {
         storeCode: '',
         storeCode: '',
         storeName: '',
         storeName: '',
@@ -181,6 +193,7 @@ export default {
     };
     };
   },
   },
   activated() {
   activated() {
+    this.tabVal = 'insidePlan';
     this.toastLoading(0, '加载中...', true);
     this.toastLoading(0, '加载中...', true);
     // 获取详情
     // 获取详情
     this.getDetail();
     this.getDetail();
@@ -200,6 +213,7 @@ export default {
         }
         }
       });
       });
     },
     },
+    tabChange(name, title) {},
     onClickLeft() {
     onClickLeft() {
       this.$router.go(-1);
       this.$router.go(-1);
     },
     },
@@ -218,6 +232,18 @@ export default {
   .content {
   .content {
     flex: 1;
     flex: 1;
     overflow-y: auto;
     overflow-y: auto;
+    .myTab .van-tabs__nav--card {
+      margin: 0 !important;
+      border-left: 0;
+      border-right: 0;
+    }
+    .myTab .van-tabs__wrap,
+    .van-tabs__nav--card {
+      height: 40px;
+    }
+    .myTab .van-tab {
+      line-height: 40px;
+    }
   }
   }
   .detailHeader {
   .detailHeader {
     padding: 10px 20px;
     padding: 10px 20px;

+ 213 - 163
src/views/storeManagement/FSQStoreEdit.vue

@@ -10,162 +10,189 @@
         @click-right="clickSubmit" />
         @click-right="clickSubmit" />
     </div>
     </div>
     <div class="content">
     <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 readonly v-model="fromData.contactName" label="实际经营人">
-          <template #left-icon>
-            <span class="van-f-red"></span>
-          </template>
-        </van-field>
-        <van-field
-          readonly
-          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 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-form
+            ref="tabstoreVal"
+            @submit="onSubmit"
+            :scroll-to-error="true"
+            :show-error="false">
+            <van-field disabled :value="fromData.storeCode" label="编号">
+              <template #left-icon>
+                <span class="van-f-red"></span>
+              </template>
+            </van-field>
+            <van-field
+              v-model="fromData.storeName"
+              label="名称"
+              placeholder="请输入名称"
+              disabled
+              :rules="[{ required: true, message: '请输入名称' }]">
+              <template #left-icon>
+                <span class="van-f-red"></span>
+              </template>
+            </van-field>
+            <van-field
+              disabled
+              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="请输入销售部"
+              disabled
+              :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"
+                disabled
+                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
+              disabled
+              clickable
+              name="picker"
+              :value="fromData.provinceName"
+              label="省(州)"
+              placeholder="点击选择省(州)">
+              <template #left-icon>
+                <span class="van-f-red"></span>
+              </template>
+            </van-field>
+            <van-field
+              disabled
+              clickable
+              name="picker"
+              :value="fromData.cityName"
+              label="城市"
+              placeholder="点击选择城市">
+              <template #left-icon>
+                <span class="van-f-red"></span>
+              </template>
+            </van-field>
+            <van-field
+              disabled
+              clickable
+              name="picker"
+              :value="fromData.districtName"
+              label="区(县)"
+              placeholder="点击选择区(县)">
+              <template #left-icon>
+                <span class="van-f-red"></span>
+              </template>
+            </van-field>
+            <van-field
+              disabled
+              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 disabled v-model="fromData.contactName" label="实际经营人">
+              <template #left-icon>
+                <span class="van-f-red"></span>
+              </template>
+            </van-field>
+            <van-field
+              disabled
+              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
+              disabled
+              v-model="fromData.salesmanName"
+              label="所属销售员"
+              placeholder="所属销售员">
+              <template #left-icon>
+                <span class="van-f-red"></span>
+              </template>
+            </van-field>
+          </van-form>
+        </van-tab>
+        <!-- 质感服务商档案 -->
+        <van-tab title="服务商档案" name="outsidePlan">
+          <FSQattributeEdit
+            ref="FSQattribute"
+            :storeArchives="fromData.serviceProviderArchives"
+            :fromData="fromData"
+            @onClickLeft="onClickLeft"></FSQattributeEdit>
+        </van-tab>
+      </van-tabs>
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
 import { getById, phoneCheck } from '@/api/index';
 import { getById, phoneCheck } from '@/api/index';
-import { updateStore } from '@/api/FSQStore';
+import FSQattributeEdit from './FSQattributeEdit.vue';
 export default {
 export default {
+  components: { FSQattributeEdit },
   data() {
   data() {
     return {
     return {
+      tabVal: 'insidePlan',
       fromData: {
       fromData: {
         storeCode: '',
         storeCode: '',
         storeName: '',
         storeName: '',
@@ -184,6 +211,7 @@ export default {
     };
     };
   },
   },
   activated() {
   activated() {
+    this.tabVal = 'insidePlan';
     this.toastLoading(0, '加载中...', true);
     this.toastLoading(0, '加载中...', true);
     // 获取详情
     // 获取详情
     this.getDetail();
     this.getDetail();
@@ -204,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) => {
@@ -247,6 +262,7 @@ export default {
         }
         }
       });
       });
     },
     },
+    tabChange(name, title) {},
     onClickLeft() {
     onClickLeft() {
       this.$router.go(-1);
       this.$router.go(-1);
     },
     },
@@ -262,9 +278,43 @@ 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;
   }
   }
+  .myTab .van-tabs__nav--card {
+    margin: 0 !important;
+    border-left: 0;
+    border-right: 0;
+  }
+
+  .myTab .van-tabs__wrap,
+  .myTab .van-tabs__nav--card {
+    height: 40px;
+  }
+
+  .myTab .van-tab {
+    line-height: 40px;
+  }
+
+  .van-f-red {
+    color: red;
+    width: 4px;
+    display: inline-block;
+  }
 }
 }
 </style>
 </style>

+ 70 - 0
src/views/storeManagement/FSQattributeDetail.vue

@@ -0,0 +1,70 @@
+<template>
+  <div class="ZGattributeDetail">
+    <van-field
+      readonly
+      v-model="storeArchives.estimateSalesYearTarget"
+      label="年预估销额目标/干元:" />
+    <van-field readonly v-model="storeArchives.zgwqWorkerNum" label="旗下质感外墙工人数量:" />
+    <van-field readonly v-model="storeArchives.projectYearNum" label="年承接项目数量:" />
+    <van-field
+      readonly
+      autosize
+      type="textarea"
+      v-model="storeArchives.operateCompetitor"
+      label="是否经营竞品:" />
+    <van-field
+      v-if="storeArchives.operateCompetitor == '是'"
+      readonly
+      autosize
+      type="textarea"
+      v-model="storeArchives.mainCompetitorBrand"
+      label="主营竞品品牌:" />
+    <van-field
+      v-if="storeArchives.operateCompetitor == '是'"
+      readonly
+      v-model="storeArchives.mainCompetitorSalesYear"
+      label="主营竞品年销售额/干元:" />
+  </div>
+</template>
+<script>
+import { getServiceProviderArchives } from '@/api/index';
+export default {
+  props: {
+    storeArchives: {
+      type: Object,
+    },
+  },
+  data() {
+    return {
+      // storeArchives: {},
+    };
+  },
+  created() {
+    // this.getDetail();
+  },
+  methods: {
+    // getDetail() {
+    //   getServiceProviderArchives({ storeCode: this.storeCode }).then((res) => {
+    //     if (res.code == 200) {
+    //       this.storeArchives = res.data;
+    //     } else {
+    //       this.$toast.fail(res.msg);
+    //     }
+    //   });
+    // },
+  },
+};
+</script>
+<style lang="scss">
+.ZGattributeDetail {
+  // padding: 0 16px;
+  background: #fff;
+  .van-cell {
+    // padding: 10px 0;
+    // border-bottom: 1px solid #ccc;
+  }
+  .van-field__label {
+    width: 10em;
+  }
+}
+</style>

+ 155 - 0
src/views/storeManagement/FSQattributeEdit.vue

@@ -0,0 +1,155 @@
+<template>
+  <div class="FSQattributeEdit">
+    <div class="content">
+      <van-form ref="tabstoreVal" @submit="onSubmit" @failed="onFailed">
+        <van-field
+          v-model="detail.estimateSalesYearTarget"
+          type="number"
+          :rules="[{ required: true, message: '请输入年预估销额目标/干元' }]"
+          label="年预估销额目标/干元:">
+          <template #left-icon>
+            <span class="van-f-red">*</span>
+          </template>
+        </van-field>
+        <van-field
+          v-model="detail.zgwqWorkerNum"
+          type="number"
+          :rules="[{ required: true, message: '请输入旗下质感外墙工人数量' }]"
+          label="旗下质感外墙工人数量:">
+          <template #left-icon>
+            <span class="van-f-red">*</span>
+          </template>
+        </van-field>
+        <van-field
+          v-model="detail.projectYearNum"
+          type="number"
+          :rules="[{ required: true, message: '请输入年承接项目数量' }]"
+          label="年承接项目数量:">
+          <template #left-icon>
+            <span class="van-f-red">*</span>
+          </template>
+        </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>
+    </div>
+  </div>
+</template>
+
+<script>
+import { updateStore } from '@/api/FSQStore';
+export default {
+  name: 'FSQattributeEdit',
+  props: {
+    storeArchives: {
+      type: Object,
+    },
+    fromData: {
+      type: Object,
+    },
+  },
+  data() {
+    return {
+      detail: {},
+    };
+  },
+  watch: {
+    storeArchives: {
+      handler(val) {
+        if (val) this.detail = JSON.parse(JSON.stringify(val));
+      },
+      deep: true,
+      immediate: true,
+    },
+  },
+  methods: {
+    onSubmit(value) {
+      this.toastLoading(0, '加载中...', true);
+      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);
+    },
+  },
+};
+</script>
+
+<style lang="scss">
+.FSQattributeEdit {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  overflow: hidden;
+  .content {
+    flex: 1;
+    overflow-y: auto;
+    background: #fff;
+    padding: 10px 15px;
+    margin-top: 10px;
+    background: #fff;
+
+    .van-f-red {
+      color: red;
+      width: 4px;
+      display: inline-block;
+    }
+    .van-field__label {
+      width: 7em;
+    }
+  }
+}
+</style>