UNPKG

gxd-vue-library

Version:

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

1,618 lines (1,582 loc) 61.1 kB
'use strict'; import axios from 'axios'; import cityData from './cityData'; import router from "@/dome/base/form/router"; import testData from './testData'; import gxdHelper from 'gxd-helper'; let {pinyin, helper, cookie, storage} = gxdHelper; let helperObj = helper({}); window.$xdHelper = helperObj; let config = { token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9zYW5kYm94LWMuanVmdWJhby5jbiIsImlhdCI6MTY0MDE0NDI0MywiZXhwIjoxNjQwMjMwNjQzLCJhY2NvdW50X2lkIjo4LCJtZXJjaGFudF9pZCI6IjBfb05ua2M2SHVtd1JqV0Nja3c3WFBxdmNpbWJyWSIsInBsYXRmb3JtX2NvZGUiOiJ3eCIsImlwIjoiMTAuMC4yLjQiLCJjaGVja3N1bSI6ImFhYmNkNzJhNTRlYmE0MjI3MGMyODYzNzI1MTk5ODEyIn0.e7AgEQKtj_Ju7-_FQbTEdqZTpKs1DtX2RVe8ZH-MKoE', getCity: 'http://sandbox-c.jufubao.cn/api/pb/city/getsub', }; /** * @description 获取配送区域 * @param node 上级城市对象 * @param resolve 回调地址 */ function getDataRegionList(node, resolve) { let city = { 0: [{"city_code":"1","name":"\u5317\u4eac","parent_id":"0"},{"city_code":"31","name":"\u65b0\u7586","parent_id":"0"},{"city_code":"4","name":"\u91cd\u5e86","parent_id":"0"},{"city_code":"19","name":"\u5e7f\u4e1c","parent_id":"0"},{"city_code":"3","name":"\u5929\u6d25","parent_id":"0"},{"city_code":"15","name":"\u6d59\u6c5f","parent_id":"0"},{"city_code":"52993","name":"\u6e2f\u6fb3","parent_id":"0"},{"city_code":"20","name":"\u5e7f\u897f","parent_id":"0"},{"city_code":"11","name":"\u5185\u8499\u53e4","parent_id":"0"},{"city_code":"30","name":"\u5b81\u590f","parent_id":"0"},{"city_code":"21","name":"\u6c5f\u897f","parent_id":"0"},{"city_code":"32","name":"\u53f0\u6e7e","parent_id":"0"},{"city_code":"14","name":"\u5b89\u5fbd","parent_id":"0"},{"city_code":"24","name":"\u8d35\u5dde","parent_id":"0"},{"city_code":"27","name":"\u9655\u897f","parent_id":"0"},{"city_code":"8","name":"\u8fbd\u5b81","parent_id":"0"},{"city_code":"6","name":"\u5c71\u897f","parent_id":"0"},{"city_code":"29","name":"\u9752\u6d77","parent_id":"0"},{"city_code":"22","name":"\u56db\u5ddd","parent_id":"0"},{"city_code":"12","name":"\u6c5f\u82cf","parent_id":"0"},{"city_code":"5","name":"\u6cb3\u5317","parent_id":"0"},{"city_code":"26","name":"\u897f\u85cf","parent_id":"0"},{"city_code":"84","name":"\u9493\u9c7c\u5c9b","parent_id":"0"},{"city_code":"16","name":"\u798f\u5efa","parent_id":"0"},{"city_code":"9","name":"\u5409\u6797","parent_id":"0"},{"city_code":"2","name":"\u4e0a\u6d77","parent_id":"0"},{"city_code":"17","name":"\u6e56\u5317","parent_id":"0"},{"city_code":"23","name":"\u6d77\u5357","parent_id":"0"},{"city_code":"25","name":"\u4e91\u5357","parent_id":"0"},{"city_code":"28","name":"\u7518\u8083","parent_id":"0"},{"city_code":"18","name":"\u6e56\u5357","parent_id":"0"},{"city_code":"13","name":"\u5c71\u4e1c","parent_id":"0"},{"city_code":"7","name":"\u6cb3\u5357","parent_id":"0"},{"city_code":"10","name":"\u9ed1\u9f99\u6c5f","parent_id":"0"}], 1: [{"city_code":"jfb1","name":"\u5317\u4eac","parent_id":"1"},{"city_code":"bj-test1","name":"\u5317\u4eac-\u6d4b\u8bd5","parent_id":"1"}], jfb1: [{"city_code":"2812","name":"\u987a\u4e49\u533a","parent_id":"jfb1"},{"city_code":"2807","name":"\u95e8\u5934\u6c9f","parent_id":"jfb1"},{"city_code":"2803","name":"\u5d07\u6587\u533a","parent_id":"jfb1"},{"city_code":"2810","name":"\u5927\u5174\u533a","parent_id":"jfb1"},{"city_code":"2814","name":"\u6000\u67d4\u533a","parent_id":"jfb1"},{"city_code":"2801","name":"\u897f\u57ce\u533a","parent_id":"jfb1"},{"city_code":"2804","name":"\u5ba3\u6b66\u533a","parent_id":"jfb1"},{"city_code":"2953","name":"\u5e73\u8c37\u533a","parent_id":"jfb1"},{"city_code":"2816","name":"\u5bc6\u4e91\u533a","parent_id":"jfb1"},{"city_code":"3065","name":"\u5ef6\u5e86\u533a","parent_id":"jfb1"},{"city_code":"2802","name":"\u4e1c\u57ce\u533a","parent_id":"jfb1"},{"city_code":"2901","name":"\u660c\u5e73\u533a","parent_id":"jfb1"},{"city_code":"2805","name":"\u4e30\u53f0\u533a","parent_id":"jfb1"},{"city_code":"72","name":"\u671d\u9633\u533a","parent_id":"jfb1"},{"city_code":"2806","name":"\u77f3\u666f\u5c71\u533a","parent_id":"jfb1"},{"city_code":"2808","name":"\u623f\u5c71\u533a","parent_id":"jfb1"},{"city_code":"2800","name":"\u6d77\u6dc0\u533a","parent_id":"jfb1"},{"city_code":"2809","name":"\u901a\u5dde\u533a","parent_id":"jfb1"}], 2812: [{"city_code":"51130","name":"\u5149\u660e\u8857\u9053","parent_id":"2812"},{"city_code":"51125","name":"\u5317\u77f3\u69fd\u9547","parent_id":"2812"},{"city_code":"51147","name":"\u6768\u9547\u5730\u533a","parent_id":"2812"},{"city_code":"51126","name":"\u5317\u52a1\u9547","parent_id":"2812"},{"city_code":"51141","name":"\u4ec1\u548c\u5730\u533a","parent_id":"2812"},{"city_code":"51139","name":"\u5357\u6cd5\u4fe1\u5730\u533a","parent_id":"2812"},{"city_code":"51134","name":"\u674e\u9042\u9547","parent_id":"2812"},{"city_code":"51138","name":"\u5357\u5f69\u9547","parent_id":"2812"},{"city_code":"51127","name":"\u5317\u5c0f\u8425\u9547","parent_id":"2812"},{"city_code":"51136","name":"\u9a6c\u5761\u5730\u533a","parent_id":"2812"},{"city_code":"51135","name":"\u9f99\u6e7e\u5c6f\u9547","parent_id":"2812"},{"city_code":"51140","name":"\u725b\u680f\u5c71\u5730\u533a","parent_id":"2812"},{"city_code":"51142","name":"\u80dc\u5229\u8857\u9053","parent_id":"2812"},{"city_code":"51146","name":"\u65fa\u6cc9\u8857\u9053","parent_id":"2812"},{"city_code":"51131","name":"\u540e\u6c99\u5cea\u5730\u533a","parent_id":"2812"},{"city_code":"51133","name":"\u674e\u6865\u9547","parent_id":"2812"},{"city_code":"51128","name":"\u5927\u5b59\u5404\u5e84\u9547","parent_id":"2812"},{"city_code":"51149","name":"\u8d75\u5168\u8425\u9547","parent_id":"2812"},{"city_code":"51137","name":"\u6728\u6797\u9547","parent_id":"2812"},{"city_code":"51143","name":"\u77f3\u56ed\u8857\u9053","parent_id":"2812"},{"city_code":"51132","name":"\u7a7a\u6e2f\u8857\u9053","parent_id":"2812"},{"city_code":"51129","name":"\u9ad8\u4e3d\u8425\u9547","parent_id":"2812"},{"city_code":"51144","name":"\u53cc\u4e30\u8857\u9053","parent_id":"2812"},{"city_code":"51145","name":"\u5929\u7afa\u5730\u533a","parent_id":"2812"},{"city_code":"51148","name":"\u5f20\u9547","parent_id":"2812"},{"city_code":"qweq123","name":"\u5e73\u65b9\u8857\u9053","parent_id":"2812"}] }; let params = {city_code: 0, page_size: 10000}; if (node.level > 0) { params['city_code'] = node['value']; } if (city[params['city_code']]) { let res = city[params['city_code']]; if (node['level'] === 0) { res.splice(0, 0, { name: '全国', city_code: '0', leaf: true }) } let temp = $xdHelper.idToSelectData(res, 'name', 'city_code', false); console.log('getDataRegionList',temp); temp.filter(item => { if (!item['leaf']) { item['leaf'] = false; //街道下无子节点 if (node.level === 3) { item['leaf'] = true; } } return item; }); console.log('resolve', temp); resolve(temp) } else { resolve([]); } } /** * @description 获取模糊搜索测试数据列表 * @param query * @param resolve */ function getListTestRemoteSearch(query, resolve) { let data = ["Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"]; data = data.map(item => { return {value: `value:${item}`, label: `label:${item}`}; }); setTimeout(() => { let list = data.filter(item => { console.log(item, item.label.toLocaleLowerCase()) return item.label.toLocaleLowerCase().indexOf(query.toLocaleLowerCase()) > -1; }); resolve(list) }, 500); } function getPagesTreeToPathArr(data) { return [{ label: '', value: '', children: data.filter(item => { return item.children && item.children.length > 0 }).map(item => { return { label: item.name, value: item.value, children: item.children.map(it => { return { label: it.name, value: it.route } }) }; }), }]; } export default [ { label: '值显示', key: 'el-html', value: { ele: 'el-html', label: '基础信息', value: '基础信息', //default/mini/small }, id: 1 }, { label: '标题显示', key: 'title', value: { ele: 'title', label: '基础信息', size: 'mini', //default/mini/small }, id: 2 }, { label: '插槽', key: 'slot', value: { label: '', //label ele: 'slot', //package 名称 slot: 'time', }, id: 3 }, { label: '输入内容', key: 'el-input', value: { label: '输入内容:', //label ele: 'el-input', //package 名称 //text,textarea 和其他 原生 input 的 type 值 type: 'text', valueKey: '@key@', //form[valueKey] value: '', //v-model placeholder: '请输入内容', className: 'input40', //样式名称 //input100,input80,input70,input60,input50,input40,input30,input20, rules: [ {required: true, message: '请输入内容', trigger: 'blur'}, ] }, id: 4 }, { label: '区间输入', key: 'xd-range', value: { label: '区间输入:', //label ele: 'xd-range', //package 名称 valueKey: ['start_@key@', 'end_@key@'], //form[valueKey] value: [200, 300], //v-model placeholder: ['开始卡号', '结束卡号'], width: 450, //插件宽度 rules: [ {required: true, message: '请输入区间内容', trigger: ['blur', 'change']}, ] }, id: 6 }, { label: '卡号组', key: 'xd-upload', value: { label: '卡号组:', //label tips: '注意:开始和结束卡号段必须填写,并且开始卡号必须小于结束开号.', ele: 'xd-range-group', //package 名称 keys: ['start_number-@key@', 'end_number-@key@'], //返回数组字段名称 defaultValue: [ //默认组值 // {"start_number": 20, "end_number": 23}, // {"start_number": 451202, "end_number": 4512300}, // {"start_number": 1545512121, "end_number": 1545512123} ], valueKey: 'xd_range_group', //form[valueKey] placeholder: ['开始卡号', '结束卡号'], disabled: false, rules: [ { required: true, validator(rule, value, callback) { let flag = true, index = null, message = ''; value.map((item, idx) => { if (index === null) { //检查卡号填写为空 Object.keys(item).map(k => { if (item[k] === null) { index = idx; flag = false; message = '卡号输入不能为空!' } }); //检查开始卡号不能大于等于结束卡号 if (index === null) { if (item['start_number'] >= item['end_number']) { index = idx; flag = false; message = '输入开始卡号不能大于等于结束卡号' } } } }); if (flag) callback(); else callback(`第【${index + 1}】条数据有误,错误:${message}`); // let temp = false; // if (!value['week_day'] || value['week_day'].length === 0) temp = true; // if (!value['week_start'] || !value['week_end']) temp = true; // if (temp) callback('请设置规则') // else callback(); }, trigger: ['blur', 'change'] }, ] }, id: 7 }, { label: '时间区间', key: 'xd-date-range', value: { label: '时间区间:', //label ele: 'xd-date-range', //package 名称 valueKey: ['start_time_@key@', 'end_time_@key@'], //form[valueKey] value: [1636128000000, 1638720000000], //v-model timestamp=>必须时间戳 毫秒 format: 'yyyy/MM/dd HH:mm:ss',//时间显示格式 formatValue: 'timestamp', //输出时间格式 placeholder: ['活动开始时间', '活动结束时间'], rules: [ {required: true, message: '请选择时间区间', trigger: ['blur', 'change']}, ] }, id: 8 }, { label: '时间选择', key: 'xd-date-range', value: { label: '时间选择:', //label ele: 'xd-date', //package 名称 valueKey: 'xd-date-@key@', //form[valueKey] value: 1636128000000, //v-model timestamp=>必须时间戳 毫秒 format: 'yyyy/MM/dd HH:mm:ss',//时间显示格式 formatValue: 'timestamp', //输出时间格式 placeholder: '请选择时间', rules: [ {required: true, message: '请选择时间', trigger: ['blur', 'change']} ] }, id: 9 }, { label: '请选择(多选)', key: 'xd-select-list', value: { label: '请选择(多选):', //label ele: 'xd-select-list', //package 名称 valueKey: '@key@', //form[valueKey] value: [1, 2], //v-model placeholder: '请选择内容', multiple: true, //多选 list: [ {"label": "万利达集团", "value": 1}, {"label": "中国联通", "value":2}, {"label": "中国移动", "value": 3}, {"label": "味多美", "value": 4}, ] }, id: 10 }, { label: '请选择(单选)', key: 'xd-select-list', value: { label: '请选择(单选):', //label ele: 'xd-select-list', //package 名称 valueKey: '@key@', //form[valueKey] value: 1, //v-model placeholder: '请选择内容', multiple: false, //多选 list: [ {"label": "万利达集团", "value": 1}, {"label": "中国联通", "value": 2}, {"label": "中国移动", "value": 3}, {"label": "味多美", "value": 4}, ] }, id: 11 }, { label: '远程搜索选择框(单选)', key: 'xd-remote-select', value: { label: '按品牌:', ele: 'xd-remote-select', valueKey: 'remote-select-@key@', //值必须为{value: '', label: ''} value: [ {value: 'value:Alaska', label: 'label:Alaska'} ], className: 'input40', placeholder: '请选择品牌', multiple: false, //是否为多选 collapseTags: false, //是否折叠显示 //搜索方法 remoteSearch: (query, resolve) => { getListTestRemoteSearch(query, resolve) }, rules: [ {required: true, message: '请选择品牌', trigger: 'change'}, ] }, id: 12 }, { label: '远程搜索选择框(多选)', key: 'xd-remote-select', value: { label: '按品牌:', ele: 'xd-remote-select', valueKey: 'remote-select-@key@', //值必须为{value: '', label: ''} value: [ {value: 'value:Alaska', label: 'label:Alaska'} ], className: 'input40', placeholder: '请选择品牌', multiple: true, //是否为多选 collapseTags: false, //是否折叠显示 //搜索方法 remoteSearch: (query, resolve) => { getListTestRemoteSearch(query, resolve) }, rules: [ {required: true, message: '请选择品牌', trigger: 'change'}, ] }, id: 13 }, { label: `选择框 - 系统集成选项 <br>集成状态:status=>状态 best=>推荐 associate=>关联 yes=>是否 open=> 是否开启 check=>审核 <br>返回值类型: 1=>返回(Y,N)2=> [true|false] 3=>[1,0] 4=>[1,2], 默认值:1`, key: 'xd-select-status', value: { label: '状态:', //label ele: 'xd-select-status', //package 名称 valueKey: 'select-status-@key@', //form[valueKey] value: 'Y', //v-model isAll: true, backValueType: 1, //返回值类型 1=>返回(Y,N)2=> [true|false] 3=>[1,0] 4=>[1,2] placeholder: '请选择', list: 'status', //status=>状态 best=>推荐 associate=>关联 yes=>是否 open=> 是否开启 check=>审核 }, id: 14 }, { label: `单选 - 系统集成选项 <br>集成状态:status=>状态 best=>推荐 associate=>关联 yes=>是否 open=> 是否开启 check=>审核 <br>返回值类型: 1=>返回(Y,N)2=> [true|false] 3=>[1,0] 4=>[1,2], 默认值:1`, key: 'xd-radio', value: { label: '状态:', //label ele: 'xd-radio-status', //package 名称 valueKey: 'status-radio-@key@', //form[valueKey] value: 'Y', //v-model backValueType: 1, //返回值类型 1=>返回(Y,N)2=> [true|false] 3=>[1,0] 4=>[1,2] placeholder: '请选择', list: 'status', //status=>状态 best=>推荐 associate=>关联 yes=>是否 open=> 是否开启 check=>审核 }, id: 15 }, { label: '单选 - 自定义选项', key: 'xd-radio', value: { label: '单选:', //label ele: 'xd-radio', //package 名称 valueKey: 'radio-status-@key@', //form[valueKey] value: 1, //v-model rules: [ {required: true, message: '请选择', trigger: ['blur', 'change']} ], list: [ {"label": "万利达集团", "value": 1}, {"label": "中国联通", "value": 2}, {"label": "中国移动", "value": 3}, {"label": "味多美", "value": 4}, ] }, id: 16 }, { label: '复选框', key: 'xd-check', value: { label: '复选框:', //label ele: 'xd-check', //package 名称 valueKey: '@key@', //form[valueKey] value: [1, 2], //v-model list: [ {"label": "万利达集团", "value": 1}, {"label": "中国联通", "value": 2}, {"label": "中国移动", "value": 3}, {"label": "味多美", "value": 4}, ], rules: [ {required: true, message: '请选择内容', trigger: ['blur', 'change']}, ] }, id: 17 }, { label: `Switch <br>返回值类型: 1=>返回(Y,N)2=> [true|false] 3=>[1,0] 4=>[1,2], 默认值:1`, key: 'xd-switch', value: { label: 'Switch:', //label ele: 'xd-switch', //package 名称 valueKey: 'switch_status_tips', //form[valueKey] value: 'Y', //v-model list: ['否', '是'], //左右文本 color: ['green', '#999'], //文本颜色 showTips: true, //是否显示文本 backValueType: 1, //返回值类型 1=>返回(Y,N)2=> [true|false] 3=>[1,0] 4=>[1,2] }, id: 18 }, { label: '富文本', key: 'xd-tinymce', value: { label: '富文本:', //label ele: 'xd-tinymce', //package 名称 valueKey: 'tinymce-@key@', //form[valueKey] value: '如:设置16:00前下单,最早可提前2小时;16:00后下单,最早可提前1天。<br />若:用户在16点前下单,最早可选择当前下单时间往后2小时的时间;16点后下单,最早只能选择第2天。', imageConfig: { sort: true, maxlen: 100, action: 'https://up-z1.qiniup.com', qiniuCdn: 'http://static.e56buy.com', size: 5, tipsformet: '上传文件格式:@imageType@,不超过@size@MB.', uploadType: 'qiniu', //aliyun , qiniu type: ['jpg', 'png', 'jpeg'] }, inline: false, notice: '如:设置16:00前下单,最早可提前2小时;16:00后下单,最早可提前1天。<br />若:用户在16点前下单,最早可选择当前下单时间往后2小时的时间;16点后下单,最早只能选择第2天。', rules: [ {required: true, message: '请添加内容', trigger: 'change'}, ], }, id: 19 }, { label: '多级输入框', key: 'xd-multiple-input', value: { label: '多级输入框:', //label ele: 'xd-multiple-input', //package 名称 valueKey: 'xd-multiple-input-@key@', //form[valueKey] //默认值 value: { input: '多级输入框', price: 20000, select: '', selectbox: [], }, disabled: false, setting: { inputs: [ {type: 'input', key: 'input', unit: '%'}, {type: 'input', key: 'price', unit: '元', isPrice: true}, { type: 'select', key: 'select', list: [ {"label": "万利达集团", "value": 1}, {"label": "深圳万利达", "value": 2}, {"label": "移动通信设备有限公司", "value": 3}, {"label": "味多美", "value": 4}, ], unit: '元', multiple: false }, { type: 'select', key: 'selectbox', list: [ {"label": "万利达集团", "value": 1}, {"label": "深圳万利达", "value": 2}, {"label": "移动通信设备有限公司", "value": 3}, {"label": "味多美", "value": 4}, ], multiple: true }, ], }, rules: [ {required: true, message: '请添加内容', trigger: 'change'}, ], }, id: 20 }, { label: '远程选择无限级树(单选)', key: 'xd-cascade-select', value: { label: '远程选择树:', //label ele: 'xd-cascade-select', //package 名称 valueKey: 'xd-cascade-select-@key@', //form[valueKey] //默认值 value: ['22', '2016', '52607', '52622'], //v-model disabled: false, multiple: false, //获取子集列表方法 handleChildren: ({level, select, item}, resolve) => { let placeholder = '请选择省份'; if (level === 1) placeholder = '请选择城市'; if (level === 2) placeholder = '请选择县/市'; if (level === 3) placeholder = '请选择乡/街道'; axios({ method: 'get', url: config.getCity, params: { token: config.token, parent_code: level === 0 ? 0 : select.value } }) .then((res) => { let temp = []; res.data.result.map((item) => { temp.push({...item, value: item['city_code'], label: item['name']}); }); resolve({ list: temp, //数据列表(必选) isChildren: level < 3, //是否有子集(必选) placeholder: placeholder, //占位符(必选) custom: 1, //自定义字段 params: {a: 1, b: 2} //自定义字段 }); loading.close(); }) .catch((error) => { }); }, rules: [ {required: true, message: '请添加数据', trigger: 'change'}, ], }, id: 21 }, { label: '远程选择无限级树(多选)', key: 'xd-cascade-select', value: { label: '远程选择树:', //label ele: 'xd-cascade-select', //package 名称 valueKey: 'xd-cascade-select-@key@', //form[valueKey] //默认值 value: ['22', '2016', '52607', ['52622', '52619', '52621']], //v-model disabled: false, multiple: true, //获取子集列表方法 handleChildren: ({level, select, item}, resolve) => { let placeholder = '请选择省份'; if (level === 1) placeholder = '请选择城市'; if (level === 2) placeholder = '请选择县/市'; if (level === 3) placeholder = '请选择乡/街道'; axios({ method: 'get', url: config.getCity, params: { token: config.token, parent_code: level === 0 ? 0 : select.value } }) .then((res) => { let temp = []; res.data.result.map((item) => { temp.push({...item, value: item['city_code'], label: item['name']}); }); resolve({ list: temp, //数据列表(必选) isChildren: level < 3, //是否有子集(必选) placeholder: placeholder, //占位符(必选) custom: 1, //自定义字段 params: {a: 1, b: 2} //自定义字段 }); loading.close(); }) .catch((error) => { }); }, rules: [ {required: true, message: '请添加数据', trigger: 'change'}, ], }, id: 22 }, { label: '远程添加树无限级树(多选)', key: 'xd-remote-cascade', value: { label: '远程添加树(多选):', //label ele: 'xd-remote-cascader', //package 名称 valueKey: 'xd-remote-cascade-@key@', //form[valueKey] //默认值 value: [{ value: ['5', '258'], label: "河北/唐山市" }], //v-model disabled: false, multiple: true, //获取子集列表方法 handleChildren: ({level, select, item}, resolve) => { let placeholder = '请选择省份'; if (level === 1) placeholder = '请选择城市'; if (level === 2) placeholder = '请选择县/市'; if (level === 3) placeholder = '请选择乡/街道'; axios({ method: 'get', url: config.getCity, params: { token: config.token, parent_code: level === 0 ? 0 : select.value } }) .then((res) => { let temp = []; res.data.result.map((item) => { temp.push({...item, value: item['city_code'], label: item['name']}); }); resolve({ list: temp, //数据列表(必选) isChildren: level < 3, //是否有子集(必选) placeholder: placeholder, //占位符(必选) custom: 1, //自定义字段 params: {a: 1, b: 2} //自定义字段 }); loading.close(); console.log('handleChildren', temp); }) .catch((error) => { }); }, placeholder: '请添加数据', tips: '输入或选中操作后,请点击右侧"+"按钮进行添加操作', rules: [ {required: true, message: '请添加数据', trigger: 'change'}, ], }, id: 23 }, { label: '远程添加无限级树(单选)', key: 'xd-cascade-select', value: { label: '远程添加树(单选):', //label ele: 'xd-remote-cascader', //package 名称 valueKey: 'xd-remote-cascade-@key@', //form[valueKey] //默认值 value: [{ value: ['5', '258'], label: "河北/唐山市" }], //v-model disabled: false, multiple: true, //获取子集列表方法 handleChildren: ({level, select, item}, resolve) => { let placeholder = '请选择省份'; if (level === 1) placeholder = '请选择城市'; if (level === 2) placeholder = '请选择县/市'; if (level === 3) placeholder = '请选择乡/街道'; axios({ method: 'get', url: config.getCity, params: { token: config.token, parent_code: level === 0 ? 0 : select.value } }) .then((res) => { let temp = []; res.data.result.map((item) => { temp.push({...item, value: item['city_code'], label: item['name']}); }); resolve({ list: temp, //数据列表(必选) isChildren: level < 3, //是否有子集(必选) placeholder: placeholder, //占位符(必选) custom: 1, //自定义字段 params: {a: 1, b: 2} //自定义字段 }); loading.close(); console.log('handleChildren', temp); }) .catch((error) => { }); }, placeholder: '请添加数据', tips: '输入或选中操作后,请点击右侧"+"按钮进行添加操作', rules: [ {required: true, message: '请添加数据', trigger: 'change'}, ], }, id: 24 }, { label: '输入框下拉级联操作(单选) - 一次性给数据', key: 'xd-cascade', value: { label: '输入框级联:', //label ele: 'xd-cascade', //package 名称 valueKey: 'cascade-@key@', //form[valueKey] //单选模式传值 value: ['yizhi'], //v-model disabled: false, list: testData, className: 'input40', setting: { isGeRoot: true, //当子集合选择返回父节点选 filterable: true, //是否过滤操作 clearable: true, //是否清楚操作 collapseTags: true, //多选是否清楚操作 multiple: false, //是否多选 }, rules: [ {required: true, message: '请选择数据', trigger: 'blur'}, ], inline: false, notice: '如:设置16:00前下单,最早可提前2小时;16:00后下单,最早可提前1天。<br />若:用户在16点前下单,最早可选择当前下单时间往后2小时的时间;16点后下单,最早只能选择第2天。' }, id: 25 }, { label: '输入框下拉级联操作(多选) - 一次性给数据', key: 'xd-cascade-select', value: { label: '输入框级联:', //label ele: 'xd-cascade', //package 名称 valueKey: 'cascade-@key@', //form[valueKey] //多选模式传值 value: [ {express_label: "指南", express_value: 'zhinan'}, {express_label: "导航", express_value: 'daohang'}, {express_label: "资源", express_value: 'ziyuan'}, ], //v-model disabled: false, list: testData, className: 'input40', setting: { isGeRoot: true, //当子集合选择返回父节点选 filterable: true, //是否过滤操作 clearable: true, //是否清楚操作 collapseTags: true, //多选是否清楚操作 multiple: true, //是否多选 }, maps: { label: 'express_label', value: 'express_value' }, rules: [ {required: true, message: '请选择数据', trigger: 'blur'}, ], inline: false, notice: '如:设置16:00前下单,最早可提前2小时;16:00后下单,最早可提前1天。<br />若:用户在16点前下单,最早可选择当前下单时间往后2小时的时间;16点后下单,最早只能选择第2天。' }, id: 26 }, { label: '面板级联操作(单选) - 一次性给数据', key: 'xd-cascade-panel', value: { label: '级联操作:', //label ele: 'xd-cascade-panel', //package 名称 valueKey: 'xd-cascade-panel-@key@', //form[valueKey] value: ['yizhi'], //v-model 单选模式传值 //多选模式传值 //value: [ //{express_label: "指南", express_value: 'zhinan'}, // {express_label: "导航", express_value: 'daohang'}, // {express_label: "一致", express_value: 'yizhi'}, // {express_label: "资源", express_value: 'ziyuan'}, //], list: testData, disabled: false, setting: { multiple: false, isGeRoot: true, //当子集合选择返回父节点选 height: '260px', tips: '如:设置16:00前下单,最早可提前2小时;16:00后下单,最早可提前1天。<br />若:用户在16点前下单,最早可选择当前下单时间往后2小时的时间;16点后下单,最早只能选择第2天。' }, rules: [ {required: true, message: '请输入运费满减规则金额,并且订单金额大于运费减金额。', trigger: 'blur'}, ], }, id: 27 }, { label: '面板级联操作(多选) - 一次性给数据', key: 'xd-cascade-panel', value: { label: '级联操作:', //label ele: 'xd-cascade-panel', //package 名称 valueKey: 'xd-cascade-panel-@key@', //form[valueKey] value: [ {express_label: "指南", express_value: 'zhinan'}, {express_label: "导航", express_value: 'daohang'}, {express_label: "一致", express_value: 'yizhi'}, {express_label: "资源", express_value: 'ziyuan'}, ], list: testData, disabled: false, setting: { isGeRoot: true, //当子集合选择返回父节点选 multiple: true, height: '260px', tips: '如:设置16:00前下单,最早可提前2小时;16:00后下单,最早可提前1天。<br />若:用户在16点前下单,最早可选择当前下单时间往后2小时的时间;16点后下单,最早只能选择第2天。' }, maps: { label: 'express_label', value: 'express_value' }, rules: [ {required: true, message: '请输入运费满减规则金额,并且订单金额大于运费减金额。', trigger: 'blur'}, ], }, id: 28 }, { label: '面板级联添加操作 - 数据懒加载', key: 'remote-cascader-panel', value: { label: '级联添加:', //label ele: 'xd-remote-cascader-panel', //package 名称 valueKey: 'remote-cascader-panel', //form[valueKey] //v-model value: [ {express_label: "北京/北京", express_value: '1-jfb1'}, ], disabled: false, maps: { label: 'express_label', value: 'express_value' }, handleCustom: ({action, data}) => { //全选第一层时候进行过滤操作 if (action === 'filter') { return data.value !== '0'; } //获取数据树列表 if (action === 'lazyLoad') getDataRegionList(data.node, data.resolve); }, setting: { isInclude: true, //有包含关系提示 allSelectName: '全部省/市', height: '260px', multiple: true, tips: '如:设置16:00前下单,最早可提前2小时;16:00后下单,最早可提前1天。<br />若:用户在16点前下单,最早可选择当前下单时间往后2小时的时间;16点后下单,最早只能选择第2天。' }, rules: [ {required: true, message: '请输入运费满减规则金额,并且订单金额大于运费减金额。', trigger: 'change'}, ] }, id: 29 }, { label: '输入框前后单位显示', key: 'xd-input-unit', value: { label: '输入框前后单位显示:', //label ele: 'xd-input-unit', //package 名称 valueKey: 'input-unit-@key@', //form[valueKey] value: 12, //默认值 disabled: false, setting: { unit: '%', pos: 'append', //前后插入单位 //prepend,append type: 'number', //值的类型 tips: '深圳万利达移动通信设备有限公司', width: '150px', before: '最长', }, rules: [ {required: true, message: '请输入内容', trigger: 'blur'}, ], }, id: 30 }, { label: '输入框后有单位显示,单位为选择', key: 'xd-input-unit', value: { label: '单位显示:', //label ele: 'xd-input-unit', //package 名称 valueKey: 'input-unit', //form[valueKey] //默认值 value: { //v-model inputA: 20, unitA: 1 }, disabled: false, setting: { /**单位选则**/ select: [ {"label": "小时", "value": 1}, {"label": "分钟", "value": 2}, ], pos: 'prepend', //prepend,append tips: '深圳万利达移动通信设备有限公司', type: 'number', width: '200px', selectWidth: "80px", before: '最长', }, rules: [ {required: true, message: '请输入内容', trigger: 'blur'}, ], maps: { input: 'inputA', unit: 'unitA' }, }, id: 31 }, { label: '满减规则显示', key: 'xd-full-cut-rule', value: { label: '满减规则:', //label ele: 'xd-full-cut-rule', //package 名称 valueKey: 'cut-full-rule-@key@', //form[valueKey] value: [ {express_full_price: 200, express_cut_price: 30}, {express_full_price: 500, express_cut_price: 80}, {express_full_price: 1000, express_cut_price: 300}, ], //v-model disabled: false, maps: { full_price: 'express_full_price', cut_price: 'express_cut_price' }, rules: [ {required: true, message: '请输入运费满减规则金额,并且订单金额大于运费减金额。', trigger: 'blur'}, ] }, id: 32 }, { label: '有单位输入区间数据', key: 'xd-input-range', value: { label: '按价格:', //label ele: 'xd-input-range', //package 名称 valueKey: 'input-range-@key@', //form[valueKey] value: { //v-model startA: 1, endA: 10, }, disabled: false, setting: { //icon优先与unit显示 unit: '%', icon: 'xd_admin_iconfont xdicon_jiage', }, rules: [ {required: true, message: '输入的按价格规则不能为空。', trigger: 'change'}, ], maps: { start: 'startA', end: 'endA', }, notice: '市场价和分销价', }, id: 33 }, { label: '按类型输入区间数据 - 可选类型操作', key: 'xd-input-range', value: { label: '按价格:', //label ele: 'xd-input-range', //package 名称 valueKey: 'input-range-@key@', //form[valueKey] value: { //v-model startA: 1, endA: 10, select: 1, }, disabled: false, setting: { /**单位显示**/ unit: '%', icon: 'xd_admin_iconfont xdicon_jiage', /**选择条件显示**/ selectWidth: '110px', selectMultiple: false, selectPlaceholder: '请选择', select: [ {"label": "分销价", "value": 1}, {"label": "市场价", "value": 2}, ], }, maps: { start: 'startA', end: 'endA', select: 'select' }, notice: '市场价和分销价', rules: [ {required: true, message: '输入的按价格规则不能为空。', trigger: 'change'}, ], }, id: 34 }, { label: '尺寸', key: 'xd-size', value: { label: '尺寸:', //label ele: 'xd-size', //package 名称 valueKey: 'size-@key@', //form[valueKey] value: { height: 200, width: 750 }, //v-model disabled: { wDisabled: true, hDisabled: false }, setting: { height: null, width: 750, }, placeholder: { width: '宽度px', height: '高度px' }, rules: [ {required: true, message: '请设置尺寸', trigger: 'change'}, ], }, id: 35 }, { label: '设置颜色', key: 'xd-color', value: { label: '颜色:', //label ele: 'xd-color', //package 名称 valueKey: 'color-@key@', //form[valueKey] value: null, //v-model disabled: false, setting: { showAlpha: false, }, placeholder: '请选择颜色值', rules: [ {required: true, message: '请选择颜色值', trigger: 'change'}, ], }, id: 36 }, { label: '边距', key: 'xd-margin-padding', value: { label: '边距:', //label ele: 'xd-margin-padding', //package 名称 valueKey: 'margin-@key@', //form[valueKey] //v-model value: { top: 1, right: 1, bottom: 1, left: 1, }, disabled: false, setting: { type: 'margin', }, placeholder: '请设置边距值', rules: [ {required: true, message: '请设置边距值', trigger: 'change'}, ], }, id: 37 }, { label: '选择商品', key: 'xd-table-product', value: { label: '选择商品:', //label ele: 'xd-table-product', //package 名称 valueKey: 'table-product-@key@', //form[valueKey] value: [ { "id": "26", "package_name": "北京慈铭体检入职体检B", "price": "36000", "package_type": ["入职体检"], "updated": "2021-12-16", "created": "2021-12-17", "status": "Y", "image": 'https://jfbcake.oss-cn-beijing.aliyuncs.com/uploads/20200710/6e6e8d3be52ec622216e667620ee9634.jpg' }, { "id": "27", "package_name": "廊坊大健康医院", "price": "72000", "package_type": ["老年体检"], "updated": "2021-12-17", "created": "2021-12-18", "status": "N", "image": 'https://jfbcake.oss-cn-beijing.aliyuncs.com/uploads/20200710/6e6e8d3be52ec622216e667620ee9634.jpg' }, { "id": "28", "package_name": "廊坊大健康医院", "price": "76000", "package_type": ["儿童体检"], "updated": "2021-12-18", "created": "2021-12-19", "status": "Y", "image": 'https://jfbcake.oss-cn-beijing.aliyuncs.com/uploads/20200710/6e6e8d3be52ec622216e667620ee9634.jpg' } ], disabled: false, handleCustom: ({action, data}) => { //处理点击链接按钮跳转 if (action === 'link') { return `/editor/editor` } if (action === 'button') { console.log(action, data) } //当前搜索记录中的某条记录是否在已选中列表中 if (action === 'disabled') { return data.list.filter(item => { return item.id === data.row.id; }) } //搜索操作 if (action === 'search') { console.log(data.params); let list = [1, 2, 3, 4, 5].map(item => { return { "id": item === 1 ? '26' : this.$xdHelper.random(1000, 999999), "package_name": "北京慈铭体检入职体检B", "price": this.$xdHelper.random(100000, 999999), "package_type": ["入职体检"], "updated": "2021-12-16", "created": "2021-12-17", "status": this.$xdHelper.random(1, 2) === 1 ? 'Y' : 'N', "image": 'https://jfbcake.oss-cn-beijing.aliyuncs.com/uploads/20200710/6e6e8d3be52ec622216e667620ee9634.jpg' } }); setTimeout(() => { data.cb({ total: this.$xdHelper.random(10, 50), list: list }) }, 1000) } //选择城市操作 if (action === 'select') { let list = data.list.map((item, index) => { return { "id": item.id, "package_name": item.package_name, "price": item.price, "package_type": ["入职体检"], "updated": `2021-12-${9 + index}`, "created": `2021-12-${10 + index}`, "status": index % 2 === 0 ? 'Y' : 'N', "image": 'https://jfbcake.oss-cn-beijing.aliyuncs.com/uploads/20200710/6e6e8d3be52ec622216e667620ee9634.jpg' } }); data.cb(list) } //记录返回数据进行过滤处理 if (action === 'filter') { let list = data.filter(item => { return Object.keys(item).filter(key => { let temp = true; //首件数量必须大于0 if (key === 'product_num' && Number(item[key]) === 0) temp = false; //首件运费必须大于0 //if (key === 'freight' && Number(item[key]) === 0) temp = false; return !temp; }).length === 0; }); if (list.length === data.length) return data; else return [] } }, setting: { btnName: '指定商品', border: true, headers: [ {type: 'normal', prop: 'id', align: 'center', minWidth: 100, label: 'ID'}, {type: 'normal', sort: true, prop: 'package_name', align: 'center', minWidth: 200, label: '商品名称'}, {type: 'image', sort: true, prop: 'image', align: 'center', width: 100, height: 100, label: 'icon'}, {type: 'price', sort: true, prop: 'price', align: 'center', width: 200, label: '价格'}, {type: 'tag', prop: 'package_type', align: 'center', width: 100, label: '类型'}, {type: 'status', prop: 'status', align: 'center', width: 100, label: '状态', message: ['正常', '禁用']}, {type: 'normal', sort: true, prop: 'updated', align: 'center', width: 150, label: '更新时间'}, {type: 'normal', sort: true, prop: 'created', align: 'center', width: 150, label: '创建时间'}, { type: 'operate', align: 'center', prop: 'operate', width: 130, label: '操作', values: [ {ui: 'text-link', name: '查看', type: 'primary', target: '_blank'}, {ui: 'text-button', name: '删除', type: 'danger', pos: 'delete'}, ] } ], searchForm: [ { label: '商品ID:', //label ele: 'el-input', //package 名称 valueKey: 'id', //form[valueKey] value: '', //v-model placeholder: '请输入商品ID' }, { label: '商品名称:', //label ele: 'el-input', //package 名称 valueKey: 'order_id', //form[valueKey] value: '', //v-model placeholder: '请输入订商品名称' }, ], width: '900px', maxHeight: '600px', title: '选择商品', selectList: testData, }, rules: [ {required: true, message: '请选择指定的商品。', trigger: 'change'}, ], inline: false, notice: '如:设置16:00前下单,最早可提前2小时;16:00后下单,最早可提前1天。<br />若:用户在16点前下单,最早可选择当前下单时间往后2小时的时间;16点后下单,最早只能选择第2天。', }, id: 38 }, { label: '选择城市', key: 'xd-table-cascade', value: { label: '选择城市:', //label ele: 'xd-table-cascade', //package 名称 valueKey: 'table-cascade-@key@', //form[valueKey] value: [ { value: ['dingbudaohang'], // label: '指南/导航/顶部导航', product_num: 1, freight: 18900, regions: [ { value: "dingbudaohang", label: "指南/导航/顶部导航" } ] }, { value: ['shejiyuanze'], // label: '指南/设计原则', product_num: 1, freight: 18900, regions: [ { value: "shejiyuanze", label: "指南/设计原则", } ] }, ], disabled: false, handleCustom: ({action, data}) => { //处理点击链接按钮跳转 if (action === 'link') { return `/editor/editor` } //选择城市操作 if (action === 'select') { let value = []; let label = []; let list = data.list.map(item => { value.push(item.value); label.push(item.labelAll.join('/')); return { value: item.value, label: item.labelAll.join('/'), } }); data.cb({ value, label: label.join(','), regions: list, freight: 0, product_num: 0 }) } //记录返回数据进行过滤处理 if (action === 'filter') { let list = data.filter(item => { return Object.keys(item).filter(key => { let xx = ''; let temp = true; //首件数量必须大于0 if (key === 'product_num' && Number(item[key]) === 0) temp = false; //首件运费必须大于0 //if (key === 'freight' && Number(item[key]) === 0) temp = false; return !temp; }).length === 0; }); if (list.length === data.length) return data; else return [] } }, setting: { btnName: '指定同城区域', border: true, isOne: false, headers: [ //{type: 'normal', sort: true, prop: 'label', align: 'center', minWidth: 200, label: '可配送区域'}, {type: 'tag', prop: 'regions', align: 'center', minWidth: 200, label: '可配送区域'}, {type: 'input', prop: 'product_num', align: 'center', width: 100, label: '首件(个)'}, {type: 'input', prop: 'freight', align: 'center', width: 100, label: '运费(元)', isPrice: true}, { type: 'operate', align: 'center', prop: 'operate', minWidth: 200, label: '操作', values: [ {ui: 'text-button', name: '修改', type: 'primary'}, {ui: 'text-button', name: '删除', type: 'danger'}, ] } ], width: '600px', maxHeight: '400px', title: '选择同城配送区域', selectList: testData, }, rules: [ {required: true, message: '请选择同城配送区域。', trigger: 'change'}, ], inline: false, notice: '如:设置16:00前下单,最早可提前2小时;16:00后下单,最早可提前1天。<br />若:用户在16点前下单,最早可选择当前下单时间往后2小时的时间;16点后下单,最早只能选择第2天。', }, id: 39 }, { label: '商品参数', key: 'xd-product-params', value: { label: '商品参数:', //label ele: 'xd-product-params', //package 名称 valueKey: 'product-params-@key@', //form[valueKey] value: [ { "attr_id": "xI-1p0qSY1roS2Z5LxA-S", "name": "用户选择", "value": 'sed', }, { "attr_id": "xI-1p0qSY1roS2Z5LxA-C", "name": "复选框", "value": ['Excepteur', 'sed'], }, { "attr_id": "xI-1p0qSY1roS2Z5LxA-R", "name": "单选", "value": "女", }, { "attr_id": "xI-1p0qSY1roS2Z5LxA-I", "name": "输入框", "value": "大师兄", }, { "attr_id": "", "name": "key1", "value": "value1", }, { "attr_id": "", "name": "key2", "value": "value2", }, ], setting: { parameters: [ { "attr_id": "xI-1p0qSY1roS2Z5LxA-S", "name": "用户选择", "input_type": "SELECT", "is_required": false, "options": [ { "label": "sed", "value": "sed" }, { "label": "Excepteur", "value": "Excepteur" }, { "label": "nostru", "value": "nostru" }, { "label": "proident", "value": "proident" } ], }, { "attr_id": "xI-1p0qSY1roS2Z5LxA-C", "name": "复选框", "input_type": "CHECKBOX", "is_required": false, "options": [ { "label": "sed", "value": "sed" }, { "label": "Excepteur", "value": "Excepteur" }, { "label": "nostru", "value": "nostru" }, { "label": "proident", "value": "proident" } ], }, { "attr_id": "xI-1p0qSY1roS2Z5LxA-R", "name": "单选", "input_type": "RADIO", "is_required": false, "options": [ { "label": "男", "value": "男" }, { "label": "女", "value": "女" } ], }, { "attr_id": "xI-1p0qSY1roS2Z5LxA-I", "name": "输入框", "input_type": "INPUT", "is_required": false, }, ], can_add_param: true, //是否启用自定义参数 is_required: false, //自定义参数必须 }, inline: false, notice: '如:设置16:00前下单,最早可提前2小时;16:00后下单,最早可提前1天。<br />若:用户在16点前下单,最早可选择当前下单时间往后2小时的时间;16点后下单,最早只能选择第2天。', rules: [ {required: true, message: '请添加内容', trigger: 'change'}, ], }, id: 40 }, { label: '证件照上传', key: 'xd-upload', value: { label: '证件照上传:', ele: 'xd-upload', valueKey: 'upload-@key@', value: {}, defaultValue: [ { url: "Xduu7PusltEYKa3RVPhhuDYiElP2rQzU", }, { url: "Xduu7PusltEYKa3RVPhhuDYiElP2rQzU", } ], tipsformet: '上传文件格式:@imageType@,不超过@size@MB.', type: ['jpg', 'png', 'jpeg'], //其值:one=>单文件上传 auth=>证件正反面上传 list=>多文件上传 styleType: 'auth', //''=>API服务上传 qiniu=>七牛云OSS上传 aliyun=> 阿里云OSS上传 uploadType: 'qiniu', name: 'file', size: 5, //上传地址, //本地上传 设置本地地址即可 //qiniu上传 设置:https://up-z1.qiniup.com //使用aliyun上传设置为aliyun action: 'https://up-z1.qiniup.com', rules: [ {required: true, message: '请上传图片', trigger: ['blur', 'change']}, ] }, id: 41 }, { label: '单张图上传(图标)', key: 'xd-upload', value: { label: '单张:', ele: 'xd-upload', //绑定键值 valueKey: 'upload-@key@', value: {}, //设置模式默认值 defaultValue: { url: "Xduu7PusltEYKa3RVPhhuDYiElP2rQzU", }, slot: true, //true插槽模式 false输入框模式 oneWidth: 130, //插槽模式图片显示高度 oneHeight: 100,//插槽模式图片显示宽度 tipsformet: '上传文件格式:@imageType@,不超过@size@MB.', type: ['jpg', 'png', 'jpeg'], //其值:one=>单文件上传 auth=>证件正反面上传 list=>多文件上传 styleType: 'one', //''=>API服务上传 qiniu=>七牛云OSS上传 aliyun=> 阿里云OSS上传 uploadType: 'qiniu', size: 5, //上传地址, //本地上传 设置本地地址即可 //qiniu上传 设置:https://up-z1.qiniup.com //使用aliyun上传设置为aliyun action: 'https://up-z1.qiniup.com', name: 'file', rules: [ {required: true, message: '请上传图片', trigger: ['blur', 'change']}, ] }, id: 42 }, { label: '单张图上传(输入框)', key: 'xd-upload', value: { label: '单张:', ele: 'xd-upload', //绑定键值 valueKey: 'upload-@key@', value: {}, //设置模式默认值 defaultValue: { url: "Xduu7PusltEYKa3RVPhhuDYiElP2rQzU", }, slot: false, //true插槽模式 false输入框模式 tipsformet: '上传文件格式:@imageType@,不超过@size@MB.', type: ['jpg', 'png', 'jpeg'],