UNPKG

gxd-vue-library

Version:

依赖与element Ui插件库,聚福宝福利PC端插件库

426 lines (391 loc) 10.8 kB
'use strict'; function checkMapIsExist(key,list=[]) { if(list.length === 0) return null; let temp = list.filter(item=>{ return key === item; }); if (temp.length > 0) return temp[0] else return list[0] } /** * @description 搜索方法 * $vm.handleRemoteSearch(query, resolve, type) 搜索方法需要自己实现 * type = movie/brand/classify/shop 说明:影片/品牌/分类/商品 */ /** * @description 获取分类提交表单信息 * @param nameSpace {String} 商品类型 cake/default/gift/movie * * @param $vm {Object} 当前页面this * * @param setting {Object} 配置选项卡 * setting.status => 归类状态列表 * setting.mode => 操作方式列表 * setting.type => 归类类型 * * @param data {Object} 编辑时候返回数据 * */ export function getClassifiedFrom(nameSpace='default', data = {}, $vm, setting={}){ let form = []; form = form.concat([ { label: '归类ID:', ele: 'el-input', type: 'text', valueKey: 'category_id', value: data.id, placeholder: '请输入归类名称', className: 'input40', disabled: true, rules: [ { required: true, message: '请输入归类名称', trigger: 'blur' }, ] }, { label: '归类名称:', ele: 'el-input', type: 'text', valueKey: 'category_name', value: data.category_name || '', placeholder: '请输入归类名称', className: 'input40', rules: [ { required: true, message: '请输入归类名称', trigger: 'blur' }, ] }, { label: '归类描述:', ele: 'el-input', type: 'textarea', valueKey: 'intro', value: data.intro || '', placeholder: '请输入归类描述', className: 'input40', }, { label: '归类状态:', ele: 'xd-radio', valueKey: 'status', value: data.status || 'Y', rules: [ {required: true, message: '请选择', trigger: ['blur', 'change']} ], list: setting.status || [ {"label": "启用", "value": 'Y'}, {"label": "禁用", "value": 'N'}, ] }, ]); //设置ID显示 if (!data.id) { form.splice(0, 1); } return form; } /** * @description 获取配置表单 * @param nameSpace {String} 商品类型 cake/default/gift/movie * * @param $vm {Object} 当前页面this * * @param setting {Object} 配置选项卡 * setting.status => 归类状态列表 * setting.mode => 操作方式列表 * setting.type => 归类类型 * * @param data {Object} 编辑时候返回数据 * */ export function getClassifiedSettingFrom(nameSpace = 'default', $vm, data = {}, setting = { }) { let form = []; let {category_id, set_id, category_name} = $vm.$route.params; form = form.concat([ { label: '归类ID:', ele: 'el-input', type: 'text', valueKey: 'category_id', value: category_id, placeholder: '请输入归类名称', className: 'input40', disabled: true, }, { label: '归类名称:', ele: 'el-input', type: 'text', valueKey: 'category_name', value: category_name, placeholder: '请输入归类名称', className: 'input40', disabled: true, }, { label: '归类配置ID:', ele: 'el-input', type: 'text', valueKey: 'set_id', value: set_id || '', placeholder: '请输入归类名称', className: 'input40', disabled: true, }, ]); //设置ID显示 if (!set_id) { form.splice(2, 1); } //大礼包 if (nameSpace === 'gift') { form = form.concat([ { label: '所属礼包池::', ele: 'xd-select-list', valueKey: 'gift_pool', value: '', placeholder: '请选择所属礼包池', className: 'input40', list: [ {"label": "万利达集团", "value": 4}, {"label": "中国联通", "value": 5}, {"label": "中国移动", "value": 6}, {"label": "味多美", "value": 7}, ] }, { label: '是否公开:', ele: 'xd-radio', valueKey: 'is_public', value: 2, list: setting.mode || [ {"label": "公开", "value": 1}, {"label": "不公开", "value": 2}, ] }, { label: '归类图片:', ele: 'xd-upload', valueKey: 'image', value: {}, defaultValue: null, slot: true, oneWidth: 120, oneHeight: 120, elinputClassName: 'input40', tipsformet: '上传文件格式:@imageType@,不超过@size@MB.', type: ['jpg', 'png', 'jpeg'], styleType: 'one', uploadType: 'aliyun', size: 5, //5M action: 'https://up-z1.qiniup.com', rules: [ {required: true, message: '请上传图片', trigger: ['blur', 'change']}, ] }, ]); } //电影 else if (nameSpace === 'movie') { form = form.concat([ { label: '影片归类选择:', ele: 'xd-radio', valueKey: 'selection_method', value: data.selection_method || 'regular', rules: [ {required: true, message: '请选择影片归类类型', trigger: ['blur', 'change']} ], list: setting.mode || [ {"label": "正选", "value": 'regular'}, {"label": "反选", "value": 'inverse'}, ] }, { label: '', ele: 'xd-remote-select', valueKey: 'film_data', value: data.film_data || [ {value: '28', label: '1921'}, {value: '39', label: '守岛人'}, ], className: 'input40', placeholder: '请选择影片', multiple: true, collapseTags: false, remoteSearch: (query, resolve) => { if (typeof $vm.handleRemoteSearch === 'function') { $vm.handleRemoteSearch(query, resolve, 'movie') } else throw new Error('$vm.handleRemoteSearch 未定义,需要实现该方法') }, rules: [ {required: true, message: '请选择影片', trigger: 'change'}, ] }, ]); } //其他 else { form = form.concat([ { label: '归类选择:', ele: 'xd-radio', valueKey: 'type', value: 'classify', rules: [ {required: true, message: '请选择归类类型:', trigger: ['blur', 'change']} ], list: setting.type || [ {"label": "分类", "value": 'classify'}, {"label": "商品", "value": 'shop'}, {"label": "品牌", "value": 'brand'}, ] }, { label: '', //label ele: 'slot', //package 名称 slot: 'type', }, ]); } return form; } /** * @description 获取默认归类模式下的分类 * @param type {String} classify/brand/shop * @param $vm {Object} 当前页面this * @param setting {Object} 配置选项卡 * setting.mode => 操作方式列表 * */ export function getDefaultFrom(type, setting, $vm){ let form = []; type = checkMapIsExist(type, ['classify','brand','shop']) form = form.concat([ { label: '', ele: 'xd-radio', valueKey: 'mode', value: '', rules: [ {required: true, message: '请选择操作方式', trigger: ['blur', 'change']} ], list: setting.mode || [ {"label": "正选", "value": 1}, {"label": "反选", "value": 2}, ] }, { label: '', ele: 'xd-remote-select', valueKey: 'movie', value: [ ], className: 'input40', placeholder: '请选择', multiple: true, collapseTags: false, remoteSearch: (query, resolve) => { if (typeof $vm.handleRemoteSearch === 'function') { $vm.handleRemoteSearch(query, resolve, 'movie') } else throw new Error('$vm.handleRemoteSearch 未定义,需要实现该方法') }, rules: [ {required: true, message: '请选择', trigger: 'change'}, ] }, ]); return form; } /** * @description 获取搜索表头 * @param setting {Object} 配置选项卡 * setting.status => 状态列表 * @returns {*[]} */ export function getSearchForm(setting) { let form = [ { label: '归类名称:', ele: 'el-input', type: 'text', valueKey: 'category_name', value: '', placeholder: '请输入归类名称', }, { label: '状态:', ele: 'xd-select-list', valueKey: 'status', value: 1, list: setting.status || [ {"label": "正选", "value": 1}, {"label": "反选", "value": 2}, ] }, ]; return form } /** * @description 获取列表表格表头 * @param type {String} 商品类型 cake/default/gift/movie */ export function getTableHeaders(type = 'default') { //检查type是否正确,不正确使用第一个值 type = checkMapIsExist(type, ['default', 'gift', 'movie']); //设置默认值 let isDefault = true; if (type === 'gift') { isDefault = false } //是否显示配置按钮 let isSettings = true; // if(type === 'gift') { // isSettings = true; // } let header = [ {"type": "normal", "prop": "id", "align": "center", "width": 120, "label": "ID"}, {"type": "normal", "prop": "category_name", "align": "center", "minWidth": 200, "label": "名称"}, ]; if(type === 'gift') { header = header.concat([ {"type": "image", "prop": "image", "align": "center", "width": 120, "height": 120, "label": "体验二维码"}, {"type": "normal", "prop": "erCode", "align": "center", "width": 130, "label": "一选二二维码"}, ]); } header = header.concat([ {"type": "normal", "prop": "intro", "align": "center", "minWidth": 200, "label": "归类描述"}, {"type": "status", "prop": "status", "align": "center", "width": 90, "label": "状态", "message": ['已使用', '未使用']}, {"type": "normal", "prop": "created_time", "align": "center", "width": 180, "label": "创建时间"}, ]) //按钮 let values = [ {"ui": "text-button", "name": "编辑", "type": "primary"}, ]; //是否显示配置按钮 if(isSettings) { values = values.concat([ {"ui": "text-button", "name": "配置", "type": "primary"}, ]) } //是否显示海报按钮 if (!isDefault) values = values.concat([ {"ui": "text-button", "name": "下载海报", "type": "primary"}, ]); return header.concat([{ "type": "operate", "align": "center", "prop": "operate", "width": isDefault ? 135 : 220, "label": "操作", values: values }]) }