소스 검색

系统设置添加地图选点组件 添加门店信息 底部导航栏添加第五导航
添加芳香生活背景图

lkg 11 달 전
부모
커밋
2d446bb07c

+ 0 - 1
dist/assets/ArticleClass-deb50866.css

@@ -1 +0,0 @@
-@charset "UTF-8";.el-menu[data-v-dfcd409f]{border-right:none}.el-menu .el-menu-item[data-v-dfcd409f]{height:auto;line-height:40px!important}.el-menu .el-sub-menu[data-v-dfcd409f]{display:grid}.el-table__header-wrapper tr th[data-v-dfcd409f]{background-color:#f5f5f7!important}.el-dialog__header[data-v-dfcd409f]{background-color:#f5f5f7;margin-right:0}.el-dialog__footer[data-v-dfcd409f]{border-top:1px solid #f5f5f7;padding-bottom:10px}.el-drawer__header[data-v-dfcd409f]{margin-bottom:0!important}html[data-v-dfcd409f],body[data-v-dfcd409f]{margin:0;padding:0;background:#f5f7fb;min-width:1200px}.box-shadow[data-v-dfcd409f]{box-shadow:0 0 13px #3030324b}.pagination-box[data-v-dfcd409f]{display:flex;justify-content:center;margin-top:10px}[data-v-dfcd409f]::-webkit-scrollbar{height:7px;width:5px}[data-v-dfcd409f]::-webkit-scrollbar-thumb{background:#d8d8d8;border-radius:10px}[data-v-dfcd409f]::-webkit-scrollbar-track-piece{background:transparent}.drawer-content[data-v-dfcd409f]{width:100%;height:calc(100% - 5px);overflow:hidden;overflow-y:auto}.drawer-foot[data-v-dfcd409f]{margin-top:10px}.article-class-page[data-v-dfcd409f]{width:100%;height:100%}.article-class-page .article-class-title[data-v-dfcd409f]{width:100%;display:flex;justify-content:space-between;border-bottom:1px solid #eeeeee;padding-bottom:10px}.article-class-page .article-class-title .article-class-title-left[data-v-dfcd409f]{font-size:18px;font-weight:700;color:#172b4d}.article-class-page .article-class-title .article-class-title-left[data-v-dfcd409f] .el-form-item{margin-bottom:0}.article-class-page .article-class-table[data-v-dfcd409f]{padding:10px;box-sizing:border-box}.article-class-page .article-class-table .table-img[data-v-dfcd409f]{width:50px;height:50px;object-fit:cover;cursor:pointer}.article-class-page .article-class-table .table-img[data-v-dfcd409f]:hover{transform:scale(.97);transition:all .3s}

+ 0 - 1
dist/assets/DialogClass-bad8c924.css

@@ -1 +0,0 @@
-@charset "UTF-8";.el-menu[data-v-6b9e6449]{border-right:none}.el-menu .el-menu-item[data-v-6b9e6449]{height:auto;line-height:40px!important}.el-menu .el-sub-menu[data-v-6b9e6449]{display:grid}.el-table__header-wrapper tr th[data-v-6b9e6449]{background-color:#f5f5f7!important}.el-dialog__header[data-v-6b9e6449]{background-color:#f5f5f7;margin-right:0}.el-dialog__footer[data-v-6b9e6449]{border-top:1px solid #f5f5f7;padding-bottom:10px}.el-drawer__header[data-v-6b9e6449]{margin-bottom:0!important}html[data-v-6b9e6449],body[data-v-6b9e6449]{margin:0;padding:0;background:#f5f7fb;min-width:1200px}.box-shadow[data-v-6b9e6449]{box-shadow:0 0 13px #3030324b}.pagination-box[data-v-6b9e6449]{display:flex;justify-content:center;margin-top:10px}[data-v-6b9e6449]::-webkit-scrollbar{height:7px;width:5px}[data-v-6b9e6449]::-webkit-scrollbar-thumb{background:#d8d8d8;border-radius:10px}[data-v-6b9e6449]::-webkit-scrollbar-track-piece{background:transparent}.drawer-content[data-v-6b9e6449]{width:100%;height:calc(100% - 5px);overflow:hidden;overflow-y:auto}.drawer-foot[data-v-6b9e6449]{margin-top:10px}.class-dialog[data-v-6b9e6449] .el-form-item{width:100%;margin-right:0;padding-right:10px;box-sizing:border-box}.class-dialog[data-v-6b9e6449] .el-form-item .el-input{width:100%}

+ 0 - 1
dist/assets/DialogContent-a5782854.css

@@ -1 +0,0 @@
-@charset "UTF-8";.el-menu[data-v-e6a509a5]{border-right:none}.el-menu .el-menu-item[data-v-e6a509a5]{height:auto;line-height:40px!important}.el-menu .el-sub-menu[data-v-e6a509a5]{display:grid}.el-table__header-wrapper tr th[data-v-e6a509a5]{background-color:#f5f5f7!important}.el-dialog__header[data-v-e6a509a5]{background-color:#f5f5f7;margin-right:0}.el-dialog__footer[data-v-e6a509a5]{border-top:1px solid #f5f5f7;padding-bottom:10px}.el-drawer__header[data-v-e6a509a5]{margin-bottom:0!important}html[data-v-e6a509a5],body[data-v-e6a509a5]{margin:0;padding:0;background:#f5f7fb;min-width:1200px}.box-shadow[data-v-e6a509a5]{box-shadow:0 0 13px #3030324b}.pagination-box[data-v-e6a509a5]{display:flex;justify-content:center;margin-top:10px}[data-v-e6a509a5]::-webkit-scrollbar{height:7px;width:5px}[data-v-e6a509a5]::-webkit-scrollbar-thumb{background:#d8d8d8;border-radius:10px}[data-v-e6a509a5]::-webkit-scrollbar-track-piece{background:transparent}.drawer-content[data-v-e6a509a5]{width:100%;height:calc(100% - 5px);overflow:hidden;overflow-y:auto}.drawer-foot[data-v-e6a509a5]{margin-top:10px}.adver-dialog[data-v-e6a509a5] .el-form-item{width:50%;margin-right:0;padding-right:10px;box-sizing:border-box}.adver-dialog[data-v-e6a509a5] .el-form-item .el-input{width:100%}.adver-dialog .img-box[data-v-e6a509a5]{display:inline-block;margin-right:5px;width:148px;position:relative}.adver-dialog .img-box img[data-v-e6a509a5]{width:100%;height:140px;object-fit:cover}.adver-dialog .img-box .occlusion[data-v-e6a509a5]{display:none;width:100%;height:140px;background:rgba(158,156,156,.4588235294);position:absolute;top:0;left:0;z-index:99;text-align:center}.adver-dialog .img-box .occlusion .del[data-v-e6a509a5]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:148px;color:#464444;cursor:pointer;font-size:large}.adver-dialog .img-box .occlusion .del[data-v-e6a509a5]:hover{color:#828385}.adver-dialog .img-box:hover .occlusion[data-v-e6a509a5]{display:block}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/assets/DialogManage-ab6373fc.css


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/assets/ProductList-5cb9973f.css


+ 0 - 1
dist/assets/Shop-eb458e8b.css

@@ -1 +0,0 @@
-@charset "UTF-8";.el-menu[data-v-40ac966a]{border-right:none}.el-menu .el-menu-item[data-v-40ac966a]{height:auto;line-height:40px!important}.el-menu .el-sub-menu[data-v-40ac966a]{display:grid}.el-table__header-wrapper tr th[data-v-40ac966a]{background-color:#f5f5f7!important}.el-dialog__header[data-v-40ac966a]{background-color:#f5f5f7;margin-right:0}.el-dialog__footer[data-v-40ac966a]{border-top:1px solid #f5f5f7;padding-bottom:10px}.el-drawer__header[data-v-40ac966a]{margin-bottom:0!important}html[data-v-40ac966a],body[data-v-40ac966a]{margin:0;padding:0;background:#f5f7fb;min-width:1200px}.box-shadow[data-v-40ac966a]{box-shadow:0 0 13px #3030324b}.pagination-box[data-v-40ac966a]{display:flex;justify-content:center;margin-top:10px}[data-v-40ac966a]::-webkit-scrollbar{height:7px;width:5px}[data-v-40ac966a]::-webkit-scrollbar-thumb{background:#d8d8d8;border-radius:10px}[data-v-40ac966a]::-webkit-scrollbar-track-piece{background:transparent}.drawer-content[data-v-40ac966a]{width:100%;height:calc(100% - 5px);overflow:hidden;overflow-y:auto}.drawer-foot[data-v-40ac966a]{margin-top:10px}.config-wx[data-v-40ac966a]{width:100%;height:100%;overflow:hidden;overflow-y:auto}.config-wx .wx-title[data-v-40ac966a]{font-size:18px;font-weight:700;margin:10px 0}.config-wx .img-box[data-v-40ac966a]{display:inline-block;margin-right:5px;width:148px;position:relative}.config-wx .img-box img[data-v-40ac966a]{width:100%;height:140px;object-fit:cover}.config-wx .img-box .occlusion[data-v-40ac966a]{display:none;width:100%;height:140px;background:rgba(158,156,156,.4588235294);position:absolute;top:0;left:0;z-index:99;text-align:center}.config-wx .img-box .occlusion .del[data-v-40ac966a]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:148px;color:#464444;cursor:pointer;font-size:large}.config-wx .img-box .occlusion .del[data-v-40ac966a]:hover{color:#828385}.config-wx .img-box:hover .occlusion[data-v-40ac966a]{display:block}

+ 1 - 1
dist/index.html

@@ -9,7 +9,7 @@
       type="text/javascript"
     ></script>
     <title></title>
-    <script type="module" crossorigin src="./assets/index-94429534.js"></script>
+    <script type="module" crossorigin src="./assets/index-2d37c11c.js"></script>
     <link rel="stylesheet" href="./assets/index-c07b1e4f.css">
   </head>
   <body>

+ 38 - 0
package-lock.json

@@ -1108,6 +1108,16 @@
         "mime-types": "^2.1.12"
       }
     },
+    "fs-extra": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz",
+      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+      "requires": {
+        "graceful-fs": "^4.2.0",
+        "jsonfile": "^6.0.1",
+        "universalify": "^2.0.0"
+      }
+    },
     "fsevents": {
       "version": "2.3.3",
       "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
@@ -1142,6 +1152,11 @@
       "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==",
       "dev": true
     },
+    "graceful-fs": {
+      "version": "4.2.11",
+      "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
+      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+    },
     "hasown": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
@@ -1253,6 +1268,15 @@
       "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
       "dev": true
     },
+    "jsonfile": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+      "requires": {
+        "graceful-fs": "^4.1.6",
+        "universalify": "^2.0.0"
+      }
+    },
     "kolorist": {
       "version": "1.8.0",
       "resolved": "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz",
@@ -1741,6 +1765,15 @@
       "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
       "dev": true
     },
+    "tlbs-map-vue": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/tlbs-map-vue/-/tlbs-map-vue-1.2.1.tgz",
+      "integrity": "sha512-9HJPXoJT/6cysUbsn//4qI0IrDdY+PDBKyVbKwDsIMhLdeAi12ZF1S6/a9tVW05RKet13oN5njCKJaj5yvYJKQ==",
+      "requires": {
+        "fs-extra": "^10.1.0",
+        "vue-demi": "^0.14.6"
+      }
+    },
     "to-regex-range": {
       "version": "5.0.1",
       "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -1805,6 +1838,11 @@
         }
       }
     },
+    "universalify": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz",
+      "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="
+    },
     "unplugin": {
       "version": "1.16.0",
       "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.16.0.tgz",

+ 1 - 0
package.json

@@ -16,6 +16,7 @@
     "element-plus": "^2.3.7",
     "mitt": "^3.0.1",
     "pinia": "^2.1.3",
+    "tlbs-map-vue": "^1.2.1",
     "uuid": "^9.0.0",
     "vue": "^3.3.4",
     "vue-router": "^4.2.2"

+ 2 - 1
src/main.js

@@ -3,6 +3,7 @@ import { createPinia } from "pinia";
 
 import App from "./App.vue";
 import router from "./router";
+import TlbsMap from 'tlbs-map-vue';
 
 // import * as ElementPlusIconsVue from "@element-plus/icons-vue";
 
@@ -24,5 +25,5 @@ for (const [key, component] of Object.entries(componentPage)) {
 
 app.use(createPinia());
 app.use(router);
-
+app.use(TlbsMap);
 app.mount("#app");

+ 6 - 1
src/views/shoppingContent/components/DialogClass.vue

@@ -212,7 +212,12 @@ function submit() {
     }
   });
 }
-
+watch(dialogVisible, (newValue, oldValue) => {
+  if (newValue) {
+  } else {
+    fileList.value = [];
+  }
+});
 onMounted(() => {
 });
 defineExpose({

+ 17 - 5
src/views/shoppingContent/components/DialogContent.vue

@@ -44,7 +44,7 @@
                 <IEpPlus />
               </el-icon>
             </el-upload>
-            <el-dialog :visible.sync="loading2">
+            <el-dialog v-model="loading2" open-delay="1" destroy-on-close >
               <img width="100%" :src="ruleForm.value.cover" alt="">
             </el-dialog>
           </el-form-item>
@@ -116,6 +116,12 @@ function handleClose(done) {
       // catch error
     });
 }
+watch(dialogVisible, (newValue, oldValue) => {
+  if (newValue) {
+  } else {
+    fileList.value = [];
+  }
+});
 let title = ref("");
 let ruleFormRef = ref(null);
 function initFun(type, row) {
@@ -129,7 +135,6 @@ function initFun(type, row) {
     nextTick(() => {
       richPageRef.value.valueHtml = "";
     });
-    fileList.value = [];
   } else {
     title.value = "编辑";
     ruleForm.value = Object.assign({}, row);
@@ -137,14 +142,11 @@ function initFun(type, row) {
       richPageRef.value.valueHtml = row.content;
     });
     if (ruleForm.value.cover.length>0){
-      loading2.value = true;
       fileList.value = [{
         name: 'cover',
         url: ruleForm.value.cover,
         uid: Date.now().toString() // 唯一标识符
       }];
-    }else{
-      fileList.value = [];
     }
 
   }
@@ -152,6 +154,9 @@ function initFun(type, row) {
   dialogVisible.value = true;
 }
 
+
+
+
 let loading = ref(false);
 let loading2 = ref(false);
 
@@ -185,6 +190,13 @@ function submit() {
     if (valid) {
       ruleForm.value.content = richPageRef.value.valueHtml;
       if (!ruleForm.value.content) return ElMessage.warning("请输入文章内容!");
+      if (ruleForm.value.cate_id){
+        if ( typeof ruleForm.value.cate_id != 'string'&& typeof ruleForm.value.cate_id != 'number' ){
+          ruleForm.value.cate_id.length > 0 ? ruleForm.value.cate_id = ruleForm.value.cate_id[ruleForm.value.cate_id.length - 1] : ruleForm.value.cate_id = 0
+        }
+      }else{
+        ruleForm.value.cate_id=0
+      }
 
       if (!ruleForm.value.id) {
         addApi(ruleForm.value).then((data) => {

+ 114 - 0
src/views/system/components/DialogMap.vue

@@ -0,0 +1,114 @@
+<template>
+  <div id="container"></div>
+</template>
+
+<script setup>
+import { onMounted } from 'vue';
+const props = defineProps({
+  latlng: {
+    type: String,
+    default: ''
+  },
+  store_name: {
+    type: String,
+    default: ''
+  }
+});
+const emit = defineEmits(['update-latlng']);
+// 动态加载地图库脚本
+function loadScript(src) {
+  return new Promise((resolve, reject) => {
+    const script = document.createElement('script');
+    script.src = src;
+    script.onload = () => resolve(script);
+    script.onerror = () => reject(new Error(`Failed to load script ${src}`));
+    document.head.appendChild(script);
+  });
+}
+let Lat=ref(36.66686791518035)
+let Lng=ref(117.1120305701611)
+let name=ref("")
+
+// 地图初始化函数,本例取名为initMap,开发者可根据实际情况定义
+function initMap() {
+  if (props.latlng){
+    const [lat, lng] = props.latlng.split(',');
+    Lat.value=parseFloat(lat)
+    Lng.value=parseFloat(lng)
+  }
+  var center = new TMap.LatLng(Lat.value,Lng.value ); // 设置中心点坐标
+  // 初始化地图
+  var map = new TMap.Map(document.getElementById('container'), {
+    center: center,
+    zoom: 17.2, // 设置地图缩放级别
+    pitch: 43.5, // 设置俯仰角
+    rotation: 45 // 设置地图旋转角度
+  });
+
+  // 创建并初始化 MultiMarker
+  var markerLayer = new TMap.MultiMarker({
+    map: map, // 指定地图容器
+    // 样式定义
+    styles: {
+      // 创建一个 styleId 为 "myStyle" 的样式(styles 的子属性名即为 styleId)
+      "myStyle": new TMap.MarkerStyle({
+        "width": 25, // 点标记样式宽度(像素)
+        "height": 35, // 点标记样式高度(像素)
+        // 焦点在图片中的像素位置,一般大头针类似形式的图片以针尖位置做为焦点,圆形点以圆心位置为焦点
+        "anchor": { x: 16, y: 32 }
+      })
+    },
+    // 点标记数据数组
+    geometries: [{
+      "id": "1", // 点标记唯一标识,后续如果有删除、修改位置等操作,都需要此id
+      "styleId": 'myStyle', // 指定样式id
+      "position": new TMap.LatLng(Lat.value,Lng.value), // 点标记坐标位置
+      "properties": { // 自定义属性
+        "title": "marker1"
+      }
+    }]
+  });
+
+
+  // 监听回调函数(非匿名函数)
+  var clickHandler = function (evt) {
+    Lat.value= evt.latLng.lat
+    Lng.value= evt.latLng.lng
+    markerLayer.updateGeometries([{
+      "id": "1", // 点标记唯一标识,后续如果有删除、修改位置等操作,都需要此id
+      "styleId": 'myStyle', // 指定样式id
+      "position": new TMap.LatLng(Lat.value,Lng.value), // 点标记坐标位置
+      "properties": { // 自定义属性
+        "title": "marker1"
+      }
+    }])
+    if (evt.poi&&evt.poi.name){
+      name.value=evt.poi.name
+      emit('update-store-name', name.value=evt.poi.name);
+    }
+    const newLatlng = `${Lat.value},${Lng.value}`;
+    emit('update-latlng', newLatlng);
+  };
+
+  console.log(map);
+
+  // 监听 marker 点击事件
+  map.on("click", clickHandler);
+}
+
+onMounted(async () => {
+  try {
+    await loadScript('https://map.qq.com/api/gljs?v=1.exp&key=4NPBZ-ZGT6I-JI4GF-UDDOT-AA2H2-DEF7C');
+    initMap();
+  } catch (error) {
+  }
+});
+</script>
+
+<style>
+#container {
+  /* 地图(容器)显示大小 */
+  width: 100%;
+  height:  100%;
+}
+</style>

+ 62 - 2
src/views/system/config/page/Base.vue

@@ -13,7 +13,6 @@
       ]">
         <div class="img-box" v-for="(item, i) in imgList" :key="i">
           <img :src="item.url" alt="" />
-
           <div class="occlusion">
             <el-icon class="del" @click="handleRemove(i)">
               <IEpDelete />
@@ -27,6 +26,29 @@
           </el-icon>
         </el-upload>
       </el-form-item>
+      <el-form-item prop="latlng" label="地图坐标" :rules="[{ required: true, message: '请选择地图坐标', trigger: 'blur' }]">
+        <el-input v-model="formData.latlng"  disabled style="width: 40%" />
+        <div style="width: 100%; font-size: 12px; color: red">
+          *点击地图选择坐标
+        </div>
+        <div style="width: 650px;height: 650px">
+          <DialogMap :latlng="formData.latlng" :store_name="formData.store_name"  @update-store-name="updateStoreName"  @update-latlng="updateLatlng" />
+        </div>
+      </el-form-item>
+
+      <el-form-item prop="store_name" label="门店名称" :rules="[{ required: true, message: '输入门店名称', trigger: 'blur' }]">
+        <el-input v-model="formData.store_name" placeholder="输入门店名称" style="width: 40%" />
+      </el-form-item>
+      <el-form-item prop="store_phone" label="门店电话" :rules="[{ required: true, message: '输入门店电话', trigger: 'blur' }]">
+        <el-input v-model="formData.store_phone" placeholder="输入门店电话" style="width: 40%" />
+      </el-form-item>
+      <el-form-item prop="store_position" label="门店位置" :rules="[{ required: true, message: '输入门店位置', trigger: 'blur' }]">
+        <el-input v-model="formData.store_position" placeholder="输入门店位置" style="width: 40%" />
+      </el-form-item>
+      <el-form-item prop="business_hours" label="营业时间" :rules="[{ required: true, message: '输入营业时间', trigger: 'blur' }]">
+        <el-input v-model="formData.business_hours" placeholder="输入营业时间" style="width: 40%" />
+      </el-form-item>
+
       <el-form-item label="小程序LOGO" :rules="[
         { required: true, message: '上传小程序LOGO', trigger: 'change' },
       ]">
@@ -57,9 +79,20 @@ import { uploadImgApi } from "@/plugins/api/upload";
 import { configAddApi } from "@/plugins/api/system/config";
 import { configApi } from "@/plugins/api/login";
 import { useCounterStore } from "@/stores/counter.js";
+import DialogMap from "../../components/DialogMap.vue";
 const store = useCounterStore();
 
-let formData = ref({});
+const formData = ref({
+  latlng: '',
+  store_name:""
+});
+
+const updateLatlng = (newLatlng) => {
+  formData.value.latlng = newLatlng;
+};
+const updateStoreName = (newStoreName) => {
+  formData.value.store_name = newStoreName;
+};
 // 商城logo
 let siteLogo = ref("");
 let imgList = ref([]);
@@ -133,6 +166,25 @@ function submit() {
           conf_name: "base.site_name",
           conf_value: formData.value.site_name,
         },
+        {
+          conf_name: "wechat.latlng",
+          conf_value: formData.value.latlng,
+        },
+        {
+          conf_name: "wechat.store_name",
+          conf_value: formData.value.store_name,
+        },
+        {
+          conf_name: "wechat.store_phone",
+          conf_value: formData.value.store_phone,
+        },
+        {
+          conf_name: "wechat.store_position",
+          conf_value: formData.value.store_position,
+        },       {
+          conf_name: "wechat.business_hours",
+          conf_value: formData.value.business_hours,
+        },
         {
           conf_name: "base.site_logo",
           conf_value: siteLogo.value,
@@ -176,6 +228,12 @@ function getConfigApi() {
     });
     //
     document.title = data.base.site_name;
+
+    formData.value.latlng = data.wechat.latlng;
+    formData.value.store_name = data.wechat.store_name;
+    formData.value.store_phone = data.wechat.store_phone;
+    formData.value.store_position = data.wechat.store_position;
+    formData.value.business_hours = data.wechat.business_hours;
   });
 }
 onMounted(() => {
@@ -186,6 +244,8 @@ onMounted(() => {
 .config-base {
   width: 100%;
   height: 100%;
+  overflow: hidden;
+  overflow-y: auto;
 
   .img-box {
     display: inline-block;

+ 85 - 0
src/views/system/config/page/BottomMenu.vue

@@ -161,7 +161,44 @@
           </el-icon>
         </el-upload>
       </el-form-item>
+      <el-form-item label="菜单按钮5激活图片" :rules="[
+        { required: true, message: '上传菜单按钮5激活图片', trigger: 'change' },
+      ]">
+        <div class="img-box" v-for="(item, i) in menu5OnList" :key="i">
+          <img :src="item.url" alt="" />
 
+          <div class="occlusion">
+            <el-icon class="del" @click="handleRemove(9, i)">
+              <IEpDelete />
+            </el-icon>
+          </div>
+        </div>
+        <el-upload action="#" list-type="picture-card" :auto-upload="false" :show-file-list="false"
+                   :file-list="menu5OnList" :on-change="onChange(9)">
+          <el-icon>
+            <IEpPlus />
+          </el-icon>
+        </el-upload>
+      </el-form-item>
+      <el-form-item label="菜单按钮5非激活图片" :rules="[
+        { required: true, message: '上传菜单按钮5非激活图片', trigger: 'change' },
+      ]">
+        <div class="img-box" v-for="(item, i) in menu5OffList" :key="i">
+          <img :src="item.url" alt="" />
+
+          <div class="occlusion">
+            <el-icon class="del" @click="handleRemove(10, i)">
+              <IEpDelete />
+            </el-icon>
+          </div>
+        </div>
+        <el-upload action="#" list-type="picture-card" :auto-upload="false" :show-file-list="false"
+                   :file-list="menu5OffList" :on-change="onChange(10)">
+          <el-icon>
+            <IEpPlus />
+          </el-icon>
+        </el-upload>
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" @click="submit">提交</el-button>
       </el-form-item>
@@ -200,6 +237,10 @@ let menu4OnList = ref([]);
 
 let menu4OffList = ref([]);
 
+let menu5OnList = ref([]);
+
+let menu5OffList = ref([]);
+
 const onChange = (type) => {
   return (file, fileList) => {
     // 在这里,你可以通过 type 来区分是哪个上传器触发了事件
@@ -283,6 +324,22 @@ const onChange = (type) => {
               menu4OffList.value.push(obj);
             }
             break;
+          case 9:
+            if (menu5OnList.value.length > 0) {
+              menu5OnList.value = [];
+              menu5OnList.value.push(obj);
+            } else {
+              menu5OnList.value.push(obj);
+            }
+            break;
+          case 10:
+            if (menu5OffList.value.length > 0) {
+              menu5OffList.value = [];
+              menu5OffList.value.push(obj);
+            } else {
+              menu5OffList.value.push(obj);
+            }
+            break;
           default:
             loading.value = false;
             break;
@@ -325,6 +382,12 @@ const handleRemove = (type, index) => {
     case 8:
       menu4OffList.value.splice(index, 1);
       break;
+    case 9:
+      menu5OnList.value.splice(index, 1);
+      break;
+    case 10:
+      menu5OffList.value.splice(index, 1);
+      break;
     default:
       break;
   }
@@ -339,6 +402,8 @@ const submit = () => {
     const menu3_off = menu3OffList.value && menu3OffList.value.length ? menu3OffList.value[0].url.replace(import.meta.env.VITE_APP_BASE_API, '') : null
     const menu4_on = menu4OnList.value && menu4OnList.value.length ? menu4OnList.value[0].url.replace(import.meta.env.VITE_APP_BASE_API, '') : null
     const menu4_off = menu4OffList.value && menu4OffList.value.length ? menu4OffList.value[0].url.replace(import.meta.env.VITE_APP_BASE_API, '') : null
+    const menu5_on = menu5OnList.value && menu5OnList.value.length ? menu5OnList.value[0].url.replace(import.meta.env.VITE_APP_BASE_API, '') : null
+    const menu5_off = menu5OffList.value && menu5OffList.value.length ? menu5OffList.value[0].url.replace(import.meta.env.VITE_APP_BASE_API, '') : null
     if (valid) {
       let arr = [
         {
@@ -372,6 +437,14 @@ const submit = () => {
         {
           conf_name: "wechat.menu4_off",
           conf_value: menu4_off,
+        },
+        {
+          conf_name: "wechat.menu5_on",
+          conf_value: menu5_on,
+        },
+        {
+          conf_name: "wechat.menu5_off",
+          conf_value: menu5_off,
         }
       ];
 
@@ -444,6 +517,18 @@ const getConfigApi = () => {
         url: import.meta.env.VITE_APP_BASE_API + data.wechat.menu4_off,
       });
     }
+    if (data?.wechat?.menu5_on) {
+      menu5OnList.value = [];
+      menu5OnList.value.push({
+        url: import.meta.env.VITE_APP_BASE_API + data.wechat.menu5_on,
+      });
+    }
+    if (data?.wechat?.menu5_off) {
+      menu5OffList.value = [];
+      menu5OffList.value.push({
+        url: import.meta.env.VITE_APP_BASE_API + data.wechat.menu5_off,
+      });
+    }
 
   });
 }

+ 52 - 6
src/views/system/config/page/Shop.vue

@@ -111,6 +111,25 @@
           </el-icon>
         </el-upload>
       </el-form-item>
+      <el-form-item label="芳香生活背景图" :rules="[
+        { required: true, message: '上传芳香生活背景图', trigger: 'change' },
+      ]">
+        <div class="img-box" v-for="(item, i) in fxshBgList" :key="i">
+          <img :src="item.url" alt="" />
+
+          <div class="occlusion">
+            <el-icon class="del" @click="handleRemove(10, i)">
+              <IEpDelete />
+            </el-icon>
+          </div>
+        </div>
+        <el-upload action="#" list-type="picture-card" :auto-upload="false" :show-file-list="false"
+                   :file-list="fxshBgList" :on-change="onChange(10)">
+          <el-icon>
+            <IEpPlus />
+          </el-icon>
+        </el-upload>
+      </el-form-item>
       <el-form-item label="个人中心背景图" :rules="[
         { required: true, message: '上传个人中心背景图', trigger: 'change' },
       ]">
@@ -237,7 +256,8 @@ let CSWeChatList = ref([]);
 // 优惠券
 let couponBgList = ref([]);
 
-
+// 芳香生活
+let fxshBgList = ref([]);
 // 加入会员广告图
 let joinVipAdList = ref([]);
 
@@ -351,6 +371,15 @@ const onChange = (type) => {
               couponBgList.value.push(obj);
             }
             break;
+          case 10:
+            // 上传芳香生活
+            if (fxshBgList.value.length > 0) {
+              fxshBgList.value = [];
+              fxshBgList.value.push(obj);
+            } else {
+              fxshBgList.value.push(obj);
+            }
+            break;
         }
         loading.value = false;
         //
@@ -394,7 +423,9 @@ const handleRemove = (type, index) => {
     case 9:
       couponBgList.value.splice(index, 1);
       break;
-
+    case 10:
+      fxshBgList.value.splice(index, 1);
+      break;
     default:
       break;
   }
@@ -406,6 +437,7 @@ const submit = () => {
     const shop_bgimg = mainBgList.value && mainBgList.value.length ? mainBgList.value[0].url.replace(import.meta.env.VITE_APP_BASE_API, '') : null
     const wx_bgimg = CSWeChatList.value && CSWeChatList.value.length ? CSWeChatList.value[0].url.replace(import.meta.env.VITE_APP_BASE_API, '') : null
     const youhuiquan_bgimg= couponBgList.value && couponBgList.value.length ? couponBgList.value[0].url.replace(import.meta.env.VITE_APP_BASE_API, '') : null
+    const cs_fxsh_bgimg= fxshBgList.value && fxshBgList.value.length ? fxshBgList.value[0].url.replace(import.meta.env.VITE_APP_BASE_API, '') : null
     const ucenter_bg =mineBgList.value && mineBgList.value.length ? mineBgList.value[0].url.replace(import.meta.env.VITE_APP_BASE_API, '') : null
     const user_grade_bg = levelBgList.value && levelBgList.value.length ? levelBgList.value[0].url.replace(import.meta.env.VITE_APP_BASE_API, '') : null
     const user_in_bg = joinVipAdList.value && joinVipAdList.value.length ? joinVipAdList.value[0].url.replace(import.meta.env.VITE_APP_BASE_API, '') : null
@@ -429,7 +461,11 @@ const submit = () => {
           conf_value: youhuiquan_bgimg,
         },
         {
-          conf_name: "wechat.shop_logo",
+          conf_name: "wechat.cs_fxsh_bgimg",
+          conf_value: cs_fxsh_bgimg,
+        },
+        {
+          conf_name: "wechat.shop_home_logo",
           conf_value: siteLogo.value,
         },
         {
@@ -485,11 +521,11 @@ const getConfigApi = () => {
     formData.value.shop_share_title = data.wechat.shop_share_title;
     formData.value.btn_color = data.wechat.btn_color;
     //商城logo
-    if (data.wechat.shop_logo) {
-      siteLogo.value = data.wechat.shop_logo;
+    if (data.wechat.shop_home_logo) {
+      siteLogo.value = data.wechat.shop_home_logo;
       imgList.value = [];
       imgList.value.push({
-        url: import.meta.env.VITE_APP_BASE_API + data.wechat.shop_logo,
+        url: import.meta.env.VITE_APP_BASE_API + data.wechat.shop_home_logo,
       });
     }
     // 分享图片
@@ -521,6 +557,16 @@ const getConfigApi = () => {
         url: import.meta.env.VITE_APP_BASE_API + data.wechat.cs_youhuiquan_bgimg,
       });
     }
+
+    // 芳香生活背景图
+    if (data?.wechat?.cs_fxsh_bgimg) {
+      fxshBgList.value = [];
+      fxshBgList.value.push({
+        url: import.meta.env.VITE_APP_BASE_API + data.wechat.cs_fxsh_bgimg,
+      });
+    }
+
+
     // 个人中心背景图
     if (data?.wechat?.ucenter_bg) {
       mineBgList.value = [];

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.