yjwang преди 1 месец
родител
ревизия
4c5b826680
променени са 4 файла, в които са добавени 687 реда и са изтрити 94 реда
  1. 9 0
      src/api/hisStore/store.js
  2. 7 0
      src/api/system/config.js
  3. 1 1
      src/views/store/storeConfig/index.vue
  4. 670 93
      src/views/store/storeConfig/userInfo.vue

+ 9 - 0
src/api/hisStore/store.js

@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+// 查询城市列表
+export function getStoreInfo() {
+  return request({
+    url: '/store/store/getStoreInfo',
+    method: 'get'
+  })
+}

+ 7 - 0
src/api/system/config.js

@@ -0,0 +1,7 @@
+import request from '@/utils/request'
+export function getConfigByKey(configKey) {
+  return request({
+    url: '/system/config/getConfigByKey/' + configKey,
+    method: 'get'
+  })
+}

+ 1 - 1
src/views/store/storeConfig/index.vue

@@ -8,7 +8,7 @@
           </div>
           <el-tabs v-model="activeTab">
             <el-tab-pane label="基本资料" name="userinfo">
-              <userInfo :user="user" />
+              <userInfo/>
             </el-tab-pane>
             <el-tab-pane label="修改密码" name="resetPwd">
               <resetPwd :user="user" />

+ 670 - 93
src/views/store/storeConfig/userInfo.vue

@@ -1,133 +1,710 @@
 <template>
-  <el-form ref="form" :model="user" :rules="rules" label-width="120px">
-    <el-form-item label="店铺Logo" prop="logoUrl">
-     <el-upload
-        v-model="user.logoUrl"
-        class="avatar-uploader"
-        :action="uploadUrl"
-        :show-file-list="false"
-        :on-success="handleAvatarSuccess"
-        :before-upload="beforeAvatarUpload">
-        <img v-if="user.logoUrl" :src="user.logoUrl" class="avatar" width="200px">
-        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
-     </el-upload>
-    </el-form-item>
-    <el-form-item label="店铺名称" prop="storeName">
-      <el-input v-model="user.storeName" maxlength="30" />
-    </el-form-item>
-
-
-    <el-form-item label="联系电话" prop="phone">
-      <el-input v-model="user.phone" maxlength="11" />
-    </el-form-item>
-    <el-form-item label="店铺地址" prop="address">
-      <el-input v-model="user.address" maxlength="50" />
-    </el-form-item>
-    <el-form-item label="退货电话" prop="refundPhone">
-      <el-input v-model="user.refundPhone" maxlength="50" />
-    </el-form-item>
-    <el-form-item label="退货地址" prop="refundAddress">
-      <el-input v-model="user.refundAddress" maxlength="50" />
-    </el-form-item>
-    <el-form-item label="退货收货人" prop="refundConsignee">
-      <el-input v-model="user.refundConsignee" maxlength="50" />
-    </el-form-item>
-<!--    <el-form-item label="登录账号" prop="account">
-      <el-input v-model="user.account" maxlength="50" />
-    </el-form-item> -->
-    <el-form-item>
-      <el-button type="primary" size="mini" @click="submit">保存</el-button>
-      <el-button type="danger" size="mini" @click="close">关闭</el-button>
-    </el-form-item>
-  </el-form>
+  <div>
+    <el-form ref="form" :model="form" :rules="rules" label-position="top" label-width="120px">
+
+      <el-divider content-position="left">基础信息</el-divider>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="店铺名称" prop="storeName">
+            <el-input v-model="form.storeName" placeholder="请输入店铺名称" disabled/>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="电话" prop="phone">
+            <el-input v-model="form.phone" placeholder="请输入店铺电话" disabled/>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-form-item label="企业全称" prop="fullName">
+        <el-input v-model="form.fullName" placeholder="请输入企业全称" disabled/>
+      </el-form-item>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="店铺LOGO" prop="logoUrl">
+            <el-upload
+              v-model="form.logoUrl"
+              :action="uploadUrl"
+              :before-upload="beforeAvatarUpload"
+              :on-success="handleAvatarSuccess"
+              :show-file-list="false"
+              class="avatar-uploader"
+            >
+              <img v-if="form.logoUrl" :src="form.logoUrl" class="avatar" width="200px">
+              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+            </el-upload>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="24">
+          <el-form-item label="店铺介绍" prop="descs">
+            <el-input v-model="form.descs" placeholder="请输入店铺介绍" type="textarea" disabled/>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="所属城市" prop="cityIds">
+            <el-cascader
+              ref="citySelect"
+              v-model="form.cityIds"
+              :options="citys"
+              @change="handleCityChange"
+              disabled
+            >
+            </el-cascader>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="地址" prop="address">
+            <el-input v-model="form.address" placeholder="请输入地址" disabled/>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="法人姓名" prop="legalPersonName">
+            <el-input v-model="form.legalPersonName" placeholder="请输入法人姓名" disabled/>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="统一社会信用代码" prop="unifiedSocialCreditCode">
+            <el-input v-model="form.unifiedSocialCreditCode" placeholder="请输入统一社会信用代码" disabled/>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-form-item label="营业范围" prop="businessScope">
+        <el-input v-model="form.businessScope" placeholder="请输入营业范围" type="textarea" disabled/>
+      </el-form-item>
+
+      <!-- 证书上传相关字段 -->
+      <el-divider content-position="left">资质证书信息</el-divider>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="营业执照上传" prop="businessLicense">
+            <el-upload
+              :action="uploadUrl"
+              :before-upload="beforeAvatarUpload"
+              :on-success="(response, file) => handleFileSuccess(response, file, 'businessLicense')"
+              :show-file-list="false"
+              class="avatar-uploader"
+            >
+              <img v-if="form.businessLicense" :src="form.businessLicense" class="avatar" width="100px">
+              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+            </el-upload>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="营业执照失效日期" prop="businessLicenseExpire">
+            <el-date-picker
+              v-model="form.businessLicenseExpire"
+              end-placeholder="结束日期"
+              range-separator="至"
+              start-placeholder="开始日期"
+              type="daterange"
+              value-format="yyyy-MM-dd"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <div v-if="medicalMallConfig.isMedicalMall">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="药品经营许可证上传" prop="drugLicense">
+              <el-upload
+                :action="uploadUrl"
+                :before-upload="beforeAvatarUpload"
+                :on-success="(response, file) => handleFileSuccess(response, file, 'drugLicense')"
+                :show-file-list="false"
+                class="avatar-uploader"
+              >
+                <img v-if="form.drugLicense" :src="form.drugLicense" class="avatar" width="100px">
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="药品经营许可证有效期" prop="drugLicenseExpiry">
+              <el-date-picker
+                v-model="form.drugLicenseExpiry"
+                end-placeholder="结束日期"
+                range-separator="至"
+                start-placeholder="开始日期"
+                type="daterange"
+                value-format="yyyy-MM-dd"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="1类器械生产备案上传" prop="medicalDevice1">
+              <el-upload
+                :action="uploadUrl"
+                :before-upload="beforeAvatarUpload"
+                :on-success="(response, file) => handleFileSuccess(response, file, 'medicalDevice1')"
+                :show-file-list="false"
+                class="avatar-uploader"
+              >
+                <img v-if="form.medicalDevice1" :src="form.medicalDevice1" class="avatar" width="100px">
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="1类生产备案有效期" prop="medicalDevice1Expiry">
+              <el-date-picker
+                v-model="form.medicalDevice1Expiry"
+                end-placeholder="结束日期"
+                range-separator="至"
+                start-placeholder="开始日期"
+                type="daterange"
+                value-format="yyyy-MM-dd"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="2类医疗器械备案证书上传" prop="medicalDevice2">
+              <el-upload
+                :action="uploadUrl"
+                :before-upload="beforeAvatarUpload"
+                :on-success="(response, file) => handleFileSuccess(response, file, 'medicalDevice2')"
+                :show-file-list="false"
+                class="avatar-uploader"
+              >
+                <img v-if="form.medicalDevice2" :src="form.medicalDevice2" class="avatar" width="100px">
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="2类医疗器械备案有效期" prop="medicalDevice2Expiry">
+              <el-date-picker
+                v-model="form.medicalDevice2Expiry"
+                end-placeholder="结束日期"
+                range-separator="至"
+                start-placeholder="开始日期"
+                type="daterange"
+                value-format="yyyy-MM-dd"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="3类器械经营许可证上传" prop="medicalDevice3">
+              <el-upload
+                :action="uploadUrl"
+                :before-upload="beforeAvatarUpload"
+                :on-success="(response, file) => handleFileSuccess(response, file, 'medicalDevice3')"
+                :show-file-list="false"
+                class="avatar-uploader"
+              >
+                <img v-if="form.medicalDevice3" :src="form.medicalDevice3" class="avatar" width="100px">
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="3类器械经营许可证有效期" prop="medicalDevice3Expiry">
+              <el-date-picker
+                v-model="form.medicalDevice3Expiry"
+                end-placeholder="结束日期"
+                range-separator="至"
+                start-placeholder="开始日期"
+                type="daterange"
+                value-format="yyyy-MM-dd"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="食品经营许可证上传" prop="foodLicense">
+              <el-upload
+                :action="uploadUrl"
+                :before-upload="beforeAvatarUpload"
+                :on-success="(response, file) => handleFileSuccess(response, file, 'foodLicense')"
+                :show-file-list="false"
+                class="avatar-uploader"
+              >
+                <img v-if="form.foodLicense" :src="form.foodLicense" class="avatar" width="100px">
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="食品经营许可证有效期" prop="foodLicenseExpiry">
+              <el-date-picker
+                v-model="form.foodLicenseExpiry"
+                end-placeholder="结束日期"
+                range-separator="至"
+                start-placeholder="开始日期"
+                type="daterange"
+                value-format="yyyy-MM-dd"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="医疗机构执业许可证上传" prop="medicalLicense">
+              <el-upload
+                :action="uploadUrl"
+                :before-upload="beforeAvatarUpload"
+                :on-success="(response, file) => handleFileSuccess(response, file, 'medicalLicense')"
+                :show-file-list="false"
+                class="avatar-uploader"
+              >
+                <img v-if="form.medicalLicense" :src="form.medicalLicense" class="avatar" width="100px">
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="医疗机构执业许可证有效期" prop="medicalLicenseExpiry">
+              <el-date-picker
+                v-model="form.medicalLicenseExpiry"
+                end-placeholder="结束日期"
+                range-separator="至"
+                start-placeholder="开始日期"
+                type="daterange"
+                value-format="yyyy-MM-dd"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </div>
+      <el-divider content-position="left">店铺配置信息</el-divider>
+      <el-form-item label="退货地址" prop="refundAddress">
+        <el-input v-model="form.refundAddress" placeholder="请输入退货地址" disabled/>
+      </el-form-item>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="退货电话" prop="refundPhone">
+            <el-input v-model="form.refundPhone" placeholder="请输入退货电话" disabled/>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="退货收货人" prop="refundConsignee">
+            <el-input v-model="form.refundConsignee" placeholder="请输入退货收货人" disabled/>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-form-item label="寄件人电话" prop="sendPhone">
+        <el-input v-model="form.sendPhone" placeholder="请输入寄件人电话" disabled/>
+      </el-form-item>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="商品总数" prop="productCount">
+            <el-input-number v-model="form.productCount"  :min="0" label="描述文字" disabled></el-input-number>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="销量" prop="salesCount">
+            <el-input-number v-model="form.salesCount"  :min="0" label="描述文字" disabled></el-input-number>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="累计金额" prop="totalMoney">
+            <el-input-number v-model="form.totalMoney" :precision="2" :step="0.1" disabled></el-input-number>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="状态">
+            <el-radio-group v-model="form.status">
+              <el-radio
+                v-for="dict in statusOptions"
+                :key="dict.dictValue"
+                :label="parseInt(dict.dictValue)"
+              >{{dict.dictLabel}}</el-radio>
+            </el-radio-group disabled>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="分佣方式" prop="brokerageType">
+            <el-radio v-model="form.brokerageType" label="1" disabled>每盒</el-radio>
+            <el-radio v-model="form.brokerageType" label="2" disabled>总价</el-radio>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-form-item label="配送方式" prop="shippingType">
+        <el-checkbox-group v-model="form.shippingType" size="medium" disabled>
+          <el-checkbox v-for="(item, index) in shippingTypeOptions" :key="index" :label="item.value"
+                       :disabled="item.disabled">{{item.label}}</el-checkbox>
+        </el-checkbox-group>
+      </el-form-item>
+
+      <el-divider content-position="left">登录信息</el-divider>
+      <el-form-item label="登录帐号" prop="account" v-if="title != '修改店铺管理'">
+        <el-input v-model="form.account" placeholder="请输入登录帐号" disabled/>
+      </el-form-item>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button type="primary" @click="submitForm">保 存</el-button>
+      <el-button @click="close">关 闭</el-button>
+    </div>
+  </div>
 </template>
 
 <script>
-import { updateUserProfile } from "@/api/store/store";
-import { listStore, getStore, delStore, addStore, updateStore, exportStore ,editLogo,editData} from "@/api/store/store";
-export default {
-  props: {
-    user: {
+import { addStore, updateStore, editData } from '@/api/store/store'
+import { getConfigByKey } from '@/api/system/config'
+import { getCitys } from '@/api/store/city'
+import { getStoreInfo } from '@/api/hisStore/store'
 
-    }
-  },
+export default {
   data() {
 
     return {
-      uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS",
-            baseUrl: process.env.VUE_APP_BASE_API,
+      citys: [],
+      medicalMallConfig: {},
+      shippingTypeOptions: [{
+        "label": "配送",
+        "value": "1"
+      }, {
+        "label": "自提",
+        "value": "2"
+      }, {
+        "label": "配送自提",
+        "value": "3"
+      }],
+      // 表单参数
+      form: {},
+      uploadUrl: process.env.VUE_APP_BASE_API + '/common/uploadOSS',
+      baseUrl: process.env.VUE_APP_BASE_API,
       // 表单校验
       rules: {
         storeName: [
-          { required: true, message: "店铺名称不能为空", trigger: "blur" }
+          { required: true, message: '店铺名称不能为空', trigger: 'blur' }
         ],
-        address: [
-          { required: true, message: "店铺地址不能为空", trigger: "blur" }
-
+        fullName: [
+          { required: true, message: '店铺名称不能为空', trigger: 'blur' }
         ],
-        account: [
-          { required: true, message: "店铺Logo不能为空", trigger: "blur" }
-
+        businessLicenseExpire: [
+          { required: true, message: '营业执照失效日期不能为空', trigger: 'blur' }
         ],
-        logoUrl: [
-          { required: true, message: "登录账号不能为空", trigger: "blur" }
-
+        businessLicense: [
+          { required: true, message: '营业执照不能为空', trigger: 'blur' }
+        ],
+        drugLicense: [
+          { required: true, message: '药品经营许可证不能为空', trigger: 'blur' }
+        ],
+        drugLicenseExpiry: [
+          { required: true, message: '药品经营许可证有效期不能为空', trigger: 'blur' }
+        ],
+        medicalLicense: [
+          { required: true, message: '医疗机构执业许可证不能为空', trigger: 'blur' }
+        ],
+        medicalLicenseExpiry: [
+          { required: true, message: '医疗机构执业许可证有效期不能为空', trigger: 'blur' }
+        ],
+        medicalDevice2: [
+          { required: true, message: '2类医疗器械备案证不能为空', trigger: 'blur' }
+        ],
+        medicalDevice2Expiry: [
+          { required: true, message: '2类医疗器械备案证有效期不能为空', trigger: 'blur' }
         ],
         logoUrl: [
-          { required: true, message: "登录账号不能为空", trigger: "blur" }
-        
+          { required: true, message: '店铺LOGO不能为空', trigger: 'blur' }
+        ],
+        cityIds: [
+          { required: true, message: '所属城市不能为空', trigger: 'blur' }
+        ],
+        address: [
+          { required: true, message: '地址不能为空', trigger: 'blur' }
+        ],
+        licenseImages: [
+          { required: true, message: '资质证书不能为空', trigger: 'blur' }
+        ],
+        shippingType: [
+          { required: true, message: '配送方式不能为空', trigger: 'blur' }
+        ],
+        account: [
+          { required: true, message: '登录账号不能为空', trigger: 'blur' }
+        ],
+        brokerageType: [
+          { required: true, message: '分佣方式不能为空', trigger: 'blur' }
         ],
         refundPhone: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        
+          { required: true, message: '退货电话不能为空', trigger: 'blur' }
         ],
         refundAddress: [
-          { required: true, message: "不能为空", trigger: "blur" }
-        
+          { required: true, message: '退货地址不能为空', trigger: 'blur' }
         ],
         refundConsignee: [
-          { required: true, message: "不能为空", trigger: "blur" },
+          { required: true, message: '退货收货人不能为空', trigger: 'blur' }
+        ],
+        sendPhone: [
+          { required: true, message: '寄件人电话不能为空', trigger: 'blur' }
+        ],
+        phone: [
           {
             pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
-            message: "请输入正确的手机号码",
-            trigger: "blur"
+            message: '请输入正确的手机号码',
+            trigger: 'blur',
+            required: true
           }
+        ],
+        // 新增字段校验规则
+        enterpriseShortName: [
+          { required: true, message: '企业简称不能为空', trigger: 'blur' }
+        ],
+        enterpriseFullName: [
+          { required: true, message: '企业全称不能为空', trigger: 'blur' }
+        ],
+        contactPhone: [
+          { required: true, message: '电话号码不能为空', trigger: 'blur' }
+        ],
+        enterpriseAddress: [
+          { required: true, message: '企业地址不能为空', trigger: 'blur' }
+        ],
+        legalPersonName: [
+          { required: true, message: '法人姓名不能为空', trigger: 'blur' }
+        ],
+        unifiedSocialCreditCode: [
+          { required: true, message: '统一社会信用代码不能为空', trigger: 'blur' }
+        ],
+        businessScope: [
+          { required: true, message: '营业范围不能为空', trigger: 'blur' }
+        ],
+        password: [
+          { required: true, message: '新密码不能为空', trigger: 'blur' },
+          { min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }
         ]
       }
-    };
+    }
+  },
+  created() {
+    this.getCitys()
+    this.handleUpdate()
+    getConfigByKey('medicalMall.func.switch').then(response => {
+      if (response.data && response.data.configValue) {
+        this.medicalMallConfig = JSON.parse(response.data.configValue)
+      }
+    })
   },
   methods: {
 
-       handleAvatarSuccess(res, file) {
-            if(res.code==200){
-              this.user.logoUrl=res.url;
-              self.$forceUpdate()
-            }
-            else{
-              this.msgError(res.msg);
-            }
-        },
-        beforeAvatarUpload(file) {
-          const isLt1M = file.size / 1024 / 1024 < 1;
-          if (!isLt1M) {
-            this.$message.error('上传图片大小不能超过 1MB!');
-          }
-          return   isLt1M;
-        },
+    handleAvatarSuccess(res, file) {
+      if (res.code == 200) {
+        this.user.logoUrl = res.url
+        self.$forceUpdate()
+      } else {
+        this.msgError(res.msg)
+      }
+    },
+    beforeAvatarUpload(file) {
+      const isLt1M = file.size / 1024 / 1024 < 1
+      if (!isLt1M) {
+        this.$message.error('上传图片大小不能超过 1MB!')
+      }
+      return isLt1M
+    },
 
     submit() {
-      this.$refs["form"].validate(valid => {
+      this.$refs['form'].validate(valid => {
         if (valid) {
           editData(this.user).then(response => {
-            this.msgSuccess("修改成功");
-          });
+            this.msgSuccess('修改成功')
+          })
         }
-      });
+      })
     },
     close() {
-      this.$store.dispatch("tagsView/delView", this.$route);
-      this.$router.push({ path: "/index" });
+      this.$store.dispatch('tagsView/delView', this.$route)
+      this.$router.push({ path: '/index' })
+    },
+    // 通用文件上传成功处理函数
+    handleFileSuccess(response, file, field) {
+      if (response.code === 200) {
+        this.$set(this.form, field, response.url)
+        this.$forceUpdate()
+      } else {
+        this.msgError(response.msg)
+      }
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        storeId: null,
+        cityIds: null,
+        storeName: null,
+        descs: null,
+        logoUrl: null,
+        address: null,
+        lng: null,
+        lat: null,
+        phone: null,
+        licenseImages: null,
+        productCount: null,
+        status: 0,
+        createTime: null,
+        updateTime: null,
+        salesCount: null,
+        balance: null,
+        totalMoney: null,
+        isAudit: 0,
+        account: null,
+        password: null,
+        shippingType: ['1'],
+        brokerageType: '1',
+        brokerageRate: 0,
+        fullName: null,
+        // 重置新增字段
+        enterpriseShortName: null,        // 企业简称
+        enterpriseFullName: null,         // 企业全称
+        contactPhone: null,               // 联系电话
+        enterpriseAddress: null,          // 企业地址
+        legalPersonName: null,            // 法人姓名
+        unifiedSocialCreditCode: null,    // 统一社会信用代码
+        businessScope: null,              // 营业范围
+        // 重置证书相关字段
+        businessLicense: null,                    // 营业执照文件
+        businessLicenseExpire: null,              // 营业执照失效日期
+        drugLicense: null,             // 药品经营许可证有效期
+        drugLicenseExpiry: null,               // 药品经营许可证文件
+        // 医疗器械相关证书
+        medicalDevice1: null,          // 一类医疗器械备案证书
+        medicalDevice1Expiry: null,        // 二类医疗器械备案有效期
+        medicalDevice2: null,          // 二类器械生产备案文件
+        medicalDevice2Expiry: null,        // 一类生产备案有效期
+        medicalDevice3: null,         // 三类器械经营许可证文件
+        medicalDevice3Expiry: null,       // 三类器械经营许可证有效期
+        // 其他许可证相关字段
+        foodLicense: null,               // 食品经营许可证文件
+        foodLicenseExpiry: null,             // 食品经营许可证有效期
+        medicalLicense: null,  // 医疗机构执业许可证文件
+        medicalLicenseExpiry: null // 医疗机构执业许可证有效期
+      }
+      this.resetForm('form')
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs['form'].validate(valid => {
+        if (valid) {
+          // 处理表单数据
+          const formData = Object.assign({}, this.form)
+
+          // 处理城市ID
+          if (formData.cityIds) {
+            formData.cityIds = formData.cityIds.toString()
+          }
+
+          // 处理配送方式
+          if (formData.shippingType) {
+            formData.shippingType = formData.shippingType.toString()
+          }
+
+          // 处理日期范围字段
+          if (formData.drugLicenseExpiry && formData.drugLicenseExpiry.length === 2) {
+            formData.drugLicenseExpiryStart = formData.drugLicenseExpiry[0]
+            formData.drugLicenseExpiryEnd = formData.drugLicenseExpiry[1]
+          }
+
+          if (formData.medicalDevice2Expiry && formData.medicalDevice2Expiry.length === 2) {
+            formData.medicalDevice2ExpiryStart = formData.medicalDevice2Expiry[0]
+            formData.medicalDevice2ExpiryEnd = formData.medicalDevice2Expiry[1]
+          }
+
+          if (formData.medicalDevice1Expiry && formData.medicalDevice1Expiry.length === 2) {
+            formData.medicalDevice1ExpiryStart = formData.medicalDevice1Expiry[0]
+            formData.medicalDevice1ExpiryEnd = formData.medicalDevice1Expiry[1]
+          }
+
+          if (formData.medicalDevice3Expiry && formData.medicalDevice3Expiry.length === 2) {
+            formData.medicalDevice3ExpiryStart = formData.medicalDevice3Expiry[0]
+            formData.medicalDevice3ExpiryEnd = formData.medicalDevice3Expiry[1]
+          }
+
+          if (formData.foodLicenseExpiry && formData.foodLicenseExpiry.length === 2) {
+            formData.foodLicenseExpiryStart = formData.foodLicenseExpiry[0]
+            formData.foodLicenseExpiryEnd = formData.foodLicenseExpiry[1]
+          }
+
+          if (formData.medicalLicenseExpiry && formData.medicalLicenseExpiry.length === 2) {
+            formData.medicalLicenseExpiryStart = formData.medicalLicenseExpiry[0]
+            formData.medicalLicenseExpiryEnd = formData.medicalLicenseExpiry[1]
+          }
+          if (formData.businessLicenseExpire && formData.businessLicenseExpire.length === 2) {
+            formData.businessLicenseExpireStart = formData.businessLicenseExpire[0]
+            formData.businessLicenseExpireEnd = formData.businessLicenseExpire[1]
+          }
+
+          if (formData.storeId != null) {
+            updateStore(formData).then(response => {
+              this.msgSuccess('修改成功')
+              this.open = false
+              this.getList()
+            })
+          } else {
+            addStore(formData).then(response => {
+              this.msgSuccess('新增成功')
+              this.open = false
+              this.getList()
+            })
+          }
+        }
+      })
+    },
+    handleCityChange(value) {
+      var nodes = this.$refs.citySelect.getCheckedNodes()
+      this.form.address = nodes[0].pathLabels[0] + nodes[0].pathLabels[1] + nodes[0].pathLabels[2]
+      this.form.cityIds = value.toString()
+    },
+    getCitys() {
+      getCitys().then(res => {
+        this.loading = false
+        this.citys = res.data
+      })
+    },
+    /** 修改按钮操作 */
+    handleUpdate() {
+      this.reset()
+      getStoreInfo().then(response => {
+        this.form = response.data
+        this.open = true
+        this.title = '修改店铺'
+
+        let str = this.form.shippingType
+        this.form.shippingType = str.split(',')
+        this.form.cityIds = ((this.form.cityIds).split(',')).map(Number)
+
+        const dateFields = [
+          'drugLicenseExpiry',
+          'medicalDevice1Expiry',
+          'medicalDevice2Expiry',
+          'medicalDevice3Expiry',
+          'foodLicenseExpiry',
+          'medicalLicenseExpiry',
+          'businessLicenseExpire'
+        ]
+        dateFields.forEach(field => {
+          const startField = field + 'Start'
+          const endField = field + 'End'
+          if (this.form[startField] && this.form[endField]) {
+            this.$set(this.form, field, [this.form[startField], this.form[endField]])
+          }
+        })
+      })
     }
   }
-};
+}
 </script>