|
|
@@ -1,25 +1,31 @@
|
|
|
<template>
|
|
|
<el-dialog
|
|
|
- title="设置显示页面"
|
|
|
+ title="编辑"
|
|
|
v-model="dialogVisible"
|
|
|
width="560px"
|
|
|
@open="onOpen"
|
|
|
>
|
|
|
<el-form :model="form" label-width="140px" label-position="left">
|
|
|
- <el-form-item label="权益首页/列表页">
|
|
|
+ <el-form-item label="是否启用">
|
|
|
+ <el-radio-group v-model="form.enabled">
|
|
|
+ <el-radio label="不启用">不启用</el-radio>
|
|
|
+ <el-radio label="启用">启用</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="权益首页">
|
|
|
<el-radio-group v-model="form.showOnHome">
|
|
|
<el-radio label="显示">显示</el-radio>
|
|
|
<el-radio label="不显示">不显示</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="组装页">
|
|
|
+ <el-form-item label="组装页" class="assembly-item">
|
|
|
<el-radio-group v-model="form.showOnAssembly">
|
|
|
<el-radio label="显示">显示</el-radio>
|
|
|
<el-radio label="不显示">不显示</el-radio>
|
|
|
</el-radio-group>
|
|
|
<div
|
|
|
v-if="form.showOnAssembly === '显示'"
|
|
|
- style="background: #f1f2f5;padding: 16px;margin-top: 10px;"
|
|
|
+ class="assembly-select-box"
|
|
|
>
|
|
|
<el-select
|
|
|
v-model="form.assemblyPages"
|
|
|
@@ -37,7 +43,36 @@
|
|
|
</el-select>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="权益名称" required>
|
|
|
+ <el-input
|
|
|
+ v-model="form.equityName"
|
|
|
+ maxlength="40"
|
|
|
+ placeholder="请输入权益名称"
|
|
|
+ style="width: 100%"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="权益图标" required>
|
|
|
+ <el-upload
|
|
|
+ action=""
|
|
|
+ :auto-upload="false"
|
|
|
+ :file-list="form.listIcon"
|
|
|
+ :on-change="file => handleUpload(file, 'listIcon')"
|
|
|
+ :on-preview="handlePreviewImage"
|
|
|
+ :on-remove="() => form.listIcon = []"
|
|
|
+ :class="{ 'upload-hide-trigger': form.listIcon.length >= 1 }"
|
|
|
+ :limit="1"
|
|
|
+ list-type="picture-card"
|
|
|
+ >
|
|
|
+ <el-icon><Plus /></el-icon>
|
|
|
+ </el-upload>
|
|
|
+ <div class="upload-size-tip">建议尺寸:80x80px</div>
|
|
|
+ </el-form-item>
|
|
|
</el-form>
|
|
|
+
|
|
|
+ <el-dialog v-model="previewVisible" title="预览" width="400px" append-to-body>
|
|
|
+ <img v-if="previewImageUrl" :src="previewImageUrl" style="width: 100%" />
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
<template #footer>
|
|
|
<span>
|
|
|
<el-button @click="dialogVisible = false">取消</el-button>
|
|
|
@@ -49,6 +84,7 @@
|
|
|
|
|
|
<script>
|
|
|
import request from '@/utils/request'
|
|
|
+import { ElMessage } from 'element-plus'
|
|
|
|
|
|
export default {
|
|
|
name: 'ShowPagesDialog',
|
|
|
@@ -60,10 +96,15 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
assemblyPageOptions: [],
|
|
|
+ previewVisible: false,
|
|
|
+ previewImageUrl: '',
|
|
|
form: {
|
|
|
+ enabled: '不启用',
|
|
|
showOnHome: '显示',
|
|
|
showOnAssembly: '不显示',
|
|
|
- assemblyPages: []
|
|
|
+ assemblyPages: [],
|
|
|
+ equityName: '',
|
|
|
+ listIcon: []
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
@@ -85,21 +126,73 @@ export default {
|
|
|
onOpen() {
|
|
|
this.fetchAssemblyPages()
|
|
|
if (this.row) {
|
|
|
+ this.form.enabled = this.row.enabled || '不启用'
|
|
|
this.form.showOnHome = this.row.showOnHome || '显示'
|
|
|
this.form.showOnAssembly = this.row.showOnAssembly || '不显示'
|
|
|
this.form.assemblyPages = Array.isArray(this.row.assemblyPages)
|
|
|
? [...this.row.assemblyPages]
|
|
|
: []
|
|
|
+ this.form.equityName = this.row.equityName || ''
|
|
|
+ this.form.listIcon = this.row.equityIcon
|
|
|
+ ? [{ name: '权益图标', url: this.row.equityIcon }]
|
|
|
+ : []
|
|
|
} else {
|
|
|
+ this.form.enabled = '不启用'
|
|
|
this.form.showOnHome = '显示'
|
|
|
this.form.showOnAssembly = '不显示'
|
|
|
this.form.assemblyPages = []
|
|
|
+ this.form.equityName = ''
|
|
|
+ this.form.listIcon = []
|
|
|
}
|
|
|
},
|
|
|
+ handleUpload(file, field) {
|
|
|
+ if (!file || !file.raw) return
|
|
|
+ const reader = new FileReader()
|
|
|
+ reader.onload = (e) => {
|
|
|
+ this.form[field] = [{ name: file.name, url: e.target.result, uid: file.uid }]
|
|
|
+ }
|
|
|
+ reader.readAsDataURL(file.raw)
|
|
|
+ },
|
|
|
+ handlePreviewImage(file) {
|
|
|
+ this.previewImageUrl = file.url || ''
|
|
|
+ this.previewVisible = !!this.previewImageUrl
|
|
|
+ },
|
|
|
handleConfirm() {
|
|
|
- this.$emit('confirm', { ...this.form, assemblyPages: [...this.form.assemblyPages] })
|
|
|
+ if (!this.form.equityName) {
|
|
|
+ ElMessage.warning('请填写权益名称')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!this.form.listIcon.length) {
|
|
|
+ ElMessage.warning('请上传权益图标')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const equityIcon = this.form.listIcon.length ? this.form.listIcon[0].url : ''
|
|
|
+ this.$emit('confirm', {
|
|
|
+ ...this.form,
|
|
|
+ assemblyPages: [...this.form.assemblyPages],
|
|
|
+ equityIcon
|
|
|
+ })
|
|
|
this.dialogVisible = false
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.assembly-item >>> .el-form-item__content { flex-wrap: wrap; }
|
|
|
+.assembly-select-box {
|
|
|
+ width: 100%;
|
|
|
+ box-sizing: border-box;
|
|
|
+ background: #f1f2f5;
|
|
|
+ padding: 16px;
|
|
|
+ margin-top: 10px;
|
|
|
+}
|
|
|
+.upload-hide-trigger >>> .el-upload--picture-card { display: none; }
|
|
|
+.upload-size-tip {
|
|
|
+ width: 100%;
|
|
|
+ margin-top: 4px;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #909399;
|
|
|
+ line-height: 1.5;
|
|
|
+}
|
|
|
+</style>
|