| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow :title="param.id ? 'ç¼è¾å¥é¤' : 'æ°å»ºå¥é¤'" :visible.sync="isShowModal" :confirm-working="isLoading" |
| | | 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="ç±»å" 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 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="éå®ä»·" 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.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="é宿¸ é" 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: 'DISCOUNT/' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false" |
| | | @uploadBegin="isUploading = true" /> |
| | | <div class="img_place"> |
| | | <div>ä¸ä¼ å¾çä¸å
许æ¶åæ¿æ²»ææä¸è²æ
;</div> |
| | | <div>å¾çæ ¼å¼å¿
须为ï¼png,PNG,jpeg,jpg,JPGï¼ä¸å¯å¤§äº2Mï¼å»ºè®®ä½¿ç¨</div> |
| | | <div>ngæ ¼å¼å¾çï¼ä»¥ä¿ææä½³ææï¼å»ºè®®å¾ç尺寸为144px*144px</div> |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="å¥é¤ç®ä»"> |
| | | <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> |
| | | </el-form-item> |
| | | <div class="form_title"> |
| | | <div>éç¨è§å</div> |
| | | <div class="placeholder9">é宿¶é´ãä½¿ç¨æ¶é´ç设置</div> |
| | | </div> |
| | | <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 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="2"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <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.useStartDate" value-format="yyyy-MM-dd" type="date" /> |
| | | <span class="ml10 mr10">å¼å§çæï¼æææ</span> |
| | | <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 :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 :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.saleLimit" oninput="value=value.replace(/^(-1+)|[^\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.saleDayLimit" |
| | | oninput="value=value.replace(/^(-1+)|[^\d]+/g, '').slice(0, 12)" placeholder="请è¾å
¥åæ¥å宿°é" v-trim /> |
| | | <div class="placeholder9">请è¾å
¥æ¥å宿°éï¼å½æ¥éé大äºè¯¥æ°éåï¼ä¸åæ¯æéå®ï¼ä¸ºç©ºè¡¨ç¤ºä¸éå¶</div> |
| | | </el-form-item> |
| | | |
| | | |
| | | |
| | | </el-form> |
| | | <!-- --> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { comboAddPost, comboEditPost, comboDetailPost } from '@/api/business/combo.js' |
| | | import UploadAvatarImage from '@/components/common/UploadAvatarImage' |
| | | import { rulesCombo } from './config' |
| | | import { Message } from 'element-ui' |
| | | import RichEditor from '@/components/common/RichEditor' |
| | | // import dayjs from 'dayjs' |
| | | export default { |
| | | name: 'OperaCategoryWindow', |
| | | components: { GlobalWindow, UploadAvatarImage, RichEditor }, |
| | | data() { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | 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: rulesCombo, |
| | | storeList: [], |
| | | list: [], |
| | | StoreTypeOps: [], |
| | | |
| | | dataList: [], |
| | | } |
| | | }, |
| | | created() { |
| | | // this.initData() |
| | | |
| | | }, |
| | | methods: { |
| | | confirm() { |
| | | const { param } = this |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | 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 |
| | | let fn = param.id ? comboEditPost : comboAddPost |
| | | fn({ |
| | | ...param |
| | | }).then(res => { |
| | | this.isLoading = false |
| | | if (res) { |
| | | Message.success('æäº¤æå') |
| | | this.$emit('success') |
| | | this.close() |
| | | } |
| | | }, () => { |
| | | this.isLoading = false |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | changeType() { |
| | | this.$set(this.param, 'limitTime', null) |
| | | }, |
| | | 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) |
| | | this.$set(this.param, 'fileFullUrl', file.imgurlfull) |
| | | }, |
| | | handleOpenMaterial() { |
| | | this.isShowSel = true |
| | | this.$nextTick(() => { |
| | | this.$refs.AssetSelRef.isShowModal = true |
| | | this.$refs.AssetSelRef.getList() |
| | | }) |
| | | }, |
| | | close() { |
| | | console.log('------'); |
| | | |
| | | this.isShowModal = false |
| | | this.$emit('close') |
| | | }, |
| | | getDetail(id, type) { |
| | | comboDetailPost(id).then(res => { |
| | | this.param = res |
| | | this.$set(this.param, 'saleDate', [res.startDate, res.endDate]) |
| | | if (res.useStartDate && res.useEndDate && res.useType != 2) { |
| | | this.$set(this.param, 'useDate', [res.useStartDate, res.useEndDate]) |
| | | } |
| | | this.$set(this.param, 'id', type == 'copy' ? null : this.param.id) |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/style/variables.scss"; |
| | | |
| | | .form_title { |
| | | display: flex; |
| | | align-items: center; |
| | | color: $primary-color; |
| | | margin-bottom: 16px; |
| | | |
| | | .placeholder9 { |
| | | color: #999999; |
| | | font-size: 12px; |
| | | margin-left: 12px; |
| | | } |
| | | } |
| | | |
| | | .img_place { |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | margin-left: 12px; |
| | | color: #999999; |
| | | font-size: 12px; |
| | | padding: 8px 0; |
| | | } |
| | | </style> |