1
luofl
2025-04-11 3bc7fe7b6eb9a6f9b6ed346b6cd3c8f5a4a32e39
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) => {