From a836f03a5d1fbfa81e147d09ffdfa87ba3975c13 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 18 三月 2025 16:45:02 +0800
Subject: [PATCH] 1
---
admin/src/views/combo/components/Edit.vue | 264 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 264 insertions(+), 0 deletions(-)
diff --git a/admin/src/views/combo/components/Edit.vue b/admin/src/views/combo/components/Edit.vue
new file mode 100644
index 0000000..e89d27f
--- /dev/null
+++ b/admin/src/views/combo/components/Edit.vue
@@ -0,0 +1,264 @@
+<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>
\ No newline at end of file
--
Gitblit v1.9.3