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