ll
liukangdong
2025-02-20 b565a275fe240e2bd8a939c3b4beed98d03767bc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
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(/^(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.saleDayLimit"
          oninput="value=value.replace(/^(0+)|[^\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) {
          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>