| | |
| | | import zhCN from '@/locales/zh-CN/model.js' |
| | | import enUS from '@/locales/en-US/model.js' |
| | | |
| | | const Formdict = sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS |
| | | |
| | | /** |
| | | * @description 获取表单按钮配置信息 |
| | | * @param {*} card 编辑按钮 |
| | | * @param {*} type 按钮类型,用于区分可选的打开方式 |
| | | */ |
| | | |
| | | export function getActionForm (card, functip, tableName, usefulFields, modules) { |
| | | export function getActionForm (card, functip, tableName, usefulFields, modules, anchors, uuid, fields) { |
| | | const appType = sessionStorage.getItem('appType') |
| | | let viewType = sessionStorage.getItem('editMenuType') // 弹窗 popview |
| | | let _type = '提交' |
| | | if (card.type === 'prev') { |
| | | _type = '上一步' |
| | | } else if (card.type === 'next') { |
| | | _type = '下一步' |
| | | } else if (card.type === 'close') { |
| | | _type = '关闭' |
| | | } else if (card.type === 'reset') { |
| | | _type = '重置' |
| | | } |
| | | |
| | | let menulist = [] |
| | |
| | | try { |
| | | menulist = JSON.parse(menulist) |
| | | menulist = menulist.map(item => ({value: item.MenuID, text: item.MenuName})) |
| | | } catch { |
| | | } catch (e) { |
| | | menulist = [] |
| | | } |
| | | } else { |
| | | menulist = [] |
| | | } |
| | | menulist.unshift({value: '', text: '无'}) |
| | | menulist.push({value: 'goback', text: '返回(上一页)'}) |
| | | } else { |
| | | menulist = sessionStorage.getItem('fstMenuList') |
| | | if (menulist) { |
| | | try { |
| | | menulist = JSON.parse(menulist) |
| | | } catch { |
| | | } catch (e) { |
| | | menulist = [] |
| | | } |
| | | } else { |
| | |
| | | } |
| | | } |
| | | |
| | | let linkButtons = [] |
| | | let filterComponent = (components) => { |
| | | components.forEach(item => { |
| | | if (item.type === 'tabs') { |
| | | item.subtabs.forEach(tab => { |
| | | filterComponent(tab.components) |
| | | }) |
| | | } else if (item.type === 'group') { |
| | | filterComponent(item.components) |
| | | } else { |
| | | item.action && item.action.forEach(cell => { |
| | | if (cell.hidden === 'true' || cell.uuid === uuid) return |
| | | if (!['exec', 'prompt', 'pop'].includes(cell.OpenType)) return |
| | | |
| | | linkButtons.push({ |
| | | value: cell.uuid, |
| | | label: cell.label + '(' + item.name + ')' |
| | | }) |
| | | }) |
| | | |
| | | if (item.type === 'card' && item.subcards) { |
| | | item.subcards.forEach(m => { |
| | | if ((item.subtype === 'datacard' || item.subtype === 'dualdatacard') && m.$cardType !== 'extendCard') return |
| | | m.elements.forEach(cell => { |
| | | if (cell.eleType !== 'button' || cell.hidden === 'true' || cell.uuid === uuid) return |
| | | if (!['exec', 'prompt', 'pop'].includes(cell.OpenType)) return |
| | | |
| | | linkButtons.push({ |
| | | value: cell.uuid, |
| | | label: cell.label + '(' + item.name + ')' |
| | | }) |
| | | }) |
| | | }) |
| | | } else if (item.type === 'balcony') { |
| | | item.elements.forEach(cell => { |
| | | if (cell.eleType !== 'button' || cell.hidden === 'true' || cell.uuid === uuid) return |
| | | if (!['exec', 'prompt', 'pop'].includes(cell.OpenType)) return |
| | | |
| | | linkButtons.push({ |
| | | value: cell.uuid, |
| | | label: cell.label + '(' + item.name + ')' |
| | | }) |
| | | }) |
| | | } else if (item.type === 'form') { |
| | | item.subcards.forEach(group => { |
| | | if(group.uuid === uuid) return |
| | | |
| | | if (item.subcards.length > 1) { |
| | | linkButtons.push({ |
| | | value: group.uuid, |
| | | label: group.subButton.label + '(' + item.name + '-' + group.setting.title + ')' |
| | | }) |
| | | } else { |
| | | linkButtons.push({ |
| | | value: group.uuid, |
| | | label: group.subButton.label + '(' + item.name + ')' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | filterComponent(window.GLOB.customMenu.components) |
| | | |
| | | let refresh = [] |
| | | if (viewType === 'popview') { // 弹窗标签 |
| | | refresh.push({ |
| | | value: 'closepoptab', // 关闭弹窗标签 |
| | | text: '关闭弹窗' |
| | | }) |
| | | refresh.push({ |
| | | value: 'popclose', // 执行弹窗关闭时的刷新 |
| | | text: '刷新源组件' |
| | | }) |
| | | } |
| | | |
| | | let resets = [] |
| | | fields.forEach(item => { |
| | | if (item.hidden === 'true') return |
| | | if (item.type !== 'text' && item.type !== 'number') return |
| | | |
| | | resets.push({ |
| | | value: item.uuid, |
| | | text: item.label |
| | | }) |
| | | }) |
| | | |
| | | if (card.resetForm && resets.findIndex(item => item.value === card.resetForm) === -1) { |
| | | card.resetForm = '' |
| | | } |
| | | |
| | | return [ |
| | | { |
| | | type: 'tip', |
| | | key: 'type', |
| | | label: '按钮类型', |
| | | initVal: card.type, |
| | | forbid: true |
| | | }, |
| | | { |
| | | type: 'tip', |
| | | key: 'typeName', |
| | | label: '按钮类型', |
| | | initVal: _type |
| | | }, |
| | |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'actionType', |
| | | label: '执行操作', |
| | | initVal: card.actionType || 'default', |
| | | tooltip: '关闭功能:管理系统中会关闭当前标签,子应用中为返回上一页。', |
| | | required: true, |
| | | options: [{ |
| | | value: 'default', |
| | | text: '默认' |
| | | }, { |
| | | value: 'close', |
| | | text: '关闭' |
| | | }] |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'intertype', |
| | | label: Formdict['header.form.intertype'], |
| | | label: '接口类型', |
| | | initVal: card.intertype || 'system', |
| | | required: true, |
| | | options: [{ |
| | | value: 'system', |
| | | text: Formdict['model.interface.system'] |
| | | text: '系统' |
| | | }, { |
| | | value: 'inner', |
| | | text: Formdict['model.interface.inner'] |
| | | text: '内部' |
| | | }, { |
| | | value: 'outer', |
| | | text: Formdict['model.interface.outer'] |
| | | text: '外部' |
| | | }, { |
| | | value: 'custom', |
| | | text: '自定义' |
| | |
| | | key: 'procMode', |
| | | label: '参数处理', |
| | | initVal: card.procMode || 'system', |
| | | tooltip: '当返回值存在 mk_ex_invoke 且值为 false 时,不会调用外部接口;当返回值存在 mk_ex_data 时,将以此为参数分批请求自定义接口。注:当选“无”时,按钮选行时会传递主键,存在表单时会传递表单字段,存在BID时会传BID字段。', |
| | | required: true, |
| | | options: [{ |
| | | value: 'system', |
| | |
| | | }, { |
| | | value: 'inner', |
| | | text: '内部函数' |
| | | }, { |
| | | value: 'none', |
| | | text: '无' |
| | | }] |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'sqlType', |
| | | label: Formdict['header.form.action.type'], |
| | | initVal: card.sqlType || 'update', |
| | | label: '操作类型', |
| | | initVal: card.sqlType || '', |
| | | required: true, |
| | | options: [{ |
| | | value: 'insert', |
| | | text: Formdict['header.form.action.insert'] |
| | | text: '添加' |
| | | }, { |
| | | value: 'update', |
| | | text: Formdict['header.form.action.update'] |
| | | text: '修改' |
| | | }, { |
| | | value: 'audit', |
| | | text: Formdict['header.form.action.audit'] |
| | | text: '审核' |
| | | }] |
| | | }, |
| | | { |
| | | type: 'text', |
| | | key: 'sql', |
| | | label: Formdict['model.form.tablename'], |
| | | label: '表名', |
| | | initVal: card.sql || tableName || '', |
| | | required: true |
| | | }, |
| | | { |
| | | type: 'text', |
| | | key: 'innerFunc', |
| | | label: Formdict['header.form.innerFunc'], |
| | | label: '内部函数', |
| | | initVal: card.innerFunc || '', |
| | | tooltip: functip, |
| | | fields: usefulFields, |
| | | tooltipClass: 'middle', |
| | | required: card.intertype === 'inner', |
| | | required: true, |
| | | readonly: false |
| | | }, |
| | | { |
| | |
| | | { |
| | | type: 'text', |
| | | key: 'url', |
| | | label: Formdict['model.pageUrl'], |
| | | label: '页面地址', |
| | | initVal: card.url || '', |
| | | required: true |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'sysInterface', |
| | | label: Formdict['header.form.sysInterface'], |
| | | label: '系统类型', |
| | | initVal: card.sysInterface || 'false', |
| | | tooltip: '业务系统指同一sso下的其他业务系统', |
| | | required: true, |
| | | options: [{ |
| | | value: 'true', |
| | | text: Formdict['model.true'] |
| | | text: '单点' |
| | | }, { |
| | | value: 'false', |
| | | text: Formdict['model.false'] |
| | | text: '业务' |
| | | }] |
| | | }, |
| | | { |
| | | type: 'text', |
| | | key: 'outerFunc', |
| | | label: Formdict['header.form.outerFunc'], |
| | | label: '外部函数', |
| | | initVal: card.outerFunc || '', |
| | | required: false, |
| | | readonly: false |
| | |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'callbackType', |
| | | label: '回调方式', |
| | | initVal: card.callbackType || 'script', |
| | | tooltip: '使用后台脚本执行时,需要配合计划任务。', |
| | | required: true, |
| | | options: [{ |
| | | value: 'script', |
| | | text: '自定义脚本' |
| | | }, { |
| | | value: 'default', |
| | | text: '后台脚本' |
| | | }, { |
| | | value: 'func', |
| | | text: '回调函数' |
| | | }, { |
| | | value: 'none', |
| | | text: '无' |
| | | }] |
| | | }, |
| | | { |
| | | type: 'text', |
| | | key: 'cbTable', |
| | | label: '回调表名', |
| | | initVal: card.cbTable || '', |
| | | required: true |
| | | }, |
| | | { |
| | | type: 'text', |
| | | key: 'callbackFunc', |
| | | label: '回调函数', |
| | | initVal: card.callbackFunc || '', |
| | | required: true, |
| | | readonly: false |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'method', |
| | | label: '请求方式', |
| | | initVal: card.method || 'post', |
| | |
| | | { |
| | | type: 'radio', |
| | | key: 'cross', |
| | | label: '跨域请求', |
| | | label: '接口跨域', |
| | | initVal: card.cross || 'true', |
| | | tooltip: '如果自定义接口不支持跨域请求,会通过当前系统转发。', |
| | | required: false, |
| | |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'callbackType', |
| | | label: '回调方式', |
| | | initVal: card.callbackType || 'script', |
| | | tooltip: '使用后台脚本执行时,需要配合计划任务。', |
| | | required: true, |
| | | key: 'stringify', |
| | | label: '序列化', |
| | | initVal: card.stringify || 'text', |
| | | required: false, |
| | | options: [{ |
| | | value: 'script', |
| | | text: '自定义脚本' |
| | | value: 'text', |
| | | text: 'Text' |
| | | }, { |
| | | value: 'default', |
| | | text: '后台脚本' |
| | | value: 'JSON', |
| | | text: 'JSON' |
| | | }, { |
| | | value: 'qs', |
| | | text: 'qs' |
| | | }] |
| | | }, |
| | | { |
| | | type: 'text', |
| | | key: 'cbTable', |
| | | label: '回调表名', |
| | | initVal: card.cbTable || '', |
| | | required: true |
| | | key: 'ContentType', |
| | | label: 'Content-Type', |
| | | initVal: card.ContentType || '', |
| | | tooltip: '默认值:application/x-www-form-urlencoded;charset=UTF-8', |
| | | required: false |
| | | }, |
| | | { |
| | | type: 'text', |
| | | key: 'callbackFunc', |
| | | label: Formdict['header.form.callbackFunc'], |
| | | initVal: card.callbackFunc || '', |
| | | required: false, |
| | | readonly: false |
| | | key: 'outerBlacklist', |
| | | label: '字段黑名单', |
| | | initVal: card.outerBlacklist || '', |
| | | tooltip: '不需要回传的字段可设置字段黑名单,多个值请用逗号分隔。', |
| | | required: false |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'Ot', |
| | | label: '行设置', |
| | | initVal: card.Ot, |
| | | required: true, |
| | | options: [{ |
| | | value: 'notRequired', |
| | | text: '不选择行' |
| | | }, { |
| | | value: 'requiredSgl', |
| | | text: '选择单行' |
| | | }] |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'execSuccess', |
| | | label: '成功后', |
| | | initVal: card.execSuccess || 'grid', |
| | | required: true, |
| | | options: [{ |
| | | value: 'never', |
| | | text: '不刷新' |
| | | }, { |
| | | value: 'grid', |
| | | text: '刷新当前组件' |
| | | }, { |
| | | value: 'mainline', |
| | | text: '刷新上级组件 - 行' |
| | | }, ...refresh] |
| | | }, |
| | | { |
| | | type: (appType === 'pc' || appType === 'mob') ? 'select' : 'cascader', |
| | | key: 'linkmenu', |
| | | label: '打开菜单', |
| | | label: '下一步操作', |
| | | tooltip: '执行成功后需要打开的菜单。', |
| | | initVal: card.linkmenu, |
| | | help: appType === 'pc' || appType === 'mob' ? '可返回上一页。' : null, |
| | | required: false, |
| | | allowClear: true, |
| | | options: menulist |
| | | }, |
| | | { |
| | | type: 'text', |
| | | key: 'output', |
| | | label: '返回值', |
| | | tooltip: '执行成功后的返回值。系统函数可指定返回的变量(以@符开头,返回id时可使用@id@);自定义函数可指定返回字段(如id)。', |
| | | initVal: card.output || '', |
| | | required: false |
| | | }, |
| | | { |
| | | type: 'radio', |
| | |
| | | label: '打开方式', |
| | | initVal: card.open || 'blank', |
| | | required: false, |
| | | forbid: appType !== 'pc', |
| | | options: [{ |
| | | value: 'blank', |
| | | text: '新窗口' |
| | | }, { |
| | | value: 'self', |
| | | text: '当前窗口' |
| | | }] |
| | | forbid: appType !== 'pc' && appType !== 'mob', |
| | | options: [ |
| | | {value: 'blank', text: appType !== 'mob' ? '新窗口' : '新页面'}, |
| | | {value: 'self', text: appType !== 'mob' ? '当前窗口' : '当前页面'}, |
| | | ] |
| | | }, |
| | | { |
| | | type: 'cascader', |
| | | key: 'syncComponent', |
| | | label: '同步刷新', |
| | | initVal: card.syncComponent, |
| | | tooltip: '执行成功后需要刷新的组件。', |
| | | tooltip: '执行成功后需要刷新的组件。注:选择当前组件的上级组件无效,刷新上级组件请选择成功后“刷新上级组件 - 行”。', |
| | | required: false, |
| | | options: modules |
| | | }, |
| | | // { |
| | | // type: 'radio', |
| | | // key: 'enable', |
| | | // label: '是否显示', |
| | | // initVal: card.enable || 'true', |
| | | // required: false, |
| | | // options: [{ |
| | | // value: 'true', |
| | | // text: '显示' |
| | | // }, { |
| | | // value: 'false', |
| | | // text: '隐藏' |
| | | // }] |
| | | // } |
| | | { |
| | | type: 'cascader', |
| | | key: 'anchors', |
| | | label: '跳转锚点', |
| | | initVal: card.anchors || [], |
| | | tooltip: '执行成功后,需要跳转的锚点。' + (appType === 'mob' ? '注:小程序中无效' : ''), |
| | | required: false, |
| | | options: anchors |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'preButton', |
| | | label: '前置按钮', |
| | | tooltip: '当前按钮执行前,需要执行的按钮。', |
| | | initVal: card.preButton || '', |
| | | required: false, |
| | | allowClear: true, |
| | | options: linkButtons |
| | | }, |
| | | { |
| | | type: 'select', |
| | | key: 'resetForm', |
| | | label: '重置表单', |
| | | tooltip: '按钮执行成功后需要重置的表单,表单会恢复默认值并聚焦。', |
| | | initVal: card.resetForm || '', |
| | | required: false, |
| | | allowClear: true, |
| | | options: resets |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | key: 'reload', |
| | | label: '上一页', |
| | | initVal: card.reload || 'false', |
| | | tooltip: '成功后是否刷新上页的数据。注:在明科云APP或小程序中有效。', |
| | | forbid: appType !== 'mob', |
| | | options: [{ |
| | | value: 'false', |
| | | text: '不刷新' |
| | | }, { |
| | | value: 'true', |
| | | text: '刷新' |
| | | }] |
| | | }, |
| | | ] |
| | | } |