From 1baed91dd6c4cfc8a230c2857132ef6302cc4f3c Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期五, 21 二月 2025 09:01:51 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/2.0.1' into 2.0.1 --- admin/src/views/combo/components/Edit.vue | 187 +++++++++++++++++++++++++++------------------- 1 files changed, 111 insertions(+), 76 deletions(-) diff --git a/admin/src/views/combo/components/Edit.vue b/admin/src/views/combo/components/Edit.vue index 227d177..51b16fd 100644 --- a/admin/src/views/combo/components/Edit.vue +++ b/admin/src/views/combo/components/Edit.vue @@ -1,35 +1,44 @@ <template> <GlobalWindow :title="param.id ? '缂栬緫濂楅' : '鏂板缓濂楅'" :visible.sync="isShowModal" :confirm-working="isLoading" - width="1000px" @close="close" @confirm="confirm"> + width="900px" @close="close" @confirm="confirm"> <el-form :model="param" label-width="100px" ref="form" :rules="rules"> <div class="form_title">鍩烘湰淇℃伅</div> <el-form-item label="濂楅鍚嶇О" prop="name"> <el-input class="w200" v-model="param.name" placeholder="璇疯緭鍏ュ椁愬悕绉�" v-trim /> </el-form-item> - <el-form-item label="绫诲瀷"> - <el-select class="w200" :disabled="true" v-model="param.warehouseId"> + <el-form-item label="绫诲瀷" prop="type"> + <el-select class="w200" :disabled="true" v-model="param.type"> <el-option label="鏈熼檺鍗�" :value="0"></el-option> + <el-option label="娆″崱" :value="1"></el-option> </el-select> </el-form-item> <el-form-item label="姣忔棩楠戣闄愬埗"> - <div> - <el-radio v-model="param.aa" label="1">涓嶉檺鍒�</el-radio> - <el-radio v-model="param.aa" label="2">闄愬埗鏃堕暱</el-radio> + <div class="df_ac"> + <div class="mr10"> + <el-radio @change="changeType" v-model="param.limitType" :label="0">涓嶉檺鍒�</el-radio> + <el-radio @change="changeType" v-model="param.limitType" :label="1">闄愬埗鏃堕暱</el-radio> + </div> + <el-input v-if="param.limitType == 1" class="w200" v-model="param.limitTime" v-trim /> + <span v-if="param.limitType == 1" class="ml10">鍒嗛挓</span> </div> </el-form-item> - <el-form-item label="閿�鍞环"> - <el-input class="w200" v-model="param.name" placeholder="璇疯緭鍏ヤ环鏍�" v-trim /> + <el-form-item label="閿�鍞环" prop="price"> + <el-input class="w200" + oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" + v-model="param.price" placeholder="璇疯緭鍏ヤ环鏍�" v-trim /> </el-form-item> <el-form-item label="鍒掔嚎浠�"> - <el-input class="w200" v-model="param.name" placeholder="璇疯緭鍏ュ睍绀虹殑鍒掔嚎浠�" v-trim /> + <el-input class="w200" v-model="param.linePrice" + oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" + placeholder="璇疯緭鍏ュ睍绀虹殑鍒掔嚎浠�" v-trim /> </el-form-item> - <el-form-item label="閿�鍞笭閬�"> - <el-checkbox v-model="param.ada">灏忕▼搴忕</el-checkbox> + <el-form-item label="閿�鍞笭閬�" prop="channel"> + <el-checkbox v-model="param.channel" disabled :true-label="0" :false-label="1">灏忕▼搴忕</el-checkbox> </el-form-item> <el-form-item label="濂楅鍥剧墖"> <div class="df_ac"> <UploadAvatarImage :file="{ 'imgurlfull': param.fileFullUrl, 'imgurl': param.fileUrl }" - :uploadData="{ folder: 'ywPatrol/' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false" + :uploadData="{ folder: 'DISCOUNT/' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false" @uploadBegin="isUploading = true" /> <div class="img_place"> <div>涓婁紶鍥剧墖涓嶅厑璁告秹鍙婃斂娌绘晱鎰熶笌鑹叉儏;</div> @@ -39,7 +48,7 @@ </div> </el-form-item> <el-form-item label="濂楅绠�浠�"> - <el-input class="w400" v-model="param.name" placeholder="璇疯緭鍏ュ椁愮畝浠�" v-trim /> + <el-input class="w400" v-model="param.descs" placeholder="璇疯緭鍏ュ椁愮畝浠�" v-trim /> </el-form-item> <el-form-item label="濂楅鎻忚堪"> <RichEditor :content="{ content: param.content }" @edit="param.content = $event"></RichEditor> @@ -48,50 +57,56 @@ <div>閫傜敤瑙勫垯</div> <div class="placeholder9">閿�鍞椂闂淬�佷娇鐢ㄦ椂闂寸瓑璁剧疆</div> </div> - <el-form-item label="閿�鍞椂娈�"> - <el-date-picker class="w400" v-model="param.value1" value-format="yyyy-MM-dd" type="daterange" range-separator=" ~ " /> + <el-form-item label="閿�鍞椂娈�" prop="saleDate"> + <el-date-picker class="w400" v-model="param.saleDate" value-format="yyyy-MM-dd" type="daterange" + range-separator=" ~ " /> </el-form-item> <div class="df_ac"> - <el-form-item label="浣跨敤鏃堕棿" class="mr16"> - <el-select v-model="param.aaadd" style="width: 140px;"> + <el-form-item prop="useType" label="浣跨敤鏃堕棿" class="mr16"> + <el-select @change="changeUseDate" v-model="param.useType" style="width: 140px;"> <el-option label="鍥哄畾鏃ユ湡" :value="0"></el-option> <el-option label="璐拱鍚庣敓鏁�" :value="1"></el-option> - <el-option label="鎸囧畾鏃ユ湡鐢熸晥" :value="1"></el-option> + <el-option label="鎸囧畾鏃ユ湡鐢熸晥" :value="2"></el-option> </el-select> </el-form-item> - <!-- <el-form-item label-width="80px" label="鍥哄畾鏃ユ湡"> - <el-date-picker v-model="param.value1" value-format="yyyy-MM-dd" type="daterange" range-separator=" ~ " /> - </el-form-item> --> - <!-- <el-form-item label-width="60px" label="鏈夋晥鏈�"> - <el-input style="width: 130px;" v-model="param.name" placeholder="璇疯緭鍏ユ湁鏁堝ぉ鏁�" v-trim /> - </el-form-item> --> - <el-form-item label-width="0px"> + <el-form-item v-if="param.useType == 0" label-width="80px" label="鍥哄畾鏃ユ湡"> + <el-date-picker v-model="param.useDate" value-format="yyyy-MM-dd" type="daterange" range-separator=" ~ " /> + </el-form-item> + <el-form-item v-if="param.useType == 1" label-width="60px" label="鏈夋晥鏈�"> + <el-input style="width: 130px;" oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 8)" + v-model="param.useDays" placeholder="璇疯緭鍏ユ湁鏁堝ぉ鏁�" v-trim /> + <span class="ml10">澶�</span> + </el-form-item> + <el-form-item v-if="param.useType == 2" label-width="0px"> <div class="df_ac"> - <el-date-picker class="w200" v-model="param.dasdas" value-format="yyyy-MM-dd" type="date" /> + <el-date-picker class="w200" v-model="param.useStartDate" value-format="yyyy-MM-dd" type="date" /> <span class="ml10 mr10">寮�濮嬬敓鏁堬紝鏈夋晥鏈�</span> - <el-input style="width: 130px;" v-model="param.name" placeholder="璇疯緭鍏ユ湁鏁堝ぉ鏁�" v-trim /> + <el-input style="width: 130px;" v-model="param.useDays" + oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 8)" placeholder="璇疯緭鍏ユ湁鏁堝ぉ鏁�" v-trim /> <span class="ml10">澶�</span> </div> </el-form-item> </div> - <el-form-item label="閫傜敤鑼冨洿"> - <el-checkbox-group v-model="param.checkList"> - <el-checkbox label="宸ヤ綔鏃�"></el-checkbox> - <el-checkbox label="鑺傚亣鏃�"></el-checkbox> - </el-checkbox-group> + <el-form-item :prop="param.useWorkday == 1 ? 'useWorkday' : 'useHoliday'" label="閫傜敤鑼冨洿"> + <div class="df_ac"> + <el-checkbox v-model="param.useWorkday" :true-label="1" :false-label="0" label="宸ヤ綔鏃�"></el-checkbox> + <el-checkbox v-model="param.useHoliday" :true-label="1" :false-label="0" label="鑺傚亣鏃�"></el-checkbox> + </div> </el-form-item> - <el-form-item label="閫傜敤椤圭洰"> - <el-checkbox-group v-model="param.checkList"> - <el-checkbox label="鑷杞�"></el-checkbox> - <el-checkbox label="鐢靛姩杞�"></el-checkbox> - </el-checkbox-group> + <el-form-item :prop="param.isbike == 1 ? 'isbike' : 'iselecbike'" label="閫傜敤椤圭洰"> + <div class="df_ac"> + <el-checkbox v-model="param.isbike" :true-label="1" :false-label="0" label="鑷杞�"></el-checkbox> + <el-checkbox v-model="param.iselecbike" :true-label="1" :false-label="0" label="鐢靛姩杞�"></el-checkbox> + </div> </el-form-item> <el-form-item label="鎬婚檺棰�"> - <el-input class="w400" v-model="param.name" placeholder="璇疯緭鍏ユ�诲彂鍞暟閲�" v-trim /> + <el-input class="w400" v-model="param.saleLimit" oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 12)" + placeholder="璇疯緭鍏ユ�诲彂鍞暟閲�" v-trim /> <div class="placeholder9">璇疯緭鍏ユ�诲彂鍞暟閲忥紝閿�閲忓ぇ浜庤鏁伴噺鍚庯紝涓嶅啀鏀寔閿�鍞紱涓虹┖琛ㄧず涓嶉檺鍒�</div> </el-form-item> <el-form-item label="鏃ラ檺棰�"> - <el-input class="w400" v-model="param.name" placeholder="璇疯緭鍏ュ崟鏃ュ彂鍞暟閲�" v-trim /> + <el-input class="w400" v-model="param.saleDayLimit" + oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 12)" placeholder="璇疯緭鍏ュ崟鏃ュ彂鍞暟閲�" v-trim /> <div class="placeholder9">璇疯緭鍏ユ棩鍙戝敭鏁伴噺锛屽綋鏃ラ攢閲忓ぇ浜庤鏁伴噺鍚庯紝涓嶅啀鏀寔閿�鍞紱涓虹┖琛ㄧず涓嶉檺鍒�</div> </el-form-item> @@ -104,10 +119,9 @@ <script> import GlobalWindow from '@/components/common/GlobalWindow' -// import { fetchList as getStoreList } from '@/api/ywWarehouse' -// import { ywOutinboundCreate } from '@/api/store/index' +import { comboAddPost, comboEditPost, comboDetailPost } from '@/api/business/combo.js' import UploadAvatarImage from '@/components/common/UploadAvatarImage' -import { StoreTypeOps, rules } from './config' +import { rulesCombo } from './config' import { Message } from 'element-ui' import RichEditor from '@/components/common/RichEditor' // import dayjs from 'dayjs' @@ -117,13 +131,25 @@ data() { return { // 琛ㄥ崟鏁版嵁 - param: { checkList: [], content: '' }, + param: { + type: 0, + limitType: 0, + channel: 0, + useType: 0, + useWorkday: 1, + useHoliday: 0, + iselecbike: 0, + isbike: 1, + + checkList: [], + content: '' + }, isShowModal: false, isShowSel: false, isLoading: false, isUploading: false, // 楠岃瘉瑙勫垯 - rules, + rules: rulesCombo, storeList: [], list: [], StoreTypeOps: [], @@ -137,47 +163,48 @@ }, methods: { confirm() { + const { param } = this this.$refs['form'].validate((valid) => { if (valid) { - const { param, list } = this - if (list.length == 0) return Message.warning('璇峰厛閫夋嫨鐗╂枡淇℃伅') - let count = 0 // 鍏ュ簱鏁伴噺蹇呭~ - list.forEach(item => { - if (!item.stock) count++ - }) - if (count > 0) return Message.warning('璇疯緭鍏ユ纭殑鍏ュ簱鏁伴噺') + if (param.useDate && param.useDate.length > 0) { + param.useStartDate = param.useDate[0] + param.useEndDate = param.useDate[1] + } else { + param.useStartDate = param.useType == 2 ? param.useStartDate : null + param.useEndDate = null + } + if (param.saleDate && param.saleDate.length > 0) { + param.startDate = param.saleDate[0] + param.endDate = param.saleDate[1] + } else { + param.startDate = null + param.endDate = null + } this.isLoading = true - ywOutinboundCreate({ - ...param, - recordList: list + let fn = param.id ? comboEditPost : comboAddPost + fn({ + ...param }).then(res => { this.isLoading = false - Message.success('鎻愪氦鎴愬姛') - this.$emit('success') - this.close() + if (res) { + Message.success('鎻愪氦鎴愬姛') + this.$emit('success') + this.close() + } }, () => { this.isLoading = false }) } }) }, - initData() { - this.$set(this.param, 'doneDate', dayjs().format('YYYY-MM-DD')) - getStoreList({ capacity: 9999, page: 1, model: { status: 0 } }).then(res => { - this.storeList = res.records || [] - }) + changeType() { + this.$set(this.param, 'limitTime', null) }, - changeSel(val) { - const list = val - list.forEach(item => { - const index = this.list.findIndex(i => i.id == item.id) - if (index == -1) { - item.materialId = item.id - item.multifile = null - item.createDate = null - this.list.push(item) - } - }) + changeUseDate() { + this.$set(this.param, 'useDate', null) + this.$set(this.param, 'useDays', null) + this.$set(this.param, 'useStartDate', null) + this.$set(this.param, 'useEndDate', null) }, uploadAvatarSuccess(file) { this.$set(this.param, 'fileUrl', file.imgurl) @@ -191,12 +218,19 @@ }) }, close() { + console.log('------'); + this.isShowModal = false this.$emit('close') }, - getDetail(id) { - getInfoById(id).then(res => { + getDetail(id, type) { + comboDetailPost(id).then(res => { this.param = res + this.$set(this.param, 'saleDate', [res.startDate, res.endDate]) + if (res.useStartDate && res.useEndDate) { + this.$set(this.param, 'useDate', [res.useStartDate, res.useEndDate]) + } + this.$set(this.param, id, type == 'copy' ? null : this.param.id) }) }, } @@ -217,7 +251,8 @@ margin-left: 12px; } } -.img_place{ + +.img_place { display: flex; flex-direction: column; justify-content: space-between; -- Gitblit v1.9.3