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