From fe7c2fff004e4a64dae5f0982ab28663c600c778 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 03 四月 2025 15:20:17 +0800 Subject: [PATCH] Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/PlayPai into 2.0 --- cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminCard/tHuiminCard_add.html | 1011 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 978 insertions(+), 33 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 bf93e48..86d4f84 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 @@ -1,45 +1,990 @@ @layout("/common/_container.html"){ -<div class="ibox float-e-margins"> - <div class="ibox-content"> - <div class="form-horizontal"> +<body> +<div id="app0" class="form-container"> + <el-form :rules="rules" label-position="left" ref="formRef" label-width="120px" :model="huiminCard" size="small"> + <el-form-item label="惠民卡名称" prop="huiMinName"> + <el-input v-model="huiminCard.huiMinName"></el-input> + </el-form-item> - <div class="row"> - <div class="col-sm-6 b-r"> - <#input id="id" name="主键id" underline="true"/> - <#input id="huiMinName" name="惠民卡名称" underline="true"/> - <#input id="huiMinType" name="惠民卡类型1年度2年内" underline="true"/> - <#input id="salesMoney" name="售卖金额" underline="true"/> - <#input id="buyCover" name="已购买封面" underline="true"/> - <#input id="unBuyCover" name="未购买封面" underline="true"/> - <#input id="buyRemark" name="已购买使用说明" underline="true"/> - <#input id="unBuyRemark" name="未购买使用说明" underline="true"/> - <#input id="banner" name="轮播图 逗号分隔" underline="true"/> - <#input id="grantCount" name="发放数量 为空表示不限"/> - </div> - <div class="col-sm-6"> - <#input id="limitCount" name=" 限购数量 为空表示不限" underline="true"/> - <#input id="endTime" name="有效期 不填表示永久" underline="true"/> - <#input id="useWeeks" name="可使用时间段,周,多个逗号分隔" underline="true"/> - <#input id="useTimes" name="可使用时间段,时分秒,多个逗号分隔" underline="true"/> - <#input id="unUseTimes" name="不可用时间段,yyyy-MM-dd HH:mm:ss,多个逗号分隔" underline="true"/> - <#input id="useScope" name="使用范围1门店2场地" underline="true"/> - <#input id="useIds" name="根据适用范围,存储门店id或场地id,多个逗号分隔" underline="true"/> - <#input id="introduce" name="惠民卡介绍" underline="true"/> - <#input id="sort" name="排序" underline="true"/> - <#input id="storeId" name="门店id" underline="true"/> + <!-- 惠民卡类型 --> + <el-form-item label="惠民卡类型" prop="huiMinType"> + <el-radio-group v-model="huiminCard.huiMinType"> + <el-radio :label="1">年度卡</el-radio> + <el-radio :label="2">年内卡</el-radio> + </el-radio-group> + </el-form-item> + + <!-- 售卖金额 --> + <el-form-item label="售卖金额" prop="salesMoney"> + <el-input placeholder="请输入内容" v-model="huiminCard.salesMoney"> + <template slot="append">¥</template> + </el-input> + </el-form-item> + + <!-- 封面图片 --> + <el-row> + <el-form-item label="封面图片2" prop="cover"> + <el-col :span="12"> + <div class="upload-area text-center"> + <el-upload + :limit="1" + action="/tCouponManage/uploadPic" + list-type="picture-card" + :multiple="false" + accept="." + :on-success="handleUnBuyCoverSuccess" + :before-upload="beforeUpload" + :on-exceed="handleUnBuyCoverExceed" + :on-remove="handleUnBuyCoverRemove"> + <i class="el-icon-plus avatar-uploader-icon"></i> + </el-upload> + <span>未购买封面</span> + </div> + + </el-col> + <el-col :span="12"> + <div class="upload-area text-center" style="display: flex"> + <el-upload + :limit="1" + class="avatar-uploader" + action="/tCouponManage/uploadPic" + list-type="picture-card" + :multiple="false" + accept="." + :on-success="handleBuyCoverSuccess" + :before-upload="beforeUpload" + :on-remove="handleBuyCoverRemove"> + <i class="el-icon-plus avatar-uploader-icon"></i> + </el-upload> + <span>已购买封面</span> + </div> + </el-col> + </el-form-item> + </el-row> + + + <!-- 使用说明 --> + <el-form-item label="使用说明" prop="unBuyRemark"> + <el-input + type="textarea" + :autosize="{ minRows: 2, maxRows: 4}" + placeholder="请输入少于200字使用说明" + v-model="huiminCard.unBuyRemark"> + </el-input> + </el-form-item> + + + <!-- 使用期限 --> + <el-form-item label="使用期限" prop="buyRemark"> + <el-input + type="textarea" + :autosize="{ minRows: 2, maxRows: 4}" + placeholder="请输入少于200字使用说明" + v-model="huiminCard.buyRemark"> + </el-input> + </el-form-item> + + + <!-- 轮播介绍图 --> + <el-form-item label="轮播介绍图" prop="banner"> + <div class="upload-area"> + <div class="d-flex align-items-center justify-content-between"> + <el-upload + :limit="5" + class="avatar-uploader" + action="/tCouponManage/uploadPic" + list-type="picture-card" + accept="." + :on-success="handleSuccess" + :before-upload="beforeUpload" + :on-remove="handleRemove"> + <i class="el-icon-plus avatar-uploader-icon"></i> + </el-upload> + <span>点击上传,最多5张</span> </div> </div> + </el-form-item> - <div class="row btn-group-m-t"> - <div class="col-sm-10"> - <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="THuiminCardInfoDlg.addSubmit()"/> - <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="THuiminCardInfoDlg.close()"/> + + <!-- 发放数量 --> + <el-form-item label="发放数量"> + <el-input v-model="huiminCard.grantCount"></el-input> + </el-form-item> + + + <!-- 限购数量 --> + <el-form-item label="限购数量"> + <el-input v-model="huiminCard.limitCount"></el-input> + </el-form-item> + + + <!-- 有效期 --> + <el-form-item label="有效期"> + <el-date-picker + v-model="huiminCard.endTime" + type="date" + placeholder="选择日期"> + </el-date-picker> + </el-form-item> + + + <!-- 可用时间 --> + <el-form-item label="可用时间" prop="weeks"> + <el-card + shadow="never" + v-for="(weekGroup, groupIndex) in huiminCard.weeks" + :key="'weekGroup_' + groupIndex"> + <div slot="header" + style="display: flex; + align-items: center; + height: 18px; + padding: 0 16px;"> + <el-button type="text" v-on:click="addWeek()">添加</el-button> </div> + + <div class="form-group" style="display: flex; justify-content: space-between;"> + <div + class="col-md-1" + style="flex: 1 0 calc(100% / 7);" + v-for="(day, dayIndex) in weekGroup.days" + :key="dayIndex"> + <input + class="form-check-input" + type="checkbox" + :name="'week_'+''+groupIndex" + :value="day.value" + v-model="day.checked"> + <label class="form-check-label"> + {{ day.label }} + </label> + </div> + </div> + <!-- 时间输入和删除按钮 --> + <div class="row g-3"> + <div class="col-md-6" style="display: flex"> + <el-time-select + placeholder="起始时间" + v-model="weekGroup.startTime" + :picker-options="{ + start: '00:00', + step: '01:00', + end: '23:00'}" + > + </el-time-select> + <el-time-select + placeholder="结束时间" + v-model="weekGroup.endTime" + :picker-options="{ + start: '00:00', + step: '01:00', + end: '23:00', + minTime: weekGroup.startTime}"> + </el-time-select> + </div> + <div class="col-md-6"> + <button + type="button" + class="btn btn-danger" + style="float: right" + v-on:click="removeWeek(groupIndex)" + > + <i class="fa fa-trash"></i> 删除 + </button> + </div> + </div> + </el-card> + </el-form-item> + + <!-- 不可用时间 --> + <el-form-item label="不可用时间" prop="unUseTimes"> + <el-button type="text" v-on:click="addUnUseTime()">添加</el-button> + <div v-for="(item, dayIndex) in times" + :key="dayIndex" + class="date-picker-item mb-2"> + <el-date-picker + type="datetime" + placeholder="选择日期" + v-model="item.date"> + </el-date-picker> + <button + type="button" + class="btn btn-danger btn-sm ml-2" + v-on:click="removeUnUseTime(dayIndex)"> + 删除 + </button> + </div> + </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> + + <!-- 指定门店 --> + <el-form-item label="指定门店" v-if="huiminCard.useScope === '1'" prop="storeIds"> + <el-button type="text" v-on:click="handleSelectStore()">选择门店</el-button> + <el-table + :data="tableData" + height="250" + border> + <el-table-column + prop="province" + label="所在省市"> + </el-table-column> + <el-table-column + prop="operatorName" + label="所属运营商"> + </el-table-column> + <el-table-column + prop="storeName" + label="门店名称"> + </el-table-column> + <el-table-column + prop="ids" + label="闸机ID"> + </el-table-column> + <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + v-on:click="handleRemoveStore(scope.$index)" + icon="el-icon-delete" + >删除 + </el-button> + </template> + </el-table-column> + </el-table> + </el-form-item> + + <!-- 指定场地 --> + <el-form-item label="指定场地" v-if="huiminCard.useScope === '2'" prop="siteIds"> + <el-button type="text" v-on:click="handleSelectStore()">选择场地</el-button> + <el-table + :data="tableData" + height="250" + border> + <el-table-column + prop="province" + label="所在省市"> + </el-table-column> + <el-table-column + prop="operatorName" + label="所属运营商"> + </el-table-column> + <el-table-column + prop="storeName" + label="门店名称"> + </el-table-column> + <el-table-column + prop="ids" + label="闸机ID"> + </el-table-column> + <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + v-on:click="handleRemoveStore(scope.$index)" + icon="el-icon-delete" + >删除 + </el-button> + </template> + </el-table-column> + </el-table> + </el-form-item> + + <!-- 惠民卡介绍 --> + <el-form-item label="惠民卡介绍" prop="introduce"> + <textarea type="text/plain" v-model="introduces" id="editor_1"></textarea> + </el-form-item> + + <!-- 排序 --> + <el-form-item label="排序"> + <el-input v-model="huiminCard.sort"></el-input> + </el-form-item> + + + <!-- 操作按钮 --> + <div class="row mt-5"> + <div class="col-sm-9 offset-sm-3"> + <button type="button" v-on:click="submitForm('formRef')" class="btn btn-primary px-4">提交保存</button> </div> </div> + <!-- 选择门店 --> + <el-dialog + title="选择门店" + :visible.sync="dialogVisible2" + width="80%" + :before-close="handleStoreClose"> + <el-form ref="form" :model="storeForm" label-width="80px"> + <el-row :gutter="10"> + <el-col :span="6"> + <el-form-item label="所在省"> + <el-select v-model="storeForm.provinceCode" size="mini" filterable placeholder="请选择"> + <el-option + v-for="item in provinces" + :key="item.code" + :label="item.name" + :value="item.code"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="所在市2"> + <el-select v-model="storeForm.cityCode" size="mini" filterable placeholder="请选择"> + <el-option + v-for="item in cities" + :key="item.citycode" + :label="item.name" + :value="item.citycode"> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="所属运营商"> + <el-input size="mini" v-model="storeForm.operatorId" placeholder="请输入内容"></el-input> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="门店名称"> + <el-input size="mini" v-model="storeForm.storeName" placeholder="请输入内容"></el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-button v-on:click="storeList" style="background-color:#1ab394;color: #ffffff" size="mini" icon="el-icon-search"> + 搜索 + </el-button> + </el-col> + </el-row> - </div> + <el-row> + <el-col :span="24"> + <el-table + v-loading="tableStoreLoading" + :data="tableStoreData" + height="250" + v-on:selection-change="handleSelectionChange" + border> + <el-table-column + type="selection" + width="55"> + </el-table-column> + <el-table-column + prop="province" + label="所在省市"> + </el-table-column> + <el-table-column + prop="operatorName" + label="所属运营商"> + </el-table-column> + <el-table-column + prop="storeName" + label="门店名称"> + </el-table-column> + <el-table-column + prop="ids" + label="闸机ID"> + </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"> + </el-pagination> + </el-col> + </el-row> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button v-on:click="dialogVisible2 = false">取 消</el-button> + <el-button type="primary" v-on:click="handleStore">确 定</el-button> + </span> + </el-dialog> + + <!-- 选择场地 --> + <el-dialog + title="选择场地" + :visible.sync="dialogVisible3" + width="80%" + :before-close="handleSiteClose"> + + <el-table + v-loading="tableSiteLoading" + :data="tableSiteData" + height="250" + v-on:selection-change="handleSelectionChange" + border> + <el-table-column + type="selection" + width="55"> + </el-table-column> + <el-table-column + prop="province" + label="所在省市"> + </el-table-column> + <el-table-column + prop="operatorName" + label="所属运营商"> + </el-table-column> + <el-table-column + prop="storeName" + label="门店名称"> + + </el-table-column> + <el-table-column + prop="siteName" + label="场地名称"> + </el-table-column> + <el-table-column + prop="ids" + label="闸机ID2"> + </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> + + <span slot="footer" class="dialog-footer"> + <el-button v-on:click="dialogVisible3 = false">取 消</el-button> + <el-button type="primary" v-on:click="handleSite">确 定</el-button> + </span> + </el-dialog> + </el-form> </div> -<script src="${ctxPath}/static/modular/system/tHuiminCard/tHuiminCard_info.js"></script> + +<style> + .form-container { + background: #ffffff; + border-radius: 12px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); + padding: 2rem; + } + + .upload-area { + border: 2px dashed #dee2e6; + border-radius: 8px; + padding: 1.5rem; + transition: all 0.3s; + cursor: pointer; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 200px; /* 设置一个最小高度,确保有足够的空间 */ + position: relative; /* 为图片定位提供基准 */ + overflow: hidden; /* 防止图片溢出 */ + } + + .upload-area:hover { + border-color: #4a90e2; + background: #f8f9fa; + } + + .upload-area i { + margin-bottom: 10px; + } + + input[type=file] { + display: none; + } + + +</style> + +<script src="${ctxPath}/modular/system/tHuiminCard/tHuiminCard_info.js"></script> +<script src="${ctxPath}/js/vue/vue.js"></script> +<script src="${ctxPath}/js/elementui/index.js"></script> +<link rel="stylesheet" href="${ctxPath}/js/elementui/index.css"> +<script> + let vue = new Vue({ + el: '#app0', + props: { + // 数量限制 + limit: { + type: Number, + default: 2 + }, + }, + data() { + return { + storeForm: { + provinceCode: null, + cityCode: null, + operatorId: null, + storeName: '', + }, + + provinces: [], + cities: [], + stores: [], + operations: [], + autoUpload: true,//自动上传 + previewImg: '',//模型数据,用于上传图片完成后图片预览 + dialogVisible: false, + dialogVisible2: false, + dialogVisible3: false, + times: [{}], + banners: [], + introduces: null, + multipleSelection1: [], + multipleSelection2: [], + huiminCard: { + id: null, + huiMinName: null, + huiMinType: null, + salesMoney: null, + buyCover: null, + unBuyCover: null, + buyRemark: null, + unBuyRemark: null, + grantCount: null, + limitCount: null, + banner: null, + endTime: null, + useWeeks: null, + useTimes: null, + introduce: null, + weeks: [ + { + days: [ // 每个星期组的星期选项 + { + value: '1', + label: '星期一', + checked: false, + }, + { + value: '2', + label: '星期二', + checked: false, + }, + { + value: '3', + label: '星期三', + checked: false, + }, + { + value: '4', + label: '星期四', + checked: false, + }, + { + value: '5', + label: '星期五', + checked: false, + }, + { + value: '6', + label: '星期六', + checked: false, + }, + { + value: '7', + label: '星期日', + checked: false, + } + ], + }, + ], + unUseTimes: [ + {date: null} + ], + useScope: '1', + useIds: null, + sort: null, + storeId: null + }, + tableData: [], + tableStoreData: [], + tableStoreTotal: 0, + tableStoreLoading: false, + tableSiteData: [], + tableSiteTotal: 0, + tableSiteLoading: false, + queryParams: { + pageNum: 1, + pageSize: 10, + }, + + rules: { + buyRemark: [{required: true, message: '请输入使用说明', trigger: 'blur'}], + cover: [{ + validator: (rule, value, callback) => { + if (!this.huiminCard.unBuyCover) { + callback(new Error('请上传未购买封面')); + } + if (!this.huiminCard.buyCover) { + callback(new Error('请上传已购买封面')); + } + callback(); + }, + trigger: 'blur' + }], + buyCover: [{required: true, message: '已购买封面不能为空', trigger: 'blur'}], + huiMinName: [{required: true, message: '请输入惠民卡名称', trigger: 'blur'}], + huiMinType: [{required: true, message: '请选择惠民卡类型', trigger: 'change'}], + salesMoney: [{required: true, message: '请输入售卖金额', trigger: 'blur'}], + unBuyRemark: [{required: true, message: '请输入使用说明', trigger: 'blur'}], + banner: [{required: true, message: '请上传轮播图', trigger: 'blur'}], + limitCount: [{required: true, message: '请输入限购数量', trigger: 'blur'}], + weeks: [ + { + required: true, + message: '请填写可用时间', + trigger: 'blur', + validator: (rule, value, callback) => { + const everyFalse = this.huiminCard.weeks.every(week => + week.days.every(day => + day.checked === false + ) + ); + if (everyFalse) { + callback(new Error('请选择可用星期')); + } + const everyNull = this.huiminCard.weeks.every(obj => + obj.startTime === null || + obj.endTime === null + ); + if (everyNull) { + callback(new Error('请选择可用时间')); + } + callback(); + }, + } + ], + storeIds: [ + { + required: true, + trigger: 'blur', + validator: (rule, value, callback) => { + if (this.huiminCard.useIds === null || this.huiminCard.useIds.length === 0) { + callback(new Error('请选择指定门店')); + } + callback(); + }, + } + ], + siteIds: [ + { + required: true, + trigger: 'blur', + validator: (rule, value, callback) => { + if (this.huiminCard.useIds === null || this.huiminCard.useIds.length === 0) { + callback(new Error('请选择指定场地')); + } + callback(); + }, + } + ], + introduce: [ + { + required: true, validator: (rule, value, callback) => { + let content = UE.getEditor('editor_1').getContent(); + console.log(content) + if (content.length === 0) { + callback(new Error('请输入详细介绍')); + } else { + callback(); + } + } + } + ], + }, + } + }, + methods: { + handleUnBuyCoverSuccess(res, file) { + this.huiminCard.unBuyCover = res; + }, + handleUnBuyCoverExceed() { + Feng.error('最多上传一张图片'); + }, + handleUnBuyCoverRemove(file, fileList) { + this.huiminCard.unBuyCover = ''; + }, + handleBuyCoverSuccess(res, file) { + this.huiminCard.buyCover = res; + }, + handleBuyCoverRemove(file, fileList) { + this.huiminCard.buyCover = ''; + }, + handleSuccess(res, file) { + this.banners.push(res) + this.huiminCard.banner = this.banners.join(','); + }, + + beforeUpload(file) { + console.log(111111) + const isLt2M = file.size / 1024 / 1024 < 10; + if (!isLt2M) { + Feng.error('上传图片大小不能超过 10MB!'); + } + return isLt2M; + }, + handleRemove(file, fileList) { + const fileUrl = file.response; + this.banners.forEach((item, index) => { + if (item === fileUrl) { + this.banners.splice(index, 1); + } + }); + this.huiminCard.banner = this.banners.join(','); + }, + addWeek() { + // 新增一个包含默认星期的组 + this.huiminCard.weeks.push({ + days: [ + { + value: '1', + label: '星期一', + checked: false, + }, + { + value: '2', + label: '星期二', + checked: false, + }, + { + value: '3', + label: '星期三', + checked: false, + }, + { + value: '4', + label: '星期四', + checked: false, + }, + { + value: '5', + label: '星期五', + checked: false, + }, + { + value: '6', + label: '星期六', + checked: false, + }, + { + value: '7', + label: '星期日', + checked: false, + } + ], + }); + }, + removeWeek(index) { + this.huiminCard.weeks.splice(index, 1); + console.log(this.weeks) + }, + addUnUseTime() { + this.times.push({date: null}); + }, + removeUnUseTime(index) { + this.times.splice(index, 1); + }, + storeList() { + this.tableStoreLoading = true; + let vm = this; + let ajax = new $ax(Feng.ctxPath + "/tHuiminCard/storeList", + (data) => { + vm.tableStoreData = data.records; // 使用 vm 替代 this + vm.tableStoreTotal = data.total; + vm.tableStoreLoading = false; + console.log('成功获取数据:', vm.tableStoreData); // 验证数据 + }, + (data) => { + vm.tableStoreLoading = false; + Feng.error("请求失败: " + data.responseJSON.message); + } + ); + this.storeForm.pageNum = vm.queryParams.pageNum; + this.storeForm.pageSize = vm.queryParams.pageSize + ajax.set(this.storeForm); + + ajax.start(); + }, + siteList() { + this.tableSiteLoading = true; + let vm = this; + let ajax = new $ax(Feng.ctxPath + "/tHuiminCard/siteList", + (data) => { + vm.tableSiteData = data.records; // 使用 vm 替代 this + vm.tableSiteTotal = data.total; + vm.tableSiteLoading = false; + console.log('成功获取数据:', vm.tableSiteData); // 验证数据 + }, + (data) => { + vm.tableSiteLoading = false; + Feng.error("请求失败: " + data.responseJSON.message); + } + ); + ajax.start(); + }, + handleStoreClose() { + this.dialogVisible2 = false; + }, + handleSiteClose() { + this.$confirm('确认关闭?1') + .then(_ => { + this.dialogVisible3 = false; + }) + .catch(_ => { + }); + }, + handleSelectionChange(val) { + if (this.huiminCard.useScope === '1') { + this.multipleSelection1 = val; + } else if (this.huiminCard.useScope === '2') { + this.multipleSelection2 = val; + } + + }, + handleRemoveStore(index) { + this.tableData.splice(index, 1); + }, + handleSelectStore() { + this.queryParams.pageNum = 1; + this.queryParams.pageSize = 10; + if (this.huiminCard.useScope === '1') { + this.dialogVisible2 = true; + this.storeList(); + } else if (this.huiminCard.useScope === '2') { + this.dialogVisible3 = true; + this.siteList(); + } + }, + handleStore() { + if (this.multipleSelection1.length === 0) { + Feng.info('请选择数据'); + return; + } + this.dialogVisible2 = false + this.tableData = this.multipleSelection1; + this.huiminCard.useIds = this.tableData.map(item => item.storeId).join(','); + }, + handleSite() { + if (this.multipleSelection2.length === 0) { + Feng.info('请选择数据'); + return; + } + this.dialogVisible3 = false + this.tableData = this.multipleSelection2; + this.huiminCard.useIds = this.tableData.map(item => item.siteId).join(','); + }, + submitForm(formName) { + this.$refs[formName].validate(valid => { + console.log(valid) + if (valid) { + let data = this.huiminCard; + let weeks = data.weeks; + var formatWeekAndTime1 = formatWeekAndTime(weeks); + data.useTimes = formatWeekAndTime1.useTimes; + data.useWeeks = formatWeekAndTime1.useWeeks; + data.unUseTimes = formatUnUseTimes(this.times); + data.introduce = UE.getEditor('editor_1').getContent(); + console.log(data.introduce) + + let vm = this; + let ajax = new $ax(Feng.ctxPath + "/tHuiminCard/add", + (data) => { + window.parent.THuiminCard.table.refresh(); + THuiminCardInfoDlg.close(); + }, + (data) => { + vm.tableStoreLoading = false; + Feng.error("请求失败: " + data.responseJSON.message); + } + ); + ajax.set(data) + ajax.start(); + } + }); + }, + }, + created() { + let editor_1 = UE.getEditor('editor_1'); + + + let ajax = new $ax(Feng.ctxPath + "/base/region/getProvince", + (data) => { + this.provinces = data; + }, + (data) => { + Feng.error("请求失败: " + data.responseJSON.message); + } + ); + ajax.start(); + + let ajax2 = new $ax(Feng.ctxPath + "/base/region/getCity", + (data) => { + this.cities = data; + }, + (data) => { + Feng.error("请求失败: " + data.responseJSON.message); + } + ); + ajax2.start(); + + }, + }); + + function formatWeekAndTime(data) { + const weekTimeMap = {}; + + data.forEach(item => { + // 确定时间段(优先使用直接字段) + const startTime = item.startTime || item.time?.startTime || ''; + const endTime = item.endTime || item.time?.endTime || ''; + const timePair = startTime + ";" + endTime; + + // 遍历days数组,记录每个选中星期对应的时间段 + item.days.forEach(day => { + if (day.checked && day.value) { + weekTimeMap[day.value] = timePair; + } + }); + }); + + // 按星期数字排序并生成最终字符串 + const sortedWeeks = Object.keys(weekTimeMap).sort((a, b) => a - b); + const useWeeks = sortedWeeks.join(','); + const useTimes = sortedWeeks.map(week => weekTimeMap[week]).join(','); + + return {useWeeks, useTimes}; + } + + function formatUnUseTimes(nUseTimes) { + if (!nUseTimes) { + return ""; + } + let dates = []; + nUseTimes.forEach(item => { + // 格式化 + const date = item.date; + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需要+1 + const day = String(date.getDate()).padStart(2, '0'); + const hours = String(date.getHours()).padStart(2, '0'); + const minutes = String(date.getMinutes()).padStart(2, '0'); + const seconds = String(date.getSeconds()).padStart(2, '0'); + dates.push(year + '-' + month + '-' + day + '-' + hours + ':' + minutes + ':' + seconds) + }); + return dates.join(','); + } + +</script> + + +</body> @} -- Gitblit v1.7.1