long
2021-01-18 a12059eb143cdd84f87848591b3a5bce30ea3620
提交 | 用户 | age
ad3cc5 1 <template>
L 2   <div class="app-container">
a12059 3     <el-page-header class="mb20" @back="jumpBack" />
ad3cc5 4     <el-form ref="couponForm" label-position="left" :model="mData" label-width="150px" :rules="rules">
L 5       <el-form-item label="标题:" prop="title">
6         <el-input v-model="mData.title" placeholder="请输入标题" class="com-edit-input" />
7       </el-form-item>
8       <el-form-item label="面值:" prop="valueMoney">
9         <el-input v-model.number="mData.valueMoney" placeholder="请输入面值" class="com-edit-input" />
10       </el-form-item>
11       <el-form-item label="省市区" prop="provinces">
12         <el-cascader
13           v-model="mData.provinces"
9f32bd 14           class="com-edit-input"
ad3cc5 15           :options="areaOpts"
L 16           placeholder="请选择省市区"
17           style="width: 100%"
18         />
19       </el-form-item>
20       <el-form-item label="有效日期" prop="dateValue">
21         <el-date-picker
22           v-model="mData.dateValue"
23           value-format="yyyy-MM-dd"
24           class="com-edit-input"
25           type="daterange"
26           range-separator="至"
27           start-placeholder="开始日期"
28           end-placeholder="结束日期"
29         />
30       </el-form-item>
31       <el-form-item prop="uploadImgs">
32         <span slot="label">
33           图片:<br><span>(668*164像素)</span>
34         </span>
35         <!-- 上传图片组件(单图) -->
3fccf2 36         <UploadSingleImg
ad3cc5 37           ref="refUploadImg"
3fccf2 38           v-model="mData.uploadImgs"
L 39           @change.capture="$refs.refDialog.clearValidate()"
40         />
ad3cc5 41       </el-form-item>
L 42       <el-form-item label="是否上架:">
43         <el-switch v-model="mData.isUp" :active-value="1" :inactive-value="0" />
44       </el-form-item>
45       <el-form-item label="详情:" prop="content">
46         <!-- 富文本 -->
47         <WangEnduit :catchdata="catchData" :content="mData.content" :rangenum="rangenum" />
48       </el-form-item>
49     </el-form>
50
51     <div class="com-edit-bottom-btns flex flex-align-center">
52       <el-button size="mini" @click="jumpBack">取消</el-button>
53       <el-button type="primary" size="mini" @click="submit">提交</el-button>
54     </div>
55
56     <!-- upload放大图片 -->
57     <el-dialog :visible.sync="uploadPreviewVisible" style="text-align:center">
58       <img style="max-width:100%" :src="uploadPreviewUrl" alt="">
59     </el-dialog>
60
61   </div>
62 </template>
63
64 <script>
65 import WangEnduit from '@/components/WangEnduit' // 富文本
66 import mixin_upload from '@/mixins/upload.js' // 通用上传图片预览
3fccf2 67 import UploadSingleImg from '@/components_simple/UploadSingleImg'
ad3cc5 68 import Area from '@/utils/area' // 地区选择
L 69 export default {
70   name: 'DemoForm',
3fccf2 71   components: { WangEnduit, UploadSingleImg },
ad3cc5 72   mixins: [
L 73     mixin_upload
74   ],
75   data() {
76     return {
77       // 富文本
78       rangenum: null,
79       // 表单字段
80       mData: {
81         title: '', // 标题
82         valueMoney: '', // 面值
83         dateValue: [], // 有效日期(开始日期至结束日期)
84         content: '', // 详情
85         isUp: 1, // 是否上架
86         uploadImgs: [], // 图片
87         provinces: [],
88         imgUrl: ''
89       },
90
91       // 初始化地区
92       areaOpts: Area.getAreaOpts(Area.data), // 省市区数据
93
94       // 表单校验
95       rules: {
96         title: [{
97           required: true, message: '请填写优惠券标题', trigger: 'change'
98         }],
99         valueMoney: [{
100           required: true, message: '请填写优惠券面值', trigger: 'change'
101         }, {
102           type: 'number', message: '面值必须为数字', trigger: 'change'
103         }],
104         dateValue: [{
105           required: true, message: '请选择有效日期', trigger: 'change'
106         }],
107         provinces: [{
108           required: true, message: '请选择地址', trigger: 'change'
109         }],
110         content: [{
111           required: true, message: '请填写优惠券详情'
112         }],
113         uploadImgs: [{
114           required: true, message: '请选择图片'
115         }]
116       }
117     }
118   },
119   computed: {
120     // 禁用上传图片功能
121     uploadDisabled() {
122       return this.mData.uploadImgs.length > 0
123     }
124   },
125   mounted() {
126     this.init()
127   },
128   methods: {
129     init() {
130
131     },
132
133     jumpBack() {
134       this.$router.go(-1)
135     },
136
137     // 富文本相关
138     // 富文本编辑器的内容赋值
139     catchData(content) {
140       if (content === '<p><br></p>') content = ''
141       try {
142         const currentRange = window.getSelection().getRangeAt(0)
143         this.rangenum = currentRange
144       } catch (e) {
145         //
146       }
147       this.mData.content = content
148       this.$refs.couponForm.validateField('content')
149     },
150     // 富文本相关
151
152     submit() {
153       this.$refs['couponForm'].validate(valid => {
154         if (valid) {
3fccf2 155           // 上传图片
L 156           this.$refs.refUploadImg.runUploadImg((imgUrl) => {
157             imgUrl && this.$set(this.mData, 'imgUrl', imgUrl)
ad3cc5 158             this.submitReq()
3fccf2 159           })
ad3cc5 160         }
L 161       })
162     },
163
164     submitReq() {
165       var { mData } = this
166       console.log(mData)
167       // 字段未写
168       var params = {
169         title: mData.title,
170         priceStr: mData.valueMoney, // 元为单位
171         startTime: mData.dateValue[0],
172         endTime: mData.dateValue[1],
173         imgUrl: mData.imgUrl,
174         content: mData.content,
175         isUp: mData.isUp
176       }
177
178       // 提交表单
179       this.postFN({
180         url: 'admin/coupon/add',
181         params: params,
182         mockData: {
183           code: 100,
184           msg: '',
185           data: {}
186         }
187       }, () => {
188         this.$messageSuc('保存成功')
189         this.jumpBack()
190       })
191     }
192   }
193 }
194 </script>
195
196 <style lang="scss" scoped>
197
198 </style>