Procházet zdrojové kódy

修改店铺装修

xiaodai2017 před 1 rokem
rodič
revize
4ec93e4e25

+ 0 - 17
src/apis/service/operate/shopTrim/guest.js

@@ -1,17 +0,0 @@
-// 物业管理员
-import http from '@/apis/axios'
-const api = 'admin/StoreActivity'
-export default {
-// 添加
-add: (data, params) => http(api + "add", data, "post", params),
-// 删除
-delete: (data, params) => http(api + "del", data, "post", params),
-// 分页查询
-list: (data, params) => http(api + "index", data, "post", params),
-// 详情
-detail: (data, params) => http(api + "edit", data, "post", params),
-// 更改
-update: (data, params) => http(api + "edit", data, "post", params),
-// 更新状态
-status: (data, params) => http(api + "status", data, "post", params),
-}

+ 0 - 17
src/apis/service/operate/shopTrim/picture.js

@@ -1,17 +0,0 @@
-// 物业管理员
-import http from '@/apis/axios'
-const api = 'admin/StoreActivity'
-export default {
-// 添加
-add: (data, params) => http(api + "add", data, "post", params),
-// 删除
-delete: (data, params) => http(api + "del", data, "post", params),
-// 分页查询
-list: (data, params) => http(api + "index", data, "post", params),
-// 详情
-detail: (data, params) => http(api + "edit", data, "post", params),
-// 更改
-update: (data, params) => http(api + "edit", data, "post", params),
-// 更新状态
-status: (data, params) => http(api + "status", data, "post", params),
-}

+ 0 - 17
src/apis/service/operate/shopTrim/service.js

@@ -1,17 +0,0 @@
-// 物业管理员
-import http from '@/apis/axios'
-const api = 'admin/StoreActivity'
-export default {
-// 添加
-add: (data, params) => http(api + "add", data, "post", params),
-// 删除
-delete: (data, params) => http(api + "del", data, "post", params),
-// 分页查询
-list: (data, params) => http(api + "index", data, "post", params),
-// 详情
-detail: (data, params) => http(api + "edit", data, "post", params),
-// 更改
-update: (data, params) => http(api + "edit", data, "post", params),
-// 更新状态
-status: (data, params) => http(api + "status", data, "post", params),
-}

+ 12 - 11
src/components/globalComponents/select-area/main.vue

@@ -54,26 +54,27 @@ export default {
         expandTrigger: "hover",
         async lazyLoad(node, resolve) {
           // console.log(node);
-          const { level, value, root, loading } = node;
-          console.log(level);
+          const { level, value, parent, root, loading } = node;
+          console.log(level, value);
           let list = [];
           let res = {},
             model = { level: level + 1 };
+          if (level == 1) {
+            model.province = value;
+          } else if (level == 2) {
+            model.province = parent.value;
+            model.city = value;
+          }
           if (level < 3) {
-            res = await asyncRequest.list(
-              level === 0
-                ? model
-                : level === 1
-                ? { ...model, province: value }
-                : { ...model, city: value }
-            );
+            res = await asyncRequest.list(model);
             const { code, data } = res;
             if (code === 1) {
               data.forEach((v1) => {
                 let province = {
-                  value: v1.value,
-                  label: v1.label,
+                  value: String(v1.value),
+                  label: String(v1.label),
                   leaf: level >= 2,
+                  hasChildren: level < 2,
                 };
                 list.push(province);
               });

+ 3 - 3
src/layout/components/company-select-origin/index.vue

@@ -36,7 +36,7 @@
 </template>
 
 <script>
-import { requsetSupertubeCompany, requsetUserBindingCompany } from '@/apis/user'
+import requset  from '@/apis/user'
 import { isBusinessCompany, isOnlyBusinessCompanyPath } from './utils'
 import { accountLevels } from '@/assets/js/statusList'
 import { userStoreActions } from '@/store/modules/user'
@@ -142,7 +142,7 @@ export default {
     async initalData(reset = false) {
       // 区分是否超管用户请求不同接口
       this.state.loading = true
-      const api = this.isSupertube || this.isSupplier ? requsetSupertubeCompany : requsetUserBindingCompany
+      const api = this.isSupertube || this.isSupplier ? requset.requsetSupertubeCompany : requset.requsetUserBindingCompany
       const isSupplier = this.currentLevel === accountLevels.supplier
       const { page, size, name } = this.params
 
@@ -256,7 +256,7 @@ export default {
 
     async loadMore() {
       // 区分超管用户和普通用户
-      const api = this.isSupertube ? requsetSupertubeCompany : requsetUserBindingCompany
+      const api = this.isSupertube ? requset.requsetSupertubeCompany : requset.requsetUserBindingCompany
       const isSupplier = this.currentLevel === accountLevels.supplier
       this.state.loading = true
       const { page, size, name } = this.params

+ 3 - 3
src/layout/components/company-select/index.vue

@@ -36,7 +36,7 @@
 </template>
 
 <script>
-import { requsetSupertubeCompany, requsetUserBindingCompany } from '@/apis/user'
+import requset  from '@/apis/user'
 import { isBusinessCompany, isOnlyBusinessCompanyPath } from './utils'
 import { userStoreActions } from '@/store/modules/user'
 import { accountLevels } from '@/assets/js/statusList'
@@ -141,7 +141,7 @@ export default {
     async initalData() {
       // 区分是否超管用户请求不同接口
       this.state.loading = true
-      const api = this.isSupertube || this.isSupplier ? requsetSupertubeCompany : requsetUserBindingCompany
+      const api = this.isSupertube || this.isSupplier ? requset.requsetSupertubeCompany : requset.requsetUserBindingCompany
       const isSupplier = this.currentLevel === accountLevels.supplier
       const { page, size, name } = this.params
 
@@ -253,7 +253,7 @@ export default {
 
     async loadMore() {
       // 区分超管用户和普通用户
-      const api = this.isSupertube ? requsetSupertubeCompany : requsetUserBindingCompany
+      const api = this.isSupertube ? requset.requsetSupertubeCompany : requset.requsetUserBindingCompany
       const isSupplier = this.currentLevel === accountLevels.supplier
       this.state.loading = true
       const { page, size, name } = this.params

+ 2 - 2
src/views/operate/shop/addEdit.vue

@@ -111,9 +111,9 @@
                     />
                   </el-select>
                 </el-form-item>
-                <el-form-item label="地址省市区" prop="store_addr">
+                <el-form-item label="地址省市区" prop="store_city">
                   <select-area
-                    value="ruleForm.store_city"
+                    :value="ruleForm.store_city"
                     :isDetail="id !== 'add'"
                     size="small"
                     placeholder="地址省市区"

+ 9 - 1
src/views/operate/shop/columns.js

@@ -37,6 +37,14 @@ const rules = {
   mobile: [{ required: true, validator: validatemobile, trigger: "blur" }],
   email: [{ required: true, validator: validateEmail, trigger: "blur" }],
   store_post: [{ required: true, message: "职位不能为空", trigger: "blur" }],
+  store_city: [
+    {
+      required: true,
+      type: "array",
+      message: "请选择地址省市区",
+      trigger: "change",
+    },
+  ],
   store_addr: [
     { required: true, message: "店铺地址不能为空", trigger: "blur,change" },
   ],
@@ -51,7 +59,7 @@ const formItem = {
     "http://hwpro.test241.wanyuhengtong.com/storage/default/20230607/6c4b040420fb5a1d01837d0f120d60ec5c92ea62.jpg",
   map_addr: [115.70340104103089, 39.40107657164336],
   store_addr: "顺义区",
-  store_city: [],
+  store_city: ["1", "2", "3"],
   contactor: "张三",
   mobile: "17777777777",
   email: "11@qq.com",

+ 3 - 60
src/views/operate/shopTrim/activity/addEdit.vue

@@ -50,15 +50,12 @@
 </template>
 <script>
 import asyncRequest from "@/apis/service/operate/shopTrim/activity";
-import asyncRequestStoreType from "@/apis/service/serviceParam/storeType";
-import asyncRequestSupplier from "@/apis/service/operate/supplier";
-import { formItem, rules, parmValue } from "./columns";
+import { formItem, rules } from "./columns";
 export default {
   name: "shop",
-  props: ["showModel", "id", "isDetail", "sitem"],
+  props: ["showModel", "id", "isDetail", "sitem", "store_id"],
   data() {
     return {
-      parmValue,
       loading: false,
       visible1: false,
       toponym: "",
@@ -105,8 +102,6 @@ export default {
         }
       }
       await this.resetForm();
-      await this.searchTypeList();
-      await this.searchSupplierList();
       this.loading = false;
     },
 
@@ -136,6 +131,7 @@ export default {
           if (!this.loading) {
             this.loading = true;
             let model = JSON.parse(JSON.stringify(this.ruleForm));
+            model.store_id = this.store_id;
             let res = {};
             if (this.id === "add") {
               delete model["id"];
@@ -161,59 +157,6 @@ export default {
         }
       });
     },
-    // 刷新表格
-    async searchTypeList() {
-      const { code, data } = await asyncRequestStoreType.list(this.parmValue);
-      this.storeTypeOptions = code === 1 ? data.list : [];
-    },
-    // 刷新表格
-    async searchSupplierList() {
-      const { code, data } = await asyncRequestSupplier.list(this.parmValue);
-      this.supplierOptions = code === 1 ? data.list : [];
-    },
-    deleteimg() {
-      this.ruleForm.store_image = "";
-      this.$refs.ruleForm.validateField("store_image");
-    },
-
-    // 图片上传成功
-    async UploadSuccessEvent(data) {
-      const { url } = data;
-      if (url === "noToken") {
-        await this.logout();
-      } else {
-        this.ruleForm.store_image = url;
-        this.$refs.ruleForm.validateField("store_image");
-        this.$message.success("图片上传成功!");
-      }
-    },
-
-    // 图片上传失败
-    imgUploadError(res) {
-      if (res !== "break") {
-        this.$message.error("图片上传失败!");
-        this.$refs.ruleForm.validateField("store_image");
-      }
-    },
-    // 判断图片规格
-    beforeAvatarUpload(file) {
-      let isJPG = false;
-      if (
-        file.type === "image/jpg" ||
-        file.type === "image/png" ||
-        file.type === "image/jpeg"
-      ) {
-        isJPG = true;
-      }
-      const isLt2M = file.size / 1024 / 1024 < 1;
-      if (!isJPG) {
-        this.$message.error("图片格式不正确!");
-      }
-      if (!isLt2M) {
-        this.$message.error("图片大小不能超过 1MB!");
-      }
-      return isJPG && isLt2M;
-    },
   },
 };
 </script>

+ 6 - 10
src/views/operate/shopTrim/activity/index.vue

@@ -92,6 +92,7 @@
     <add-edit
       :id="modelId"
       :sitem="sitem"
+      :store_id="store_id"
       :show-model="showModel"
       :is-detail="isDetail"
       @refresh="searchList"
@@ -134,6 +135,11 @@ export default {
       return action ?? [];
     },
   },
+  watch: {
+    store_id: function (val) {
+      this.restSearch()
+    },
+  },
   data() {
     return {
       statusList,
@@ -147,11 +153,6 @@ export default {
       parmValue: {
         page: 1, // 页码
         size: 15, // 每页显示条数
-        createStart: "", //创建开始时间
-        createEnd: "", //创建结束时间
-        status: "", //当前状态
-        supplierName: "", //供应商名称
-        creator: "", //创建人
       },
 
       // 表格 - 数据
@@ -185,11 +186,6 @@ export default {
       this.parmValue = {
         page: 1, // 页码
         size: 15, // 每页显示条数
-        createStart: "", //创建开始时间
-        createEnd: "", //创建结束时间
-        status: "", //当前状态
-        supplierName: "", //供应商名称
-        creator: "", //创建人
       };
       this.searchList();
     },

+ 22 - 122
src/views/operate/shopTrim/baseData/addEdit.vue

@@ -1,11 +1,11 @@
 <template>
   <el-dialog
     v-loading="loading"
-    :title="'修改' + title"
+    :title="'添加' + title"
     :center="true"
     align="left"
     top="10vh"
-    width="900px"
+    width="400px"
     :close-on-click-modal="false"
     :visible.sync="showModelThis"
     element-loading-text="拼命加载中"
@@ -21,35 +21,13 @@
             v-loading="loading"
             :model="ruleForm"
             status-icon
-            size="small"
+            :label-position="'left'"
+            size="mini"
             :rules="rulesThis"
-            label-width="0"
-            class="supplierAdd"
+            label-width="100"
           >
-            <el-form-item prop="value">
-              <el-checkbox
-                :indeterminate="isIndeterminate"
-                v-model="checkAll"
-                @change="handleCheckAllChange"
-                >全选</el-checkbox
-              >
-
-              <el-checkbox-group
-                v-model="ruleForm.value"
-                @change="handleCheckedCitiesChange"
-              >
-                <el-row>
-                  <el-col
-                    :span="6"
-                    v-for="(item, index) in alterOption"
-                    :key="item + index"
-                  >
-                    <el-checkbox :label="isApi ? item.id : item">{{
-                      isApi ? item.name : item
-                    }}</el-checkbox>
-                  </el-col>
-                </el-row>
-              </el-checkbox-group>
+            <el-form-item prop="name" label="名称">
+              <el-input v-model="ruleForm.name" placeholder="名称" />
             </el-form-item>
           </el-form>
         </el-col>
@@ -64,29 +42,22 @@
   </el-dialog>
 </template>
 <script>
-import asyncRequest from "@/apis/service/serviceParam/storeStyle";
 
-import { config } from "./columns";
 export default {
   name: "shop",
-  props: ["showModel", "isApi", "valKey", "option", "title"],
-  // components:{ MapModal },
+  props: ["showModel", "title", "valKey", "option"],
   data() {
     return {
       loading: false,
-      checkAll: false,
-      alterOption: [],
-      isIndeterminate: true,
       showModelThis: this.showModel,
       ruleForm: {
-        value: [],
+        name: "",
       },
       rules: {
-        value: [
+        name: [
           {
             required: true,
-            type: "array",
-            message: "至少选择一个",
+            message: "请输入名称",
             trigger: "change",
           },
         ],
@@ -110,18 +81,12 @@ export default {
   mounted() {},
   methods: {
     async initForm() {
-      this.checkAll=false;
+      this.checkAll = false;
       console.log(this.valKey);
       this.loading = true;
       this.alterOption = [];
       await this.resetForm();
       this.rulesThis = this.rules;
-      if (this.isApi) {
-        await this.searchTypeList();
-      } else {
-        this.alterOption = config[this.valKey];
-      }
-
       this.loading = false;
     },
 
@@ -132,57 +97,25 @@ export default {
           this.$refs.ruleForm.resetFields();
           this.$refs.ruleForm.clearValidate();
           this.ruleForm = {
-            value: [],
+            name: "",
           };
         }
       });
     },
-    handleCheckAllChange(val) {
-      let list = [];
-      if (this.isApi) {
-        this.alterOption.forEach((item) => {
-          list.push(item.id);
-        });
-      } else {
-        list = this.alterOption;
-      }
-      this.ruleForm.value = val ? list : [];
-      this.isIndeterminate = false;
-    },
-    handleCheckedCitiesChange(value) {
-      let checkedCount = value.length;
-      this.checkAll = checkedCount === this.alterOption.length;
-      this.isIndeterminate = checkedCount > 0 && checkedCount < this.alterOption.length;
-    },
-    // 刷新表格
-    async searchTypeList() {
-      const { code, data } = await asyncRequest.list({
-        limit: 999999,
-        page: 1,
-      });
-      this.alterOption = code === 1 ? data.list : [];
-    },
+
     async submitForm() {
       await this.$refs.ruleForm.validate(async (valid) => {
         if (valid) {
-          const { value } = this.ruleForm;
-          let list = [];
-          if (this.isApi) {
-            value.forEach((item) => {
-              let index = this.alterOption.findIndex((si) => si.id === item);
-              if (index !== -1) {
-                list.push({
-                  name: this.alterOption[index].name,
-                  id: this.alterOption[index].id,
-                });
-              }
-            });
-          } else {
-            list = value;
+          const { name } = this.ruleForm;
+          console.log(this.option);
+          let index = this.option.findIndex((s) => s === name);
+          if (index !== -1) {
+            this.$message.warning("已有" + name, "不能重复添加!");
+            return;
           }
           this.$emit("refresh", {
             valKey: this.valKey,
-            value: list,
+            name: name,
           });
           this.showModelThis = false;
         } else {
@@ -195,37 +128,4 @@ export default {
 };
 </script>
 
-<style lang="scss" scoped>
-.btnupload {
-  width: 86px;
-  height: 86px;
-  line-height: 86px;
-}
-.avatar-uploader-icon {
-  width: 86px;
-  height: 86px;
-  line-height: 86px;
-}
-.img-find {
-  position: relative;
-  width: 86px;
-  height: 86px;
-  line-height: 86px;
-  &:hover {
-    .img-close {
-      color: #409eff;
-    }
-  }
-}
-.img-close {
-  position: absolute;
-  top: 0;
-  right: 0;
-  font-size: 18px;
-  font-weight: lighter;
-  z-index: 999999;
-  &:hover {
-    cursor: pointer;
-  }
-}
-</style>
+<style lang="scss" scoped></style>

+ 18 - 4
src/views/operate/shopTrim/baseData/columns.js

@@ -1,7 +1,7 @@
 const formItem = {
-  id: "",
+  // id: "",
   renovation_date: "2023",
-  park_num: 0,
+  park_num: "0",
   store_spec_ids: [],
   caterer_spec_ids: [],
   hotel_spec_ids: [],
@@ -9,6 +9,20 @@ const formItem = {
   caterer_spec_ids2:[],
   store_desc: "qq",
 };
+const checkAll= {
+  store_spec_ids: false,
+  caterer_spec_ids: false,
+  hotel_spec_ids: false,
+  room_spec_ids: false,
+  caterer_spec_ids2: false,
+};
+const isIndeterminate= {
+  store_spec_ids: true,
+  caterer_spec_ids: true,
+  hotel_spec_ids: true,
+  room_spec_ids: true,
+  caterer_spec_ids2: true,
+};
 
 const rules = {
   renovation_date: [
@@ -65,7 +79,7 @@ const config = {
     "24小时热水",
     "暖气",
     "温泉",
-    "免费洗漱用品",
+    // "免费洗漱用品",
     "电热水壶",
     "吹风机",
     "拖鞋",
@@ -109,4 +123,4 @@ const config = {
   ],
 };
 
-export { formItem, rules, config };
+export { formItem, rules, config ,checkAll,isIndeterminate};

+ 346 - 164
src/views/operate/shopTrim/baseData/index.vue

@@ -5,157 +5,296 @@
       v-loading="loading"
       :model="ruleForm"
       status-icon
-      size="small"
+      size="mini"
       :rules="rulesThis"
       label-width="95px"
       class="supplierAdd"
     >
       <el-row>
-        <el-col :span="10">
-          <el-row>
-            <el-col :span="12">
-              <el-form-item label="最近装修" prop="renovation_date">
-                <el-date-picker
-                  style="width: 100%"
-                  size="medium"
-                  type="month"
-                  value-format="yyyy-MM"
-                  placeholder="最近装修时间"
-                  v-model="ruleForm.renovation_date"
-                /> </el-form-item
-            ></el-col>
-            <el-col :span="12">
-              <el-form-item label="停车位数" prop="park_num">
-                <el-input-number
-                  style="width: 100%"
-                  size="small"
-                  type="number"
-                  :max="9999999"
-                  :min="0"
-                  step-strictly
-                  :step="0"
-                  controls-position="right"
-                  placeholder="停车位数"
-                  v-model="ruleForm.park_num" /></el-form-item
-            ></el-col>
-          </el-row>
-
-          <el-form-item label="场地特色" prop="store_spec_ids">
-            <el-tag
-              v-for="(tag, index) in ruleForm.store_spec_ids"
-              :key="tag.name"
-              closable
+        <el-col :span="8">
+          <el-form-item label="最近装修" prop="renovation_date">
+            <el-date-picker
+              style="width: 100%"
               size="mini"
-              type="success"
-              :style="{ marginLeft: index !== 0 ? '5px' : '0px' }"
-            >
-              {{ tag.name }}
-            </el-tag>
-
-            <el-button
+              type="month"
+              value-format="yyyy-MM"
+              placeholder="最近装修时间"
+              v-model="ruleForm.renovation_date"
+            /> </el-form-item
+        ></el-col>
+        <el-col :span="8">
+          <el-form-item label="停车位数" prop="park_num">
+            <el-input-number
+              style="width: 100%"
               size="mini"
-              class="fr"
-              type="text"
-              style="margin: 0 -30px 0 0"
-              @click="openModal('store_spec_ids', '场地特色', true)"
-              >添加</el-button
-            >
+              :max="9999999"
+              :min="0"
+              step-strictly
+              :step="1"
+              controls-position="right"
+              placeholder="停车位数"
+              v-model="ruleForm.park_num"
+          /></el-form-item>
+        </el-col>
+        <el-col span="7" class="tr">
+          <el-button type="primary" @click="submitForm" :size="'mini'">保 存 </el-button>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="场地特色" prop="store_spec_ids" size="mini">
+            <div class="clear-main">
+              <div class="clear-left">
+                <el-checkbox
+                  :indeterminate="isIndeterminate.store_spec_ids"
+                  v-model="checkAll.store_spec_ids"
+                  style="margin: 0"
+                  size="mini"
+                  @change="
+                    handleCheckAllChange($event, 'store_spec_ids', store_spec_ids_options)
+                  "
+                  >全选</el-checkbox
+                >
+              </div>
+              <div class="clear-right">
+                <el-checkbox-group
+                  v-model="ruleForm.store_spec_ids"
+                  size="mini"
+                  style="margin: 0"
+                  @change="
+                    handleCheckedCitiesChange(
+                      $event,
+                      'store_spec_ids',
+                      store_spec_ids_options
+                    )
+                  "
+                >
+                  <el-row>
+                    <el-col
+                      :span="3"
+                      v-for="(item, index) in store_spec_ids_options"
+                      :key="item + index"
+                    >
+                      <el-checkbox style="margin: 0" size="mini" :label="item.id + ''">{{
+                        item.name
+                      }}</el-checkbox>
+                    </el-col>
+                  </el-row>
+                </el-checkbox-group>
+              </div>
+            </div>
           </el-form-item>
 
-          <el-form-item label="酒店设施" prop="hotel_spec_ids">
-            <template v-if="ruleForm && ruleForm.hotel_spec_ids.length > 0">
-              <el-tag
-                v-for="(tag, index) in ruleForm.hotel_spec_ids"
-                :key="tag"
-                closable
-                size="mini"
-                type="success"
-                :style="{ marginLeft: index !== 0 ? '5px' : '0px' }"
-              >
-                {{ tag }}
-              </el-tag>
-            </template>
-            <span v-else>请选择酒店设施</span>
-            <el-button
-              size="mini"
-              class="fr"
-              type="text"
-              style="margin: 0 -30px 0 0"
-              @click="openModal('hotel_spec_ids', '酒店设施')"
-              >添加</el-button
-            >
+          <el-form-item label="酒店设施" prop="hotel_spec_ids" size="mini">
+            <div class="clear-main">
+              <div class="clear-left">
+                <el-checkbox
+                  :indeterminate="isIndeterminate.hotel_spec_ids"
+                  v-model="checkAll.hotel_spec_ids"
+                  size="mini"
+                  style="margin: 0"
+                  @change="
+                    handleCheckAllChange($event, 'hotel_spec_ids', hotel_spec_ids_options)
+                  "
+                  >全选</el-checkbox
+                >
+              </div>
+              <div class="clear-right">
+                <el-checkbox-group
+                  v-model="ruleForm.hotel_spec_ids"
+                  size="mini"
+                  style="margin: 0"
+                  @change="
+                    handleCheckedCitiesChange(
+                      $event,
+                      'hotel_spec_ids',
+                      hotel_spec_ids_options
+                    )
+                  "
+                >
+                  <el-row>
+                    <el-col :span="3"></el-col>
+                    <el-col
+                      :span="3"
+                      v-for="(item, index) in hotel_spec_ids_options"
+                      :key="item + index"
+                    >
+                      <el-checkbox style="margin: 0" size="mini" :label="item + ''">{{
+                        item
+                      }}</el-checkbox>
+                    </el-col>
+                    <el-col :span="3">
+                      <el-button
+                        size="mini"
+                        type="text"
+                        @click="openModal('hotel_spec_ids', '酒店设施', hotel_spec_ids_options)"
+                        >添加</el-button
+                      >
+                    </el-col>
+                  </el-row>
+                </el-checkbox-group>
+              </div>
+            </div>
           </el-form-item>
-          <el-form-item label="会议设施" prop="caterer_spec_ids2">
-            <template v-if="ruleForm && ruleForm.caterer_spec_ids2.length > 0">
-              <el-tag
-                v-for="(tag, index) in ruleForm.caterer_spec_ids2"
-                :key="tag"
-                closable
-                size="mini"
-                type="success"
-                :style="{ marginLeft: index !== 0 ? '5px' : '0px' }"
-              >
-                {{ tag }}
-              </el-tag>
-            </template>
-            <span v-else>请选择会议设施</span>
-            <el-button
-              size="mini"
-              class="fr"
-              type="text"
-              style="margin: 0 -30px 0 0"
-              @click="openModal('caterer_spec_ids2', '会议设施')"
-              >添加</el-button
-            >
+          <el-form-item label="会议设施" prop="caterer_spec_ids2" size="mini">
+            <div class="clear-main">
+              <div class="clear-left">
+                <el-checkbox
+                  :indeterminate="isIndeterminate.caterer_spec_ids2"
+                  v-model="checkAll.caterer_spec_ids2"
+                  style="margin: 0"
+                  size="mini"
+                  @change="
+                    handleCheckAllChange(
+                      $event,
+                      'caterer_spec_ids2',
+                      caterer_spec_ids2_options
+                    )
+                  "
+                  >全选</el-checkbox
+                >
+              </div>
+              <div class="clear-right">
+                <el-checkbox-group
+                  v-model="ruleForm.caterer_spec_ids2"
+                  size="mini"
+                  style="margin: 0"
+                  @change="
+                    handleCheckedCitiesChange(
+                      $event,
+                      'caterer_spec_ids2',
+                      caterer_spec_ids2_options
+                    )
+                  "
+                >
+                  <el-row>
+                    <el-col
+                      :span="3"
+                      v-for="(item, index) in caterer_spec_ids2_options"
+                      :key="item + index"
+                    >
+                      <el-checkbox style="margin: 0" size="mini" :label="item + ''">{{
+                        item
+                      }}</el-checkbox>
+                    </el-col>
+                    <el-col :span="3">
+                      <el-button
+                        size="mini"
+                        type="text"
+                        @click="openModal('caterer_spec_ids2', '会议设施', caterer_spec_ids2_options)"
+                        >添加</el-button
+                      >
+                    </el-col>
+                  </el-row>
+                </el-checkbox-group>
+              </div>
+            </div>
           </el-form-item>
-          <el-form-item label="客房设施" prop="room_spec_ids">
-            <template v-if="ruleForm && ruleForm.room_spec_ids.length > 0">
-              <el-tag
-                v-for="(tag, index) in ruleForm.room_spec_ids"
-                :key="tag"
-                closable
-                size="mini"
-                type="success"
-                :style="{ marginLeft: index !== 0 ? '5px' : '0px' }"
-              >
-                {{ tag }}
-              </el-tag>
-            </template>
-            <span v-else>请选择客房设施</span>
-            <el-button
-              size="mini"
-              class="fr"
-              type="text"
-              style="margin: 0 -30px 0 0"
-              @click="openModal('room_spec_ids', '客房设施')"
-              >添加</el-button
-            >
+          <el-form-item label="客房设施" prop="room_spec_ids" size="mini">
+            <div class="clear-main">
+              <div class="clear-left">
+                <el-checkbox
+                  :indeterminate="isIndeterminate.room_spec_ids"
+                  v-model="checkAll.room_spec_ids"
+                  size="mini"
+                  style="margin: 0"
+                  @change="
+                    handleCheckAllChange($event, 'room_spec_ids', room_spec_ids_options)
+                  "
+                  >全选</el-checkbox
+                >
+              </div>
+              <div class="clear-right">
+                <el-checkbox-group
+                  v-model="ruleForm.room_spec_ids"
+                  size="mini"
+                  style="margin: 0"
+                  @change="
+                    handleCheckedCitiesChange(
+                      $event,
+                      'room_spec_ids',
+                      room_spec_ids_options
+                    )
+                  "
+                >
+                  <el-row>
+                    <el-col
+                      :span="3"
+                      v-for="(item, index) in room_spec_ids_options"
+                      :key="item + index"
+                    >
+                      <el-checkbox style="margin: 0" size="mini" :label="item + ''">{{
+                        item
+                      }}</el-checkbox>
+                    </el-col>
+                    <el-col :span="3">
+                      <el-button
+                      size="mini"
+                        type="text"
+                        @click="openModal('room_spec_ids', '客房设施', room_spec_ids_options)"
+                        >添加</el-button
+                      >
+                    </el-col>
+                  </el-row>
+                </el-checkbox-group>
+              </div>
+            </div>
           </el-form-item>
-          <el-form-item label="餐饮设施" prop="caterer_spec_ids">
-            <template v-if="ruleForm && ruleForm.caterer_spec_ids2.length > 0">
-              <el-tag
-                v-for="(tag, index) in ruleForm.caterer_spec_ids"
-                :key="tag"
-                closable
-                size="mini"
-                type="success"
-                :style="{ marginLeft: index !== 0 ? '5px' : '0px' }"
-              >
-                {{ tag }}
-              </el-tag>
-            </template>
-            <span v-else>请选择餐饮设施</span>
-            <el-button
-              size="mini"
-              class="fr"
-              type="text"
-              style="margin: 0 -30px 0 0"
-              @click="openModal('caterer_spec_ids', '餐饮设施')"
-              >添加</el-button
-            >
+          <el-form-item label="餐饮设施" prop="caterer_spec_ids" size="mini">
+            <div class="clear-main">
+              <div class="clear-left">
+                <el-checkbox
+                  :indeterminate="isIndeterminate.caterer_spec_ids"
+                  v-model="checkAll.caterer_spec_ids"
+                  style="margin: 0"
+                  size="mini"
+                  @change="
+                    handleCheckAllChange(
+                      $event,
+                      'caterer_spec_ids',
+                      caterer_spec_ids_options
+                    )
+                  "
+                  >全选</el-checkbox
+                >
+              </div>
+              <div class="clear-right">
+                <el-checkbox-group
+                  v-model="ruleForm.caterer_spec_ids"
+                  size="mini"
+                  style="margin: 0"
+                  @change="
+                    handleCheckedCitiesChange(
+                      $event,
+                      'caterer_spec_ids',
+                      caterer_spec_ids_options
+                    )
+                  "
+                >
+                  <el-row>
+                    <el-col
+                      :span="3"
+                      v-for="(item, index) in caterer_spec_ids_options"
+                      :key="item + index"
+                    >
+                      <el-checkbox style="margin: 0" size="mini" :label="item + ''">{{
+                        item
+                      }}</el-checkbox>
+                    </el-col>
+                    <el-col :span="3">
+                      <el-button
+                      size="mini"
+                        type="text"
+                        @click="openModal('caterer_spec_ids', '餐饮设施', caterer_spec_ids_options)"
+                        >添加</el-button
+                      >
+                    </el-col>
+                  </el-row>
+                </el-checkbox-group>
+              </div>
+            </div>
           </el-form-item>
         </el-col>
-        <el-col :span="14">
+
+        <el-col :span="24">
           <el-form-item label="店铺简介" prop="store_desc">
             <el-input
               type="textarea"
@@ -163,13 +302,10 @@
               size="mini"
               :autosize="{ minRows: 12, maxRows: 12 }"
               v-model="ruleForm.store_desc"
+              show-word-limit
+              maxlength="5000"
             />
           </el-form-item>
-          <div class="tr">
-            <el-button type="primary" @click="submitForm" :size="'mini'"
-              >保 存
-            </el-button>
-          </div>
         </el-col>
       </el-row>
     </el-form>
@@ -178,7 +314,6 @@
       :option="keyOptions"
       :show-model="showModel"
       :title="modalTitle"
-      :isApi="isApi"
       @refresh="refresh"
       @cancel="showModel = false"
     />
@@ -186,9 +321,10 @@
 </template>
 <script>
 import asyncRequest from "@/apis/service/operate/shopTrim";
+import asyncRequestStyle from "@/apis/service/serviceParam/storeStyle";
 import resToken from "@/mixins/resToken";
 import DynamicTags from "@/components/dynamic-tags";
-import { formItem, rules } from "./columns";
+import { formItem, rules, config, checkAll, isIndeterminate } from "./columns";
 import addEdit from "./addEdit";
 export default {
   name: "SupplierAdd",
@@ -197,20 +333,32 @@ export default {
     DynamicTags,
     addEdit,
   },
-  props: ["sitem","store_id"],
+  props: ["sitem", "store_id"],
+  watch: {
+    store_id: function (val) {
+      this.initForm();
+    },
+  },
   data() {
     return {
+      checkAll: { ...checkAll },
+      isIndeterminate: {
+        ...isIndeterminate,
+      },
+      store_spec_ids_options: [],
+      caterer_spec_ids_options: config["caterer_spec_ids"],
+      hotel_spec_ids_options: config["hotel_spec_ids"],
+      room_spec_ids_options: config["room_spec_ids"],
+      caterer_spec_ids2_options: config["caterer_spec_ids2"],
       loading: false,
       showModel: false,
       hand_name: "",
       rules,
       modalKey: "",
-      isApi: false,
       modalTitle: "",
       keyOptions: [],
       ruleForm: { ...formItem },
       rulesThis: {},
-      tags: [],
     };
   },
   mounted() {
@@ -218,14 +366,13 @@ export default {
   },
   methods: {
     async initForm() {
-      this.ruleForm = {
-        ...formItem,
-      };
       this.hand_name = "";
       this.loading = true;
+      this.store_spec_ids_options = [];
+
       await this.resetFormData();
+      await this.searchTypeList();
       this.rulesThis = this.rules;
-      console.log(this.ruleForm);
       this.loading = false;
     },
 
@@ -237,7 +384,7 @@ export default {
           this.$refs.ruleForm.clearValidate();
           if (this.sitem && this.sitem.id) {
             const {
-              id,
+              // id,
               renovation_date,
               park_num,
               store_spec_ids,
@@ -247,12 +394,11 @@ export default {
               caterer_spec_ids2,
               store_desc,
             } = this.sitem || {};
-
             this.hand_name = person || "";
             this.ruleForm = {
-              id: id || "",
+              // id: id || "",
               renovation_date: renovation_date || "",
-              park_num: park_num || 0,
+              park_num: park_num || "0",
               store_spec_ids: store_spec_ids || [],
               caterer_spec_ids: caterer_spec_ids || [],
               hotel_spec_ids: hotel_spec_ids || [],
@@ -264,20 +410,38 @@ export default {
         }
       });
     },
-    openModal(key, title, isApi) {
+    openModal(key, title, option) {
       console.log(key);
-      this.isApi = isApi || false;
       this.modalKey = key;
       this.modalTitle = title;
-      this.keyOptions = this.ruleForm[key];
+      this.keyOptions = option;
       this.showModel = true;
     },
     refresh(e) {
-      const { valKey, value } = e;
-      console.log(e);
-      this.ruleForm[valKey] = value;
+      const { valKey, name } = e;
+      this[valKey + "_options"].push(name);
+      this.ruleForm[valKey].push(name);
       this.$refs.ruleForm.validateField(valKey);
     },
+    handleCheckAllChange(val, key, arr) {
+      console.log(val);
+      let list = [];
+      if (key === "store_spec_ids") {
+        arr.forEach((item) => {
+          list.push(item.id + "");
+        });
+      } else {
+        list = arr;
+      }
+      this.ruleForm[key] = val ? list : [];
+      console.log(this.ruleForm[key]);
+      this.isIndeterminate[key] = false;
+    },
+    handleCheckedCitiesChange(value, key, list) {
+      let checkedCount = value.length;
+      this.checkAll[key] = checkedCount === list.length;
+      this.isIndeterminate[key] = checkedCount > 0 && checkedCount < list.length;
+    },
     async submitForm() {
       await this.$refs.ruleForm.validate(async (valid) => {
         if (valid) {
@@ -286,8 +450,8 @@ export default {
           }
           this.loading = true;
           let model = JSON.parse(JSON.stringify(this.ruleForm));
-          model.store_id = 3;
-          model.id = 3;
+          model.store_id = this.store_id;
+          // model.id = this.store_id;
           model.park_num = 0;
           console.log(model);
 
@@ -309,12 +473,30 @@ export default {
         }
       });
     },
+    // 刷新表格
+    async searchTypeList() {
+      const { code, data } = await asyncRequestStyle.list({
+        limit: 999999,
+        page: 1,
+      });
+      this.store_spec_ids_options = code === 1 ? data.list : [];
+    },
   },
 };
 </script>
 
 <style lang="scss" scoped>
 .baseData {
-  padding: 26px 16px 0 0;
+  .clear-main {
+    .clear-left {
+      float: left;
+      width: 70px;
+    }
+    .clear-right {
+      float: left;
+      width: calc(100% - 70px);
+    }
+  }
+  // padding: 26px 16px 0 0;
 }
 </style>

+ 3 - 1
src/views/operate/shopTrim/conference/addEdit.vue

@@ -138,7 +138,7 @@ import { formItem, rules, parmValue } from "./columns";
 // import MapModal from "./mapModal.vue"
 export default {
   name: "shop",
-  props: ["showModel", "id", "isDetail", "sitem"],
+  props: ["showModel", "id", "isDetail", "sitem",'store_id'],
   // components:{ MapModal },
   data() {
     return {
@@ -234,6 +234,8 @@ export default {
           if (!this.loading) {
             this.loading = true;
             let model = JSON.parse(JSON.stringify(this.ruleForm));
+            model.type="会议室"
+            model.store_id = this.store_id;
             let res = {};
             if (this.id === "add") {
               delete model["id"];

+ 6 - 0
src/views/operate/shopTrim/conference/index.vue

@@ -52,6 +52,7 @@
     <add-edit
       :id="modelId"
       :sitem="sitem"
+      :store_id="store_id"
       :show-model="showModel"
       :is-detail="isDetail"
       @refresh="searchList"
@@ -94,6 +95,11 @@ export default {
       return action ?? [];
     },
   },
+  watch: {
+    store_id: function (val) {
+      this.restSearch();
+    },
+  },
   data() {
     return {
       statusList,

+ 3 - 1
src/views/operate/shopTrim/guest/addEdit.vue

@@ -137,7 +137,7 @@ import { formItem, rules, parmValue } from "./columns";
 // import MapModal from "./mapModal.vue"
 export default {
   name: "shop",
-  props: ["showModel", "id", "isDetail", "sitem"],
+  props: ["showModel", "id", "isDetail", "sitem","store_id"],
   // components:{ MapModal },
   data() {
     return {
@@ -225,6 +225,8 @@ export default {
           if (!this.loading) {
             this.loading = true;
             let model = JSON.parse(JSON.stringify(this.ruleForm));
+            model.type="客房"
+            model.store_id = this.store_id;
             let res = {};
             if (this.id === "add") {
               delete model["id"];

+ 6 - 0
src/views/operate/shopTrim/guest/index.vue

@@ -52,6 +52,7 @@
     <add-edit
       :id="modelId"
       :sitem="sitem"
+      :store_id="store_id"
       :show-model="showModel"
       :is-detail="isDetail"
       @refresh="searchList"
@@ -94,6 +95,11 @@ export default {
       return action ?? [];
     },
   },
+  watch: {
+    store_id: function (val) {
+      this.restSearch();
+    },
+  },
   data() {
     return {
       statusList,

+ 16 - 13
src/views/operate/shopTrim/index.vue

@@ -29,32 +29,33 @@
           <el-row class="shopTrim-add">
             <el-col :span="8" class="shopTrim-add-el-col">
               <div class="label">店铺名称:</div>
-              <div class="name">11{{ sitem.storeSpec }}</div>
+              <div class="name">{{ sitem.store_name }}</div>
             </el-col>
             <el-col :span="8" class="shopTrim-add-el-col">
               <div class="label">供应商名称:</div>
-              <div class="name">22{{ sitem.storeSpec }}</div>
+              <div class="name">{{ sitem.supplier?sitem.supplier.name:''}}</div>
             </el-col>
           </el-row>
         </div>
-        <el-tabs :tab-position="'left'" v-model="activeName" size="medium">
+        <!-- :tab-position="'left'" -->
+        <el-tabs  v-model="activeName" size="medium">
           <el-tab-pane label="基础信息" name="1">
-            <baseData :store_id="roleActiveId" />
+            <baseData :store_id="roleActiveId" :sitem="sitem"  v-if="activeName==='1'"/>
           </el-tab-pane>
           <el-tab-pane label="曾办活动" name="2">
-            <activity :store_id="roleActiveId" />
+            <activity :store_id="roleActiveId" v-if="activeName==='2'"/>
           </el-tab-pane>
           <el-tab-pane label="会议室信息" name="4">
-            <conference :store_id="roleActiveId" />
+            <conference :store_id="roleActiveId" v-if="activeName==='4'"/>
           </el-tab-pane>
           <el-tab-pane label="客房信息" name="5">
-            <guest :store_id="roleActiveId" />
+            <guest :store_id="roleActiveId" v-if="activeName==='5'"/>
           </el-tab-pane>
           <el-tab-pane label="会议服务设施" name="6">
-            <service :store_id="roleActiveId" />
+            <service :store_id="roleActiveId" v-if="activeName==='6'" />
           </el-tab-pane>
           <el-tab-pane label="店铺详情图" name="3">
-            <pictureImg :store_id="roleActiveId" />
+            <pictureImg :store_id="roleActiveId" v-if="activeName==='3'" />
           </el-tab-pane>
         </el-tabs>
       </div>
@@ -89,7 +90,7 @@ export default {
   },
   data() {
     return {
-      activeName: "3",
+      activeName: "1",
       sitem: null,
       // 按钮是否可点击
       isBtnDisabled: true,
@@ -117,9 +118,11 @@ export default {
     // 切换角色
     switchRoleHandle(item) {
       this.roleActiveId = item.id;
-      this.$nextTick(async () => {
-        await this.refreshRoleDetail(String(this.roleActiveId));
-      });
+      this.sitem=item
+      this.isBtnDisabled = false;
+      // this.$nextTick(async () => {
+      //   await this.refreshRoleDetail(String(this.roleActiveId));
+      // });
     },
     // 保存
     async save() {

+ 3 - 1
src/views/operate/shopTrim/picture/addEdit.vue

@@ -101,7 +101,7 @@ import { formItem, rules, parmValue } from "./columns";
 // import MapModal from "./mapModal.vue"
 export default {
   name: "shop",
-  props: ["showModel", "id", "isDetail", "sitem"],
+  props: ["showModel", "id", "isDetail", "sitem","store_id"],
   // components:{ MapModal },
   data() {
     return {
@@ -185,6 +185,8 @@ export default {
           if (!this.loading) {
             this.loading = true;
             let model = JSON.parse(JSON.stringify(this.ruleForm));
+            model.type="详情图片"
+            model.store_id = this.store_id;
             let res = {};
             if (this.id === "add") {
               delete model["id"];

+ 6 - 0
src/views/operate/shopTrim/picture/index.vue

@@ -52,6 +52,7 @@
     <add-edit
       :id="modelId"
       :sitem="sitem"
+      :store_id="store_id"
       :show-model="showModel"
       :is-detail="isDetail"
       @refresh="searchList"
@@ -94,6 +95,11 @@ export default {
       return action ?? [];
     },
   },
+  watch: {
+    store_id: function (val) {
+      this.restSearch();
+    },
+  },
   data() {
     return {
       statusList,

+ 3 - 1
src/views/operate/shopTrim/service/addEdit.vue

@@ -127,7 +127,7 @@ import { formItem, rules, parmValue } from "./columns";
 // import MapModal from "./mapModal.vue"
 export default {
   name: "shop",
-  props: ["showModel", "id", "isDetail", "sitem"],
+  props: ["showModel", "id", "isDetail", "sitem","store_id"],
   // components:{ MapModal },
   data() {
     return {
@@ -215,6 +215,8 @@ export default {
           if (!this.loading) {
             this.loading = true;
             let model = JSON.parse(JSON.stringify(this.ruleForm));
+            model.type="会议服务设施"
+            model.store_id = this.store_id;
             let res = {};
             if (this.id === "add") {
               delete model["id"];

+ 6 - 0
src/views/operate/shopTrim/service/index.vue

@@ -52,6 +52,7 @@
     <add-edit
       :id="modelId"
       :sitem="sitem"
+      :store_id="store_id"
       :show-model="showModel"
       :is-detail="isDetail"
       @refresh="searchList"
@@ -94,6 +95,11 @@ export default {
       return action ?? [];
     },
   },
+  watch: {
+    store_id: function (val) {
+      this.restSearch();
+    },
+  },
   data() {
     return {
       statusList,