From 3bc7fe7b6eb9a6f9b6ed346b6cd3c8f5a4a32e39 Mon Sep 17 00:00:00 2001
From: luofl <1442745593@qq.com>
Date: 星期五, 11 四月 2025 09:09:14 +0800
Subject: [PATCH] 1

---
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminCard/tHuiminCard_add.html |  155 +++++++++++++++++++++++++++++++++------------------
 1 files changed, 99 insertions(+), 56 deletions(-)

diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminCard/tHuiminCard_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminCard/tHuiminCard_add.html
index 39eaf75..5eb8e8e 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminCard/tHuiminCard_add.html
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminCard/tHuiminCard_add.html
@@ -167,24 +167,18 @@
                 <!-- 时间输入和删除按钮 -->
                 <div class="row g-3">
                     <div class="col-md-6" style="display: flex">
-                        <el-time-select
-                                placeholder="起始时间"
+                        <el-time-picker
                                 v-model="weekGroup.startTime"
-                                :picker-options="{
-                                                start: '00:00',
-                                                step: '01:00',
-                                                end: '23:00'}"
-                        >
-                        </el-time-select>
-                        <el-time-select
-                                placeholder="结束时间"
+                                format="HH:mm"
+                                value-format="HH:mm"
+                                placeholder="开始时间">
+                        </el-time-picker>
+                        <el-time-picker
+                                format="HH:mm"
+                                value-format="HH:mm"
                                 v-model="weekGroup.endTime"
-                                :picker-options="{
-                                              start: '00:00',
-                                              step: '01:00',
-                                              end: '23:00',
-                                              minTime: weekGroup.startTime}">
-                        </el-time-select>
+                                placeholder="结束时间">
+                        </el-time-picker>
                     </div>
                     <div class="col-md-6">
                         <button
@@ -223,13 +217,13 @@
         </el-form-item>
 
         <!-- 适用范围 -->
-        <el-form-item label="适用范围" prop="useScope">
-            <el-radio v-model="huiminCard.useScope" label="1">指定门店</el-radio>
-            <el-radio v-model="huiminCard.useScope" label="2">指定场地</el-radio>
+        <el-form-item label="适用范围" prop="useScope" >
+            <el-radio v-if="objectType !=='3'" v-model="huiminCard.useScope" v-on:change="useScopeChange()" label="1">指定门店</el-radio>
+            <el-radio v-model="huiminCard.useScope" v-on:change="useScopeChange()" label="2">指定场地</el-radio>
         </el-form-item>
 
         <!-- 指定门店 -->
-        <el-form-item label="指定门店" v-if="huiminCard.useScope === '1'" prop="storeIds">
+        <el-form-item label="指定门店" v-if="huiminCard.useScope === '1' && objectType !=='3'" prop="storeIds">
             <el-button type="text" v-on:click="handleSelectStore()">选择门店</el-button>
             <el-table
                     :data="tableData"
@@ -302,6 +296,7 @@
             </el-table>
         </el-form-item>
 
+
         <!-- 惠民卡介绍 -->
         <el-form-item label="惠民卡介绍" prop="introduce">
             <textarea type="text/plain" v-model="introduces" id="editor_1"></textarea>
@@ -332,7 +327,6 @@
                             <el-select v-model="storeForm.provinceCode" size="mini" clearable filterable placeholder="请选择">
                                 <el-option
                                         v-for="item in provinces"
-                                        :key="item.code"
                                         :label="item.name"
                                         :value="item.code">
                                 </el-option>
@@ -344,7 +338,6 @@
                             <el-select v-model="storeForm.cityCode" clearable size="mini" filterable placeholder="请选择">
                                 <el-option
                                         v-for="item in cities"
-                                        :key="item.citycode"
                                         :label="item.name"
                                         :value="item.citycode">
                                 </el-option>
@@ -352,11 +345,10 @@
                         </el-form-item>
                     </el-col>
                     <el-col :span="6">
-                        <el-form-item label="所属运营商">
+                        <el-form-item label="所属运营商" label-width="100px">
                             <el-select v-model="storeForm.operatorId" clearable size="mini" filterable placeholder="请选择">
                                 <el-option
                                         v-for="item in operations"
-                                        :key="item.id"
                                         :label="item.name"
                                         :value="item.id">
                                 </el-option>
@@ -405,12 +397,13 @@
                 </el-table-column>
             </el-table>
             <el-pagination
-                    background
-                    layout="prev, pager, next"
-                    v-on:pagination="storeList"
-                    :page.sync="queryParams.pageNum"
-                    :limit.sync="queryParams.pageSize"
-                    :total="tableStoreTotal">
+                    v-on:size-change="handleStoreSizeChange"
+                    v-on:current-change="handleStoreCurrentChange"
+                    :current-page="currentStorePage"
+                    :page-sizes="[10, 50, 100, 200]"
+                    :page-size="pageStoreSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="storeTotal">
             </el-pagination>
             <span slot="footer" class="dialog-footer">
                 <el-button v-on:click="dialogVisible2 = false">取 消</el-button>
@@ -432,7 +425,6 @@
                             <el-select v-model="siteForm.provinceCode" size="mini" clearable filterable placeholder="请选择">
                                 <el-option
                                         v-for="item in provinces"
-                                        :key="item.code"
                                         :label="item.name"
                                         :value="item.code">
                                 </el-option>
@@ -444,7 +436,6 @@
                             <el-select v-model="siteForm.cityCode" clearable size="mini" filterable placeholder="请选择">
                                 <el-option
                                         v-for="item in cities"
-                                        :key="item.citycode"
                                         :label="item.name"
                                         :value="item.citycode">
                                 </el-option>
@@ -452,11 +443,10 @@
                         </el-form-item>
                     </el-col>
                     <el-col :span="6">
-                        <el-form-item label="所属运营商">
+                        <el-form-item label="所属运营商" label-width="100px">
                             <el-select v-model="siteForm.operatorId" clearable size="mini" filterable placeholder="请选择">
                                 <el-option
                                         v-for="item in operations"
-                                        :key="item.id"
                                         :label="item.name"
                                         :value="item.id">
                                 </el-option>
@@ -511,12 +501,16 @@
                 </el-table-column>
             </el-table>
 
-            <pagination
-                    v-show="tableSiteTotal>0"
-                    :total="tableSiteTotal"
-                    :page.sync="queryParams.pageNum"
-                    :limit.sync="queryParams.pageSize"
-                    v-on:pagination="siteList"></pagination>
+
+            <el-pagination
+                    v-on:size-change="handleSiteSizeChange"
+                    v-on:current-change="handleSiteCurrentChange"
+                    :current-page="currentSitePage"
+                    :page-sizes="[10, 50, 100, 200]"
+                    :page-size="pageSiteSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="siteTotal">
+            </el-pagination>
 
             <span slot="footer" class="dialog-footer">
                 <el-button v-on:click="dialogVisible3 = false">取 消</el-button>
@@ -647,6 +641,13 @@
                 introduces: null,
                 multipleSelection1: [],
                 multipleSelection2: [],
+                currentSitePage: 1,
+                pageSiteSize: 10,
+                currentStorePage: 1,
+                pageStoreSize: 10,
+                siteTotal: 0,
+                storeTotal: 0,
+                objectType: null,
                 unUseTimes: [
                     {}
                 ],
@@ -673,7 +674,6 @@
                 },
                 tableData: [],
                 tableStoreData: [],
-                tableStoreTotal: 0,
                 tableStoreLoading: false,
                 tableSiteData: [],
                 tableSiteTotal: 0,
@@ -798,7 +798,7 @@
                 return isLt2M;
             },
             handleRemove(file, fileList) {
-                const fileUrl = file.response;
+                const fileUrl = file.url;
                 this.banners.forEach((item, index) => {
                     if (item === fileUrl) {
                         this.banners.splice(index, 1);
@@ -864,7 +864,7 @@
                 let ajax = new $ax(Feng.ctxPath + "/tHuiminCard/storeList",
                     (data) => {
                         vm.tableStoreData = data.records; // 使用 vm 替代 this
-                        vm.tableStoreTotal = data.total;
+                        vm.storeTotal = data.total;
                         vm.tableStoreLoading = false;
                         console.log('成功获取数据:', vm.tableStoreData); // 验证数据
                     },
@@ -873,8 +873,8 @@
                         Feng.error("请求失败: " + data.responseJSON.message);
                     }
                 );
-                this.storeForm.pageNum = vm.queryParams.pageNum;
-                this.storeForm.pageSize = vm.queryParams.pageSize
+                this.storeForm.pageNum = vm.currentStorePage;
+                this.storeForm.pageSize = vm.pageStoreSize
                 ajax.set(this.storeForm);
 
                 ajax.start();
@@ -887,6 +887,9 @@
                         vm.tableSiteData = data.records; // 使用 vm 替代 this
                         vm.tableSiteTotal = data.total;
                         vm.tableSiteLoading = false;
+                        vm.currentStorePage = data.current;
+                        vm.pageStoreSize = data.size;
+                        vm.siteTotal = data.total;
                         console.log('成功获取数据:', vm.tableSiteData); // 验证数据
                     },
                     (data) => {
@@ -894,8 +897,8 @@
                         Feng.error("请求失败: " + data.responseJSON.message);
                     }
                 );
-                this.siteForm.pageNum = vm.queryParams.pageNum;
-                this.siteForm.pageSize = vm.queryParams.pageSize
+                this.siteForm.current = vm.currentSitePage;
+                this.siteForm.size = vm.pageSiteSize
                 ajax.set(this.siteForm);
                 ajax.start();
             },
@@ -903,14 +906,10 @@
                 this.dialogVisible2 = false;
             },
             handleSiteClose() {
-                this.$confirm('确认关闭?1')
-                    .then(_ => {
-                        this.dialogVisible3 = false;
-                    })
-                    .catch(_ => {
-                    });
+                this.dialogVisible3 = false;
             },
             handleSelectionChange(val) {
+
                 if (this.huiminCard.useScope === '1') {
                     this.multipleSelection1 = val;
                 } else if (this.huiminCard.useScope === '2') {
@@ -937,8 +936,30 @@
                     Feng.info('请选择数据');
                     return;
                 }
-                this.dialogVisible2 = false
-                this.tableData = this.multipleSelection1;
+
+                // 新增:检查所有新选中的门店是否属于同一运营商
+                const firstOperator = this.multipleSelection1[0].operatorId;
+                if (this.multipleSelection1.some(item => item.operatorId !== firstOperator)) {
+                    Feng.info('请选择同一运营商');
+                    return;
+                }
+
+                // 检查新选门店与已有门店的运营商是否一致(如果需要)
+                if (this.tableData.length > 0) {
+                    const existingOperator = this.tableData[0].operatorId;
+                    if (firstOperator !== existingOperator) {
+                        Feng.info('新选门店的运营商需与已有门店一致');
+                        return;
+                    }
+                }
+
+                this.multipleSelection1.forEach((item) => {
+                    if (!this.tableData.some(item1 => item1.storeId === item.storeId)) {
+                        this.tableData.push(item);
+                    }
+                });
+
+                this.dialogVisible2 = false;
                 this.huiminCard.useIds = this.tableData.map(item => item.storeId).join(',');
             },
             handleSite() {
@@ -949,6 +970,9 @@
                 this.dialogVisible3 = false
                 this.tableData = this.multipleSelection2;
                 this.huiminCard.useIds = this.tableData.map(item => item.siteId).join(',');
+            },
+            useScopeChange() {
+                this.tableData = [];
             },
             submitForm(formName) {
                 this.$refs[formName].validate(valid => {
@@ -984,10 +1008,29 @@
                     }
                 });
             },
+            handleSiteSizeChange(val){
+                this.pageSiteSize = val;
+                this.siteList();
+            },
+            handleSiteCurrentChange(val){
+                this.currentSitePage = val;
+                this.siteList();
+            },
+            handleStoreSizeChange(val){
+                this.pageSiteSize = val;
+                this.storeList();
+            },
+            handleStoreCurrentChange(val){
+                this.currentSitePage = val;
+                this.storeList();
+            },
         },
         created() {
             let editor_1 = UE.getEditor('editor_1');
-
+            this.objectType = `${objectType}`
+            if (this.objectType === '3'){
+                this.huiminCard.useScope = '2'
+            }
 
             let ajax = new $ax(Feng.ctxPath + "/base/region/getProvince",
                 (data) => {

--
Gitblit v1.7.1