From 3ac279c9df7181c9f21d35a689a321b990b87b22 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 08 六月 2026 17:42:33 +0800
Subject: [PATCH] aaa

---
 company_admin/src/views/business/pageConfiguration.vue |  830 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 585 insertions(+), 245 deletions(-)

diff --git a/company_admin/src/views/business/pageConfiguration.vue b/company_admin/src/views/business/pageConfiguration.vue
index f29bd7a..340777a 100644
--- a/company_admin/src/views/business/pageConfiguration.vue
+++ b/company_admin/src/views/business/pageConfiguration.vue
@@ -7,13 +7,13 @@
           <el-tab-pane label="涓荤晫闈�" name="0"></el-tab-pane>
           <el-tab-pane label="PK鏁堟灉" name="1"></el-tab-pane>
           <el-tab-pane label="鎼滅储鏁堟灉" name="2"></el-tab-pane>
+          <el-tab-pane label="鍟嗗搧鍒楄〃" name="3"></el-tab-pane>
         </el-tabs>
       </div>
-
       <div class="prediv-content">
         <div class="content" :style="contentStyle">
           <img :src="form.topImg.type ? form.topImg.imgurl : defaultBanner" alt="">
-          <template v-if="type != 1">
+          <template v-if="type != 1 && type !=3">
             <div>
               <div class="commodityFrom_head" :style="tableHeaderStyle">
                 <!-- @mouseenter="mouseenter" @mouseleave="mouseleave" -->
@@ -82,9 +82,9 @@
             <div class="productCategory">
               <div class="productCategory_list" :style="categoryStyle">
                 <div class="productCategory_list_item" v-for="(item, index) in category" :key="index"
-                  @click="clickItem(index, item.id, item.name)">
+                  @click1="clickItem(index, item.id, item.name)">
                   <img :src="item.img" mode="widthFix" />
-                  <span>{{ item.name }}</span>
+                  <span  :style="{...selListNameStyle}">{{ item.name }}</span>
                 </div>
                 <div class="productCategory_list_zw"></div>
                 <div class="productCategory_list_zw"></div>
@@ -94,7 +94,7 @@
               </div>
             </div>
           </template>
-          <div class="productPage" v-if="type == 1">
+          <div class="productPage" v-if="type == 1 || type ==3">
             <div class="productPage_head" :style="tableHeaderStyle">
               <div class="productPage_head_item" @mouseenter="mouseenterHead" @mouseleave="mouseleaveHead">
                 <span>灞炴��1</span>
@@ -142,72 +142,86 @@
                 </div> -->
               </div>
             </div>
-            <div class="productPage_pk">
-              <div class="productPage_pk_shop">
+            <template v-if="type ==1">
+              <div class="productPage_pk"  >
+                <div class="productPage_pk_shop">
 
-                <div class="productPage_pk_shop_sp1" :style="tableHeaderStyle">
-                  <div class="productPage_pk_shop_sp1_img">
-                    <img src="@/assets/images/Samsung@2x.png" mode="widthFix">
+                  <div class="productPage_pk_shop_sp1" :style="tableHeaderStyle">
+                    <div class="productPage_pk_shop_sp1_img">
+                      <img src="@/assets/images/Samsung@2x.png" mode="widthFix">
+                    </div>
+                    <span>涓夋槦323娲楃儤</span>
                   </div>
-                  <span>涓夋槦323娲楃儤</span>
+                  <div class="productPage_pk_shop_t">
+                    <img v-if="form.pkImg.type==0" src="@/assets/images/pk_defult.png" alt="">
+                    <img v-else :src="form.pkImg.imgurl" alt="">
+                  </div>
                 </div>
-                <div class="productPage_pk_shop_t">
-                  <img v-if="form.pkImg.type==0" src="@/assets/images/pk_defult.png" alt="">
-                  <img v-else :src="form.pkImg.imgurl" alt="">
+                <div class="productPage_pk_z">
+                  <img src="@/assets/images/ic_pk@2x.png" mode="widthFix">
                 </div>
-              </div>
-              <div class="productPage_pk_z">
-                <img src="@/assets/images/ic_pk@2x.png" mode="widthFix">
-              </div>
-              <div class="productPage_pk_shop" >
+                <div class="productPage_pk_shop" >
 
-                <div class="productPage_pk_shop_sp1" :style="tableHeaderStyle">
-                  <div class="productPage_pk_shop_sp1_img">
-                    <img src="@/assets/images/Galanz@2x.png" mode="widthFix">
+                  <div class="productPage_pk_shop_sp1" :style="tableHeaderStyle">
+                    <div class="productPage_pk_shop_sp1_img">
+                      <img src="@/assets/images/Galanz@2x.png" mode="widthFix">
+                    </div>
+                    <span>鏍煎叞浠�434娲楃儤</span>
                   </div>
-                  <span>鏍煎叞浠�434娲楃儤</span>
-                </div>
-                <div class="productPage_pk_shop_t">
-                  <img v-if="form.pkImg.type==0" src="@/assets/images/pk_defult.png" alt="">
-                  <img v-else :src="form.pkImg.imgurl" alt="">
+                  <div class="productPage_pk_shop_t">
+                    <img v-if="form.pkImg.type==0" src="@/assets/images/pk_defult.png" alt="">
+                    <img v-else :src="form.pkImg.imgurl" alt="">
+                  </div>
                 </div>
               </div>
-            </div>
-            <div class="productPage_parameter">
-						<div class="productPage_parameter_item" v-for="(item, index) in [leftShop, rightShop]" :key="index">
-							<div class="productPage_parameter_item_head" :style="tableHeaderStyle">
-								<span>{{item.name}}</span>
-							</div>
-							<div class="productPage_parameter_item_content" :style="tableBodyStyle">
-								<div class="productPage_parameter_item_content_price">
-									<div class="zdj">
-										<span>鎸囧浠凤細</span>
-										<span>楼{{item.zdPrice}}</span>
-									</div>
-									<div class="rsj">
-										<span>寤鸿鍏ユ墜浠凤細</span>
-										<span>楼{{item.price}}</span>
-									</div>
-								</div>
-								<div class="productPage_parameter_item_content_nr">
-									<div class="item" v-if="item.param1"  v-for="(child, i) in item.param1" :key="child.index">
-										<div class="label">{{child.name}}锛�</div>
-										<div class="value">{{child.val}}</div>
-									</div>
-									<div v-if="item.param2.length>0" class="paramline"></div>
-									<div class="item" v-if="item.param2" v-for="(child, j) in item.param2" :key="child.index">
-										<div class="label">{{child.name}}锛�</div>
-										<div class="value">{{child.val}}</div>
-									</div>
-								</div>
-							</div>
-						</div>
-					</div>
+              <div class="productPage_parameter">
+                <div class="productPage_parameter_item" v-for="(item, index) in [leftShop, rightShop]" :key="index">
+                  <div class="productPage_parameter_item_head" :style="tableHeaderStyle">
+                    <span>{{item.name}}</span>
+                  </div>
+                  <div class="productPage_parameter_item_content" :style="tableBodyStyle">
+                    <div class="productPage_parameter_item_content_price">
+                      <div class="zdj">
+                        <span>鎸囧浠凤細</span>
+                        <span>楼{{item.zdPrice}}</span>
+                      </div>
+                      <div class="rsj">
+                        <span>寤鸿鍏ユ墜浠凤細</span>
+                        <span>楼{{item.price}}</span>
+                      </div>
+                    </div>
+                    <div class="productPage_parameter_item_content_nr">
+                      <div class="item" v-if="item.param1"  v-for="(child, i) in item.param1" :key="child.index">
+                        <div class="label">{{child.name}}锛�</div>
+                        <div class="value">{{child.val}}</div>
+                      </div>
+                      <div v-if="item.param2.length>0" class="paramline"></div>
+                      <div class="item" v-if="item.param2" v-for="(child, j) in item.param2" :key="child.index">
+                        <div class="label">{{child.name}}锛�</div>
+                        <div class="value">{{child.val}}</div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </template>
+            <template v-if="type==3">
+              <div class="productPage_shop" >
+                <div class="productPage_shop_item" v-for="(item, index) in productList"  :style="{...selectList}" :key="index" >
+                  <div class="productPage_shop_item_img">
+                    <img :src="item.img" mode="widthFix"/>
+                  </div>
+                  <span :style="{...selProNameStyle}">{{item.name}}</span>
+                </div>
+                <div class="productPage_shop_zw"></div>
+                <div class="productPage_shop_zw"></div>
+                <div class="productPage_shop_zw"></div>
+              </div>
+            </template>
           </div>
-
         </div>
       </div>
-      <div class="search" v-if="type == 2">
+      <div class="search" v-if="type == 2 ">
         <div class="search_box">
           <div class="search_box_item" :style="searchStyle">
             <div class="icon">
@@ -228,7 +242,32 @@
 
     </div>
     <div class="setting">
-      <div class="pz_head">淇℃伅</div>
+      <div class="pz_head pz_head--with-switch">
+        <span>涓绘挱绔〉闈㈤厤缃� <span class="version-tag">V2</span></span>
+        <span
+          class="version-switch version-switch--v2"
+          :class="{ 'version-switch--active': useThisVersion }"
+        >
+          <span class="version-switch__icon"><i class="el-icon-mobile-phone" /></span>
+          <span class="version-switch__body">
+            <span class="version-switch__label">绔嬪嵆浣跨敤璇ョ増鏈�</span>
+            <span class="version-switch__status">{{ useThisVersion ? '宸插惎鐢� 路 涓绘挱绔綋鍓嶇増鏈�' : '鐐瑰嚮鎸夐挳鍚庝富鎾灏嗗垏鎹㈣嚦鏈増鏈�' }}</span>
+          </span>
+          <span v-if="useThisVersion" class="version-switch__badge">
+            <i class="el-icon-success" /> 褰撳墠鐗堟湰
+          </span>
+          <el-button
+            v-else
+            type="primary"
+            size="medium"
+            :loading="versionSwitchLoading"
+            class="version-switch__btn version-switch__btn--v2"
+            @click="onUseThisVersion"
+          >
+            绔嬪嵆鐢熸晥
+          </el-button>
+        </span>
+      </div>
       <el-form ref="form" :model="form" label-width="130px" label-suffix="锛�">
         <el-form-item label="鍐呭鑼冨洿灏哄" props="rangeSize">
           <el-input v-model="form.rangeSize" type="number" style="width: 200px;" placeholder="鏀寔750px-1200px"></el-input>
@@ -429,30 +468,261 @@
             </template>
           </div>
         </el-form-item>
+        <el-form-item label="鍝佺被鍒楄〃瀛椾綋">
+          <div class="color-select-item">
+            棰滆壊  <el-radio-group v-model="form.listname.selType" @change="selectListName" style="margin-left: 15px">
+              <el-radio :label="0">榛樿</el-radio>
+              <el-radio :label="1">鑷畾涔�</el-radio>
+            </el-radio-group>
+           <template v-if="form.listname.selType == 1">
+              <el-color-picker v-model="form.listname.selColor" size="mini"  style="margin-right: 10px; margin-left: 10px;"></el-color-picker>
+              涓嶉�忔槑搴� <el-input v-model="form.listname.selAlpha" type="number" style="width: 100px;"></el-input> %
+            </template>
+          </div>
+          <div >
+            <div class="color-select-item" style="margin-top: 10px">
+              澶у皬<el-input v-model="form.listname.fontSize" type="number" style="width: 80px;margin-left: 15px"></el-input> px (榛樿16px)
+            </div>
+          </div>
+        </el-form-item>
+        <el-form-item label="鍟嗗搧鍒楄〃瀛椾綋">
+          <div class="color-select-item">
+            棰滆壊  <el-radio-group v-model="form.listproname.selType" @change="selectproName" style="margin-left: 15px">
+            <el-radio :label="0">榛樿</el-radio>
+            <el-radio :label="1">鑷畾涔�</el-radio>
+          </el-radio-group>
+            <template v-if="form.listproname.selType == 1">
+              <el-color-picker v-model="form.listproname.selColor" size="mini"  style="margin-right: 10px; margin-left: 10px;"></el-color-picker>
+              涓嶉�忔槑搴� <el-input v-model="form.listproname.selAlpha" type="number" style="width: 100px;"></el-input> %
+            </template>
+          </div>
+          <div >
+            <div class="color-select-item" style="margin-top: 10px">
+              澶у皬<el-input v-model="form.listproname.fontSize" type="number" style="width: 80px;margin-left: 15px"></el-input> px (榛樿16px)
+            </div>
+          </div>
+        </el-form-item>
       </el-form>
       <div class="pz_footer">
         <el-button type="primary" @click="submit">淇濆瓨</el-button>
       </div>
 
-      
+
     </div>
 
 
-      
+
 
 
   </div>
 </template>
-    
+
 <script>
-import { getByLoginNew, renewUpdate } from '@/api/business/page.js'
+import { getByLoginNew, renewUpdate, updateAnchorPageVersion } from '@/api/business/page.js'
 import UploadAvatarImage from '@/components/common/UploadAvatarImage.vue'
 import { upload } from '@/api/system/common'
 export default {
+  methods: {
+    selectBackground(v) {
+      if (v == 0) {
+        this.form.main.bgColor = '#f7f7f7'
+        this.form.main.alpha = '100'
+      }
+
+    },
+    // 涓婁紶鑳屾櫙鍥剧墖
+    upbgImgUrl(file) {
+      // console.log(file);
+      const formdate = new FormData()
+      this.isUploading = true
+      formdate.append('file', file.target.files[0])
+      formdate.append('folder', 'web_param')
+      upload(formdate)
+          .then(res => {
+            this.form.bgImg.img = res.imgaddr
+            this.form.bgImg.imgurl = res.url
+          })
+          .catch(e => {
+            this.$message.error(e)
+          })
+          .finally(() => this.isUploading = false)
+      this.$refs.upBackground.value = null
+    },
+    // 涓婁紶椤堕儴鍥剧墖
+    upTopImgUrl(file) {
+      const formdate = new FormData()
+      this.isUploading = true
+      formdate.append('file', file.target.files[0])
+      formdate.append('folder', 'web_param')
+      upload(formdate)
+          .then(res => {
+            this.form.topImg.img = res.imgaddr
+            this.form.topImg.imgurl = res.url
+          })
+          .catch(e => {
+            this.$message.error(e)
+          })
+          .finally(() => this.isUploading = false)
+      this.$refs.upTop.value = null
+    },
+
+    // 涓婁紶pk澶浘鐗�
+    upPkImgUrl(file) {
+      const formdate = new FormData()
+      this.isUploading = true
+      formdate.append('file', file.target.files[0])
+      formdate.append('folder', 'web_param')
+      upload(formdate)
+          .then(res => {
+            this.form.pkImg.img = res.imgaddr
+            this.form.pkImg.imgurl = res.url
+          })
+          .catch(e => {
+            this.$message.error(e)
+          })
+          .finally(() => this.isUploading = false)
+      this.$refs.upPk.value = null
+    },
+    selectHeaderBg(v) {
+      if (v == 0) {
+        this.form.header.bgColor = '#0D1E41'
+        this.form.header.bgAlpha = '100'
+      } else if (v == 2) {
+        this.form.header.bgColor2 = '#0D1E41'
+        this.form.header.bgAlpha2 = '100'
+      }
+    },
+    selectHeader(v) {
+      if (v == 0) {
+        this.form.header.color = '#ffffff'
+        this.form.header.alpha = '100'
+      }
+    },
+    selectSel(v) {
+      if (v == 0) {
+        this.form.pull.selColor = '#FFDC6C'
+        this.form.pull.selAlpha = '100'
+      }
+    },
+    selectPull(v) {
+      if (v == 0) {
+        this.form.pull.bgColor = '#6C82AA'
+        this.form.pull.bgAlpha = '100'
+      }
+    },
+    selectListName(v) {
+      if (v == 0) {
+        this.form.listname.selColor = '#ffffff'
+        this.form.listname.selAlpha = '100'
+      }
+    },
+    selectproName(v) {
+      if (v == 0) {
+        this.form.listproname.selColor = '#ffffff'
+        this.form.listproname.selAlpha = '100'
+      }
+    },
+    selectCategroy(v) {
+      if (v == 0) {
+        this.form.category.bgColor = '#899FC5'
+        this.form.category.bgAlpha = '100'
+      }
+    },
+    selectSearch(v) {
+      if (v == 0) {
+        this.form.search.bgColor = '#0D1E41'
+        this.form.search.bgAlpha = '70'
+      }
+    },
+    selectList(v) {
+      if (v == 0) {
+        this.form.list.bgColor = '#000000'
+        this.form.list.bgAlpha = '0'
+      }
+    },
+
+    mouseenterHead(v) {
+      v.target.style.background = 'rgba(255,255,255,0.16)'
+    },
+    mouseleaveHead(v) {
+      v.target.style.background = ''
+    },
+
+    mouseenter(v) {
+      let alpha = +(this.form.header.selAlpha * 2.55).toFixed(0)
+      v.target.style.ba = this.form.header.selColor + alpha.toString(16)
+    },
+    mouseleave(v) {
+      v.target.style.color = ''
+    },
+
+    clickBrand(item, child) {
+      item.brandName = child
+      item.ppShow = false
+    },
+    clickXH(item, data) {
+      item.name = data
+      item.ppShow = false
+    },
+
+    getDesc() {
+      getByLoginNew()
+          .then(res => {
+            if (res && res.newParam) {
+              var param= JSON.parse(res.newParam)
+              for (const key in this.form) {
+                if(param[key]){
+                  this.form[key] = param[key]
+                }
+              }
+            }
+            this.anchorPageVersion = (res && res.anchorPageVersion) || 'v2'
+            this.useThisVersion = this.anchorPageVersion === 'v2'
+          })
+    },
+
+    onUseThisVersion () {
+      if (this.useThisVersion || this.versionSwitchLoading) return
+      this.versionSwitchLoading = true
+      updateAnchorPageVersion({ anchorPageVersion: 'v2' })
+        .then(() => {
+          this.anchorPageVersion = 'v2'
+          this.useThisVersion = true
+          this.$message.success('宸插惎鐢� V2 閰嶇疆')
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+        .finally(() => {
+          this.versionSwitchLoading = false
+        })
+    },
+
+    submit() {
+      if (this.form.rangeSize < 750) {
+        this.$message.warning({ message: '灏哄蹇呴』澶т簬750' })
+        return
+      }
+      if (this.form.rangeSize > 1200) {
+        this.$message.warning({ message: '灏哄蹇呴』灏忎簬1200' })
+        return
+      }
+      renewUpdate({
+        newParam: JSON.stringify(this.form),
+        anchorPageVersion: this.anchorPageVersion
+      })
+          .then(res => {
+            this.$message.success({ message: '淇濆瓨鎴愬姛' })
+          })
+    },
+  },
   components: { UploadAvatarImage },
   data() {
     return {
       isUploading: false,
+      useThisVersion: false,
+      versionSwitchLoading: false,
+      anchorPageVersion: 'v2',
       type: '0', // 0銆佷富鐣岄潰 1銆丳K鏁堟灉 2銆佹悳绱㈡晥鏋�
       shopList: [
         { categoryImgurl: '', categoryName: '娲楄。鏈�', brandName: '娴峰皵', ppShow: false, ppData: ['CLOMO', '娴峰皵', '鏍煎叞浠�', '涓夋槦'], name: 'EG100MATE35S', xhShow: false, xhData: ['EG100MATE35S', 'DG100MATE35S', 'FG100MATE35S'], zdPrice: '1899', price: '1899' },
@@ -477,6 +747,38 @@
         { img: require('@/assets/images/category/ic_xiwanji@2x.png'), name: '娲楃鏈�' },
         { img: require('@/assets/images/category/ic_jinshui@2x.png'), name: '鍑�姘村櫒' },
         { img: require('@/assets/images/category/ic_qita@2x.png'), name: '鍏朵粬' },
+      ],
+      productList: [
+        { img: require('@/assets/images/product/1a.png'), name: '鍗¤惃甯�' },
+        { img: require('@/assets/images/product/2a.png'), name: '澶ф捣璞�' },
+        { img: require('@/assets/images/product/3a.png'), name: '灏忕櫧妗�' },
+        { img: require('@/assets/images/product/4a.png'), name: '鐧界弽鐝�' },
+        { img: require('@/assets/images/product/5a.png'), name: '涓滆姖58' },
+        { img: require('@/assets/images/product/6a.png'), name: '涓滆姖59' },
+        { img: require('@/assets/images/product/7a.png'), name: '鏉句笅50' },
+        { img: require('@/assets/images/product/8a.png'), name: '缇庣殑55' },
+        { img: require('@/assets/images/product/9a.png'), name: '娴峰皵57' },
+        { img: require('@/assets/images/product/10a.png'), name: '缇庣殑46' },
+        { img: require('@/assets/images/product/1a.png'), name: '鍗¤惃甯�' },
+        { img: require('@/assets/images/product/2a.png'), name: '澶ф捣璞�' },
+        { img: require('@/assets/images/product/3a.png'), name: '灏忕櫧妗�' },
+        { img: require('@/assets/images/product/4a.png'), name: '鐧界弽鐝�' },
+        { img: require('@/assets/images/product/5a.png'), name: '涓滆姖58' },
+        { img: require('@/assets/images/product/6a.png'), name: '涓滆姖59' },
+        { img: require('@/assets/images/product/7a.png'), name: '鏉句笅50' },
+        { img: require('@/assets/images/product/8a.png'), name: '缇庣殑55' },
+        { img: require('@/assets/images/product/9a.png'), name: '娴峰皵57' },
+        { img: require('@/assets/images/product/10a.png'), name: '缇庣殑46' },
+        { img: require('@/assets/images/product/1a.png'), name: '鍗¤惃甯�' },
+        { img: require('@/assets/images/product/2a.png'), name: '澶ф捣璞�' },
+        { img: require('@/assets/images/product/3a.png'), name: '灏忕櫧妗�' },
+        { img: require('@/assets/images/product/4a.png'), name: '鐧界弽鐝�' },
+        { img: require('@/assets/images/product/5a.png'), name: '涓滆姖58' },
+        { img: require('@/assets/images/product/6a.png'), name: '涓滆姖59' },
+        { img: require('@/assets/images/product/7a.png'), name: '鏉句笅50' },
+        { img: require('@/assets/images/product/8a.png'), name: '缇庣殑55' },
+        { img: require('@/assets/images/product/9a.png'), name: '娴峰皵57' },
+        { img: require('@/assets/images/product/10a.png'), name: '缇庣殑46' },
       ],
       action: process.env.VUE_APP_API_PREFIX + '/public/upload',
       defaultBanner: require('@/assets/images/banner_defult.png'),
@@ -528,7 +830,6 @@
           bgColor: '#f7f7f7',
           alpha: '100'
         },
-
         bgImg: {
           isShow: 0,  // 0闅愯棌 1鏄剧ず
           type: 0,
@@ -562,6 +863,21 @@
           bgAlpha: '100',
           selType: 0,
           selColor: '#FFDC6C',
+          selAlpha: '100'
+        },
+        selType:0,
+        listname: {
+          fontType: 0,
+          fontSize: '16',
+          selType: '0',
+          selColor: '#ffffff',
+          selAlpha: '100'
+        },
+        listproname: {
+          fontType: 0,
+          fontSize: '16',
+          selType: 0,
+          selColor: '#ffffff',
           selAlpha: '100'
         },
         search: {
@@ -630,12 +946,24 @@
       selStyle.color = this.form.pull.selColor + (alpha==0?"00":alpha.toString(16))
       return selStyle
     },
+    selListNameStyle() {
+      let alpha = +(this.form.listname.selAlpha * 2.55).toFixed(0)
+      let color = this.form.listname.selColor + (alpha==0?"00":alpha.toString(16))
+      let selListNameStyle = {color: color,'font-size':(this.form.listname.fontSize || '16')+'px'}
+      return selListNameStyle
+    },
+    selProNameStyle() {
+      let alpha = +(this.form.listproname.selAlpha * 2.55).toFixed(0)
+      let color = this.form.listproname.selColor + (alpha==0?"00":alpha.toString(16))
+      let selProNameStyle = {color: color,'font-size':(this.form.listproname.fontSize || '16')+'px'}
+      return selProNameStyle
+    },
     searchStyle() {
       let alpha = +(this.form.search.bgAlpha * 2.55).toFixed(0)
       let background = this.form.search.bgColor + (alpha==0?"00":alpha.toString(16))
       return { background }
     },
-    
+
     categoryStyle() {
       let alpha = +(this.form.category.bgAlpha * 2.55).toFixed(0)
       let background = this.form.category.bgColor + (alpha==0?"00":alpha.toString(16))
@@ -644,160 +972,6 @@
   },
   created() {
     this.getDesc()
-  },
-  methods: {
-    selectBackground(v) {
-      if (v == 0) {
-        this.form.main.bgColor = '#f7f7f7'
-        this.form.main.alpha = '100'
-      }
-    },
-    // 涓婁紶鑳屾櫙鍥剧墖
-    upbgImgUrl(file) {
-      // console.log(file);
-      const formdate = new FormData()
-      this.isUploading = true
-      formdate.append('file', file.target.files[0])
-      formdate.append('folder', 'web_param')
-      upload(formdate)
-        .then(res => {
-          this.form.bgImg.img = res.imgaddr
-          this.form.bgImg.imgurl = res.url
-        })
-        .catch(e => {
-          this.$message.error(e)
-        })
-        .finally(() => this.isUploading = false)
-      this.$refs.upBackground.value = null
-    },
-    // 涓婁紶椤堕儴鍥剧墖
-    upTopImgUrl(file) {
-      const formdate = new FormData()
-      this.isUploading = true
-      formdate.append('file', file.target.files[0])
-      formdate.append('folder', 'web_param')
-      upload(formdate)
-        .then(res => {
-          this.form.topImg.img = res.imgaddr
-          this.form.topImg.imgurl = res.url
-        })
-        .catch(e => {
-          this.$message.error(e)
-        })
-        .finally(() => this.isUploading = false)
-      this.$refs.upTop.value = null
-    },
-
-    // 涓婁紶pk澶浘鐗�
-    upPkImgUrl(file) {
-      const formdate = new FormData()
-      this.isUploading = true
-      formdate.append('file', file.target.files[0])
-      formdate.append('folder', 'web_param')
-      upload(formdate)
-        .then(res => {
-          this.form.pkImg.img = res.imgaddr
-          this.form.pkImg.imgurl = res.url
-        })
-        .catch(e => {
-          this.$message.error(e)
-        })
-        .finally(() => this.isUploading = false)
-      this.$refs.upPk.value = null
-    },
-    selectHeaderBg(v) {
-      if (v == 0) {
-        this.form.header.bgColor = '#0D1E41'
-        this.form.header.bgAlpha = '100'
-      } else if (v == 2) {
-        this.form.header.bgColor2 = '#0D1E41'
-        this.form.header.bgAlpha2 = '100'
-      }
-    },
-    selectHeader(v) {
-      if (v == 0) {
-        this.form.header.color = '#ffffff'
-        this.form.header.alpha = '100'
-      }
-    },
-    selectSel(v) {
-      if (v == 0) {
-        this.form.pull.selColor = '#FFDC6C'
-        this.form.pull.selAlpha = '100'
-      }
-    },
-    selectPull(v) {
-      if (v == 0) {
-        this.form.pull.bgColor = '#6C82AA'
-        this.form.pull.bgAlpha = '100'
-      }
-    },
-    selectCategroy(v) {
-      if (v == 0) {
-        this.form.category.bgColor = '#899FC5'
-        this.form.category.bgAlpha = '100'
-      }
-    },
-    selectSearch(v) {
-      if (v == 0) {
-        this.form.search.bgColor = '#0D1E41'
-        this.form.search.bgAlpha = '70'
-      }
-    },
-    selectList(v) {
-      if (v == 0) {
-        this.form.list.bgColor = '#000000'
-        this.form.list.bgAlpha = '0'
-      }
-    },
-
-    mouseenterHead(v) {
-      v.target.style.background = 'rgba(255,255,255,0.16)'
-    },
-    mouseleaveHead(v) {
-      v.target.style.background = ''
-    },
-
-    mouseenter(v) {
-      let alpha = +(this.form.header.selAlpha * 2.55).toFixed(0)
-      v.target.style.ba = this.form.header.selColor + alpha.toString(16)
-    },
-    mouseleave(v) {
-      v.target.style.color = ''
-    },
-
-    clickBrand(item, child) {
-      item.brandName = child
-      item.ppShow = false
-    },
-    clickXH(item, data) {
-      item.name = data
-      item.ppShow = false
-    },
-
-    getDesc() {
-      getByLoginNew()
-        .then(res => {
-          if (res.newParam) {
-            this.form = JSON.parse(res.newParam)
-          }
-        })
-    },
-
-    submit() {
-      if (this.form.rangeSize < 750) {
-        this.$message.warning({ message: '灏哄蹇呴』澶т簬750' })
-        return
-      }
-      if (this.form.rangeSize > 1200) {
-        this.$message.warning({ message: '灏哄蹇呴』灏忎簬1200' })
-        return
-      }
-      renewUpdate({ newParam: JSON.stringify(this.form) })
-        .then(res => {
-          this.$message.success({ message: '淇濆瓨鎴愬姛' })
-        })
-    },
   }
 }
 /**
@@ -878,7 +1052,6 @@
             align-items: center;
             background: rgba(0, 224, 255, 0.34) linear-gradient(180deg, rgba(255, 255, 255, 0.35) 0%, rgba(0, 0, 0, 0.21) 100%);
             border-radius: 8px 8px 0px 0px;
-
             .productPage_head_item {
               flex: 1;
               height: 100%;
@@ -889,23 +1062,18 @@
               position: relative;
               color: #fff;
               font-size: 12px;
-
               img {
                 width: 14px;
                 margin-left: 3px;
               }
-
-
               &:hover img {
                 transform: rotate(180deg);
               }
-
               &:hover .productPage_xl {
                 transform: translate(0%, 100%);
                 display: block;
                 animation: move 0.5s 0s;
               }
-
               @keyframes move {
                 0% {
                   opacity: 0;
@@ -915,18 +1083,15 @@
                   opacity: 1;
                 }
               }
-
               .productPage_xl::-webkit-scrollbar {
                 width: 6px;
                 background: rgba(255, 255, 255, 0.5);
                 border-radius: 4px;
               }
-
               .productPage_xl::-webkit-scrollbar-thumb {
                 box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
                 background: rgba(255, 255, 255, 0.8);
               }
-
               .productPage_xl {
                 transition: .3s;
                 position: absolute;
@@ -944,7 +1109,6 @@
                 background: linear-gradient(180deg, #518198 0%, #033B58 100%);
                 box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.19);
                 border-radius: 0px 0px 8px 8px;
-
                 .productPage_xl_iten {
                   width: 100%;
                   height: 40px;
@@ -953,13 +1117,11 @@
                   cursor: pointer;
                   padding: 0 10px;
                   box-sizing: border-box;
-
                   &:hover {
                     text {
                       color: #FFF200;
                     }
                   }
-
                   text {
                     width: 100%;
                     text-align: center;
@@ -973,14 +1135,12 @@
                   }
                 }
               }
-
               text {
                 font-size: 16px;
                 font-family: SourceHanSansSC-Regular, SourceHanSansSC;
                 font-weight: 400;
                 color: #FFFFFF;
               }
-
               image {
                 transition: .3s;
                 width: 14px;
@@ -991,20 +1151,17 @@
               }
             }
           }
-
           .productPage_pk {
             width: 100%;
             margin-bottom: 32px;
             display: flex;
             align-items: center;
-
             .productPage_pk_shop {
               flex: 1;
               display: flex;
               justify-content: center;
               align-items: center;
               flex-direction: column;
-
               .productPage_pk_shop_sp {
                 width: 100px;
                 height: 100px;
@@ -1017,7 +1174,6 @@
                   height: 100%;
                 }
               }
-
               .productPage_pk_shop_sp1 {
                 width: 184px;
                 height: 200px;
@@ -1091,12 +1247,12 @@
             flex-wrap: wrap;
 
             .productPage_shop_zw {
-              width: 168px;
+              width: 15%;
               height: 0;
             }
 
             .productPage_shop_item {
-              width: 168px;
+              width: 15%;
               // height: 204px;
               margin-bottom: 12px;
               cursor: pointer;
@@ -1122,8 +1278,8 @@
               }
 
               .productPage_shop_item_img {
-                width: 136px;
-                height: 136px;
+                width: 50px;
+                height: 50px;
                 display: flex;
                 align-items: center;
                 justify-content: center;
@@ -1378,6 +1534,129 @@
 
   }
 
+  .pz_head--with-switch {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    gap: 16px;
+    flex-wrap: wrap;
+  }
+
+  .version-tag {
+    display: inline-block;
+    margin-left: 8px;
+    padding: 3px 10px;
+    border-radius: 4px;
+    font-size: 13px;
+    font-weight: 700;
+    color: #409eff;
+    background: #ecf5ff;
+    border: 1px solid #b3d8ff;
+    vertical-align: middle;
+  }
+
+  .version-switch {
+    display: inline-flex;
+    align-items: center;
+    gap: 14px;
+    padding: 12px 20px;
+    border-radius: 10px;
+    border: 2px solid #409eff;
+    background: linear-gradient(135deg, #ecf5ff 0%, #f5faff 100%);
+    box-shadow: 0 4px 14px rgba(64, 158, 255, 0.22);
+    transition: all 0.25s ease;
+    cursor: default;
+
+    &--active {
+      border-color: #409eff;
+      background: linear-gradient(135deg, #409eff 0%, #66b1ff 100%);
+      box-shadow: 0 6px 20px rgba(64, 158, 255, 0.4);
+
+      .version-switch__icon {
+        background: rgba(255, 255, 255, 0.25);
+        color: #fff;
+      }
+
+      .version-switch__label {
+        color: #fff;
+      }
+
+      .version-switch__status {
+        color: rgba(255, 255, 255, 0.88);
+      }
+    }
+
+    &__icon {
+      flex-shrink: 0;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      width: 40px;
+      height: 40px;
+      border-radius: 50%;
+      background: rgba(64, 158, 255, 0.15);
+      color: #409eff;
+      font-size: 20px;
+    }
+
+    &__body {
+      display: flex;
+      flex-direction: column;
+      gap: 2px;
+      min-width: 0;
+    }
+
+    &__label {
+      font-size: 15px;
+      font-weight: 700;
+      color: #409eff;
+      white-space: nowrap;
+      line-height: 1.3;
+    }
+
+    &__status {
+      font-size: 12px;
+      color: #909399;
+      white-space: nowrap;
+      line-height: 1.3;
+    }
+
+    &__badge {
+      flex-shrink: 0;
+      display: inline-flex;
+      align-items: center;
+      gap: 6px;
+      padding: 8px 16px;
+      border-radius: 20px;
+      font-size: 14px;
+      font-weight: 600;
+      color: #fff;
+      background: rgba(255, 255, 255, 0.25);
+      white-space: nowrap;
+    }
+
+    &__btn {
+      flex-shrink: 0;
+      padding: 10px 22px;
+      font-size: 14px;
+      font-weight: 700;
+      border-radius: 20px;
+      border: none;
+      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
+
+      &--v2 {
+        background: #fff;
+        color: #409eff;
+
+        &:hover,
+        &:focus {
+          background: #f5faff;
+          color: #409eff;
+        }
+      }
+    }
+  }
+
   .pz_item {
     // width: 750px;
     display: flex;
@@ -1407,7 +1686,7 @@
   height: 45px;
   padding: 10px 8px;
   box-sizing: border-box;
-  // 
+  //
   // background: rgba(0, 224, 255, 0.24) linear-gradient(180deg, rgba(255, 255, 255, 0.35) 0%, rgba(0, 0, 0, 0.21) 100%);
   display: flex;
   align-items: center;
@@ -1815,4 +2094,65 @@
     }
   }
 }
-</style>
\ No newline at end of file
+
+.productPage_shop {
+  width: 100%;
+  margin-top: 12px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  flex-wrap: wrap;
+  .productPage_shop_zw {
+    width: 15%;
+    height: 0;
+  }
+  .productPage_shop_item {
+    width: 15%;
+    margin-bottom: 12px;
+    cursor: pointer;
+    background: rgba(0,224,255,0.18);
+    border-radius: 8px;
+    display: flex;
+    transition: .5s;
+    padding: 15px;
+    box-sizing: border-box;
+    flex-direction: column;
+    align-items: center;
+    box-sizing: border-box;
+    white-space: pre-wrap;
+    word-break: break-all;
+    text-align: center;
+    &:hover {
+      background: linear-gradient(180deg, rgba(0,224,255,0.3) 0%, rgba(255,255,255,0.41) 100%);
+      border-radius: 8px;
+      border: 2px solid #FFFFFF;
+      box-sizing: border-box;
+    }
+    .productPage_shop_item_img {
+      width: 136px;
+      height: 136px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      overflow: hidden;
+      image {
+        width: 100%;
+        height: 100%;
+      }
+    }
+    text {
+      width: 100%;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display: -webkit-box;
+      -webkit-line-clamp: 2;
+      -webkit-box-orient: vertical;
+      font-size: 16px;
+      font-family: SourceHanSansSC-Normal, SourceHanSansSC;
+      font-weight: 400;
+      color: #FFFFFF;
+      margin-top: 12px;
+    }
+  }
+}
+</style>

--
Gitblit v1.9.3