@steedos-widgets/amis-lib 1.3.18 → 1.3.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/index.cjs.js +7 -3
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +7 -3
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +4 -4
- package/dist/index.umd.js.map +1 -1
- package/package.json +2 -2
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/lib/amis.js","../src/lib/steedos.client.js","../src/lib/router.js","../src/lib/converter/amis/util.js","../src/lib/converter/amis/tpl.js","../src/lib/converter/amis/graphql.js","../src/config/index.js","../src/lib/converter/amis/fields/type.js","../src/lib/converter/amis/fields/file.js","../src/i18n.js","../src/lib/converter/amis/fields/table.js","../src/lib/converter/amis/api.js","../src/lib/converter/amis/calendar.js","../../../../node_modules/tslib/tslib.es6.js","../../src/utils/keyToPath.ts","../../src/utils/object.ts","../src/lib/converter/amis/fields/list.js","../src/lib/defaultsDeep.js","../src/lib/expression.js","../src/schema/standard_new.amis.js","../src/lib/page.js","../src/schema/standard_edit.amis.js","../src/schema/standard_delete.amis.js","../src/schema/standard_import_data.amis.js","../src/schema/standard_open_view.amis.js","../src/schema/standard_export_excel.amis.js","../src/standard/button.js","../src/lib/buttons.js","../src/lib/converter/amis/fields_filter.js","../src/lib/converter/amis/header.js","../src/lib/converter/amis/toolbars/setting_listview/new.js","../src/lib/converter/amis/toolbars/setting_listview/copy.js","../src/lib/converter/amis/toolbars/setting_listview/rename.js","../src/lib/converter/amis/toolbars/setting_listview/share.js","../src/lib/converter/amis/toolbars/setting_listview/filters.js","../src/lib/converter/amis/toolbars/setting_listview/columns.js","../src/lib/converter/amis/toolbars/setting_listview/sort.js","../src/lib/converter/amis/toolbars/setting_listview/delete.js","../src/lib/converter/amis/toolbars/setting_listview.js","../src/lib/converter/amis/toolbar.js","../src/lib/converter/amis/index.js","../src/lib/record.js","../src/lib/objectsRelated.js","../src/lib/objects.js","../src/lib/converter/amis/fields/user.js","../src/lib/converter/amis/fields/tree_select.js","../src/lib/converter/amis/fields/lookup.js","../src/lib/converter/amis/fields/editor.js","../src/lib/converter/amis/fields/index.js","../src/lib/converter/amis/fields/sections.js","../src/lib/converter/amis/form.js","../src/lib/input_table.js","../src/lib/page_init.js","../src/lib/apps.js","../src/lib/notification.js","../src/lib/public.env.js","../src/lib/space_users.js","../src/lib/converter/amis/filters.js","../src/lib/assets.js","../../src/render.ts","../src/workflow/approve.js","../src/workflow/attachment.js","../src/workflow/related.js","../src/workflow/history.js","../src/workflow/flow.js","../src/workflow/util.js","../src/workflow/instance.js"],"sourcesContent":["/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-13 11:31:12\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-09-27 10:34:59\n * @Description:\n */\nimport { each, find, isArray, isEmpty } from 'lodash';\n\nconst RegisterRenders = [];\n\nconst normalizeLink = (to, location = window.location) => {\n to = to || \"\";\n\n if (to && to[0] === \"#\") {\n to = location.pathname + location.search + to;\n } else if (to && to[0] === \"?\") {\n to = location.pathname + to;\n }\n\n const idx = to.indexOf(\"?\");\n const idx2 = to.indexOf(\"#\");\n let pathname = ~idx\n ? to.substring(0, idx)\n : ~idx2\n ? to.substring(0, idx2)\n : to;\n let search = ~idx ? to.substring(idx, ~idx2 ? idx2 : undefined) : \"\";\n let hash = ~idx2 ? to.substring(idx2) : location.hash;\n\n if (!pathname) {\n pathname = location.pathname;\n } else if (pathname[0] != \"/\" && !/^https?\\:\\/\\//.test(pathname)) {\n let relativeBase = location.pathname;\n const paths = relativeBase.split(\"/\");\n paths.pop();\n let m;\n while ((m = /^\\.\\.?\\//.exec(pathname))) {\n if (m[0] === \"../\") {\n paths.pop();\n }\n pathname = pathname.substring(m[0].length);\n }\n pathname = paths.concat(pathname).join(\"/\");\n }\n\n return pathname + search + hash;\n};\n\nexport const amisRootClick = (router, e) => {\n if (e.target.nodeName.toLocaleLowerCase() === \"a\" && e.target.href) {\n e.preventDefault();\n router.push(e.target.href);\n }\n};\n\nexport const getEvn = (router)=>{\n return {\n theme: \"antd\",\n notify: (type, msg)=>{\n if(msg.props?.schema.tpl){\n SteedosUI.message[type](msg.props?.schema.tpl)\n }else if(typeof msg == 'string'){\n SteedosUI.message[type](msg)\n }else{\n console.warn('notify', type, msg)\n }\n },\n confirm: (msg)=>{\n return new Promise((resolve, reject)=>{\n return SteedosUI.Modal.confirm({\n title: msg,\n onOk: ()=>{\n resolve(true);\n },\n okText: \"确认\",\n cancelText: \"取消\"\n })\n })\n },\n jumpTo: (to, action) => {\n if (to === \"goBack\") {\n return window.history.back();\n }\n\n to = normalizeLink(to);\n\n if (action && action.actionType === \"url\") {\n action.blank === true ? window.open(to) : router.push(to);\n return;\n }\n\n // 主要是支持 nav 中的跳转\n if (action && to && action.target) {\n window.open(to, action.target);\n return;\n }\n if (/^https?:\\/\\//.test(to)) {\n window.location.replace(to);\n } else {\n router.push(to);\n }\n }\n }\n}\n\nexport const registerRenders = (assets)=>{\n if(!isEmpty(assets) && isArray(assets)){\n let amisLib = amisRequire('amis');\n\n const registerMap = {\n renderer: amisLib.Renderer,\n formitem: amisLib.FormItem,\n options: amisLib.OptionsControl,\n };\n \n let amisReact = amisRequire('react');\n each(assets, (asset)=>{\n // 防止组件重复注册\n if(!find(RegisterRenders, (componentName)=>{ return componentName === asset.componentName})){\n let Component = Builder.components.find(item => item.name === asset.componentName);\n let AmisWrapper = Component.class\n if(asset.componentType === 'amisSchema'){\n AmisWrapper = (props)=>{\n const { body, render } = props\n const [schema, setSchema] = amisReact.useState(null);\n amisReact.useEffect(()=>{\n const result = Component.class(props);\n if(result && result.then && typeof result.then === 'function'){\n result.then((data)=>{\n setSchema(data);\n })\n }else{\n setSchema(result)\n }\n }, [])\n return amisReact.createElement(amisReact.Fragment, null, amisReact.createElement(amisReact.Fragment, null, schema && render ? render('body', schema) : ''), amisReact.createElement(amisReact.Fragment, null, render ? render('body', body) : ''));\n }\n }\n\n // 注册amis渲染器\n if (!registerMap[asset.usage]) {\n console.error(\n `${consoleTag}自定义组件注册失败,不存在${asset.usage}自定义组件类型。`,\n );\n } else {\n registerMap[asset.usage]({\n test: new RegExp(`(^|\\/)${asset.type}`),\n type: asset.type,\n weight: asset.weight,\n autoVar: true,\n })(AmisWrapper);\n // 记录当前创建的amis自定义组件\n console.info('注册了一个自定义amis组件:', {\n type: asset.type,\n weight: asset.weight,\n component: AmisWrapper,\n framework: asset.framework,\n usage: asset.usage,\n });\n }\n // amisLib.Renderer({\n // test: new RegExp(`(^|\\/)${asset.type}`)\n // })(AmisWrapper);\n RegisterRenders.push(asset.componentName)\n }\n })\n }\n}\n\nexport const amisRender = (root, schema, data = {}, env = {}, options) => {\n let amis = amisRequire(\"amis/embed\");\n const { router, assets } = options;\n registerRenders(assets);\n return amis.embed(root, schema, data, Object.assign(getEvn(router), env));\n};\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-04 11:24:28\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-06-12 11:51:15\n * @Description: \n */\nimport { endsWith, isEmpty, cloneDeep } from \"lodash\";\n\nconst STEEDOS_AUTH = {};\n\nconst getBuilderContext = ()=>{\n if(typeof window === \"undefined\"){\n return {};\n }\n return Builder.settings.context ? Builder.settings.context : Builder.settings\n}\n\nexport const setSteedosAuth = (steedosSession) => {\n Object.assign(STEEDOS_AUTH, steedosSession);\n}\n\nexport async function fetchAPI(api, options = { credentials: 'include' }) {\n const headers = { 'Content-Type': 'application/json' }\n const AUTHORIZATION = getAuthorization()\n if (AUTHORIZATION) {\n headers[\n 'Authorization'\n ] = AUTHORIZATION\n // } else {\n // throw new Error(401)\n }\n\n options.headers = Object.assign({}, headers, options.headers);\n options.credentials = 'include'\n const res = await fetch(`${getRootUrl()}${api}`, options)\n \n if(res.status === 401){\n throw new Error(401)\n }\n\n const json = await res.json()\n if (json.errors) {\n console.error(json.errors)\n throw new Error('Failed to fetch API')\n }\n return json\n}\n\nexport function getFileSrc(fileId){\n return `${getRootUrl()}/api/files/files/${fileId}`\n}\n\nexport function getImageSrc(fileId){\n return `${getRootUrl()}/api/files/images/${fileId}`\n}\n\n\nexport function getTenantId(){\n try {\n let spaceId = getBuilderContext().tenantId\n\n if (window.location.search && !spaceId) {\n var searchParams = new URLSearchParams(window.location.search);\n spaceId = searchParams.get('X-Space-Id');\n }\n if (!spaceId) {\n return null;\n }\n return spaceId;\n } catch (error) {\n console.error(error)\n }\n}\n\nexport function getAuthToken(){\n try {\n const context = getBuilderContext()\n let token = context.authToken;\n if (!token) {\n return null;\n }\n return token;\n } catch (error) {\n console.error(error)\n }\n}\n\nexport function getAuthorization(){\n try {\n const context = getBuilderContext()\n let spaceId = context.tenantId;\n let token = context.authToken;\n \n if (!spaceId || !token) {\n return null;\n }\n return `Bearer ${spaceId},${token}`;\n } catch (error) {\n console.error(error)\n }\n}\n\nexport function getUserId(){\n try {\n const context = getBuilderContext()\n let userId = context.userId;\n if (!userId) {\n return null;\n }\n return userId;\n } catch (error) {\n console.error(error)\n } \n}\n\nexport function absoluteUrl(url){\n return `${getRootUrl()}${url}`\n}\n\nexport function getRootUrl(defaultRootUrl){\n const context = getBuilderContext()\n if(context.rootUrl){\n return context.rootUrl;\n }\n const rootUrl = typeof window != 'undefined' ? window.localStorage.getItem(\"steedos:rootUrl\") : '';\n if(rootUrl){\n return rootUrl\n }\n return defaultRootUrl || '';\n}\n\nexport function setRootUrl(rootUrl){\n if(endsWith(rootUrl, '/')){\n rootUrl = rootUrl.substring(0, rootUrl.length-1)\n }\n localStorage.setItem(\"steedos:rootUrl\", rootUrl)\n}\n\nexport const getSteedosAuth = () => {\n // if(isEmpty(STEEDOS_AUTH)){\n // return {\n // space: localStorage.getItem(\"steedos:spaceId\"),\n // token: localStorage.getItem(\"steedos:token\"), \n // userId: localStorage.getItem(\"steedos:userId\"),\n // name: Meteor.user().name //TODO: 使用steedos 函数. 此属性在上传附件时使用\n // }\n // }\n return Object.assign( {}, cloneDeep(STEEDOS_AUTH) || {}, getBuilderContext() || {});\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-16 17:02:08\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-06-20 13:50:15\n * @Description:\n */\n\n\nexport const Router = {\n getTabDisplayAs(tab_id){\n var urlSearch = new URLSearchParams(document.location.search); \n if(urlSearch.has('display')){\n return urlSearch.get('display')\n }\n const key = `tab_${tab_id}_display`;\n // const key = `page_display`;\n const value = localStorage.getItem(key)\n return value ? value : 'grid'\n },\n \n setTabDisplayAs(tab_id, displayAs){\n const key = `tab_${tab_id}_display`;\n localStorage.setItem(key, displayAs)\n },\n getAppPath({formFactor, appId}){\n return `/app/${appId}`;\n },\n getPagePath(){\n //TODO\n },\n getObjectListViewPath({formFactor, appId, objectName, listViewName}){\n return `/app/${appId}/${objectName}/grid/${listViewName}`;\n },\n getObjectDetailPath(props){\n const {formFactor, appId, objectName, recordId, listViewName, _templateType} = props;\n if(_templateType === 'JavaScript'){\n return `/app/${appId}/${objectName}/view/${recordId}?side_object=<%=item.objectName%>&side_listview_id=<%=item.listName%>`;\n }\n return `/app/${appId}/${objectName}/view/${recordId}?side_object=\\${objectName}&side_listview_id=\\${listName}`;\n },\n getObjectRelatedViewPath({formFactor, appId, masterObjectName, masterRecordId, objectName, foreignKey}){\n return `/app/${appId}/${masterObjectName}/${masterRecordId}/${objectName}/grid?related_field_name=${foreignKey}`;\n },\n\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-20 16:29:22\n * @LastEditors: liaodaxue\n * @LastEditTime: 2023-09-11 17:19:53\n * @Description: \n */\nimport { getRootUrl } from \"../../steedos.client\";\n\nexport function getSvgUrl(source, name) {\n var foo, url;\n foo = name != null ? name.split(\".\") : void 0;\n if (foo && foo.length > 1) {\n source = foo[0];\n if (!(source != null ? source.endsWith(\"-sprite\") : void 0)) {\n source += \"-sprite\";\n }\n name = foo[1];\n }\n url = \"/assets/icons/\" + source + \"/svg/symbols.svg#\" + name;\n return `${getRootUrl()}${url}`;\n}\n\nexport function getImageFieldUrl(url) {\n if (window.Meteor && window.Meteor.isCordova != true) {\n // '//'的位置\n const doubleSlashIndex = url.indexOf('//');\n const urlIndex = url.indexOf('/', doubleSlashIndex + 2);\n const rootUrl = url.substring(urlIndex);\n return rootUrl;\n }\n return url;\n}\n\nif(typeof window != 'undefined'){\n window.getImageFieldUrl = getImageFieldUrl;\n}\n\nexport function getContrastColor(bgColor) {\n var backgroundColor = (bgColor.charAt(0) === '#') ? bgColor.substring(1, 7) : bgColor;\n var r = parseInt(backgroundColor.substr(0, 2), 16);\n var g = parseInt(backgroundColor.substr(2, 2), 16);\n var b = parseInt(backgroundColor.substr(4, 2), 16);\n var brightness = (r * 299 + g * 587 + b * 114) / 1000;\n return brightness < 128 ? \"#ffffff\" : \"#000000\";\n}\n\nexport function getLookupListView(refObjectConfig) {\n if(!refObjectConfig){\n return null;\n }\n const listNameAll = \"all\";\n const listNameLookup = \"lookup\";\n let listViewAll, listViewLookup;\n\n _.each(\n refObjectConfig.list_views,\n (view, name) => {\n if (name === listNameAll) {\n listViewAll = view;\n if(!listViewAll.name){\n listViewAll.name = name;\n }\n }\n else if (name === listNameLookup) {\n listViewLookup = view;\n if(!listViewLookup.name){\n listViewLookup.name = name;\n }\n }\n }\n );\n let listView = listViewLookup || listViewAll;\n return listView;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-05-23 09:53:08\n * @LastEditors: liaodaxue\n * @LastEditTime: 2023-10-11 17:32:17\n * @Description: \n */\nimport { Router } from '../../router'\n import { getUISchema } from '../../objects'\nimport { forEach } from 'lodash';\nimport { getContrastColor } from './util'\n\nexport function getCreatedInfoTpl(formFactor){\n const href = Router.getObjectDetailPath({\n formFactor, appId: \"admin\", objectName: 'users', recordId: '${created_by._id}'\n })\n return `<span><a href='${href}'>\\${_display.created_by.label}</a>\\${_display.created}</span>`\n}\n\nexport function getModifiedInfoTpl(formFactor){\n const href = Router.getObjectDetailPath({\n formFactor, appId: \"admin\", objectName: 'users', recordId: '${modified_by._id}'\n })\n return `<span><a href='${href}'>\\${_display.modified_by.label}</a>\\${_display.modified}</span>`\n}\n\nexport function getNumberTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\n\nexport function getTimeTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\n\nexport function getDateTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\n\n\nexport function getDateTimeTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\n\nexport function getUiFieldTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\n\nexport function getUiFileSizeTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\n\n//TODO 处理name字段\nexport async function getRefObjectNameFieldName(field){\n const refUiSchema = await getUISchema(field.reference_to)\n const NAME_FIELD_KEY = refUiSchema.NAME_FIELD_KEY || 'name';\n return NAME_FIELD_KEY;\n}\n\nexport function getSelectTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\nexport function getSelectMap(selectOptions){\n let map = {};\n forEach(selectOptions,(option)=>{\n const optionValue = option.value + '';\n const optionColor = option.color + '';\n if(optionColor){\n const background = optionColor.charAt(0) === '#' ? optionColor : '#'+optionColor;\n const color = getContrastColor(background);\n const optionColorStyle = 'background:'+background+';color:'+color+';line-height:1.5rem';\n map[optionValue] = `<span class=\"rounded-xl px-2 py-1\" style='${optionColorStyle}'>${option.label}</span>`\n }else{\n map[optionValue] = option.label;\n }\n })\n return map;\n}\n\nexport function getNameTplUrl(field, ctx){\n if(ctx.objectName === 'cms_files'){\n return `\\${context.rootUrl}/api/files/files/\\${versions[0]}?download=true`\n }\n const href = Router.getObjectDetailPath({\n ...ctx, formFactor: ctx.formFactor, appId: \"${appId}\", objectName: ctx.objectName || \"${objectName}\", recordId: `\\${${ctx.idFieldName}}`\n })\n return href;\n}\n\nexport function getNameTpl(field, ctx){\n const href = getNameTplUrl(field, ctx);\n let linkTarget = \"\";\n if(ctx && ctx.isLookup){\n linkTarget = \"target='_blank'\"\n }\n return `<a href=\"${href}\" ${linkTarget}>\\${${field.name}}</a>`\n}\n\nexport function getRelatedFieldTpl(field, ctx){\n let tpl = '';\n if(!field.reference_to && (field.optionsFunction || field._optionsFunction || field.options)){\n if(field.isTableField){\n return `\\${${field.name}}`\n }else{\n return `\\${${field.name}__label}`\n }\n }\n\n let linkTarget = \"\";\n if(ctx && ctx.isLookup){\n linkTarget = \"target='_blank'\"\n }\n\n const onlyDisplayLookLabel = ctx.onlyDisplayLookLabel;\n\n let fieldDataStrTpl = `data._display.${field.name}`;\n\n if(field.isTableField){\n fieldDataStrTpl = `data.${field.name}`;\n }\n\n if(_.isString(field.reference_to) || !field.reference_to){\n if(field.multiple){\n let labelTpl = `<%=item.label%>`;\n if(!onlyDisplayLookLabel){\n const href = Router.getObjectDetailPath({\n formFactor: ctx.formFactor, appId: \"<%=data.appId%>\", objectName: `<%=item.objectName%>`, recordId: `<%=item.value%>`, _templateType: \"JavaScript\"\n })\n labelTpl = `<a href=\"${href}\" ${linkTarget}><%=item.label%></a>`;\n }\n tpl = `\n <% if (${fieldDataStrTpl} && ${fieldDataStrTpl}.length) { %><% ${fieldDataStrTpl}.forEach(function(item,index) { %> <% if(index>0 && index<${fieldDataStrTpl}.length){ %> , <% } %> ${labelTpl} <% }); %><% } %>\n `\n }else{\n let labelTpl = `\\${_display.${field.name}.label}`;\n let objectNameTpl = `\\${_display.${field.name}.objectName}`;\n let recordIdTpl = `\\${_display.${field.name}.value}`;\n if(field.isTableField){\n labelTpl = `\\${${field.name}.label}`;\n objectNameTpl = `\\${${field.name}.objectName}`;\n recordIdTpl = `\\${${field.name}.value}`;\n }\n if(!onlyDisplayLookLabel){\n const href = Router.getObjectDetailPath({\n formFactor: ctx.formFactor, appId: \"${appId}\", objectName: `${objectNameTpl}`, recordId: `${recordIdTpl}`\n })\n labelTpl = `<a href=\"${href}\" ${linkTarget}>${labelTpl}</a>`;\n }\n tpl = labelTpl;\n }\n\n \n }else{\n let labelTpl = `<%=item.label%>`;\n if(!onlyDisplayLookLabel){\n const href = Router.getObjectDetailPath({\n formFactor: ctx.formFactor, appId: \"<%=data.appId%>\", objectName: `<%=item.objectName%>`, recordId: `<%=item.value%>`, _templateType: \"JavaScript\"\n })\n labelTpl = `<a href=\"${href}\" ${linkTarget}><%=item.label%></a>`;\n }\n tpl = `\n <% if (${fieldDataStrTpl} && ${fieldDataStrTpl}.length) { %><% ${fieldDataStrTpl}.forEach(function(item) { %> ${labelTpl} <% }); %><% } %>\n `\n }\n return tpl\n}\n\nexport async function getLookupTpl(field, ctx){\n if(!field.reference_to){\n return getSelectTpl(field)\n }\n const NAME_FIELD_KEY = await getRefObjectNameFieldName(field);\n if(field.multiple){\n const href = Router.getObjectDetailPath({\n formFactor: ctx.formFactor, appId: ctx.appId, objectName: field.reference_to, recordId: `<%=item._id%>`, _templateType: \"JavaScript\"\n })\n return `\n <% if (data.${field.name} && data.${field.name}.length) { %><% data.${field.name}.forEach(function(item) { %> <a href=\"${href}\"><%=item.${NAME_FIELD_KEY}%></a> <% }); %><% } %>\n `\n }else{\n const href = Router.getObjectDetailPath({\n formFactor: ctx.formFactor, appId: ctx.appId, objectName: field.reference_to, recordId: `\\${${field.name}._id}`\n })\n return `<a href=\"${href}\">\\${${field.name}.${NAME_FIELD_KEY}}</a>`\n }\n \n}\n\nexport function getSwitchTpl(field){\n let fieldDataStrTpl = `data._display.${field.name}`;\n if(field.isTableField){\n fieldDataStrTpl = `data.${field.name}`;\n }\n return `<% if (data.${field.name}) { %>\n <span class=\"slds-icon_container slds-icon-utility-check slds-current-color\" title=\"<%=${fieldDataStrTpl}%>\">\n <span ><%= ${fieldDataStrTpl} === \"√\" ? \"<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-4 h-4'><path stroke-linecap='round' stroke-linejoin='round' d='M4.5 12.75l6 6 9-13.5' /></svg>\" : ${fieldDataStrTpl} %></span>\n </span>\n <% } %>`\n}\n\nexport function getPasswordTpl(field){\n return `<% if (data.${field.name}) { %>\n <span>······</span>\n <% } %>`\n}\n\nexport function getLocationTpl(field){\n return `\\${${field.name} ? ${field.name}.address : ''}`\n}\n\nexport async function getFieldTpl (field, options){\n if((field.is_name || field.name === options.labelFieldName) && !options.onlyDisplayLookLabel){\n return getNameTpl(field, options)\n }\n switch (field.type) {\n case 'password':\n return getPasswordTpl(field);\n case 'boolean':\n return getSwitchTpl(field);\n case 'toggle':\n return getSwitchTpl(field);\n case 'select':\n return getSelectTpl(field);\n case 'time':\n return getTimeTpl(field);\n case 'date':\n return getDateTpl(field);\n case 'datetime':\n return getDateTimeTpl(field);\n case 'lookup':\n return await getRelatedFieldTpl(field, options);\n case 'master_detail':\n return await getRelatedFieldTpl(field, options);\n case 'location':\n return await getLocationTpl(field);\n case 'number':\n case 'currency':\n return await getNumberTpl(field);\n case 'percent':\n case 'formula':\n case 'summary':\n return getUiFieldTpl(field)\n case 'filesize':\n return getUiFileSizeTpl(field)\n default:\n break;\n }\n};","import * as _ from 'lodash';\nimport { includes, trimEnd } from 'lodash';\nimport { getUISchema } from '../../objects';\n\nexport async function getFieldsTemplate(fields, display){\n let expandFields = [];\n if(display != false){\n display = true;\n }\n let fieldsName = ['_id'];\n let displayFields = [];\n let fieldsArr = [];\n if(_.isArray(fields)){\n fieldsArr = fields;\n }else{\n fieldsArr = _.values(fields);\n }\n for (const field of fieldsArr) {\n //graphql 的 ui\\display 中使用的字段需要先在query中查询. 否则会返回null\n if(field.expand){\n expandFields.push(field);\n }else{\n if(field.name.indexOf('.') < 0){\n if(display && (field.type == 'lookup' || field.type == 'master_detail')){\n fieldsName.push(`${field.name}`)\n displayFields.push(`${field.name}`)\n }else{\n fieldsName.push( field.alias ? `${field.alias}:${field.name}` : field.name)\n }\n if(includes(['time','date','datetime','boolean','number','currency'], field.type)){\n fieldsName.push(`${field.name}`)\n }\n if(includes(['percent','time','filesize','date','datetime','boolean','number','currency', 'select', 'file', 'image', 'avatar', 'formula', 'summary', 'object', 'grid'], field.type)){\n displayFields.push(`${field.name}`)\n }\n }else{\n objectFieldName = field.name.split('.')[0];\n fieldsName.push(objectFieldName);\n displayFields.push(objectFieldName)\n }\n }\n }\n\n displayFields = _.uniq(displayFields);\n fieldsName = _.uniq(fieldsName);\n let expandFieldsQuery = \"\";\n if(expandFields.length > 0){\n _.each(expandFields, function(field){\n expandFieldsQuery = expandFieldsQuery + `${field.expandInfo.fieldName}__expand{${field.expandInfo.displayName}}`\n })\n }\n\n if(displayFields.length > 0){\n return `${fieldsName.join(',')},${expandFieldsQuery},_display:_ui{${displayFields.join(',')}}`;\n }\n return trimEnd(`${fieldsName.join(' ')},${expandFieldsQuery}`, \",\")\n}\n\nexport function getRecordPermissionsTemplate(){\n return `\n recordPermissions: _permissions{\n allowCreate,\n allowCreateFiles,\n allowDelete,\n allowDeleteFiles,\n allowEdit,\n allowEditFiles,\n allowRead,\n allowReadFiles,\n disabled_actions,\n disabled_list_views,\n field_permissions,\n modifyAllFiles,\n modifyAllRecords,\n modifyAssignCompanysRecords,\n modifyCompanyRecords,\n uneditable_fields,\n unreadable_fields,\n unrelated_objects,\n viewAllFiles,\n viewAllRecords,\n viewAssignCompanysRecords,\n viewCompanyRecords,\n }\n `\n}\n\nexport async function getFindOneQuery(object, recordId, fields, options){\n let queryOptions = `(filters:[\"${object.idFieldName}\", \"=\", \"\\${recordId}\"])`;\n let alias = \"data\";\n if(options){\n if(options.alias){\n alias = options.alias;\n }\n\n if(options.filters){\n queryOptions = `(filters:${options.filters})`;\n }\n if(options.queryOptions){\n queryOptions = `(${options.queryOptions})`;\n }\n }\n return {\n query: `{${alias}:${object.name}${queryOptions}{${await getFieldsTemplate(fields)}, ${getRecordPermissionsTemplate()}}}`\n }\n}\n\nexport function getSaveQuery(object, recordId, fields, options){\n return {\n objectName: object.name,\n $: \"$$\",\n recordId: recordId,\n modalName: \"${modalName}\"\n }\n}\n\n/*\n readonly字段应该移除掉不提交到服务端。\n*/\nexport function getScriptForReadonlyFields(fields){\n var scripts = [];\n fields.forEach((item)=>{\n if(item.readonly && item.name.indexOf(\".\") < 0){\n scripts.push(`delete formData.${item.name};`);\n }\n });\n return scripts.join(\"\\r\\n\");\n}\n\n/*\n img/avatar字段值移除URL前缀使其保存时正常保存id,而不是url。\n*/\nexport function getScriptForRemoveUrlPrefixForImgFields(fields){\n let imgFieldsKeys = [];\n let imgFields = {};\n fields.forEach((item)=>{\n if(includes(['image','avatar'], item.type)){\n imgFieldsKeys.push(item.name);\n imgFields[item.name] = {\n name: item.name,\n multiple: item.multiple\n };\n }\n })\n if(!imgFieldsKeys.length){\n return '';\n }\n return `\n let imgFieldsKeys = ${JSON.stringify(imgFieldsKeys)};\n let imgFields = ${JSON.stringify(imgFields)};\n imgFieldsKeys.forEach((item)=>{\n let imgFieldValue = formData[item];\n if(imgFieldValue && imgFieldValue.length){\n // 因为表单初始化接口的接收适配器中为image字段值添加了url前缀(为了字段编辑时正常显示图片),所以保存时移除(为了字段值保存时正常保存id,而不是url)。\n if(imgFields[item].multiple){\n if(imgFieldValue instanceof Array){\n formData[item] = imgFieldValue.map((value)=>{ \n let itemValue = value && value.split('/');\n return itemValue[itemValue.length - 1];\n });\n }\n }else{\n let imgValue = imgFieldValue.split('/');\n formData[item] = imgValue[imgValue.length - 1];\n }\n }\n })\n `\n}\n\n/*\n file字段值重写使其保存时正常保存id。\n*/\nexport function getScriptForSimplifiedValueForFileFields(fields){\n let fileFieldsKeys = [];\n let fileFields = {};\n fields.forEach((item)=>{\n if(item.type === 'file'){\n fileFieldsKeys.push(item.name);\n fileFields[item.name] = {\n name: item.name,\n multiple: item.multiple\n };\n }\n })\n if(!fileFieldsKeys.length){\n return '';\n }\n return `\n let fileFieldsKeys = ${JSON.stringify(fileFieldsKeys)};\n let fileFields = ${JSON.stringify(fileFields)};\n fileFieldsKeys.forEach((item)=>{\n let fileFieldValue = formData[item];\n if(fileFieldValue){\n // 因为表单初始化接口的接收适配器中为file字段值重写了值及格式(为了字段编辑时正常显示附件名、点击附件名正常下载),所以保存时还原(为了字段值保存时正常保存id)。\n if(fileFields[item].multiple){\n if(fileFieldValue instanceof Array && fileFieldValue.length){\n formData[item] = fileFieldValue.map((value)=>{ \n if(typeof value === 'object'){\n return value.value;\n }else{\n return value;\n }\n });\n }\n }else{\n formData[item] = typeof fileFieldValue === 'object' ? fileFieldValue.value : fileFieldValue;\n }\n }\n })\n `\n}\n\nexport function getSaveDataTpl(fields){\n\n return `\n const formData = api.data.$;\n for (key in formData){\n // image、select等字段清空值后保存的空字符串转换为null。\n if(formData[key] === ''){\n formData[key] = null;\n }\n }\n const objectName = api.data.objectName;\n const fieldsName = Object.keys(formData);\n delete formData.created;\n delete formData.created_by;\n delete formData.modified;\n delete formData.modified_by;\n delete formData._display;\n delete formData.initialValues;\n delete formData.editFormInited;\n delete formData.isLookup;\n delete formData.selectedRowResponseResult;\n delete formData.instance_state;\n delete formData.instances;\n ${getScriptForReadonlyFields(fields)}\n ${getScriptForRemoveUrlPrefixForImgFields(fields)}\n ${getScriptForSimplifiedValueForFileFields(fields)}\n let query = \\`mutation{record: \\${objectName}__insert(doc: {__saveData}){_id}}\\`;\n if(formData.recordId && formData.recordId !='new'){\n query = \\`mutation{record: \\${objectName}__update(id: \"\\${formData.recordId}\", doc: {__saveData}){_id}}\\`;\n };\n delete formData._id;\n let __saveData = JSON.stringify(JSON.stringify(formData));\n `\n}\n\nexport function getSaveRequestAdaptor(fields, options){\n return `\n ${getSaveDataTpl(fields)}\n api.data = {query: query.replace('{__saveData}', __saveData)};\n ${options.apiRequestAdaptor || ''}\n return api;\n `\n}\n\nexport async function getFindQuery(object, recordId, fields, options){\n let limit = options.limit || 10;\n let queryOptions = `(top: ${limit})`;\n if(recordId){\n queryOptions = `(filters:[\"_id\", \"=\", \"${recordId}\"], top: ${limit})`;\n }\n let alias = \"data\";\n if(options){\n if(options.alias){\n alias = options.alias;\n }\n\n if(options.filters){\n queryOptions = `(filters:${options.filters})`;\n }\n if(options.queryOptions){\n queryOptions = `(${options.queryOptions})`;\n }\n }\n var treeFields = '';\n if(object.enable_tree && _.includes(_.keys(object.fields), 'parent') && _.includes(_.keys(object.fields), 'children')){\n treeFields = ',parent,children';\n }\n\n var cfsFields = '';\n if(object.name === 'cms_files'){\n cfsFields = ',versions'\n }\n\n const countQuery = options.count === false ? \"\" : `,count:${object.name}__count(filters:{__filters})`;\n // const moreQuerie = options.moreQueries?.length ? (\",\" + options.moreQueries.map(function(item){\n // // 把最外层的{}去除\n // return item.replace(/^{/,\"\").replace(/}$/,\"\");\n // }).join(\",\")) : \"\";\n\n return {\n orderBy: \"${orderBy}\",\n orderDir: \"${orderDir}\",\n pageNo: \"${page}\",\n pageSize: \"${perPage}\",\n query: `{${alias}:${object.name}${queryOptions}{${await getFieldsTemplate(fields, options.expand)}${treeFields}${cfsFields}}${countQuery}}`\n }\n}\n\nexport function getRecordPermissionsQuery(object, recordId, options){\n let queryOptions = \"\";\n\n if(recordId){\n queryOptions = `(filters:[\"${object.idFieldName}\", \"=\", \"${recordId}\"])`;\n }\n let alias = \"data\";\n if(options){\n if(options.alias){\n alias = options.alias;\n }\n\n if(options.filters){\n queryOptions = `(filters:${options.filters})`;\n }\n if(options.queryOptions){\n queryOptions = `(${options.queryOptions})`;\n }\n }\n\n let recordPermissionsTemplate = getRecordPermissionsTemplate();\n if(options?.fields && options.fields.length){\n recordPermissionsTemplate = `\n recordPermissions: _permissions{\n ${options.fields.join(\",\")}\n }\n `;\n }\n return {\n query: `{${alias}:${object.name}${queryOptions}{${object.idFieldName},${recordPermissionsTemplate}}}`\n }\n}\n\nexport function getApi (isMobile){\n if(isMobile){\n //TODO 返回 绝对路径\n }else{\n // return __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + \"/graphql\"\n return `\\${context.rootUrl}/graphql?reload=\\${additionalFilters}`\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-04 10:42:49\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-08-25 10:28:47\n * @Description: \n */\nexport default {\n listView: {\n newRecordMode: 'modal',\n editRecordMode: 'modal',\n perPage: 20\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-10-28 14:52:55\n * @LastEditors: liaodaxue\n * @LastEditTime: 2023-07-28 16:16:29\n * @Description: \n */\nimport * as _ from 'lodash';\n\nconst AmisFormInputs = [\n 'text',\n 'date',\n 'file',\n \"avatar\",\n 'image',\n 'datetime',\n 'time',\n 'number',\n 'currency',\n 'percent',\n 'password',\n 'url',\n 'email'\n]\n\nexport function getAmisStaticFieldType(type, readonly, options){\n if(!readonly){\n if(_.includes(AmisFormInputs, type)){\n return `input-${type}`;\n }else if(type === 'location'){\n return \"location-picker\"\n }\n return type;\n }\n if(_.includes(['text','image'], type)){\n if('text' === type && options && options.amis && options.amis.tpl){\n return 'static';\n }\n if('image' === type && options && options.multiple){\n return `static-images`;\n }\n return `static-${type}`;\n }else if(type === 'url'){\n return \"input-url\"\n }else{\n return 'static';\n }\n};","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-10-28 14:15:09\n * @LastEditors: liaodaxue\n * @LastEditTime: 2023-10-30 17:51:54\n * @Description: \n */\nimport { getAmisStaticFieldType } from './type';\n\nconst getFileTableName = (steedosField)=>{\n switch (steedosField.type ) {\n case 'avatar':\n return 'avatars'\n case 'image':\n return 'images'\n case 'file':\n return 'files'\n default:\n break;\n }\n};\n\nconst getAmisFieldType = (steedosField, readonly)=>{\n return getAmisStaticFieldType(steedosField.type === 'avatar' ? 'image' : steedosField.type, readonly, {multiple: steedosField.multiple});\n}\n\nexport const getAmisFileReadonlySchema = (steedosField)=>{\n const type = steedosField.type;\n const amisFieldType = getAmisFieldType(steedosField, true)\n if(_.includes(['avatar','image'], type)){\n return {\n type: amisFieldType,\n defaultImage: '',\n enlargeAble: true,\n showToolbar: true,\n }\n }\n if(type === 'file'){\n return {\n type: amisFieldType,\n tpl: `\n <% let fileData = data._display.${steedosField.name}; if (fileData) { %>\n <% if(!Array.isArray(fileData)){ fileData = [fileData]} %>\n <% fileData.forEach(function(item) { %> \n <a href='<%= item.url %>' target='_self' class='block'><%= item.name %></a> \n <% });} %>`\n }\n }\n}\n\nexport const getAmisFileEditSchema = (steedosField)=>{\n const tableName = getFileTableName(steedosField);\n const amisFieldType = getAmisFieldType(steedosField, false)\n let convertData = {\n type: amisFieldType,\n useChunk: false, // 关闭分块上传\n receiver: {\n method: \"post\",\n dataType: \"form-data\",\n url: `\\${context.rootUrl}/s3/${tableName}`,\n requestAdaptor: `\n const { _master, global,context } = api.body;\n // const { recordId, objectName } = _master;\n const { spaceId, userId, user } = global;\n /*\n record_id: recordId,\n parent: recordId,\n object_name: objectName,\n owner_name: user.name,\n space: spaceId,\n owner: userId\n */\n // 参考platform 2.2版本,附件字段保存时cfs.files.filerecord、cfs.images.filerecord表中的metadata下只保存space、owner两个属性值。\n api.data.append('space', spaceId);\n api.data.append('owner', userId);\n\n return api;\n `,\n adaptor: `\n const { context } = api.body; \n var rootUrl = context.rootUrl + \"/api/files/${tableName}/\";\n payload = {\n status: response.status == 200 ? 0 : response.status,\n msg: response.statusText,\n data: {\n value: payload._id,\n name: payload.original.name,\n url: rootUrl + payload._id,\n }\n }\n return payload;\n `,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n if(steedosField.multiple){\n convertData.multiple = true;\n convertData.joinValues = false;\n convertData.extractValue = true;\n }\n return convertData;\n}\n\nexport const getAmisFileSchema = (steedosField, readonly)=>{\n return readonly ? getAmisFileReadonlySchema(steedosField) : getAmisFileEditSchema(steedosField);\n}","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport en_us from \"./locales/en-US.json\"\nimport zh_cn from \"./locales/zh-CN.json\"\n\nconst resources = {\n \"en-US\": {\n translation: en_us\n },\n \"zh-CN\": {\n translation: zh_cn\n }\n};\nvar locale = \"zh-CN\";\nif (typeof window != 'undefined') {\n if (window.Builder?.settings.locale == \"en-us\") {\n locale = \"en-US\";\n } else if (window.Builder?.settings.locale == \"zh-cn\") {\n locale = \"zh-CN\";\n }\n}\n\n\ni18n\n .use(initReactI18next)\n .init({\n resources,\n lng: locale,\n interpolation: {\n escapeValue: false\n }\n });\nexport { i18n as i18next };","import * as _ from 'lodash'\nimport * as Tpl from '../tpl';\nimport * as Fields from '../fields/index';\nimport * as graphql from '../graphql';\nimport config from '../../../../config'\nimport { each, forEach, isBoolean, isEmpty } from 'lodash';\nimport { getAmisFileReadonlySchema } from './file'\nimport { Router } from '../../../router'\nimport { i18next } from '../../../../i18n'\n\nfunction getOperation(fields){\n const controls = [];\n _.each(fields, function(field){\n controls.push(Fields.convertSFieldToAmisField(field, true));\n })\n return {\n \"type\": \"operation\",\n \"label\": \"操作\",\n \"width\": 100,\n fixed: \"right\",\n \"buttons\": [\n {\n \"type\": \"button\",\n \"icon\": \"fa fa-eye\",\n \"actionType\": \"dialog\",\n \"tooltip\": \"查看\",\n \"dialog\": {\n \"title\": \"查看\",\n \"body\": {\n \"type\": \"form\",\n \"controls\": controls\n }\n }\n }]\n }\n}\n\n//获取name字段,如果没有,则_index字段添加链接\nfunction getDetailColumn(){}\n\nasync function getQuickEditSchema(field, options){\n //判断在amis3.2以上环境下,放开批量编辑与lookup的单元格编辑\n let isAmisVersionforBatchEdit = false;\n if(window.amisRequire && window.amisRequire('amis')){\n isAmisVersionforBatchEdit = window.amisRequire('amis').version[0] >= 3 && window.amisRequire('amis').version[2] >= 2;\n }else if(window.Amis){\n isAmisVersionforBatchEdit = window.Amis.version[0] >= 3 && window.Amis.version[2] >= 2;\n }\n const quickEditId = options.objectName + \"_\" + field.name + \"_quickEdit\";//定义快速编辑的表单id,用于setvalue传值\n var quickEditSchema = { body: [], id: quickEditId };\n //select,avatar,image,file等组件无法行记录字段赋值,暂不支持批量编辑;\n if(field.type != 'avatar' && field.type != 'image' && field.type != 'file' && isAmisVersionforBatchEdit){\n const submitEvent = {\n submit: {\n actions: [\n {\n actionType: \"custom\",\n script: `\n let items = _.cloneDeep(event.data.items);\n let selectedItems = _.cloneDeep(event.data.selectedItems);\n if(event.data.isBatchEdit){\n selectedItems.forEach(function(selectedItem){\n selectedItem._display.${field.name} = event.data._display.${field.name};\n doAction({actionType: 'setValue', \"args\": {\"value\": selectedItem._display},componentId: \"_display_\" + selectedItem._index});\n doAction({actionType: 'setValue', \"args\": {\"value\": event.data.${field.name}},componentId: \"${options.objectName + \"_\" + field.name + \"_\"}\" + selectedItem._index});\n })\n }else{\n doAction({actionType: 'setValue', \"args\": {\"value\": event.data._display},componentId: \"_display_\" + event.data._index});\n doAction({actionType: 'setValue', \"args\": {\"value\": event.data.${field.name}},componentId: \"${options.objectName + \"_\" + field.name + \"_\"}\" + event.data._index});\n }\n `\n },\n {\n \"actionType\": \"closeDialog\"\n }\n ]\n }\n }\n quickEditSchema.onEvent = submitEvent;\n }\n \n if (field.disabled) {\n quickEditSchema = false;\n } else {\n var fieldSchema = await Fields.convertSFieldToAmisField(field, false, _.omit(options, 'buttons'));\n //存在属性上可编辑,实际不可编辑的字段,convertSFieldToAmisField函数可能会返回undefined,如summary\n if (!!fieldSchema) {\n quickEditSchema.body.push(fieldSchema);\n //以下字段使用_display的数据,因此在触发change等事件时对数据_display进行修改,以实现保存前的回显\n var TempDisplayField = ``;\n quickEditSchema.body[0].onEvent = {};\n const quickEditOnEvent = function (displayField) {\n const EventType = {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": `\n var _display = _.cloneDeep(event.data._display);\n ${displayField}\n doAction({actionType: 'setValue', \"args\": {\"value\": {_display}},componentId: \"${quickEditId}\"});\n `\n }\n ]\n };\n return EventType;\n }\n switch (field.type) {\n //TODO: amis的picker组件直接点击选项x时不会触发change事件,待处理\n case \"lookup\":\n case \"master_detail\":\n let labelField = quickEditSchema.body[0].labelField || \"label\";\n let valueField = quickEditSchema.body[0].valueField || \"value\";\n if (field.multiple) {\n /*\n 多选分两种情况。\n 第一种是减少选项时(判断新的数据是否比老的数据短),按照index删除_display中对应选项,保证回显没问题;\n 第二种是增加选项时,按照value的值,找到对应选项,并按照_display的规则为其赋值\n */\n TempDisplayField = `\n const preData = _.cloneDeep(event.data.__super.${field.name});\n if(preData && event.data.${field.name}.length < preData.length){\n let deletedIndex;\n preData.forEach(function(item,index){\n if(_.indexOf(event.data.${field.name}, item) == -1) _display[\"${field.name}\"].splice(index, 1);\n })\n }else{\n _display[\"${field.name}\"] = [];\n event.data.value.forEach(function(val,index){\n const item = _.find(event.data.selectedItems, { ${valueField}: val });\n _display[\"${field.name}\"].push(\n {\n \"label\": item.${labelField},\n \"value\": item[event.data.uiSchema.idFieldName],\n \"objectName\": \"${field.reference_to}\"\n }\n )\n })\n }\n \n `\n } else {\n TempDisplayField = `\n if(event.data.value){\n _display[\"${field.name}\"] = {\n \"label\": event.data.selectedItems.${labelField},\n \"value\": event.data.selectedItems[event.data.uiSchema.idFieldName],\n \"objectName\": \"${field.reference_to}\"\n }\n }else{\n _display[\"${field.name}\"] = {}\n }\n `\n }\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"select\":\n TempDisplayField = `\n _display[\"${field.name}\"] = event.data.selectedItems.label;\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"percent\":\n TempDisplayField = `\n _display[\"${field.name}\"] = event.data.value.toFixed(${field.scale}) + '%';\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"time\":\n TempDisplayField = `\n _display[\"${field.name}\"] = moment(event.data.value).utc().format('HH:mm');\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"date\":\n TempDisplayField = `\n _display[\"${field.name}\"] = moment(event.data.value).utc().format('YYYY-MM-DD');\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"datetime\":\n TempDisplayField = `\n _display[\"${field.name}\"] = moment(event.data.value).format('YYYY-MM-DD HH:mm');\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"boolean\":\n TempDisplayField = `\n _display[\"${field.name}\"] = event.data.value?\"√\":\"\";\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"number\":\n case \"currency\":\n TempDisplayField = `\n _display[\"${field.name}\"] = event.data.value && event.data.value.toFixed(${field.scale});\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n\n break;\n case \"file\":\n var removeDisplayField = ``;\n if (field.multiple) {\n TempDisplayField = `\n _display[\"${field.name}\"].push({\n \"name\": event.data.result.name,\n \"url\": event.data.result.url,\n \"type\": event.data.item.type,\n \"size\": event.data.item.size\n });\n `\n removeDisplayField = `\n _.remove(_display[\"${field.name}\"], function(file){return file.url == event.data.item.url});\n `\n } else {\n TempDisplayField = ` \n _display[\"${field.name}\"] = {\n \"name\": event.data.result.name,\n \"url\": event.data.result.url,\n \"type\": event.data.item.type,\n \"size\": event.data.item.size\n };\n `\n removeDisplayField = `\n if(_display[\"${field.name}\"].url == event.data.item.url){\n _display[\"${field.name}\"] = {};\n }\n `\n }\n quickEditSchema.body[0].onEvent[\"success\"] = quickEditOnEvent(TempDisplayField)\n quickEditSchema.body[0].onEvent[\"remove\"] = quickEditOnEvent(removeDisplayField)\n break;\n case \"avatar\":\n case \"image\":\n quickEditSchema.body[0].receiver.adaptor = `\n const { context } = api.body; \n var rootUrl = context.rootUrl + \"/api/files/${field.type}s/\";\n payload = {\n status: response.status == 200 ? 0 : response.status,\n msg: response.statusText,\n data: {\n value: rootUrl + payload._id,//为了实现图片crud的回显,需要将value从id改为url,当保存数据数据时,再在发送适配器内重新将id提取出来\n name: payload.original.name,\n url: rootUrl + payload._id,\n }\n }\n return payload;\n `\n break;\n default:\n break;\n }\n quickEditSchema.body[0].visibleOn = \"${quickedit_record_permissions.allowEdit && quickedit_record_permissions_loading == false}\"\n quickEditSchema.body.push({\n \"type\":\"service\",\n \"body\":[\n {\n \"type\": \"tpl\",\n \"tpl\": i18next.t('frontend_records_no_allowedit'),\n \"visibleOn\": \"${!quickedit_record_permissions.allowEdit && quickedit_record_permissions_loading == false}\"\n },\n {\n \"type\": \"spinner\",\n \"showOn\": \"${quickedit_record_permissions_loading}\"\n }\n ],\n \"onEvent\":{\n \"init\":{\n \"actions\":[\n {\n \"actionType\": \"setValue\",\n \"componentId\": `service_listview_${options.objectName}`,\n \"args\": {\n \"value\":{\n \"quickedit_record_permissions_loading\": true\n }\n }\n },\n {\n \"actionType\": \"ajax\",\n \"args\": {\n \"api\": {\n \"url\": \"${context.rootUrl}/service/api/@\\${objectName}/recordPermissions/${_id}\",\n \"method\": \"get\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"cache\": 30000,\n \"messages\": {\n \"failed\": \"失败了呢。。\"\n }\n }\n }\n },\n {\n \"actionType\": \"setValue\",\n \"componentId\": `service_listview_${options.objectName}`,\n \"args\": {\n \"value\":{\n \"quickedit_record_permissions_loading\": false\n }\n }\n },\n {\n \"actionType\": \"setValue\",\n \"componentId\": `service_listview_${options.objectName}`,\n \"args\": {\n \"value\":{\n \"quickedit_record_permissions\": \"${event.data}\"\n }\n }\n }\n ]\n }\n }\n \n })\n if(field.type != 'avatar' && field.type != 'image' && field.type != 'file' && isAmisVersionforBatchEdit){\n quickEditSchema.body.push({\n \"name\": \"isBatchEdit\",\n \"type\": \"checkbox\",\n \"option\": [\n {\n \"type\": \"tpl\",\n \"tpl\": \"更新${COUNT(selectedItems)}个选定记录\"\n },\n {\n \"type\": \"spinner\",\n \"showOn\": \"${batchPermissionLoading}\",\n \"size\": \"sm\",\n \"className\": \"mr-4\"\n }\n ],\n \"visibleOn\": \"${ARRAYSOME(selectedItems, item => item._id === _id) && COUNT(selectedItems)>1 && quickedit_record_permissions.allowEdit && quickedit_record_permissions_loading == false}\",\n \"disabledOn\": \"${batchPermissionLoading}\",\n \"onEvent\":{\n \"change\":{\n \"actions\":[\n {\n \"actionType\": \"setValue\",\n \"componentId\": quickEditId,\n \"args\": {\n \"value\":{\n \"batchPermissionLoading\": true\n }\n },\n \"expression\":\"${event.data.value}\"\n },\n {\n \"actionType\": \"ajax\",\n \"args\": {\n \"api\": {\n \"url\": \"${context.rootUrl}/graphql\",\n \"method\": \"post\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"data\": {\n \"query\": \"{rows:${objectName}(filters:[\\\"_id\\\",\\\"in\\\",${selectedItems | pick:_id | split | json}]){_id,_permissions{allowEdit}}}\"\n },\n \"adaptor\": `\n const noPermission = [];\n payload.data.rows.forEach(function (row) {\n if(!row._permissions.allowEdit){\n noPermission.push(row._id);\n }\n })\n payload.data.noPermission = noPermission;\n return payload;\n `\n }\n },\n \"expression\":\"${event.data.value}\"\n },\n {\n \"actionType\": \"setValue\",\n \"componentId\": quickEditId,\n \"args\": {\n \"value\":{\n \"batchPermissionLoading\": false\n }\n },\n \"expression\":\"${event.data.value}\"\n },\n {\n \"actionType\": \"dialog\",\n \"dialog\":{\n \"title\": \"记录权限\",\n \"showCloseButton\": false,\n \"body\":[\n {\n \"type\": \"tpl\",\n \"tpl\": \"当前选中记录中,有${COUNT(noPermission)}条记录无编辑权限,是否需要批量编辑其他记录?\"\n }\n ],\n \"onEvent\":{\n \"confirm\":{\n \"actions\":[\n {\n \"actionType\": \"custom\",\n \"script\": `\n const noPermission = event.data.noPermission;\n const crudComponent = event.context.scoped.getComponentById(\"${options.crudId}\");\n const selectedItems = crudComponent && crudComponent.props.store.selectedItems.concat();\n noPermission.forEach(function (item) {\n crudComponent && crudComponent.unSelectItem(_.find(selectedItems,{_id:item}));\n })\n `\n },\n {\n \"actionType\": \"setValue\",\n \"componentId\": quickEditId,\n \"args\": {\n \"value\":{\n \"isBatchEdit\": true\n }\n },\n }\n ]\n },\n \"cancel\":{\n \"actions\":[\n {\n \"actionType\": \"setValue\",\n \"componentId\": quickEditId,\n \"args\": {\n \"value\":{\n \"isBatchEdit\": false\n }\n },\n }\n ]\n }\n }\n },\n \"expression\":\"${COUNT(event.data.noPermission)>0}\"\n }\n ]\n }\n }\n })\n }\n } else {\n quickEditSchema = false;\n }\n //amis3.2以下禁用lookup的单元格编辑\n if(field.type == \"lookup\" && !isAmisVersionforBatchEdit){\n quickEditSchema = false;\n }\n //TODO:附件多选时会覆盖老数据,暂时禁用\n if(field.type == \"file\" && field.multiple){\n quickEditSchema = false;\n }\n //TODO:location字段在列表中快速编辑后存在bug,保存时可能会丢失部分数据,暂时禁用\n if(field.type == \"location\"){\n quickEditSchema = false;\n }\n }\n return quickEditSchema;\n}\n\nfunction getFieldWidth(width){\n const defaultWidth = \"unset\";//用于使table内的td标签下生成div,实现将快速编辑按钮固定在右侧的效果,并不是为了unset效果\n if(typeof width == 'string'){\n if(isNaN(width)){\n return width || defaultWidth;\n }else{\n return Number(width) || defaultWidth;\n }\n }else if(typeof width == 'number'){\n return width;\n }else{\n return defaultWidth;\n }\n}\n\nexport async function getTableColumns(fields, options){\n const columns = [];\n if(!options.isLookup && !options.isInputTable){\n //将_display放入crud的columns中,可以通过setvalue修改行内数据域的_display,而不影响上层items的_display,用于批量编辑\n columns.push({name: '_display',type: 'static', width: 32, placeholder: \"\",id: \"_display_${_index}\", className: \"hidden\"});\n columns.push({name: '_index',type: 'text', width: 32, placeholder: \"\"});\n }\n const allowEdit = options.permissions?.allowEdit && !options.isLookup && options.enable_inline_edit != false;\n \n for (const field of fields) {\n //增加quickEdit属性,实现快速编辑\n const quickEditSchema = allowEdit ? await getQuickEditSchema(field, options) : allowEdit;\n let className = \"\";\n if(field.wrap != true){\n className += \" whitespace-nowrap \"\n }else{\n className += \" break-all \"\n }\n let columnItem;\n if((field.is_name || field.name === options.labelFieldName) && options.objectName === 'cms_files'){\n const previewFileScript = `\n var data = event.data;\n var file_name = data.versions ? data.name : \"${field.label}\";\n var file_id = data._id;\n SteedosUI.previewFile && SteedosUI.previewFile({file_name, file_id});\n `;\n columnItem = {\n \"type\": \"button\",\n \"label\": `<%=data.versions ? data.name : \"${field.label}\"%>`,\n className,\n \"level\": \"link\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"args\": {\n \"api\": {\n \"url\": \"${(versions[0] && versions[0].url) ? versions[0].url+'?download=true' : context.rootUrl+'/api/files/files/'+versions[0]+'?download=true'}\",\n \"method\": \"get\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n },\n \"actionType\": \"download\",\n // \"expression\": \"!!!window?.nw?.require\"//浏览器上直接下载\n \"expression\": \"!!!(window && window.nw && window.nw.require)\"//浏览器上直接下载\n },\n {\n \"args\": {},\n \"actionType\": \"custom\",\n \"script\": previewFileScript,\n // \"expression\": \"!!window?.nw?.require\" //PC客户端预览附件\n \"expression\": \"!!!(window && window.nw && window.nw.require)\"//PC客户端预览附件\n }\n ]\n }\n }\n };\n }else if(field.type === 'toggle'){\n columnItem = Object.assign({}, {\n type: \"switch\",\n name: field.name,\n label: field.label,\n width: getFieldWidth(field.width),\n toggled: field.toggled,\n static: true,\n className,\n }, field.amis, {name: field.name});\n }else if(field.type === 'avatar' || field.type === 'image' || field.type === 'file'){\n columnItem = Object.assign({}, {\n type: \"switch\",\n name: field.name,\n label: field.label,\n width: getFieldWidth(field.width),\n toggled: field.toggled,\n static: true,\n className,\n ...getAmisFileReadonlySchema(field)\n }, field.amis, {name: field.name});\n }\n else if(field.type === 'select'){\n const map = Tpl.getSelectMap(field.options);\n columnItem = Object.assign({}, {\n type: \"static-mapping\",\n name: field.name,\n label: field.label,\n map: map,\n sortable: field.sortable,\n width: getFieldWidth(field.width),\n toggled: field.toggled,\n className,\n inputClassName: \"inline\",\n static: true,\n }, field.amis, {name: field.name});\n }\n else{\n const tpl = await Tpl.getFieldTpl(field, options);\n let type = 'static-text';\n if(tpl){\n type = 'static';\n }else if(field.type === 'html'){\n type = 'static-markdown';\n }else if(field.type === 'url'){\n if(field.show_as_qr){\n type = 'static-qr-code';\n }else{\n type = 'input-url'\n }\n }\n if(field.type === 'textarea'){\n className += 'min-w-56';\n }\n if(field.type === 'date'){\n className += 'date-min-w';\n }\n if(field.type === 'datetime'){\n className += 'datetime-min-w';\n }\n if(!field.hidden && !field.extra){\n columnItem = Object.assign({}, {\n name: field.name,\n label: field.label,\n sortable: field.sortable,\n // searchable: field.searchable,\n width: getFieldWidth(field.width),\n type: type,\n tpl: tpl,\n toggled: field.toggled,\n className,\n inputClassName: \"inline\",\n static: true,\n options: field.type === 'html' ? {html: true} : null\n // toggled: true \n }, field.amis, {name: field.name});\n }\n }\n if(columnItem){\n if(quickEditSchema){\n columnItem.quickEdit = quickEditSchema;\n columnItem.quickEditEnabledOn = \"${is_system !== true}\";\n }\n columnItem.id = `${options.objectName}_${field.name}_\\${_index}`\n columns.push(columnItem);\n }\n };\n\n // columns.push(getOperation(fields));\n if(!options.isLookup && !options.isInputTable && !_.some(columns, { name: options.labelFieldName })){\n // 没有名称字段时显示序号字段为链接,lookup弹出的picker不需要此功能\n const href = Router.getObjectDetailPath({\n ...options, formFactor: options.formFactor, appId: \"${appId}\", objectName: options.objectName || \"${objectName}\", recordId: `\\${${options.idFieldName}}`\n })\n columns[1].type = \"tpl\";\n columns[1].tpl = `<a href=\"${href}\">\\${${columns[1].name}}</a>`\n }\n return columns;\n}\n\n/**\n * 生成移动端列表每行显示的amis行\n * @param {*} tpls 要显示的每个字段的tpl\n * @returns {\n \"type\": \"wrapper\",\n \"body\": [{\n \"type\": \"tpl\",\n \"tpl\": tpls[index].tpl,\n \"className\": \"truncate\"//左侧样式类\n },{\n \"type\": \"tpl\",\n \"tpl\": tpls[index + 1].tpl,\n \"className\": \"truncate ml-2 flex flex-shrink-0\"//右侧样式类\n }],\n \"size\": \"none\",\n \"className\": \"flex items-center justify-between\"//每行样式类\n }\n */\nfunction getMobileLines(tpls){\n let lines = [];\n let maxLineCount = 3;\n let lineChildren = [];\n let isNewLine = false;\n let isLeft = true;\n let lineChildrenClassName = \"\";\n let lineClassName = \"flex items-center justify-between\";\n tpls.forEach(function(item){\n if(isNewLine && lines.length < maxLineCount){\n lines.push({\n \"type\": \"wrapper\",\n \"body\": lineChildren,\n \"size\": \"none\",\n \"className\": lineClassName\n });\n lineChildren = [];\n }\n if(isLeft){\n // 左侧半行\n lineChildrenClassName = \"steedos-listview-item-left truncate\";\n if(item.field.is_wide){\n // 左侧全行样式可以单独写,如果需要配置两行省略号效果,可以加样式类 two-lines-truncate\n lineChildrenClassName = \"steedos-listview-item-wide\";\n }\n if(lines.length === 0){\n // 第一个字段加粗黑色显示\n lineChildrenClassName += \" font-bold text-gray-800\";\n }\n }\n else{\n // 右侧半行,这里加样式类 flex flex-shrink-0,是为了省略号只显示在左半行,右半行文字一般比较短,如果也加省略号效果的话,左侧文字多的话,右侧没几个字就显示省略号了\n lineChildrenClassName = \"steedos-listview-item-right truncate ml-2 flex flex-shrink-0\";\n }\n lineChildren.push({\n \"type\": \"tpl\",\n \"tpl\": item.tpl,\n \"className\": lineChildrenClassName\n });\n\n if(item.field.is_wide){\n // 宽字段占整行\n isLeft = true;\n isNewLine = true;\n }\n else{\n isLeft = !isLeft;\n isNewLine = isLeft;\n }\n });\n \n if(lineChildren.length && lines.length < maxLineCount){\n lines.push({\n \"type\": \"wrapper\",\n \"body\": lineChildren,\n \"size\": \"none\",\n \"className\": lineClassName\n });\n }\n \n return lines;\n}\n\nasync function getMobileTableColumns(fields, options){\n const columns = [];\n let nameField = {};\n let tpls = [];\n for (const field of fields) {\n let tpl = \"\";\n if(field.is_name || field.name === options.labelFieldName){\n nameField = field;\n options = Object.assign({}, options, {\n onlyDisplayLookLabel: true\n });\n tpl = await Tpl.getFieldTpl(field, options);\n }\n else if(field.type === 'avatar' || field.type === 'image' || field.type === 'file'){\n // 图片和附件类型字段暂时显示为附件名称,后续需要再优化\n tpl = `\\${_display.${field.name}.name}`;\n }\n else{\n if(field.type === 'lookup' || field.type === 'master_detail'){\n options = Object.assign({}, options, {\n onlyDisplayLookLabel: true\n });\n }\n tpl = await Tpl.getFieldTpl(field, options);\n }\n if(!tpl){\n //qhd需求简易处理,加上raw以支持审批王名称字段通过颜色区分缓急,若之后手机端列表支持配置amis,则可以去掉\n tpl = `\\${${field.name} | raw}`;\n }\n if(!field.hidden && !field.extra){\n tpls.push({ field, tpl });\n }\n };\n\n const url = Tpl.getNameTplUrl(nameField, options)\n\n const columnLines = getMobileLines(tpls);\n\n\n let column = {\n name: nameField.name,\n label: nameField.label,\n sortable: nameField.sortable,\n type: \"button\",\n level: \"link\",\n actionType: \"link\",\n link: url,\n innerClassName: {\n \"steedos-listview-item block text-gray-500\":\"true\",\n \"max-w-[360px]\": \"${display == 'split'}\",\n },\n body: {\n \"type\": \"wrapper\",\n \"body\": columnLines,\n \"size\": \"none\",\n \"className\": \"p-1\"\n }\n }\n \n if(options.objectName === 'cms_files'){\n if(window.Meteor?.isCordova){\n column = {\n ...column,\n actionType: \"\",\n link: \"\",\n onEvent: {\n \"click\": {\n \"actions\": [\n {\n \"script\": `\n let cms_url = \"/api/files/files/\"+event.data.versions[0]+\"?download=true\"\n Steedos.cordovaDownload(encodeURI(Steedos.absoluteUrl(cms_url)), event.data.name);\n `,\n \"actionType\": \"custom\"\n }\n ],\n \"weight\": 0\n }\n }\n }\n }else{\n column = {\n ...column,\n actionType: \"\",\n link: \"\",\n onEvent: {\n \"click\": {\n \"actions\": [\n {\n \"args\": {\n \"api\": {\n \"url\": url,\n \"method\": \"get\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n },\n \"actionType\": \"download\"\n }\n ],\n \"weight\": 0\n }\n }\n }\n }\n \n }\n\n columns.push(column);\n \n\n return columns;\n}\n\nfunction getDefaultParams(options){\n return {\n perPage: options.top || options.perPage || config.listView.perPage\n }\n}\n\nfunction getButtonVisibleOn(button){\n let visible= button.visible;\n\n if(button._visible){\n visible = button._visible;\n }\n\n if(isBoolean(visible)){\n visible = visible.toString();\n }\n\n if(visible){\n // if(visible.indexOf(\"Meteor.\") > 0 || visible.indexOf(\"Creator.\") > 0 || visible.indexOf(\"Session.\") > 0){\n // console.warn('无效的visible', visible)\n // return 'false';\n // }\n if(visible.trim().startsWith('function')){\n return `${visible}(objectName, typeof _id === 'undefined' ? null: _id, typeof record === 'undefined' ? (typeof recordPermissions === 'undefined' ? {} : recordPermissions) : record.recordPermissions, data)`\n }\n return visible;\n }\n\n if(button.type === 'amis_button'){\n const amisSchema = button.amis_schema;\n if(amisSchema && amisSchema.body && amisSchema.body.length > 0){\n const btn1 = amisSchema.body[0];\n return btn1.visibleOn\n }\n }\n}\n\nasync function getTableOperation(ctx){\n const buttons = ctx.buttons;\n const operationButtons = [];\n each(buttons, (button)=>{\n if(isBoolean(button.visible)){\n button.visible = button.visible.toString();\n }\n // operationButtons.push({\n // type: 'button',\n // label: button.label,\n // visibleOn: button.visible ? `${button.visible}` : (button._visible ? `${button._visible}` : null),\n // onEvent: {\n // click: {\n // actions: []\n // }\n // }\n // })\n\n operationButtons.push({\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n className: 'antd-Button--default'\n })\n })\n if(operationButtons.length < 1){\n return ;\n }\n return {\n type: 'operation',\n label: \" \",\n fixed: 'right',\n labelClassName: 'text-center',\n className: 'text-center steedos-listview-operation w-10',\n buttons: [\n {\n \"type\": \"steedos-dropdown-button\",\n \"label\": \"xxx\",\n \"buttons\": operationButtons,\n \"placement\": \"bottomRight\",\n \"overlayClassName\": \"shadow !min-w-[160px]\",\n \"trigger\": [\"click\"],\n \"id\": \"u:c2140a365019\",\n onOpenApi: {\n url: `\\${context.rootUrl}/service/api/@\\${objectName}/recordPermissions/\\${_id}`,\n method: \"get\",\n requestAdaptor: \"api.data={}; return api;\",\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n },\n adaptor: `\n payload = {\n record: {\n recordPermissions: payload\n }\n };\n return payload;\n `,\n }\n }\n ]\n }\n}\n\nasync function getDefaultCrudCard(columns, options) {\n let labelFieldName = options?.labelFieldName || \"name\";\n let titleColumn, bodyColumns = [];\n columns.forEach(function (item) {\n delete item.quickEdit;\n delete item.width;\n if (item.name === labelFieldName) {\n titleColumn = item;\n }\n else {\n if (item.name !== \"_index\") {\n bodyColumns.push(item);\n }\n }\n });\n let card = {\n \"header\": {\n \"title\": titleColumn.tpl\n },\n body: bodyColumns,\n // useCardLabel: false,\n toolbar: []\n };\n let hideToolbarOperation = options.formFactor === 'SMALL' || [\"split\"].indexOf(options.displayAs) > -1;\n if(!hideToolbarOperation){\n let toolbarOperation = await getTableOperation(options);\n if (toolbarOperation) {\n toolbarOperation.className += \" inline-block w-auto\";\n }\n card.toolbar.push(toolbarOperation);\n }\n return card;\n}\n\nexport async function getTableSchema(fields, options){\n if(!options){\n options = {};\n }\n let { isLookup, hiddenColumnOperation } = options;\n const defaults = options.defaults;\n const listSchema = (defaults && defaults.listSchema) || {};\n\n let columns = [];\n let useMobileColumns = options.formFactor === 'SMALL' || [\"split\"].indexOf(options.displayAs) > -1;\n if(isLookup){\n // 在lookup手机端列表模式调式好之前不使用getMobileTableColumns\n useMobileColumns = false;\n }\n if(listSchema.mode && listSchema.mode !== \"table\"){\n // 如果指定的mode,则不走我们内置的手机端列表效果,使用steedos组件内部开发的默认card/list效果,或者由用户自己实现card/list模式的crud列表\n useMobileColumns = false;\n }\n if(useMobileColumns){\n columns = await getMobileTableColumns(fields, options);\n }\n else{\n columns = await getTableColumns(fields, options);\n\n if(listSchema.mode === \"cards\"){\n let card = listSchema.card;\n if(!card){\n card = await getDefaultCrudCard(columns, options);\n }\n return {\n mode: \"cards\",\n perPageAvailable: [5, 10, 20, 50, 100, 500],\n name: \"thelist\",\n headerToolbarClassName: \"py-2 px-2 border-gray-300 border-solid border-b\",\n className: \"\",\n draggable: false,\n defaultParams: getDefaultParams(options),\n card: card,\n syncLocation: false,\n keepItemSelectionOnPageChange: true,\n checkOnItemClick: isLookup ? true : false,\n labelTpl: `\\${${options.labelFieldName}}`,\n autoFillHeight: false, // 自动高度效果不理想,先关闭\n columnsTogglable: false\n }\n }\n\n if(!isLookup && !hiddenColumnOperation){\n columns.push(await getTableOperation(options));\n }\n }\n\n return {\n mode: \"table\",\n perPageAvailable: [5, 10, 20, 50, 100, 500],\n name: \"thelist\",\n headerToolbarClassName: \"py-2 px-2 border-gray-300 border-solid border-b\",\n className: \"\",\n draggable: false,\n defaultParams: getDefaultParams(options),\n columns: columns,\n syncLocation: false,\n keepItemSelectionOnPageChange: true,\n checkOnItemClick: isLookup ? true : false,\n labelTpl: `\\${${options.labelFieldName}}`,\n autoFillHeight: false, // 自动高度效果不理想,先关闭\n columnsTogglable: false,\n }\n}\n\n\n\n/**\n * \n * @param {*} mainObject \n * @param {*} fields \n * @param {*} options = {filter: listview 过滤条件, ...}\n * @returns \n */\nexport async function getTableApi(mainObject, fields, options){\n const searchableFields = [];\n let { filter, filtersFunction, sort, top, setDataToComponentId = '' } = options;\n\n if(_.isArray(filter)){\n filter = _.map(filter, function(item){\n if(item.operation){\n return [item.field, item.operation, item.value];\n }else{\n return item\n }\n })\n }\n if(!filter){\n filter = [];\n }\n let baseFilters = null;\n if(filter){\n baseFilters = filter;\n }\n\n _.each(mainObject.fields, function (field) {\n if (Fields.isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {\n searchableFields.push(field.name);\n }\n })\n\n const fileFields = {};\n const fileFieldsKeys = [];\n // 含有optionsFunction属性, 无reference_to属性的lookup字段\n const lookupFields = {};\n fields.forEach((item)=>{\n if(_.includes(['image','avatar','file'], item.type)){\n fileFieldsKeys.push(item.name);\n fileFields[item.name] = {\n name: item.name,\n type: item.type,\n multiple: item.multiple\n };\n }\n if(_.includes(['lookup'], item.type) && !item.reference_to ){\n lookupFields[item.name] = item;\n }\n })\n\n let valueField = mainObject.key_field || '_id';\n const api = await getApi(mainObject, null, fields, {count: options.queryCount, alias: 'rows', limit: top, queryOptions: `filters: {__filters}, top: {__top}, skip: {__skip}, sort: \"{__sort}\"`});\n\n api.url += \"&objectName=${objectName}\";//设计器上对象表格组件需要切换对象重新请求列表数据\n if(options.isRelated){\n api.url += \"&recordId=${_master.recordId}\";\n }\n api.cache = 3000; \n api.data.$term = \"$term\";\n api.data.term = \"$term\";\n api.data.$self = \"$$\";\n api.data.self = \"$$\";\n api.data.filter = \"$filter\";\n api.data.loaded = \"${loaded}\";\n api.data.listViewId = \"${listViewId}\";\n api.data.listName = \"${listName}\";\n api.requestAdaptor = `\n let __changedFilterFormValues = api.data.$self.__changedFilterFormValues || {};\n let __changedSearchBoxValues = api.data.$self.__changedSearchBoxValues || {};\n // 把表单搜索和快速搜索中的change事件中记录的过滤条件也拼到$self中,是为解决触发搜索请求时,两边输入的过滤条件都带上,即:\n // 有时在搜索表单中输入过滤条件事,忘记点击回车键或搜索按钮,而是进一步修改快速搜索框中的关键字点击其中回车键触发搜索\n // 这种情况下,触发的搜索请求中没有带上搜索表单中输入的过滤条件。\n // 反过来先在快速搜索框中输入过滤条件却不点击其中回车键触发搜索,而是到搜索表单中触发搜索请求也是一样的。\n // 这里直接合并到api.data.$self,而不是后面定义的selfData变量,是因为可以省去在接收适配器中写一样的合并逻辑\n // 如果有问题可以改为合并到selfData变量中,但是要在接收适配器中写上一样的合并逻辑,否则里面的过滤条件不会存入本地存储中\n Object.assign(api.data.$self, __changedSearchBoxValues, __changedFilterFormValues);\n // selfData 中的数据由 CRUD 控制. selfData中,只能获取到 CRUD 给定的data. 无法从数据链中获取数据.\n let selfData = JSON.parse(JSON.stringify(api.data.$self));\n // 保留一份初始data,以供自定义发送适配器中获取原始数据。\n const data = _.cloneDeep(api.data);\n try{\n // TODO: 不应该直接在这里取localStorage,应该从外面传入\n const listName = api.data.listName;\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n if(localListViewProps){\n localListViewProps = JSON.parse(localListViewProps);\n selfData = Object.assign({}, localListViewProps, selfData);\n if(!api.data.filter){\n api.data.filter = localListViewProps.filter;\n }\n if(!api.data.loaded){\n // 第一次加载组件,比如刷新浏览器时因为api.data.pageNo有默认值1\n // 所以会把localSearchableFilter中已经存过的页码覆盖\n // 如果是第一次加载组件始终让翻页页码从本地存储中取值\n let formFactor = \"${options.formFactor}\";\n // 移动端不识别本地存储中的翻页页码,否则点击加载更多按钮后无法刷新回第一页\n // api.data.pageNo = formFactor === \"SMALL\" ? 1 : (localListViewProps.page || 1);\n // 移动端暂时去除加载更多,放开翻页\n api.data.pageNo = localListViewProps.page || 1;\n }\n }\n }\n catch(ex){\n console.error(\"本地存储中crud参数解析异常:\", ex);\n }\n ${baseFilters ? `var systemFilters = ${JSON.stringify(baseFilters)};` : 'var systemFilters = [];'}\n var _ids = []\n const filtersFunction = ${filtersFunction};\n if(filtersFunction){\n const _filters = filtersFunction(systemFilters, api.data.$self);\n if(api.data.listName == \"recent\"){\n _ids = _filters[2]\n }\n if(_filters && _filters.length > 0){\n if(_.isEmpty(systemFilters)){\n systemFilters = _filters || [];\n }else{\n systemFilters = [systemFilters, 'and', _filters];\n }\n }\n }\n let userFilters =[];\n \n if(_.isEmpty(systemFilters)){\n systemFilters = api.data.filter || [];\n }else{\n if(!_.isEmpty(api.data.filter)){\n systemFilters = [systemFilters, 'and', api.data.filter];\n }\n }\n var pageSize = api.data.pageSize || 10;\n var pageNo = api.data.pageNo || 1;\n var skip = (pageNo - 1) * pageSize;\n var orderBy = api.data.orderBy || '';\n var orderDir = api.data.orderDir || '';\n var sort = orderBy + ' ' + orderDir;\n sort = orderBy ? sort : \"${sort || ''}\";\n var allowSearchFields = ${JSON.stringify(searchableFields)};\n if(api.data.$term){\n userFilters = [[\"name\", \"contains\", \"'+ api.data.$term +'\"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n userFilters = [[\"${valueField.name}\", \"=\", selfData.value]];\n }\n\n var searchableFilter = SteedosUI.getSearchFilter(selfData) || [];\n if(searchableFilter.length > 0){\n if(userFilters.length > 0 ){\n userFilters = [userFilters, 'and', searchableFilter];\n }else{\n userFilters = searchableFilter;\n }\n }\n\n // \"搜索此列表\"搜索框\n if(allowSearchFields){\n allowSearchFields.forEach(function(key){\n const keyValue = selfData[key];\n if(_.isString(keyValue)){\n userFilters.push([key, \"contains\", keyValue]);\n }else if(_.isArray(keyValue) || _.isBoolean(keyValue) || keyValue){\n userFilters.push([key, \"=\", keyValue]);\n }\n })\n }\n\n var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.__keywords, allowSearchFields);\n if(keywordsFilters && keywordsFilters.length > 0){\n userFilters.push(keywordsFilters);\n }\n\n let filters = [];\n\n if(!_.isEmpty(systemFilters)){\n filters = systemFilters;\n };\n if(api.data.$self.additionalFilters){\n if(_.isString(api.data.$self.additionalFilters)){\n userFilters.push(eval(api.data.$self.additionalFilters))\n }else{\n userFilters.push(api.data.$self.additionalFilters)\n }\n }\n\n if(api.data.$self._isRelated){\n const self = api.data.$self;\n const relatedKey = self.relatedKey;\n const refField = self.uiSchema.fields[relatedKey];\n const masterRecord = self._master.record;\n const masterObjectName = self._master.objectName;\n let relatedValue = self._master.recordId;\n if(refField && refField.reference_to_field && refField.reference_to_field != '_id'){\n relatedValue = masterRecord[refField.reference_to_field]\n }\n let relatedFilters;\n if (\n refField && (refField._reference_to ||\n (refField.reference_to && !_.isString(refField.reference_to)))\n ) {\n relatedFilters = [\n [relatedKey + \"/o\", \"=\", masterObjectName],\n [relatedKey + \"/ids\", \"=\", relatedValue],\n ];\n } else {\n relatedFilters = [relatedKey, \"=\", relatedValue];\n }\n userFilters.push(relatedFilters)\n }\n\n if(!_.isEmpty(userFilters)){\n if(_.isEmpty(filters)){\n filters = userFilters;\n }else{\n filters = [filters, 'and', userFilters]\n }\n }\n api.data._ids = _ids;\n api.data = {\n query: api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim())\n }\n ${options.requestAdaptor || ''};\n\n //写入本次存储filters、sort\n const listViewPropsStoreKey = location.pathname + \"/crud/query\";\n sessionStorage.setItem(listViewPropsStoreKey, JSON.stringify({\n filters: filters,\n sort: sort.trim(),\n pageSize: pageSize,\n skip: skip,\n fields: ${JSON.stringify(_.map(fields, 'name'))}\n }));\n return api;\n `\n api.adaptor = `\n if(api.body.listName == \"recent\"){\n payload.data.rows = _.sortBy(payload.data.rows, function(item){\n return _.indexOf(api.body._ids, item._id)\n });\n }\n const enable_tree = ${mainObject.enable_tree};\n if(!enable_tree){\n _.each(payload.data.rows, function(item, index){\n const {pageNo, pageSize} = api.body;\n const skip = (pageNo - 1) * pageSize;\n item._index = skip + index + 1;\n })\n }\n window.postMessage(Object.assign({type: \"listview.loaded\"}), \"*\");\n let fileFields = ${JSON.stringify(fileFields)};\n let lookupFields = ${JSON.stringify(lookupFields)};\n _.each(payload.data.rows, function(item, index){\n _.each(fileFields , (field, key)=>{\n if(item[key] && item._display && item._display[key]){\n let value = item._display[key];\n if(!_.isArray(value)){\n value = [value]\n };\n if(field.type === 'file'){\n item[key] = value\n }else{\n item[key] = _.map(value, (item)=>{\n if(field.type === 'image'){\n const url = window.getImageFieldUrl(item.url);\n return url;\n }\n return item.url;\n })\n }\n }\n })\n _.each(lookupFields , (field, key)=>{\n if(item[key]){\n if(field._optionsFunction){\n const optionsFunction = eval(\"(\" + field._optionsFunction+ \")\")(item);\n item[key + '__label'] = _.map(_.filter(optionsFunction, function(option){return item[key] == option.value}), 'label').join(' ');\n }else if(field.options){\n const options = field.options;\n item[key + '__label'] = _.map(_.filter(options, function(option){return item[key] == option.value}), 'label').join(' ');\n }\n }\n })\n })\n \n if(enable_tree){\n const records = payload.data.rows || [];\n const getTreeOptions = SteedosUI.getTreeOptions\n let isTreeOptionsComputed = false;\n if(records.length === 1 && records[0].children){\n isTreeOptionsComputed = true;\n }\n if(!isTreeOptionsComputed){\n // 如果api接口设置在缓存,缓存期间并不会重新请求接口,payload.data.rows是上次计算后的结果\n payload.data.rows = getTreeOptions(records,{\"valueField\":\"_id\"});\n }\n try{\n setTimeout(() => {\n let expandBtn = $('.steedos-object-listview-content .antd-Table-content .antd-Table-table thead .antd-Table-expandBtn');\n if(expandBtn && expandBtn.length > 0 && !expandBtn.hasClass(\"is-active\")){\n expandBtn[0].click();\n }\n }, 600);\n }\n catch(ex){\n console.error(\"tree数据格式展开异常:\", ex);\n }\n }\n\n\n try{\n // TODO: 不应该直接在这里取localStorage,应该从外面传入\n const listName = api.body.listName;\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n /**\n * localListViewProps规范来自crud请求api中api.data.$self参数值的。\n * 比如:{\"perPage\":20,\"page\":1,\"__searchable__name\":\"7\",\"__searchable__between__n1__c\":[null,null],\"filter\":[[\"name\",\"contains\",\"a\"]]}\n * __searchable__...:顶部放大镜搜索条件\n * filter:右侧过滤器\n * perPage:每页条数\n * page:当前页码\n * orderBy:排序字段\n * orderDir:排序方向\n */\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n let selfData = JSON.parse(JSON.stringify(api.body.$self));\n if(localListViewProps){\n localListViewProps = JSON.parse(localListViewProps);\n selfData = Object.assign({}, localListViewProps, selfData, { filter: api.body.filter });\n if(!api.body.loaded){\n // 第一次加载组件,比如刷新浏览器时因为api.data.pageNo有默认值1\n // 所以会把localSearchableFilter中已经存过的页码覆盖\n // 如果是第一次加载组件始终让翻页页码从本地存储中取值\n let formFactor = \"${options.formFactor}\";\n // 移动端不识别本地存储中的翻页页码,否则点击加载更多按钮后无法刷新回第一页\n // selfData.page = formFactor === \"SMALL\" ? 1 : (localListViewProps.page || 1);\n selfData.page = localListViewProps.page || 1;\n }\n }\n \n delete selfData.context;\n delete selfData.global;\n sessionStorage.setItem(listViewPropsStoreKey, JSON.stringify(selfData));\n // 返回页码到UI界面\n payload.data.page= selfData.page;\n }\n catch(ex){\n console.error(\"本地存储中crud参数解析异常:\", ex);\n }\n // 标记加载过,后续优先从本地存储中加载相关参数\n payload.data.loaded= true;\n\n const setDataToComponentId = \"${setDataToComponentId}\";\n if(setDataToComponentId){\n //https://github.com/baidu/amis/pull/6807 .parent的改动是为适应3.2getComponentById的规则改动,不影响2.9\n var scope = SteedosUI.getRef(api.body.$self.$scopeId);\n var scopeParent = scope && scope.parent;\n var setDataToComponent = scopeParent && scopeParent.getComponentById(setDataToComponentId);\n if(setDataToComponent){\n setDataToComponent.setData({$count: payload.data.count});\n }\n // SteedosUI.getRef(api.body.$self.$scopeId)?.parent?.getComponentById(setDataToComponentId)?.setData({$count: payload.data.count})\n };\n ${options.adaptor || ''}\n return payload;\n `;\n return api;\n}\n\nexport async function getApi(object, recordId, fields, options){\n const data = await graphql.getFindQuery(object, recordId, fields, options);\n return {\n method: \"post\",\n url: graphql.getApi(), // + \"&recordId=${recordId}\"\n data: data,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nexport function getRecordPermissionsApi(object, recordId, options){\n const data = graphql.getRecordPermissionsQuery(object, recordId, options);\n return {\n method: \"post\",\n url: graphql.getApi(),\n data: data,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}","import { OMIT_FIELDS } from './fields';\nimport { absoluteUrl } from '../../steedos.client'\nimport * as graphql from './graphql'\nimport * as _ from 'lodash';\nimport { i18next } from \"../../../i18n\"\nconst API_CACHE = 100;\n\nfunction getReadonlyFormAdaptor(object, fields, options){\n let scriptStr = '';\n const selectFields = _.filter(fields, function(field){return field.name.indexOf('.') < 0 && ((field.type == 'select' && field.options) || ((field.type == 'lookup' || field.type == 'master_detail') && !field.reference_to))});\n const gridAndObjectFieldsName = _.map(_.filter(fields, function(field){return field.name.indexOf('.') < 0 && (field.type === 'object' || field.type === 'grid')}), 'name');\n _.each(selectFields, function(field){\n if(!_.includes(OMIT_FIELDS, field.name)){\n const valueField = field.name;\n if(field.options){\n const options = JSON.stringify({options: field.options});\n scriptStr = scriptStr + `var ${field.name}Options= (${options}).options;`;\n }else if(field.optionsFunction){\n scriptStr = scriptStr + `var ${field.name}Options = eval(${field.optionsFunction.toString()})(api.data);`\n }else if(field._optionsFunction){\n scriptStr = scriptStr + `var ${field.name}Options = eval(${field._optionsFunction})(api.data);`\n }\n if(field.multiple){\n scriptStr = scriptStr + `data.${field.name}__label = _.map(_.filter(${field.name}Options, function(option){return _.includes(data.${field.name}, option.value)}), 'label');`\n }else{\n scriptStr = scriptStr + `var ${field.name}Selected = _.find(${field.name}Options, function(option){return data.${field.name} == option.value});`\n scriptStr = scriptStr + `data.${field.name}__label = ${field.name}Selected ? ${field.name}Selected.label:null;`\n }\n }\n });\n\n // const refFields = _.filter(fields, function(field){return field.name.indexOf('.') < 0 && (field.type == 'lookup' || field.type == 'master_detail') && !field.reference_to});\n // _.each(refFields, function(field){\n // if(!_.includes(OMIT_FIELDS, field.name)){\n // const valueField = field.reference_to_field || '_id';\n // scriptStr = scriptStr + `var ${field.name}Options = eval(${field.optionsFunction.toString()})(api.data);`\n // if(field.multiple){\n // scriptStr = scriptStr + `data.${field.name}__label = _.map(_.filter(${field.name}Options, function(option){return _.includes(data.${field.name}, option.value)}), 'label');`\n // }else{\n // scriptStr = scriptStr + `var ${field.name}Selected = _.find(${field.name}Options, function(option){return data.${field.name} == option.value});`\n // scriptStr = scriptStr + `data.${field.name}__label = ${field.name}Selected ? ${field.name}Selected.label:null;`\n // }\n // }\n // })\n\n var fieldNames = _.map(fields, function(n){return n.name});\n return `\n if(payload.data.data.length === 0){\n var isEditor = !!${options && options.isEditor};\n if(isEditor){\n var fieldNames = ${JSON.stringify(fieldNames)};\n var emptyDoc = {};//这里如果不把每个字段值设置为空的话,表单上会显示上一次表单上的字段值\n fieldNames.forEach(function(n){\n emptyDoc[n] = null;\n });\n // 设计器中始终显示表单,有记录则显示第一条记录,没记录时显示为空表单\n payload.data.data = [emptyDoc];\n }\n else{\n return {\n status: 2,\n msg: \"${i18next.t('frontend_no_records_found')}\"\n }\n }\n }\n if(payload.data.data){\n var data = payload.data.data[0];\n var gridAndObjectFieldsName = ${JSON.stringify(gridAndObjectFieldsName)};\n try{\n ${scriptStr}\n ${getScriptForAddUrlPrefixForImgFields(fields)}\n ${getScriptForRewriteValueForFileFields(fields)}\n }catch(e){\n console.error(e)\n }\n // 原始记录\n var record = _.cloneDeep(data);\n try{\n _.each(gridAndObjectFieldsName, function(name){\n data[name] = data._display && data._display[name];\n })\n }catch(e){\n console.error(e)\n }\n payload.data = data;\n payload.data.__objectName = \"${object.name}\";\n payload.data.__record = record;\n window.postMessage(Object.assign({type: \"record.loaded\"}, {record: record}), \"*\")\n }\n if(payload.errors){\n payload.status = 2;\n payload.msg = payload.errors[0].message;\n }\n ${options && options.initApiAdaptor || ''}\n return payload;\n`\n}\n\nexport async function getReadonlyFormInitApi(object, recordId, fields, options){\n let findOneOptions;\n if (!recordId && options && options.isEditor) {\n // 设计器中只读表单返回第一条记录\n findOneOptions = {\n filters: [],\n queryOptions: \"top: 1\"\n };\n }\n return {\n method: \"post\",\n url: graphql.getApi() + '&objectName=${objectName}' + \"&recordId=${recordId}\",\n cache: API_CACHE,\n requestAdaptor: `\n ${options && options.initApiRequestAdaptor || ''}\n return api;\n `,\n adaptor: getReadonlyFormAdaptor(object, fields, options),\n data: await graphql.getFindOneQuery(object, recordId, fields, findOneOptions),\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nfunction getConvertDataScriptStr(fields){\n const refFields = _.filter(fields, function(field){return field.name.indexOf('.') < 0 && (field.type == 'lookup' || field.type == 'master_detail') && field.reference_to});\n let scriptStr = '';\n _.each(refFields, function(field){\n if(!_.includes(OMIT_FIELDS, field.name)){\n const valueField = field.reference_to_field || '_id';\n if(field.multiple){\n scriptStr = scriptStr + `data.${field.name} = _.map(data.${field.name}, '${valueField}');`\n }else{\n scriptStr = scriptStr + `data.${field.name} = data.${field.name} ? data.${field.name}.${valueField}:null;`\n }\n }\n })\n return scriptStr;\n}\n\n/*\n img/avatar字段值添加URL前缀使其在amis中正常显示图片。\n*/\nfunction getScriptForAddUrlPrefixForImgFields(fields){\n let imgFieldsKeys = [];\n let imgFields = {};\n fields.forEach((item)=>{\n if(_.includes(['image','avatar'], item.type)){\n imgFieldsKeys.push(item.name);\n imgFields[item.name] = {\n name: item.name,\n type: item.type,\n multiple: item.multiple\n };\n }\n })\n if(!imgFieldsKeys.length){\n return '';\n }\n return `\n // image字段值添加URL前缀\n let imgFieldsKeys = ${JSON.stringify(imgFieldsKeys)};\n let imgFields = ${JSON.stringify(imgFields)};\n imgFieldsKeys.forEach((item)=>{\n let imgFieldValue = data[item];\n let imgFieldDisplayValue = data._display && data._display[item];\n if(imgFieldValue && imgFieldValue.length){\n let fieldProps = imgFields[item];\n if(fieldProps.multiple){\n if(imgFieldDisplayValue instanceof Array){\n data[item] = imgFieldDisplayValue.map((i)=>{ \n const url = window.getImageFieldUrl(i.url);\n return url;\n });\n }\n }else{\n const url = imgFieldDisplayValue && window.getImageFieldUrl(imgFieldDisplayValue.url);\n data[item] = url;\n }\n }\n })\n `\n}\n\n/*\n file字段值重写使其在amis中正常显示附件名、点击附件名下载文件。\n*/\nfunction getScriptForRewriteValueForFileFields(fields){\n let fileFieldsKeys = [];\n let fileFields = {};\n fields.forEach((item)=>{\n if(item.type === 'file'){\n fileFieldsKeys.push(item.name);\n fileFields[item.name] = {\n name: item.name,\n multiple: item.multiple\n };\n }\n })\n if(!fileFieldsKeys.length){\n return '';\n }\n return `\n // file字段值重写以便编辑时正常显示附件名、点击附件名正常下载附件\n let fileFieldsKeys = ${JSON.stringify(fileFieldsKeys)};\n let fileFields = ${JSON.stringify(fileFields)};\n fileFieldsKeys.forEach((item)=>{\n let fileFieldValue = data[item];\n let fileFieldDisplayValue = data._display && data._display[item];\n if(fileFieldValue && fileFieldValue.length){\n if(fileFields[item].multiple){\n if(fileFieldDisplayValue instanceof Array){\n data[item] = fileFieldDisplayValue.map((item, index)=>{ \n return {\n value: fileFieldValue[index],\n name: item.name,\n url: item.url + \"?download=true\",\n state: \"uploaded\"\n }\n });\n }\n }else{\n data[item] = [{\n value: fileFieldValue,\n name: fileFieldDisplayValue.name,\n url: fileFieldDisplayValue.url + \"?download=true\",\n state: \"uploaded\"\n }];\n }\n }\n })\n `\n}\n\nexport async function getEditFormInitApi(object, recordId, fields, options){\n const data = await graphql.getFindOneQuery(object, recordId, fields);\n data.recordId = \"${recordId}\";\n data.objectName = \"${objectName}\";\n data.uiSchema = \"${uiSchema}\";\n data.global = \"${global}\";\n data.context = \"${context}\";\n data.defaultData = \"${defaultData}\";\n data._master = \"${_master}\";\n \n return {\n method: \"post\",\n url: graphql.getApi() + '&objectName=${objectName}' ,\n // sendOn: \"!!this.recordId\",\n cache: API_CACHE,\n requestAdaptor: `\n // 所有不想在network请求中发送的数据都应该从data中分离出来,data变量只需要留下query才需要发送出去\n var { recordId, objectName, uiSchema, global, context, ...data} = api.data;\n if(!recordId){\n // 新建则不请求任何数据\n data.query = \"{data:\" + objectName + \"(filters: \" + JSON.stringify([\"_id\", \"=\", null]) + \", top: 1){_id}}\";\n }\n api.data = data;\n ${options.initApiRequestAdaptor || ''}\n return api;\n `,\n adaptor: `\n const recordId = api.body.recordId;\n let initialValues={};\n if(recordId && payload.data.data){\n var data = payload.data.data[0];\n const dataKeys = _.keys(data);\n const uiSchema = api.body.uiSchema;\n const fieldKeys = uiSchema && _.keys(uiSchema.fields);\n\n if(data){\n ${getScriptForAddUrlPrefixForImgFields(fields)}\n ${getScriptForRewriteValueForFileFields(fields)}\n\n _.each(dataKeys, function(key){\n if(fieldKeys.indexOf(key)<0 && key !== \"_display\"){\n delete data[key];\n }\n })\n \n //初始化接口返回的字段移除字段值为null的字段\n for (key in data){\n if(data[key] === null){\n delete data[key];\n }\n }\n };\n initialValues = data;\n }\n else{\n var uiSchema = api.body.uiSchema;\n var defaultData = api.body.defaultData;\n var defaultValues = {};\n _.each(uiSchema && uiSchema.fields, function(field){\n var value = SteedosUI.getFieldDefaultValue(field, api.body.global);\n if(!_.isNil(value)){\n defaultValues[field.name] = value;\n }\n });\n if(defaultData && _.isObject(defaultData) && !_.isArray(defaultData)){\n defaultValues = Object.assign({}, defaultValues, defaultData)\n }\n if(uiSchema.form){\n try{\n var objectFormConfig = JSON.parse(uiSchema.form);\n var formInitialValuesFun = objectFormConfig.initialValues;\n if(formInitialValuesFun){\n formInitialValuesFun = new Function(\"return \" + formInitialValuesFun)();\n }\n if(typeof formInitialValuesFun === \"function\"){\n initialValues = formInitialValuesFun.apply({doc: defaultValues || {} , global: api.body.global, master: api.body._master })\n }\n }\n catch(ex){\n console.warn(ex);\n }\n }\n if(_.isObject(initialValues)){\n // uiSchema.form.initialValues为函数且执行后为json,则优先取initialValues中的默认值\n initialValues = Object.assign({}, defaultValues, initialValues);\n }\n else{\n initialValues = defaultValues;\n }\n }\n // data下的变量需要在保存接口(getSaveApi)中被删除。\n payload.data = {\n ...initialValues\n }\n ${options.initApiAdaptor || ''}\n return payload;\n `,\n responseData: {\n initialValues: \"$$\",\n editFormInited: true\n },\n data: data,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\n\nexport function getSaveApi(object, recordId, fields, options){\n return {\n method: 'post',\n url: graphql.getApi(),\n data: graphql.getSaveQuery(object, recordId, fields, options),\n requestAdaptor: graphql.getSaveRequestAdaptor(fields, options),\n responseData: {\n \"recordId\": \"${record._id}\"\n },\n adaptor: `\n if(payload.errors){\n delete payload.data;\n payload.status = 2;\n payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;\n }\n ${options.apiAdaptor || ''}\n return payload;\n `,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nexport function getBatchDelete(objectName){\n return {\n method: 'post',\n url: graphql.getApi(),\n requestAdaptor: `\n var ids = api.data.ids.split(\",\");\n var deleteArray = [];\n ids.forEach((id,index)=>{\n deleteArray.push(\\`delete__\\${index}:${objectName}__delete(id: \"\\${id}\")\\`);\n })\n api.data = {query: \\`mutation{\\${deleteArray.join(',')}}\\`};\n return api;\n `,\n data: {\n ids: `\\${ids}`\n },\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}","import { getApi, getRecordPermissionsApi } from './fields/table';\nimport { getSaveApi } from './api';\nimport { each, values } from 'lodash';\nimport * as graphql from './graphql'\nimport _, { isEmpty, omitBy, isNil } from 'lodash';\nimport { i18next } from \"../../../i18n\"\n\nexport const DEFAULT_CALENDAR_OPTIONS = {\n startDateExpr: \"start\",\n endDateExpr: \"end\",\n allDayExpr: \"is_all_day\",\n textExpr: \"name\"\n};\n\nexport async function getCalendarApi(mainObject, fields, options) {\n if (!options) {\n options = {};\n }\n const calendarOptions = options.calendarOptions;\n const searchableFields = [];\n let { filter, sort, top, setDataToComponentId = '' } = options;\n\n if (!top) {\n // 日历请求不翻页\n top = 200;\n }\n\n if (_.isArray(filter)) {\n filter = _.map(filter, function (item) {\n if (item.operation) {\n return [item.field, item.operation, item.value];\n } else {\n return item\n }\n })\n }\n if (!filter) {\n filter = [];\n }\n\n _.each(fields, function (field) {\n if (field.searchable) {\n searchableFields.push(field.name);\n }\n })\n\n const idFieldName = mainObject.idFieldName || \"_id\";\n let valueField = mainObject.key_field || '_id';\n const api = await getApi(mainObject, null, fields, { alias: 'rows', limit: top, queryOptions: `filters: {__filters}, top: {__top}, skip: {__skip}, sort: \"{__sort}\"` });\n api.data.$term = \"$term\";\n api.data.$self = \"$$\";\n api.data.filter = \"$filter\";\n api.data.pageSize = top || 10;\n api.requestAdaptor = `\n let selfData = JSON.parse(JSON.stringify(api.data.$self));\n var filters = api.data.filter || ${JSON.stringify(filter)} || [];\n const eventFetchInfo = selfData.fetchInfo;\n const startDateExpr = \"${calendarOptions.startDateExpr}\";\n const endDateExpr = \"${calendarOptions.endDateExpr}\";\n const eventDurationFilters = [[endDateExpr, \">=\", eventFetchInfo.start], [startDateExpr, \"<=\", eventFetchInfo.end]];\n if(_.isEmpty(filters)){\n filters = eventDurationFilters;\n }else{\n filters = [filters, 'and', eventDurationFilters]\n }\n\n if(api.data.$self.additionalFilters){\n filters.push(api.data.$self.additionalFilters)\n }else if(api.data.$self.event.data.additionalFilters){\n filters.push(api.data.$self.event.data.additionalFilters)\n }\n\n var pageSize = api.data.pageSize || 10;\n var pageNo = api.data.pageNo || 1;\n var skip = (pageNo - 1) * pageSize;\n var orderBy = api.data.orderBy || '';\n var orderDir = api.data.orderDir || '';\n var sort = orderBy + ' ' + orderDir;\n sort = orderBy ? sort : \"${sort}\";\n var allowSearchFields = ${JSON.stringify(searchableFields)};\n if(api.data.$term){\n filters = [[\"name\", \"contains\", \"'+ api.data.$term +'\"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n filters = [[\"${valueField.name}\", \"=\", selfData.value]];\n }\n var searchableFilter = SteedosUI.getSearchFilter(selfData) || [];\n\n if(searchableFilter.length > 0){\n if(filters.length > 0 ){\n filters = [filters, 'and', searchableFilter];\n }else{\n filters = searchableFilter;\n }\n }\n\n if(allowSearchFields){\n allowSearchFields.forEach(function(key){\n const keyValue = selfData[key];\n if(_.isString(keyValue)){\n filters.push([key, \"contains\", keyValue]);\n }else if(_.isArray(keyValue) || _.isBoolean(keyValue) || keyValue){\n filters.push([key, \"=\", keyValue]);\n }\n })\n }\n\n if(selfData.__keywords && allowSearchFields){\n const keywordsFilters = [];\n allowSearchFields.forEach(function(key, index){\n const keyValue = selfData.__keywords;\n if(keyValue){\n keywordsFilters.push([key, \"contains\", keyValue]);\n if(index < allowSearchFields.length - 1){\n keywordsFilters.push('or');\n }\n }\n })\n filters.push(keywordsFilters);\n }\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim());\n delete api.data.$term;\n delete api.data.filter;\n delete api.data.pageSize;\n delete api.data.pageNo;\n delete api.data.orderBy;\n delete api.data.orderDir;\n return api;\n `\n api.adaptor = `\n window.postMessage(Object.assign({type: \"listview.loaded\"}), \"*\");\n const setDataToComponentId = \"${setDataToComponentId}\";\n if(setDataToComponentId){\n var scope = SteedosUI.getRef(api.body.$self.scopeId);\n var setDataToComponent = scope && scope.getComponentById(setDataToComponentId);\n if(setDataToComponent){\n setDataToComponent.setData({$count: payload.data.count});\n }\n // SteedosUI.getRef(api.body.$self.scopeId)?.getComponentById(setDataToComponentId)?.setData({$count: payload.data.count})\n }\n const rows = payload.data.rows || [];\n const selfData = api.data.$self;\n const events = rows.map(function(n){\n return {\n id: n[\"${idFieldName}\"],\n title: n[\"${calendarOptions.textExpr}\"],\n start: n[\"${calendarOptions.startDateExpr}\"],\n end: n[\"${calendarOptions.endDateExpr}\"],\n allDay: n[\"${calendarOptions.allDayExpr}\"],\n extendedProps: n\n }\n });\n const successCallback = selfData.successCallback;\n const failureCallback = selfData.failureCallback;\n successCallback(events);\n return payload;\n `;\n return api;\n}\n\nexport function getCalendarRecordPermissionsApi(mainObject, recordId) {\n const api = getRecordPermissionsApi(mainObject, recordId, { alias: 'rows', limit: 1, fields: [\"allowEdit\"] });\n api.data.$self = \"$$\";\n api.adaptor = `\n const rows = payload.data.rows || [];\n const selfData = api.data.$self;\n const revert = selfData.revert;\n const recordPermissions = rows[0] && rows[0].recordPermissions;\n const editable = !!(recordPermissions && recordPermissions.allowEdit);\n if(!editable){\n // 没有权限时还原\n revert && revert();\n }\n payload.data.editable = editable;\n return payload;\n `;\n return api;\n}\n\nexport function getCalendarRecordSaveApi(object, calendarOptions) {\n const formData = {};\n const idFieldName = object.idFieldName || \"_id\";\n formData[idFieldName] = \"${event.data.event.id}\";\n const nameFieldKey = object.NAME_FIELD_KEY || \"name\";\n formData[nameFieldKey] = \"${event.data.event.title}\";\n formData[calendarOptions.startDateExpr] = \"${event.data.event.start}\";\n formData[calendarOptions.endDateExpr] = \"${event.data.event.end}\";\n formData[calendarOptions.allDayExpr] = \"${event.data.event.allDay}\";\n // formData[calendarOptions.textExpr] = \"${event.data.event.title}\";\n const apiData = {\n objectName: \"${objectName}\",\n $: formData,\n $self: \"$$\"\n };\n const saveDataTpl = `\n const formData = api.data.$;\n const objectName = api.data.objectName;\n let query = \\`mutation{record: \\${objectName}__update(id: \"\\${formData.${idFieldName}}\", doc: {__saveData}){${idFieldName}}}\\`;\n delete formData.${idFieldName};\n let __saveData = JSON.stringify(JSON.stringify(formData));\n `;\n const requestAdaptor = `\n ${saveDataTpl}\n api.data.query = query.replace('{__saveData}', __saveData);\n return api;\n `;\n\n return {\n method: 'post',\n url: graphql.getApi(),\n data: apiData,\n requestAdaptor: requestAdaptor,\n adaptor: `\n if(payload.errors){\n payload.status = 2;\n payload.msg = payload.errors[0].message;\n const revert = api.data.$self.event.data.revert;\n revert && revert();\n }\n return payload;\n `,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n };\n}\n\n/**\n * 列表视图Calendar amisSchema\n * @param {*} objectSchema 对象UISchema\n * @returns amisSchema\n */\nexport async function getObjectCalendar(objectSchema, calendarOptions, options) {\n const permissions = objectSchema.permissions;\n if (!options) {\n options = {};\n }\n\n calendarOptions = Object.assign({}, DEFAULT_CALENDAR_OPTIONS, omitBy(calendarOptions, isNil));\n\n const titleFields = calendarOptions.title || [\n calendarOptions.startDateExpr,\n calendarOptions.endDateExpr,\n calendarOptions.allDayExpr,\n calendarOptions.textExpr\n ];\n let fields = [];\n each(titleFields, function (n) {\n if (objectSchema.fields[n]) {\n fields.push(objectSchema.fields[n]);\n }\n });\n\n if (objectSchema.fields[calendarOptions.allDayExpr]) {\n fields.push(objectSchema.fields[calendarOptions.allDayExpr]);\n }\n\n let sort = options.sort;\n if (!sort) {\n const sortField = options.sortField;\n const sortOrder = options.sortOrder;\n if (sortField) {\n let sortStr = sortField + ' ' + sortOrder || 'asc';\n sort = sortStr;\n }\n }\n let initialView = calendarOptions.currentView;\n if (initialView) {\n // day, week, month, agenda\n switch (initialView) {\n case \"day\":\n initialView = \"timeGridDay\"\n break;\n case \"week\":\n initialView = \"timeGridWeek\"\n break;\n case \"month\":\n initialView = \"dayGridMonth\"\n break;\n case \"agenda\":\n initialView = \"listWeek\"\n break;\n }\n }\n else {\n initialView = \"timeGridWeek\";\n }\n\n options.calendarOptions = calendarOptions;\n const api = await getCalendarApi(objectSchema, fields, options);\n\n const onGetEventsScript = `\n const api = ${JSON.stringify(api)};\n event.data.calendarOptions = ${JSON.stringify(calendarOptions)};\n doAction({\n \"actionType\": 'ajax',\n \"args\": {\n \"api\": api\n },\n });\n `;\n\n const onSelectScript = `\n const data = event.data;\n const doc = {};\n doc[\"${calendarOptions.startDateExpr}\"] = data.start;\n doc[\"${calendarOptions.endDateExpr}\"] = data.end;\n doc[\"${calendarOptions.allDayExpr}\"] = data.allDay;\n doc[\"${calendarOptions.textExpr}\"] = data.title;\n // ObjectForm会认作用域下的变量值\n // TODO: 待组件支持initValues属性后应该改掉,不应该通过data直接传值\n // TODO: 全天事件属性传入doc了但是没有生效,需要手动在ObjectForm中勾选全天事件\n const title = \"${i18next.t('frontend_form_new')} ${objectSchema.label}\";\n doAction(\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": title,\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"objectApiName\": \"\\${objectName}\",\n \"mode\": \"edit\",\n \"defaultData\": doc,\n //改回为通用的提交事件\n // \"onEvent\": {\n // \"submitSucc\": {\n // \"weight\": 0,\n // \"actions\": [\n // {\n // \"actionType\": \"custom\",\n // \"script\": \"event.data.view?.calendar.refetchEvents();\"\n // }\n // ]\n // }\n // }\n }\n ],\n \"closeOnEsc\": false,\n \"closeOnOutside\": false,\n \"showCloseButton\": true,\n \"size\": \"lg\"\n }\n });\n `;\n\n const onEventClickScript = `\n const data = event.data;\n const eventData = data.event;\n const appId = data.appId;\n const objectName = data.objectName;\n const eventId = data.event && data.event.id;\n doAction({\n \"actionType\": \"link\",\n \"args\": {\n \"link\": \"/app/\" + appId + \"/\" + objectName + \"/view/\" + eventId\n }\n });\n // doAction({\n // \"actionType\": \"dialog\",\n // \"dialog\": {\n // \"type\": \"dialog\",\n // \"title\": \"\",\n // \"body\": [\n // {\n // \"type\": \"steedos-record-detail\",\n // \"objectApiName\": \"\\${objectName}\",\n // \"recordId\": data.event && data.event.id\n // }\n // ],\n // \"closeOnEsc\": false,\n // \"closeOnOutside\": false,\n // \"showCloseButton\": true,\n // \"size\": \"lg\",\n // \"actions\": []\n // }\n // });\n `;\n\n const recordId = \"${event.id}\";\n const recordPermissionsApi = getCalendarRecordPermissionsApi(objectSchema, recordId);\n const recordSaveApi = getCalendarRecordSaveApi(objectSchema, calendarOptions);\n\n const businessHours = {\n daysOfWeek: [1, 2, 3, 4, 5],\n startTime: '08:00',\n endTime: '18:00',\n };\n if (!isEmpty(calendarOptions.startDayHour)) {\n businessHours.startTime = `${calendarOptions.startDayHour}:00`;\n }\n if (!isEmpty(calendarOptions.endDayHour)) {\n businessHours.endTime = `${calendarOptions.endDayHour}:00`;\n }\n\n // api.trackExpression=\"\\\\\\${additionalFilters}\";\n const onEvent = {\n \"getEvents\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {\n },\n \"actionType\": \"custom\",\n \"script\": onGetEventsScript\n }\n // {\n // \"actionType\": \"ajax\",\n // \"outputVar\": \"responseResult\",\n // \"args\": {\n // \"options\": {\n // },\n // \"api\": api\n // // {\n // // \"url\": \"111\",\n // // \"method\": \"post\",\n // // \"data\": {\n // // \"calendarOptions\": JSON.stringify(calendarOptions);\n // // }\n // // }\n // }\n // }\n ]\n },\n \"select\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {\n },\n \"actionType\": \"custom\",\n \"script\": onSelectScript\n }\n ]\n },\n \"eventClick\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onEventClickScript\n },\n // amis 升级到 3.2后,以下的\"actionType\": \"link\"方式拿不到appId和objectName了\n // {\n // \"actionType\": \"link\",\n // \"args\": {\n // \"link\": \"/app/${appId}/${objectName}/view/${event.id}\"\n // }\n // }\n ]\n },\n \"eventAdd\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {\n },\n \"actionType\": \"custom\",\n \"script\": \"console.log('eventAdd'); console.log(event);\"\n }\n ]\n },\n \"eventChange\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"actionType\": 'ajax',\n \"args\": {\n \"api\": recordPermissionsApi\n }\n },\n {\n \"actionType\": \"toast\",\n \"expression\": \"!event.data.editable\",\n \"args\": {\n \"msgType\": \"error\",\n \"msg\": i18next.t('frontend_message_no_permission_to_edit'),\n \"position\": \"top-center\"\n }\n },\n {\n \"actionType\": 'ajax',\n \"expression\": \"event.data.editable\",\n \"args\": {\n \"api\": recordSaveApi,\n \"messages\": {\n \"success\": objectSchema.label + i18next.t('frontend_message_modification_successful'),\n \"failed\": objectSchema.label + i18next.t('frontend_message_modification_successful')\n }\n }\n }\n ]\n },\n \"eventRemove\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {\n },\n \"actionType\": \"custom\",\n \"script\": \"console.log('eventRemove'); console.log(event);\"\n }\n ]\n },\n \"eventsSet\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {\n },\n \"actionType\": \"custom\",\n \"script\": \"console.log('eventsSet'); console.log(event);\"\n }\n ]\n },\n \"getRef\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": `service_${options.id}`,\n \"args\": {\n \"value\":{\n \"calendarRef\": \"${event.data.calendarRef}\"\n }\n },\n \"actionType\": \"setValue\",\n }\n ]\n }\n };\n\n Object.assign(onEvent, options.onEvent);\n\n const config = options.config || {};\n if(config.eventContent && typeof config.eventContent === \"string\"){\n const hasReturn = /\\breturn\\b/.test(config.eventContent);\n if(hasReturn){\n try {\n // 如果是包括return语句的字符串,则按函数解析,见 https://fullcalendar.io/docs/content-injection\n let fn = new Function(\"arg\", config.eventContent);\n config.eventContent = fn;\n } catch (e) {\n console.warn(e);\n }\n }\n }\n\n if(config.noEventsContent && typeof config.noEventsContent === \"string\"){\n const hasReturn = /\\breturn\\b/.test(config.noEventsContent);\n if(hasReturn){\n try {\n // 如果是包括return语句的字符串,则按函数解析,见 https://fullcalendar.io/docs/content-injection\n let fn = new Function(\"arg\", config.noEventsContent);\n config.noEventsContent = fn;\n } catch (e) {\n console.warn(e);\n }\n }\n }\n\n const amisSchema = {\n \"type\": \"steedos-fullcalendar\",\n \"label\": \"\",\n \"id\": options.id,\n \"name\": \"fullcalendar\",\n \"placeholder\":\"${additionalFilters}\",//用于触发reload\n \"editable\": permissions.allowEdit,\n \"selectable\": permissions.allowCreate,\n \"selectMirror\": permissions.allowCreate,\n \"initialView\": initialView,\n \"businessHours\": businessHours,\n \"views\":{\n listWeek: {\n buttonText: i18next.t('frontend_calendar_listWeek')\n }\n },\n ...config,\n \"onEvent\": onEvent\n };\n return amisSchema;\n}","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\n * 将例如像 a.b.c 或 a[1].b 的字符串转换为路径数组\n *\n * @param string 要转换的字符串\n */\n export const keyToPath = (string: string) => {\n const result = [];\n \n if (string.charCodeAt(0) === '.'.charCodeAt(0)) {\n result.push('');\n }\n \n string.replace(\n new RegExp(\n '[^.[\\\\]]+|\\\\[(?:([^\"\\'][^[]*)|([\"\\'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|$))',\n 'g'\n ),\n (match, expression, quote, subString) => {\n let key = match;\n if (quote) {\n key = subString.replace(/\\\\(\\\\)?/g, '$1');\n } else if (expression) {\n key = expression.trim();\n }\n result.push(key);\n return '';\n }\n );\n \n return result;\n };\n ","import isPlainObject from 'lodash/isPlainObject';\nimport {keyToPath} from './keyToPath';\n\n// 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。\nexport function createObject(\n superProps?: {[propName: string]: any},\n props?: {[propName: string]: any},\n properties?: any\n): object {\n if (superProps && Object.isFrozen(superProps)) {\n superProps = cloneObject(superProps);\n }\n\n const obj = superProps\n ? Object.create(superProps, {\n ...properties,\n __super: {\n value: superProps,\n writable: false,\n enumerable: false\n }\n })\n : Object.create(Object.prototype, properties);\n\n props &&\n isObject(props) &&\n Object.keys(props).forEach(key => (obj[key] = props[key]));\n\n return obj;\n}\n\nexport function cloneObject(target: any, persistOwnProps: boolean = true) {\n const obj =\n target && target.__super\n ? Object.create(target.__super, {\n __super: {\n value: target.__super,\n writable: false,\n enumerable: false\n }\n })\n : Object.create(Object.prototype);\n persistOwnProps &&\n target &&\n Object.keys(target).forEach(key => (obj[key] = target[key]));\n return obj;\n}\n\nexport function extendObject(\n target: any,\n src?: any,\n persistOwnProps: boolean = true\n) {\n const obj = cloneObject(target, persistOwnProps);\n src && Object.keys(src).forEach(key => (obj[key] = src[key]));\n return obj;\n}\n\nexport function isObject(obj: any) {\n const typename = typeof obj;\n return (\n obj &&\n typename !== 'string' &&\n typename !== 'number' &&\n typename !== 'boolean' &&\n typename !== 'function' &&\n !Array.isArray(obj)\n );\n}\n\nexport function setVariable(\n data: {[propName: string]: any},\n key: string,\n value: any,\n convertKeyToPath?: boolean\n) {\n data = data || {};\n\n if (key in data) {\n data[key] = value;\n return;\n }\n\n const parts = convertKeyToPath !== false ? keyToPath(key) : [key];\n const last = parts.pop() as string;\n\n while (parts.length) {\n let key = parts.shift() as string;\n if (isPlainObject(data[key])) {\n data = data[key] = {\n ...data[key]\n };\n } else if (Array.isArray(data[key])) {\n data[key] = data[key].concat();\n data = data[key];\n } else if (data[key]) {\n // throw new Error(`目标路径不是纯对象,不能覆盖`);\n // 强行转成对象\n data[key] = {};\n data = data[key];\n } else {\n data[key] = {};\n data = data[key];\n }\n }\n\n data[last] = value;\n}\n\nexport function deleteVariable(data: {[propName: string]: any}, key: string) {\n if (!data) {\n return;\n } else if (data.hasOwnProperty(key)) {\n delete data[key];\n return;\n }\n\n const parts = keyToPath(key);\n const last = parts.pop() as string;\n\n while (parts.length) {\n let key = parts.shift() as string;\n if (isPlainObject(data[key])) {\n data = data[key] = {\n ...data[key]\n };\n } else if (data[key]) {\n throw new Error(`目标路径不是纯对象,不能修改`);\n } else {\n break;\n }\n }\n\n if (data && data.hasOwnProperty && data.hasOwnProperty(last)) {\n delete data[last];\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-23 09:12:14\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-11-25 13:28:35\n * @Description: \n */\n\nimport * as Tpl from '../tpl';\nimport { Router } from '../../../router'\nimport { i18next } from '../../../../i18n'\n\nasync function getListBody(fields, options){\n const columns = [];\n for (const field of fields) {\n\n const tpl = await Tpl.getFieldTpl(field, options);\n\n let type = 'text';\n if(tpl){\n type = 'tpl';\n }\n if(!field.hidden && !field.extra){\n columns.push({\n name: field.name,\n label: field.label,\n sortable: field.sortable,\n // searchable: field.searchable,\n width: field.width,\n type: type,\n tpl: tpl,\n toggled: field.toggled\n // toggled: true \n })\n }\n };\n\n return {\n \"type\": \"hbox\",\n \"columns\": columns\n };\n}\n\nfunction getDefaultParams(options){\n return {\n perPage: options.top || options.perPage || 10\n }\n}\n\nexport async function getListSchema(fields, options){\n const listBody = await getListBody(fields, options);\n const columns = listBody.columns;\n return {\n mode: \"list\",\n name: \"thelist\",\n draggable: false,\n headerToolbar: ['reload'],\n defaultParams: getDefaultParams(options),\n syncLocation: false,\n keepItemSelectionOnPageChange: true,\n checkOnItemClick: false,\n labelTpl: `\\${name}`, //TODO 获取name字段\n listItem: {\n body: [...columns],\n actions: options.actions === false ? null : [\n {\n icon: \"fa fa-eye\",\n label: i18next.t('frontend_form_view'),\n type: \"button\",\n actionType: \"link\",\n link: Router.getObjectDetailPath({\n formFactor: options.formFactor, \n appId: options.appId, \n objectName: options.tabId, \n listView: options.listView,\n recordId: `\\${_id}`\n })\n }\n ]\n }\n }\n}\n\n\nexport async function getCardSchema(fields, options){\n let title = null;\n const titleField = _.find(fields, (f)=>{\n return f.name === options.labelFieldName;\n });\n if(titleField){\n title = await Tpl.getFieldTpl(titleField, options)\n }\n const listBody = await getListBody(_.filter(fields, (f)=>{\n return f.name != options.labelFieldName\n }), options);\n return {\n mode: \"cards\",\n name: \"cards\",\n draggable: false,\n headerToolbar: ['statistics', 'pagination'],\n defaultParams: getDefaultParams(options),\n syncLocation: false,\n keepItemSelectionOnPageChange: false,\n checkOnItemClick: false,\n labelTpl: `\\${${options.labelFieldName}}`,\n card: {\n \"type\": \"card\",\n \"header\": {\n \"title\": title\n },\n \"body\": [...listBody.columns]\n }\n }\n}","\nimport { toArray, mergeWith, isArray } from 'lodash';\n\n// lodash的defaultsDeep函数有bug,无法正确合并值为数值的节点,重写修正该函数\n// 源码出处:https://github.com/nodeutils/defaults-deep\nexport const defaultsDeep = (...args)=>{\n let output = {};\n toArray(args).reverse().forEach(item=> {\n mergeWith(output, item, (objectValue, sourceValue) => {\n return isArray(sourceValue) ? sourceValue : undefined;\n });\n });\n return output;\n};","/*\n * @Author: 殷亮辉 yinlianghui@hotoa.com\n * @Date: 2023-03-22 09:31:21\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-11-05 16:31:38\n */\nimport { get } from 'lodash'\n\nconst globalTag = '__G_L_O_B_A_L__';\n\nconst getParentPath = function (path) {\n var pathArr;\n if (typeof path === 'string') {\n pathArr = path.split('.');\n if (pathArr.length === 1) {\n return '#';\n }\n pathArr.pop();\n return pathArr.join('.');\n }\n return '#';\n}\n\nconst getValueByPath = function (formData, path) {\n if (path === '#' || !path) {\n return formData || {};\n } else if (typeof path === 'string') {\n return get(formData, path);\n } else {\n console.error('path has to be a string');\n }\n};\n\nexport const isExpression = function (func) {\n var pattern, reg1, reg2;\n if (typeof func !== 'string') {\n return false;\n }\n pattern = /^{{(.+)}}$/;\n reg1 = /^{{(function.+)}}$/;\n reg2 = /^{{(.+=>.+)}}$/;\n if (typeof func === 'string' && func.match(pattern) && !func.match(reg1) && !func.match(reg2)) {\n return true;\n }\n return false;\n};\n\nconst getMoment = () => {\n if (window.amisRequire) {\n return window.amisRequire(\"moment\");\n } else if (window.moment) {\n return window.moment;\n }\n}\n\nexport const getGlobalNowData = () => {\n let now = new Date();\n let moment = getMoment();\n let today = moment().utc();\n today.set(\"hours\", 0);\n today.set(\"minutes\", 0);\n today.set(\"seconds\", 0);\n today.set(\"milliseconds\", 0);\n today = today.toDate();\n let timeNow = moment();\n timeNow.set(\"year\", 1970);\n timeNow.set(\"month\", 0);\n timeNow.set(\"date\", 1);\n timeNow.set(\"hours\", timeNow.hours() + timeNow.utcOffset() / 60)\n timeNow.set(\"seconds\", 0);\n timeNow.set(\"milliseconds\", 0);\n timeNow = timeNow.toDate();\n return {\n now,\n today,\n timeNow\n };\n}\n\nexport const parseSingleExpression = function (func, formData, dataPath, global, userSession = {}) {\n if (global) {\n Object.assign(global, getGlobalNowData());\n }\n\n var error, funcBody, parent, parentPath, str;\n\n if (formData === void 0) {\n formData = {};\n }\n parentPath = getParentPath(dataPath);\n parent = getValueByPath(formData, parentPath) || {};\n if (typeof func === 'string') {\n funcBody = func.substring(2, func.length - 2);\n str = `\\n var $user=${JSON.stringify(userSession)}; return ` + funcBody.replace(/\\bformData\\b/g, JSON.stringify(formData).replace(/\\bglobal\\b/g, globalTag)).replace(/\\bglobal\\b/g, JSON.stringify(global)).replace(new RegExp('\\\\b' + globalTag + '\\\\b', 'g'), 'global').replace(/rootValue/g, JSON.stringify(parent));\n try {\n return Function(str)();\n } catch (_error) {\n error = _error;\n console.log(error, func, dataPath);\n return func;\n }\n } else {\n return func;\n }\n};","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-11-01 15:51:00\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-09-25 14:53:05\n * @Description: \n */\nimport { i18next } from \"../i18n\";\n\nexport const getSchema = async (uiSchema, ctx) => {\n const schemaApiAdaptor = `\n let formSchema = {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"\\${objectName}\",\n \"recordId\": \"\",\n \"mode\": \"edit\",\n \"layout\": \"normal\"\n };\n\n if (payload && payload.schema) {\n formSchema = _.isString(payload.schema) ? JSON.parse(payload.schema) : payload.schema;\n }\n\n const fields = ${JSON.stringify(uiSchema.fields)};\n const selectedRowResponseResult = api.body.selectedRowResponseResult;\n let defaultData = {}; \n\n if(!_.isEmpty(selectedRowResponseResult)){\n const fieldsKeys = _.keys(fields);\n // 如果新建记录时复制的数据中有omit或其他不相关字段数据时不应该一起保存到数据库,\n // 原规则见:https://github.com/steedos/steedos-frontend/issues/297\n _.forEach(selectedRowResponseResult, (val, key) => {\n if (fieldsKeys.indexOf(key) > -1 && fields[key].omit !== true) {\n defaultData[key] = val;\n }\n })\n }\n\n const _master = api.body._master;\n if(_master && _master._isRelated){\n const relatedKey = _master.relatedKey;\n const masterObjectName = _master.objectName;\n const recordId = _master.recordId;\n let relatedKeySaveValue = recordId;\n const relatedField = fields[relatedKey];\n if(relatedField.reference_to_field && relatedField.reference_to_field !== '_id'){\n relatedKeySaveValue = _master.record[relatedField.reference_to_field];\n }\n let relatedKeyValue; \n if(!_.isString(relatedField.reference_to)){\n relatedKeyValue = { o: masterObjectName, ids: [relatedKeySaveValue] };\n }else if (relatedField.multiple) {\n relatedKeyValue = [relatedKeySaveValue];\n } else {\n relatedKeyValue = relatedKeySaveValue;\n }\n defaultData[relatedKey]=relatedKeyValue;\n }\n\n if(!_.isEmpty(defaultData)){\n if(payload.schema){\n // 表单微页面第一层要求是page\n formSchema.data.defaultData = defaultData;\n }else{\n formSchema.defaultData = defaultData;\n }\n }\n\n return {\n data: formSchema\n };\n `;\n const onDialogCancelScript = `\n // 这里加setTimeout是因为amis的Bug,它会先触发cancel事件执行此脚本关闭父窗口然后再关闭子窗口\n // 正确的顺序应该是先关闭子窗口再关闭父窗口,顺序错了会造成第二次点击新建按钮的时候异常\n setTimeout(function(){\n doAction({\n \"actionType\": \"cancel\",\n \"componentId\": \"object_actions_drawer_${uiSchema.name}\"\n });\n }, 200);\n `;\n const getSelectedRowsScript = `\n const isLookup = event.data.isLookup;\n if(isLookup){\n // lookup弹出窗口的新建功能不需要支持复制新建\n return;\n }\n const uiSchema = event.data.uiSchema;\n const objectName = event.data.objectName;\n const listViewRef = event.context.scoped.getComponentById(\"listview_\" + objectName);\n const selectedItems = listViewRef && listViewRef.props.store.toJSON().selectedItems || [];\n event.data.selectedIds = _.map(selectedItems, uiSchema.idFieldName || '_id');\n `;\n return {\n \"type\": \"service\",\n \"body\": [\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_form_new'),\n \"id\": \"u:standard_new\",\n \"level\": \"default\",\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": getSelectedRowsScript\n },\n {\n \"actionType\": \"ajax\",\n \"outputVar\": \"selectedRowResponseResult\",\n \"args\": {\n \"api\": {\n \"url\": \"${context.rootUrl}/api/v1/${uiSchema.name}/${selectedIds|first}\",\n \"method\": \"get\"\n }\n },\n \"expression\": \"${selectedIds.length > 0}\"\n },\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"data\": {\n \"$master\": \"$$\",\n \"_master\": \"${_master}\",\n \"_master._isRelated\": \"${_isRelated}\",\n \"_master.relatedKey\": \"${relatedKey}\",\n \"appId\": \"${appId}\",\n \"objectName\": \"${objectName}\",\n \"context\": \"${context}\",\n \"global\": \"${global}\",\n \"listViewId\": \"${listViewId}\",\n \"displayAs\": \"${displayAs}\",\n \"uiSchema\": \"${uiSchema}\",\n \"isLookup\": \"${isLookup}\",\n \"listName\": \"${listName}\",\n \"selectedRowResponseResult\": \"${selectedRowResponseResult}\",\n },\n \"title\":i18next.t('frontend_form_new') + \" ${uiSchema.label | raw}\",\n \"body\": [\n {\n \"type\": \"service\",\n \"id\": \"u:1678e148c4d2\",\n \"messages\": {},\n \"schemaApi\": {\n \"data\": {\n \"isLookup\": \"${isLookup}\",\n \"_master\": \"${_master}\",\n \"url\": \"${context.rootUrl}/api/pageSchema/form?app=${appId}&objectApiName=${objectName}&formFactor=${formFactor}\",\n \"selectedRowResponseResult\": \"${selectedRowResponseResult}\"\n },\n \"url\": \"${context.rootUrl}/api/pageSchema/form?app=${appId}&objectApiName=${objectName}&formFactor=${formFactor}\",\n \"method\": \"get\",\n \"messages\": {\n },\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"requestAdaptor\": \"return { ...api, url: api.body.url }\",\n \"adaptor\": schemaApiAdaptor\n }\n }\n ],\n \"showCloseButton\": true,\n \"id\": \"u:e11347411d2d\",\n \"closeOnEsc\": false,\n \"closeOnOutside\": false,\n \"size\": \"lg\",\n \"onEvent\": {\n \"cancel\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onDialogCancelScript,\n \"expression\": \"${window:innerWidth < 768}\",\n }\n ]\n }\n },\n \"actions\": [\n {\n type: 'button',\n actionType: 'cancel',\n label: i18next.t('frontend_form_cancel')\n },\n {\n type: 'button',\n label: i18next.t('frontend_form_save_and_new'),\n actionType: 'confirm',\n close: false,\n id: \"confirmAndNew\"\n },\n {\n type: 'button',\n actionType: 'confirm',\n label: i18next.t('frontend_form_save'),\n primary: true\n },\n ]\n }\n }\n ]\n }\n }\n }\n ],\n \"regions\": [\n \"body\"\n ],\n \"className\": \"p-0 border-0\",\n \"id\": \"u:aef99d937b10\"\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-13 15:18:03\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-04-11 10:34:26\n * @Description: \n */\nimport { fetchAPI } from './steedos.client';\n\nexport async function getPage({type, pageId = '', appId, objectName = '', recordId = '', formFactor = 'LARGE'}){\n const api = `/api/pageSchema/${type}?app=${appId}&objectApiName=${objectName}&recordId=${recordId}&pageId=${pageId}&formFactor=${formFactor}`;\n const page = await fetchAPI(api);\n if (page && page.schema) {\n page.schema = JSON.parse(page.schema)\n if(page.schema.data){\n delete page.schema.data.recordId;\n delete page.schema.data.objectName;\n delete page.schema.data.context;\n delete page.schema.data.global\n }\n return page;\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-11-01 15:49:58\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-06-28 23:22:31\n * @Description:\n */\nimport { i18next } from \"../i18n\";\nimport { getPage } from '../lib/page'\n\nexport const getSchema = async (uiSchema, ctx) => {\n const title = i18next.t('frontend_form_edit') + \" \" + uiSchema.label;\n\n const defaultFormSchema = {\n type: \"steedos-object-form\",\n label: \"对象表单\",\n objectApiName: \"${objectName}\",\n recordId: \"${recordId}\",\n id: \"u:d2b0c083c38f\",\n mode: \"edit\",\n };\n\n let formSchema = defaultFormSchema;\n const page = await getPage({\n type: \"form\",\n appId: ctx.appId,\n objectName: ctx.objectName,\n formFactor: ctx.formFactor,\n });\n\n if (page) {\n formSchema = _.isString(page.schema)\n ? JSON.parse(page.schema)\n : page.schema;\n }\n \n const onDialogCancelScript = `\n // 这里加setTimeout是因为amis的Bug,它会先触发cancel事件执行此脚本关闭父窗口然后再关闭子窗口\n // 正确的顺序应该是先关闭子窗口再关闭父窗口,顺序错了会造成第二次点击编辑按钮的时候异常\n setTimeout(function(){\n doAction({\n \"actionType\": \"cancel\",\n \"componentId\": \"object_actions_drawer_${uiSchema.name}\"\n });\n }, 200);\n `;\n\n return {\n type: \"service\",\n body: [\n {\n type: \"button\",\n label: i18next.t('frontend_form_edit'),\n id: \"u:standard_edit\",\n onEvent: {\n click: {\n actions: [\n {\n actionType: \"dialog\",\n dialog: {\n type: \"dialog\",\n title: title,\n bodyClassName: \"\",\n body: [formSchema],\n id: \"u:ee95697baa4f\",\n closeOnEsc: false,\n closeOnOutside: false,\n showCloseButton: true,\n size: \"lg\",\n \"onEvent\": {\n \"cancel\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onDialogCancelScript,\n \"expression\": \"${window:innerWidth < 768}\",\n }\n ]\n }\n },\n },\n },\n ],\n weight: 0,\n },\n },\n },\n ],\n regions: [\"body\"],\n className: \"\",\n id: \"u:3c5cbc0429bb\",\n };\n};\n","/*\n * @Author: 殷亮辉 yinlianghui@hotoa.com\n * @Date: 2023-03-22 09:31:21\n * @LastEditors: Please set LastEditors\n * @LastEditTime: 2023-04-12 10:35:36\n */\nimport { i18next } from \"../i18n\";\nexport const getSchema = (uiSchema)=>{\n return {\n \"type\": \"service\",\n \"className\": \"p-0\",\n \"body\": [\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_form_delete'),\n \"confirmText\": i18next.t('frontend_delete_many_confirm_text'),\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"args\": {\n \"api\": {\n \"method\": \"post\",\n \"url\": \"${context.rootUrl}/graphql\",\n \"data\": {\n \"&\": \"$$\",\n \"recordId\": \"${recordId}\",\n \"objectName\": \"${objectName}\"\n },\n \"requestAdaptor\": \"const {recordId, objectName} = api.body; var deleteArray = []; deleteArray.push(`delete:${objectName}__delete(id: \\\"${recordId}\\\")`); api.data = {query: `mutation{${deleteArray.join(',')}}`}; return api;\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"adaptor\": `\n if(payload.errors){\n payload.status = 2;\n payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;\n }\n return payload;\n `,\n }\n },\n \"actionType\": \"ajax\"\n },\n {\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": `@data.changed.${uiSchema.name}`\n },\n \"data\": {\n \"objectName\": `${uiSchema.name}`,\n \"__deletedRecord\": true\n }\n },\n {\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": \"@data.changed.${_master.objectName}\"\n },\n \"data\": {\n \"objectName\": \"${_master.objectName}\",\n \"_isRelated\": \"${_isRelated}\"\n },\n \"expression\": `\\${_master.objectName != '${uiSchema.name}' && _master.objectName}`\n }\n ]\n }\n }\n }\n ],\n \"regions\": [\n \"body\"\n ]\n }\n}","import { i18next } from \"../i18n\";\n\nexport const getSchema = (uiSchema) => {\n return {\n type: \"service\",\n body: [\n {\n type: \"button\",\n label: i18next.t('frontend_import_data'),\n id: \"u:import_data\",\n onEvent: {\n click: {\n actions: [\n {\n actionType: \"dialog\",\n dialog: {\n data: {\n \"&\": \"$$\",\n \"object_name\": \"${objectName}\"\n },\n type: \"dialog\",\n title: i18next.t('frontend_import_data'),\n body: [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"queue_import_history\",\n \"recordId\": \"\",\n \"mode\": \"edit\",\n \"layout\": \"normal\",\n \"defaultData\":{\n \"object_name\": \"${objectName}\"\n },\n \"fieldsExtend\":{\n \"object_name\": {\n \"amis\": {\n \"hidden\": true\n }\n }\n },\n \"form\": {\n debug: false,\n resetAfterSubmit: false,\n initApi: {\n url: '/api/v1/queue_import_history/${recordId}?fields=[\"state\"]',\n sendOn: 'this.recordId',\n responseData: {\n importState: \"${state}\"\n }\n },\n interval: 3000,\n stopAutoRefreshWhen: \"this.importState === 'finished'\",\n initFetch: false,\n onEvent: {\n inited: {\n weight: 0,\n actions: [\n {\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": `@data.changed.${uiSchema.name}`\n },\n \"data\": {\n \"objectName\": `${uiSchema.name}`,\n \"displayAs\": \"${displayAs}\",\n \"recordId\": \"xxxx\" //不可以省略,否则会进入进入记录详细页面\n },\n \"expression\": \"this.importState === 'finished'\"\n },\n {\n \"actionType\": \"closeDialog\",\n \"expression\": \"this.importState === 'finished'\"\n }\n ]\n },\n submitSucc: {\n weight: 0,\n actions: [\n {\n args: {\n api: {\n url: \"${context.rootUrl}/api/data/initiateImport\",\n method: \"post\",\n data: {\n eventData: \"${event.data}\",\n },\n dataType: \"json\",\n requestAdaptor:\n \"\\napi.data = {\\n importObjectHistoryId: api.body.eventData.result.data.recordId\\n}\\nreturn api;\",\n adaptor:\n \"payload.status = payload.status === 'success' ? 0 : payload.status;\\nconsole.log(\\\"payload ssss==>\\\", payload)\\nreturn payload;\",\n headers: {\n Authorization:\n \"Bearer ${context.tenantId},${context.authToken}\",\n },\n },\n messages: {\n success: i18next.t('frontend_import_data_message_success'),\n failed: i18next.t('frontend_import_data_message_failed'),\n },\n },\n actionType: \"ajax\",\n expression: \"event.data.result\",\n },\n ],\n },\n },\n closeDialogOnSubmit: false,\n }\n }\n ],\n id: \"u:dc05498d3bd4\",\n closeOnEsc: false,\n closeOnOutside: false,\n showCloseButton: true,\n size: \"lg\",\n },\n },\n ],\n weight: 0,\n },\n },\n level: \"default\",\n },\n ],\n regions: [\"body\"],\n className: \"p-0\",\n id: \"u:bd2f9c4e986f\",\n };\n};\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-11-07 17:00:38\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-08-24 16:44:42\n * @Description: \n */\nimport { i18next } from \"../i18n\";\n\nexport const getSchema = (uiSchema)=>{\n return {\n \"type\": \"service\",\n \"className\": \"p-0\",\n \"body\": [\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_form_view'),\n \"className\": \"border-none\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {\n \"blank\": false,\n \"url\": \"/app/${app_id}/${objectName}/view/${_id}?side_object=${objectName}&side_listview_id=${listName}\"\n },\n \"actionType\": \"link\"\n }\n ]\n }\n },\n \"id\": \"u:ef35c9ae1d19\"\n }\n ],\n \"regions\": [\n \"body\"\n ]\n }\n}","import { i18next } from \"../i18n\";\n\nexport const getSchema = async (uiSchema, ctx) => {\n const requestAdaptor = function () {\n let uiSchema = api.body.uiSchema;\n let list_views_name = api.body.listName;\n let list_views = uiSchema.list_views;\n const listViewPropsStoreKey = location.pathname + \"/crud/query\";\n const query = JSON.parse(sessionStorage.getItem(listViewPropsStoreKey));\n const { filters, sort, fields: select } = query;\n let filename = uiSchema.label + \"-\" + list_views[list_views_name].label;\n\n var url_tmp = api.url.split('?')[0];\n api.url = url_tmp + \"?$select=\" + encodeURIComponent(select.toString()) + \"&filename=\" + encodeURIComponent(filename);\n // 判断sort 和 filters\n if (sort.length > 0) {\n api.url += \"&$orderby=\" + encodeURIComponent(sort);\n }\n if (filters && filters.length > 0) {\n api.url = api.url + \"&filters=\" + encodeURIComponent(JSON.stringify(filters));\n }\n return api;\n }\n return {\n \"type\": \"service\",\n \"body\": [\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_export_excel'),\n \"id\": \"u:standard_export_excel\",\n \"level\": \"default\",\n \"disabledTip\": i18next.t('frontend_export_excel_toast'),\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [{\n \"componentId\": \"u:standard_export_excel\",\n \"actionType\": \"disabled\"\n },\n {\n \"args\": {\n \"api\": {\n \"url\": \"${context.rootUrl}/api/record/export/${objectName}\",\n \"method\": \"get\",\n \"messages\": {},\n \"requestAdaptor\": requestAdaptor.toString().match(/function[^{]+\\{([\\s\\S]*)\\}$/)[1],\n \"data\": {\n \"uiSchema\": \"${uiSchema}\",\n \"listName\": \"${listName}\"\n },\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n },\n \"actionType\": \"download\"\n },\n {\n \"componentId\": \"u:standard_export_excel\",\n \"actionType\": \"enabled\"\n }\n ]\n }\n }\n }\n ]\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-11-01 15:53:07\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-02-28 17:06:22\n * @Description: \n */\nimport { i18next } from \"../i18n\";\nimport * as standardNew from '../schema/standard_new.amis.js'\nimport * as standardEdit from '../schema/standard_edit.amis.js'\nimport * as standardDelete from '../schema/standard_delete.amis.js'\nimport * as standardImportData from '../schema/standard_import_data.amis.js'\nimport * as standardOpenView from '../schema/standard_open_view.amis.js'\nimport * as standardExportExcel from '../schema/standard_export_excel.amis.js'\n\nexport const StandardButtons = {\n getStandardNew: async (uiSchema, ctx)=>{\n return {\n type: 'amis_button',\n amis_schema: await standardNew.getSchema(uiSchema, ctx)\n }\n },\n getStandardEdit: async (uiSchema, ctx)=>{\n return {\n type: 'amis_button',\n amis_schema: await standardEdit.getSchema(uiSchema, ctx)\n }\n },\n getStandardDelete: async (uiSchema, ctx)=>{\n return {\n type: 'amis_button',\n amis_schema: await standardDelete.getSchema(uiSchema, ctx)\n }\n },\n getStandardDeleteMany: async (uiSchema, ctx)=>{\n return {\n type: 'script',\n todo: function(){\n const {\n appId,\n objectName,\n uiSchema\n } = this;\n const scopeId = this.scopeId || `amis-${appId}-${objectName}-listview`;\n const scope = this.scope || SteedosUI?.getRef(scopeId);\n //https://github.com/baidu/amis/pull/6807 .parent的改动是为适应3.2getComponentById的规则改动,不影响2.9\n const listViewRef = scope.parent?.getComponentById(`listview_${uiSchema.name}`);\n if(_.isEmpty(listViewRef.props.store.toJSON().selectedItems)){\n listViewRef.handleAction({}, {\n \"actionType\": \"toast\",\n \"toast\": {\n \"items\": [\n {\n \"position\": \"top-right\",\n \"body\": i18next.t('frontend_delete_many_selected_required')\n }\n ]\n }\n })\n }else{\n listViewRef.handleBulkAction(listViewRef.props.store.toJSON().selectedItems,[],{},listViewRef.props.bulkActions[0]);\n }\n }\n }\n },\n getStandardImportData: async (uiSchema, ctx)=>{\n return {\n type: 'amis_button',\n amis_schema: await standardImportData.getSchema(uiSchema, ctx)\n }\n },\n getStandardOpenView: async (uiSchema, ctx)=>{\n return {\n type: 'amis_button',\n amis_schema: await standardOpenView.getSchema(uiSchema, ctx)\n }\n },\n getStandardExportExcel: async (uiSchema, ctx)=>{\n return {\n type: 'amis_button',\n amis_schema: await standardExportExcel.getSchema(uiSchema, ctx)\n }\n }\n}","import * as _ from 'lodash';\nimport { isExpression, parseSingleExpression } from \"./expression\";\nimport { getUISchema } from \"./objects\";\nimport { i18next } from '../i18n'\n\nimport { StandardButtons } from '../standard/button'\n\nconst getGlobalData = () => {\n return {\n now: new Date(),\n };\n};\n\nexport function getButtonVisibleOn(button){\n let visible= button.visible;\n\n if(button._visible){\n visible = button._visible;\n }\n\n if(_.isBoolean(visible)){\n visible = visible.toString();\n }\n\n if(visible){\n // if(visible.indexOf(\"Meteor.\") > 0 || visible.indexOf(\"Creator.\") > 0 || visible.indexOf(\"Session.\") > 0){\n // console.warn('无效的visible', visible)\n // return 'false';\n // }\n if(visible.trim().startsWith('function')){\n visible = `${visible}.apply({\n object: uiSchema\n }, [objectName, typeof _id === 'undefined' ? null: _id, typeof record === 'undefined' ? (typeof recordPermissions === 'undefined' ? {} : recordPermissions) : record.recordPermissions, data])`\n }\n }\n\n if(button.type === 'amis_button'){\n let amisSchema = button.amis_schema;\n if(_.isString(amisSchema)){\n amisSchema = JSON.parse(amisSchema);\n }\n if(amisSchema && amisSchema.body && amisSchema.body.length > 0){\n const btn1 = amisSchema.body[0];\n if(_.hasIn(btn1, 'visibleOn')){\n /* 当含有“更多”按钮或者“下拉”箭头按钮时,单个按钮的visibleOn需要合并到 “更多”按钮或者“下拉”箭头按钮的 visibleOn 中,用||隔开。\n visibleOn的格式需要保持一致; 不能是 js 和 ${xxx} 混合的表达式;\n visibleOn的值需要是js格式,因为默认的编辑、删除等系统按钮的visibleOn的格式就是js格式(function(){}); \n */\n return btn1.visibleOn\n } \n }\n }\n return visible;\n}\n\nexport const getButtonVisible = (button, ctx) => {\n if (button._visible) {\n if (_.startsWith(_.trim(button._visible), \"function\")) {\n window.eval(\"var fun = \" + button._visible);\n button.visible = fun;\n } else if (isExpression(button._visible)) {\n button.visible = (props) => {\n parseSingleExpression(\n button._visible,\n props.record,\n \"#\",\n getGlobalData(),\n props.userSession\n );\n };\n }\n }\n if (_.isFunction(button.visible)) {\n try {\n return button.visible(ctx);\n } catch (error) {\n // console.error(`${button.name} visible error: ${error}`);\n }\n } else {\n return button.visible;\n }\n};\n\n\nexport const standardButtonsTodo = {\n // 批量删除比较特殊, CRUD组件在外部无法触发批量操作action.\n standard_delete_many: function(){\n const {\n listViewId,\n uiSchema,\n scopeId\n } = this;\n const listViewRef = SteedosUI?.getRef(scopeId || listViewId).getComponentById(`listview_${uiSchema.name}`)\n \n if(_.isEmpty(listViewRef.props.store.toJSON().selectedItems)){\n listViewRef.handleAction({}, {\n \"actionType\": \"toast\",\n \"toast\": {\n \"items\": [\n {\n \"position\": \"top-right\",\n \"body\": \"请选择要删除的项\"\n }\n ]\n }\n })\n }else{\n listViewRef.handleBulkAction(listViewRef.props.store.toJSON().selectedItems,[],{},listViewRef.props.bulkActions[0]);\n }\n }\n};\n\n\n/**\n * 按钮显隐规则: 优先使用页面布局上的配置.\n * @param {*} uiSchema \n * @param {*} ctx \n * @returns \n */\nexport const getButtons = (uiSchema, ctx) => {\n const disabledButtons = uiSchema.permissions && uiSchema.permissions.disabled_actions;\n let buttons = _.sortBy(_.values(uiSchema.actions), \"sort\");\n if (_.has(uiSchema, \"allow_customActions\")) {\n buttons = _.filter(buttons, (button) => {\n return _.include(uiSchema.allow_customActions, button.name); // || _.include(_.keys(Creator.getObject('base').actions) || {}, button.name)\n });\n }\n if (_.has(uiSchema, \"exclude_actions\")) {\n buttons = _.filter(buttons, (button) => {\n return !_.include(uiSchema.exclude_actions, button.name);\n });\n }\n\n _.each(buttons, (button) => {\n button.objectName = uiSchema.name;\n if (\n ctx.isMobile &&\n [\"record\", \"record_only\"].indexOf(button.on) > -1 &&\n button.name != \"standard_edit\"\n ) {\n if (button.on == \"record_only\") {\n button.on = \"record_only_more\";\n } else {\n button.on = \"record_more\";\n }\n }\n });\n\n if (\n ctx.isMobile &&\n [\"cms_files\", \"cfs.files.filerecord\"].indexOf(uiSchema.name) > -1\n ) {\n _.map(buttons, (button) => {\n if (button.name === \"standard_edit\") {\n button.on = \"record_more\";\n }\n if (button.name === \"download\") {\n button.on = \"record\";\n }\n });\n }\n\n return _.filter(buttons, (button) => {\n return _.indexOf(disabledButtons, button.name) < 0 && button.name != 'standard_query';\n });\n};\n\nexport const getListViewButtons = (uiSchema, ctx) => {\n const buttons = getButtons(uiSchema, ctx);\n const listButtons = _.filter(buttons, (button) => {\n return button.on == \"list\";\n });\n return listButtons;\n};\n\nexport const getObjectDetailButtons = (uiSchema, ctx) => {\n const buttons = getButtons(uiSchema, ctx);\n const detailButtons = _.filter(buttons, (button) => {\n return button.on == \"record\" || button.on == \"record_only\";\n });\n return _.sortBy(detailButtons, \"sort\");\n};\n\nexport const getObjectDetailMoreButtons = (uiSchema, ctx) => {\n const buttons = getButtons(uiSchema, ctx);\n const moreButtons = _.filter(buttons, (button) => {\n return button.on == \"record_more\" || button.on == \"record_only_more\";\n });\n return _.sortBy(moreButtons, \"sort\");\n};\n\nexport const getListViewItemButtons = async (uiSchema, ctx)=>{\n const buttons = getButtons(uiSchema, ctx);\n const listButtons = _.filter(buttons, (button) => {\n return button.on == \"record\" || button.on == \"list_item\" || button.on === 'record_more';\n });\n return listButtons;\n}\n\nexport const getObjectRelatedListButtons = (uiSchema, ctx)=>{\n // const buttons = getButtons(uiSchema, ctx);\n // const relatedListButtons = _.filter(buttons, (button) => {\n // if(button.objectName === 'cms_files'){\n // // TODO:附件对象本身没有上传按钮,需要自定义\n // }else{\n // return button.name == \"standard_new\";\n // }\n // });\n // return relatedListButtons;\n const buttons = getButtons(uiSchema, ctx);\n const listButtons = _.filter(buttons, (button) => {\n return button.on == \"list\";\n });\n return listButtons;\n}\n\n/**\n * 由此函数负责内置按钮的转换\n * @param {*} objectName \n * @param {*} buttonName \n * @param {*} ctx \n * @returns \n */\nexport const getButton = async (objectName, buttonName, ctx)=>{\n const uiSchema = await getUISchema(objectName);\n const { props } = ctx;\n if(uiSchema){\n const buttons = await getButtons(uiSchema, ctx);\n const button = _.find(buttons, (button)=>{\n return button.name === buttonName\n });\n\n if(!button){\n return ;\n }\n\n if(button.name == 'standard_edit' && (button.todo === 'standard_edit' && button.type != \"amis_button\")){ // && button._visible.indexOf('Steedos.StandardObjects.Base.Actions.standard_edit.visible.apply') > 0\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n ...await StandardButtons.getStandardEdit(uiSchema, ctx)\n };\n }\n if(objectName != 'cms_files' && button.name == 'standard_new' && (button.todo === 'standard_new' && button.type != \"amis_button\")){ //&& button._visible.indexOf('Steedos.StandardObjects.Base.Actions.standard_new.visible.apply') > 0\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n ...await StandardButtons.getStandardNew(uiSchema, ctx)\n }\n }\n\n // 如果是standard_delete 且 _visible 中调用了 Steedos 函数, 则自动添加标准的删除功能\n if(button.name == 'standard_delete' && (button.todo === 'standard_delete' && button.type != \"amis_button\")){ // && button._visible.indexOf('Steedos.StandardObjects.Base.Actions.standard_delete.visible.apply') > 0\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n sort: button.sort,\n ...await StandardButtons.getStandardDelete(uiSchema, ctx)\n }\n }\n\n if(uiSchema.hasImportTemplates && button.name === 'standard_import_data'){\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n sort: button.sort,\n ...await StandardButtons.getStandardImportData(uiSchema, ctx)\n }\n }\n\n if(button.name === 'standard_export_excel'){\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n sort: button.sort,\n ...await StandardButtons.getStandardExportExcel(uiSchema, ctx)\n }\n }\n\n if(button.name === 'standard_open_view'){\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n sort: button.sort,\n ...await StandardButtons.getStandardOpenView(uiSchema, ctx)\n }\n }\n\n if(button.name === 'standard_delete_many'){\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n sort: button.sort,\n ...await StandardButtons.getStandardDeleteMany(uiSchema, ctx)\n }\n }\n\n return button;\n\n }\n}\n\nexport const execute = (button, props) => {\n if (!button.todo) {\n return; //TODO 弹出提示未配置todo\n }\n\n if (_.isString(button.todo)) {\n if (_.startsWith(_.trim(button.todo), \"function\")) {\n window.eval(\"var fun = \" + button.todo);\n button.todo = fun;\n }\n }\n if (_.isFunction(button.todo)) {\n const todoThis = {\n objectName: props.objectName, \n object_name: props.objectName, \n object: props.uiSchema, \n record: props.record,\n recordId: props.recordId,\n record_id: props.recordId,\n ...props,\n action: button\n }\n return button.todo.apply(todoThis, [todoThis.objectName, todoThis.recordId]);\n }\n};\n\nexport const executeButton = execute;\n\n\nconst getObjectDetailHeaderButtons = (objectSchema, recordId)=>{\n const { name } = objectSchema;\n const buttons = getObjectDetailButtons(objectSchema, {});\n const moreButtons = getObjectDetailMoreButtons(objectSchema, {\n recordId: recordId,\n objectName: name\n })\n let amisButtonsSchema = _.map(buttons, (button) => {\n return {\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n className: `button_${button.name}`\n }\n })\n let moreButtonsVisibleOn = '';\n let dropdownButtons = _.map(moreButtons, (button, index) => {\n if(index === 0){\n moreButtonsVisibleOn = getButtonVisibleOn(button);\n }else{\n moreButtonsVisibleOn = moreButtonsVisibleOn + ' || ' +getButtonVisibleOn(button);\n }\n \n return {\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n }\n })\n return {\n buttons: amisButtonsSchema,\n moreButtons: dropdownButtons,\n moreButtonsVisibleOn\n };\n}\n\nexport const getObjectDetailButtonsSchemas = (objectSchema, recordId, ctx)=>{\n const { buttons, moreButtons, moreButtonsVisibleOn } = getObjectDetailHeaderButtons(objectSchema, recordId);\n if(ctx.formFactor === 'SMALL'){\n const dropdownButtons = [\n ..._.map(buttons, (button) => {\n button.className += ' w-full';\n return button;\n }),\n ..._.map(moreButtons, (button) => {\n button.className += ' w-full';\n return button;\n })\n ];\n\n let phoneMoreButtonsVisibleOn = '';\n _.forEach(dropdownButtons, (button, index) => {\n if(index === 0){\n phoneMoreButtonsVisibleOn = button.visibleOn;\n }else{\n phoneMoreButtonsVisibleOn = phoneMoreButtonsVisibleOn + ' || ' + button.visibleOn;\n }\n })\n\n return {\n \"type\": \"button\",\n \"icon\": \"fa fa-angle-down\",\n \"visibleOn\": phoneMoreButtonsVisibleOn,\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"drawer\",\n \"drawer\": {\n \"type\": \"drawer\",\n \"title\": i18next.t('frontend_operation'),\n \"id\": \"object_actions_drawer_\" + objectSchema.name,\n \"body\": [\n {\n \"type\": \"button-group\",\n \"id\": \"u:fd837823be5b\",\n \"vertical\": true,\n \"tiled\": true,\n \"buttons\": dropdownButtons,\n \"btnLevel\": \"enhance\",\n \"className\": \"w-full\",\n \"btnClassName\": \"w-full\",\n \"size\": \"lg\"\n }\n ],\n \"position\": \"bottom\",\n \"closeOnOutside\": true,\n \"resizable\": false,\n \"className\": \"buttons-drawer\",\n \"bodyClassName\": \"m-none p-none\",\n \"actions\": []\n }\n }\n ]\n }\n }\n }\n }else{\n if(moreButtons.length > 0){\n const dropdownButtonsSchema = {\n type: \"steedos-dropdown-button\",\n label: \"\",\n buttons: moreButtons,\n className: 'slds-icon ml-1',\n visibleOn: moreButtonsVisibleOn\n }\n buttons.push(dropdownButtonsSchema);\n }\n return buttons;\n }\n}\n\n\nexport const getObjectListViewButtonsSchemas = (objectSchema, ctx)=>{\n const buttons = getListViewButtons(objectSchema, ctx);\n if(ctx.formFactor === 'SMALL'){\n return {\n \"type\": \"button\",\n \"icon\": \"fa fa-angle-down\",\n \"className\": \"mr-0\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"drawer\",\n \"drawer\": {\n \"type\": \"drawer\",\n \"title\": i18next.t('frontend_operation'),\n \"id\": \"object_actions_drawer_\" + objectSchema.name,\n \"body\": [\n {\n \"type\": \"button-group\",\n \"id\": \"u:fd837823be5b\",\n \"vertical\": true,\n \"tiled\": true,\n \"buttons\": [\n ..._.map(buttons, (button)=>{\n return {\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n className: `button_${button.name} w-full`\n }\n })\n ],\n \"btnLevel\": \"enhance\",\n \"className\": \"w-full\",\n \"btnClassName\": \"w-full\",\n \"size\": \"lg\"\n }\n ],\n \"position\": \"bottom\",\n \"closeOnOutside\": true,\n \"resizable\": false,\n \"className\": \"buttons-drawer\",\n \"bodyClassName\": \"m-none p-none\",\n \"actions\": []\n }\n }\n ]\n }\n }\n }\n }else{\n return _.map(buttons, (button) => {\n return {\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n className: `button_${button.name}`\n }\n });\n }\n}\n\nexport const getObjectRecordDetailRelatedListButtonsSchemas = (objectSchema, ctx)=>{\n const buttons = getObjectRelatedListButtons(objectSchema, ctx);\n if(ctx.formFactor === 'SMALL'){\n return {\n \"type\": \"button\",\n \"icon\": \"fa fa-angle-down\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"drawer\",\n \"drawer\": {\n \"type\": \"drawer\",\n \"title\": i18next.t('frontend_operation'),\n \"id\": \"object_actions_drawer_\" + objectSchema.name,\n \"body\": [\n {\n \"type\": \"button-group\",\n \"vertical\": true,\n \"tiled\": true,\n \"buttons\": [\n ..._.map(buttons, (button)=>{\n return {\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n className: `button_${button.name} w-full`\n }\n })\n ],\n \"btnLevel\": \"enhance\",\n \"className\": \"w-full\",\n \"btnClassName\": \"w-full\",\n \"size\": \"lg\"\n }\n ],\n \"position\": \"bottom\",\n \"closeOnOutside\": true,\n \"resizable\": false,\n \"className\": \"buttons-drawer\",\n \"bodyClassName\": \"m-none p-none\",\n \"actions\": []\n }\n }\n ]\n }\n }\n }\n }else{\n return _.map(buttons, (button) => {\n return {\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n className: `button_${button.name}`\n }\n });\n }\n}","import { getFieldSearchable } from \"./fields/index\";\nimport { includes, map } from \"lodash\";\nimport { i18next } from \"../../../i18n\"\nexport async function getObjectFieldsFilterButtonSchema(objectSchema) {\n // const amisListViewId = `listview_${objectSchema.name}`;\n return {\n \"type\": \"button\",\n \"label\": \"\",\n \"icon\": \"fa fa-search\",\n \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": \"broadcast_toggle_fields_filter\"\n }\n }\n ]\n }\n }\n }\n}\n\nexport async function getObjectFieldsFilterFormSchema(ctx) {\n\n if (!ctx) {\n ctx = {};\n }\n const formSchema = {\n \"type\": \"service\",\n \"visibleOn\": \"this.filterFormSearchableFields && this.filterFormSearchableFields.length\",\n \"className\": ctx.formFactor === 'SMALL' ? \"slds-filters__body p-0 mb-2 overflow-y-auto overflow-x-hidden\" : \"slds-filters__body p-0 sm:grid sm:gap-2 sm:grid-cols-4 mb-2\",\n \"style\":{\n \"max-height\":ctx.formFactor === 'SMALL'?\"30vh\":\"unset\"\n },\n \"schemaApi\": {\n method: 'post',\n url: `\\${context.rootUrl}/graphql?reload=\\${filterFormSearchableFields|join}`,\n data: {\n $self: \"$$\",\n query: \"{\\n data: objects(filters: [[\\\"_id\\\",\\\"=\\\",null]],top: 1, skip: 0){_id}\\n }\"\n },\n requestAdaptor: `\n return {\n ...api,\n data: {\n query: api.data.query\n }\n };\n `,\n adaptor: `\n if(payload.errors){\n payload.status = 2;\n payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;\n }\n const selfData = api.body.$self;\n const uiSchema = selfData.uiSchema;\n const fields = uiSchema.fields;\n const filterFormSearchableFields = (selfData.filterFormSearchableFields || []).filter(function(item){\n return !!fields[item]\n });\n const resolveAll = function(values){\n payload.data = {\n \"body\": values\n };\n return payload;\n }\n\n const rejectAll = function(){\n console.warn(\"run function getFieldSearchable failed.\");\n }\n\n return Promise.all(filterFormSearchableFields.map(function (item) {\n const field = _.clone(fields[item]);\n if (\n field && window.isFieldTypeSearchable(field.type)\n ) {\n var ctx = ${JSON.stringify(ctx)};\n const amisField = window.getFieldSearchable(field, fields, ctx);\n return amisField;\n }\n })).then(resolveAll, rejectAll);\n `,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n };\n\n return formSchema;\n}\n\nexport async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {\n if (!ctx) {\n ctx = {};\n }\n const btnSearchId = \"btn_filter_form_search_\" + new Date().getTime();\n const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);\n const keywordsSearchBoxName = ctx.keywordsSearchBoxName || \"__keywords\";\n const onSearchScript = `\n // console.log(\"===onSearchScript=form==\");\n const scope = event.context.scoped;\n var filterForm = scope.parent.parent.getComponents().find(function(n){\n return n.props.type === \"form\";\n });\n filterForm.handleFormSubmit(event);\n // var filterFormValues = filterForm.getValues();\n // var listView = scope.parent.parent.parent.getComponents().find(function(n){\n // return n.props.type === \"crud\";\n // });\n // const removedValues = {};\n // // 设置搜索项中移除搜索项后,filterFormValues未把其字段的空值保存为own property,即hasOwnProperty属性中\n // // 这会造成handleFilterSubmit时把移除掉的搜索项字段之前的值加到过滤条件中\n // for(var k in filterFormValues){\n // if(filterFormValues[k] === \"\" && !filterFormValues.hasOwnProperty(k)){\n // removedValues[k] = null;\n // }\n // }\n // listView.handleFilterSubmit(Object.assign({}, removedValues, filterFormValues));\n // 点击搜索的时候自动收起搜索栏\n let resizeWindow = function(){\n //触发amis crud 高度重算\n setTimeout(()=>{\n window.dispatchEvent(new Event(\"resize\"))\n }, 500);\n }\n const filterService = filterForm.context.getComponents().find(function(n){\n return n.props.type === \"service\";\n });\n let showFieldsFilter = false;\n const isMobile = window.innerWidth < 768;\n if(event.data.__from_fields_filter_settings_confirm){\n // 如果是从设置搜索项点击确认按钮触发的搜索事件不应该自动关闭搜索栏\n showFieldsFilter = true;\n }\n else if(isMobile){\n // 如果是手机端,点击搜索后自动关闭搜索栏\n showFieldsFilter = false;\n }\n else if(event.data.displayAs === \"split\") {\n // PC上分栏模式下的列表,始终按手机上效果处理,即自动关闭搜索栏\n showFieldsFilter = false;\n }\n else if(window.innerHeight >= 1200){\n // 高分辨率屏幕(2k+),列表高度比较高,没必要自动关闭搜索栏\n showFieldsFilter = true;\n }\n filterService.setData({showFieldsFilter});\n // resizeWindow();//已迁移到搜索栏表单提交事件中执行,因为表单项change后也会触发表单提交了\n // 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取。\n let filterFormValues = event.data;\n let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n crudService && crudService.setData({isFieldsFilterEmpty, showFieldsFilter});\n `;\n const onCancelScript = `\n // console.log(\"===onCancelScript=form==\");\n const scope = event.context.scoped;\n var filterForm = scope.parent.parent.getComponents().find(function(n){\n return n.props.type === \"form\";\n });\n var filterFormValues = filterForm.getValues();\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n const removedValues = {};\n for(var k in filterFormValues){\n if(/^__searchable__/.test(k)){\n removedValues[k] = null;\n }\n }\n if(!event.data.isLookup){\n // 刷新浏览器后,filterFormValues值是空的,只能从本地存储中取出并重置为空值\n const listName = event.data.listName;\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n if(localListViewProps){\n localListViewProps = JSON.parse(localListViewProps);\n for(var k in localListViewProps){\n if(/^__searchable__/.test(k)){\n removedValues[k] = null;\n }\n }\n }\n }\n else{\n const keywordsSearchBoxName = \"${keywordsSearchBoxName}\";\n //lookup字段保留快速搜索条件\n removedValues[keywordsSearchBoxName] = filterFormValues[keywordsSearchBoxName];\n }\n filterForm.setValues(removedValues);//会把表单提交到toolbar的快速搜索区域,造成在快速搜索框中触发搜索时再次把搜索表单中的字段值清除掉的bug,已单独在快速搜索框那边添加搜索事件代码处理过了\n // 以下方法都无法实现清除表单值\n // filterForm.setValues({}, true)\n // filterForm.reset();\n // filterForm.handleAction({},{\n // \"actionType\": \"setValue\",\n // \"args\": {\n // \"value\": removedValues\n // }\n // });\n // 下面触发clear动作可以清除表单值,且不会把表单提交到toolbar的快速搜索区域,但是会把金额等范围字段清空成非范围字段\n // filterForm.handleAction({},{\n // \"actionType\": \"clear\"\n // });\n\n // 清除__changedFilterFormValues中的值\n crud && crud.setData({__changedFilterFormValues: {}});\n filterForm.handleFormSubmit(event);\n // crud.handleFilterSubmit(removedValues);\n\n let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, \"service\");\n filterFormService.setData({showFieldsFilter: !!!filterFormService.props.data.showFieldsFilter});\n //触发amis crud 高度重算\n setTimeout(()=>{\n window.dispatchEvent(new Event(\"resize\"))\n }, 100);\n // 移除搜索按钮上的红点\n // let crudService = scope.getComponentById(\"service_listview_\" + event.data.objectName);\n let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});\n `;\n const dataProviderInited = `\n const objectName = data.objectName;\n const isLookup = data.isLookup;\n const listName = data.listName;\n let searchableFieldsStoreKey = location.pathname + \"/searchable_fields\";\n if(isLookup){\n searchableFieldsStoreKey += \"/lookup/\" + objectName;\n }\n searchableFieldsStoreKey = searchableFieldsStoreKey + \"/\" + (data.context && data.context.userId);\n let defaultSearchableFields = localStorage.getItem(searchableFieldsStoreKey);\n if(defaultSearchableFields){\n defaultSearchableFields = defaultSearchableFields.split(\",\");\n }\n if(_.isEmpty(defaultSearchableFields) && data.uiSchema){\n let listView = data.uiSchema.list_views[data.listName];\n const sFields = listView && listView.searchable_fields;\n if(sFields && sFields.length){\n defaultSearchableFields = _.map(sFields, 'field');\n }\n }\n if(_.isEmpty(defaultSearchableFields) && data.uiSchema){\n defaultSearchableFields = _.map(\n _.sortBy(_.filter(_.values(data.uiSchema.fields), (field) => {\n return field.filterable;\n }), \"sort_no\"),\n \"name\"\n );\n }\n setData({ filterFormSearchableFields: defaultSearchableFields });\n if(isLookup){\n // looup字段过滤器不在本地缓存记住过滤条件,所以初始始终隐藏过滤器\n setData({ showFieldsFilter: false });\n }\n else{\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n if(localListViewProps){\n localListViewProps = JSON.parse(localListViewProps);\n let filterFormValues = _.pickBy(localListViewProps, function(n,k){\n return /^__searchable__/g.test(k);\n });\n if(!_.isEmpty(filterFormValues)){\n setData({ ...filterFormValues });\n const omitedEmptyFormValue = _.omitBy(filterFormValues, function(n){\n return _.isNil(n) \n || (_.isObject(n) && _.isEmpty(n)) \n || (_.isArray(n) && _.isEmpty(n.filter(function(item){return !_.isNil(item)})))\n || (_.isString(n) && n.length === 0);\n });\n // 有过滤条件时只显示搜索按钮上的红点,不自动展开搜索栏\n if(!_.isEmpty(omitedEmptyFormValue)){\n let crudService = SteedosUI.getRef(data.$scopeId).parent.getComponentById(\"service_listview_\" + data.objectName)\n crudService && crudService.setData({isFieldsFilterEmpty: false});\n // setData({ showFieldsFilter: true });//自动展开搜索栏\n }\n }\n }\n }\n `;\n const onSearchableFieldsChangeScript = `\n const data = context.props.data;\n const listName = data.listName;\n const objectName = data.objectName;\n const isLookup = data.isLookup;\n const value = data.fields;\n const scope = event.context.scoped;\n // 这里的filterForm不是name为\"listview-filter-form\"的内部form,而是crud自带的filter form\n const filterForm = scope.parent.parent.getComponents().find(function(n){\n return n.props.type === \"form\";\n });\n const filterService = filterForm.context.getComponents().find(function(n){\n return n.props.type === \"service\";\n });\n filterService.setData({ filterFormSearchableFields: value });\n let searchableFieldsStoreKey = location.pathname + \"/searchable_fields\";\n if(isLookup){\n searchableFieldsStoreKey += \"/lookup/\" + objectName;\n }\n searchableFieldsStoreKey = searchableFieldsStoreKey + \"/\" + (data.context && data.context.userId);\n localStorage.setItem(searchableFieldsStoreKey, value);\n\n // ===START===:当变更可搜索字段时,如果被移除的可搜索字段在本地存储中已经存入过滤条件中则应该清除本地存储中相关字段的过滤条件。\n const searchableFields = data.fields;\n let preSearchableFields = data.__super.fields;\n if(typeof preSearchableFields === \"string\"){\n preSearchableFields = preSearchableFields.split(\",\");\n }\n const removedFields = _.difference(preSearchableFields, searchableFields);\n\n // const getClosestAmisComponentByType = function (scope, type, name) {\n // // 递归children找到listview-filter-form\n // let re = scope.getComponents().find(function (n) {\n // return n.props.type === type && n.props.name === name;\n // });\n // if (re) {\n // return re;\n // }\n // else {\n // if (scope.children && scope.children.length) {\n // for (let i = 0; i < scope.children.length; i++) {\n // re = getClosestAmisComponentByType(scope.children[i], type, name);\n // if (re) {\n // break;\n // }\n // }\n // return re;\n // }\n \n // }\n // }\n // // 这里第二层form才是真正要提交到crud过滤条件的form\n // filterInnerForm = getClosestAmisComponentByType(filterForm.context, \"form\", \"listview-filter-form\");\n\n const filterFormValues = filterForm.getValues();\n let removedKeys = [];\n _.each(filterFormValues, function(n,k){\n // __searchable__开头的不在searchableFields范围则清除其值\n let isRemoved = !!removedFields.find(function(fieldName){\n return new RegExp(\"__searchable__\\.*\" + fieldName + \"$\").test(k);\n });\n if(isRemoved){\n removedKeys.push(k);\n }\n });\n const removedValues = {};\n removedKeys.forEach(function(key){\n removedValues[key] = null;\n });\n filterForm.setValues(removedValues);//这里使用filterInnerForm也可以\n\n if(isLookup){\n return;\n }\n \n // 列表视图crud支持本地缓存,所以需要进一步清除浏览器本地缓存里面用户在可搜索项中移除的字段值\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n if(localListViewProps){\n localListViewProps = JSON.parse(localListViewProps);\n _.each(localListViewProps, function(n,k){\n // __searchable__开头的不在searchableFields范围则清除其值\n let isRemoved = !!removedFields.find(function(fieldName){\n return new RegExp(\"__searchable__\\.*\" + fieldName + \"$\").test(k);\n });\n if(isRemoved){\n delete localListViewProps[k];\n }\n });\n sessionStorage.setItem(listViewPropsStoreKey, JSON.stringify(localListViewProps));\n }\n //触发amis crud 高度重算\n setTimeout(()=>{\n window.dispatchEvent(new Event(\"resize\"))\n }, 100)\n // ===END===\n `;\n return {\n \"type\": \"service\",\n \"name\": \"service_listview_filter_form\",\n \"data\": {\n // \"showFieldsFilter\": false\n // \"filterFormSearchableFields\": [\"name\"],//默认可搜索项\n // \"filterFormValues\": {\"__searchable__name\": \"xxx\"},//搜索项表单值\n // \"listViewId\": \"${listViewId}\"\n },\n // \"id\": `service_listview_filter_form_${objectSchema.name}`,\n \"dataProvider\": {\n \"inited\": dataProviderInited\n },\n \"body\": {\n \"type\": \"wrapper\",\n \"body\": {\n \"type\": \"wrapper\",\n \"body\": [filterFormSchema, {\n \"type\": \"wrapper\",\n \"body\": {\n \"type\": \"wrapper\",\n \"body\": [\n {\n \"type\": \"button\",\n \"id\": btnSearchId,\n \"label\": i18next.t('frontend_fields_filter_button_search'),\n \"icon\": \"fa fa-search\",\n // \"visibleOn\": \"this.filterFormSearchableFields && this.filterFormSearchableFields.length\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onSearchScript\n }\n ]\n }\n }\n },\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_form_cancel'),\n \"name\": \"btn_filter_form_cancel\",\n // \"visibleOn\": \"this.filterFormSearchableFields && this.filterFormSearchableFields.length\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onCancelScript\n }\n ]\n }\n }\n },\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_fields_filter_button_settings'),\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"size\": \"md\",\n \"title\": i18next.t('frontend_fields_filter_button_settings'),\n \"body\": [\n {\n \"type\": \"form\",\n \"title\": \"\",\n \"body\": [\n {\n \"label\": \"\",\n \"type\": \"transfer\",\n \"name\": \"fields\",\n \"id\": \"u:92c0b3cccca0\",\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${objectName}/fields/options\",\n \"dataType\": \"json\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"data\": {\n \"$self\": \"$$\"\n },\n \"requestAdaptor\": \"\",\n \"adaptor\": `\n if(payload.errors){\n payload.status = 2;\n payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;\n }\n const selfData = api.body.$self;\n const uiSchema = selfData.uiSchema;\n const fields = uiSchema.fields;\n const options = ((payload.data && payload.data.options) || []).filter(function(item){\n let field = fields[item.value];\n // TODO: 暂时禁用location类型字段的列表搜索\n return !!field && window.isFieldTypeSearchable(field.type) && field.type !== 'location'\n });\n payload.data = {\n \"options\": options\n };\n return payload;\n `\n },\n \"options\": [],\n \"required\": true,\n \"placeholder\": \"-\",\n \"className\": \"col-span-2 m-0\",\n \"checkAll\": false,\n \"searchable\": true,\n \"sortable\": true,\n \"joinValues\": false,\n \"extractValue\": true,\n \"multiple\": true\n }\n ],\n \"id\": \"u:e5ac506d5683\",\n \"mode\": \"normal\",\n \"persistData\": false,\n \"promptPageLeave\": true,\n \"name\": \"form\",\n \"debug\": false,\n \"actions\": [],\n \"panelClassName\": \"m-0\",\n \"bodyClassName\": \"p-4\",\n \"className\": \"steedos-amis-form\"\n }\n ],\n \"id\": \"u:ca99fa9fe1b1\",\n \"actions\": [\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_form_cancel'),\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {},\n \"actionType\": \"closeDialog\"\n }\n ]\n }\n },\n \"id\": \"u:4e447b5ca72a\"\n },\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_form_confirm'),\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onSearchableFieldsChangeScript\n },\n {\n \"actionType\": \"click\",\n \"componentId\": btnSearchId,\n \"args\": {\n \"__from_fields_filter_settings_confirm\": true\n }\n },\n {\n \"componentId\": \"\",\n \"args\": {},\n \"actionType\": \"closeDrawer\"\n }\n ]\n }\n },\n \"id\": \"u:14e7388fecd3\",\n \"level\": \"primary\"\n }\n ],\n \"closeOnEsc\": false,\n \"closeOnOutside\": false,\n \"showCloseButton\": true,\n \"data\": {\n \"&\": \"$$\",\n \"objectName\": \"${objectName}\",\n \"listName\": \"${listName}\",\n \"listViewId\": \"${listViewId}\",\n \"uiSchema\": \"${uiSchema}\",\n \"isLookup\": \"${isLookup}\",\n \"context\": \"${context}\",\n \"fields\": \"${filterFormSearchableFields}\"\n }\n }\n }\n ]\n }\n },\n \"id\": \"u:b96d84868a5a\",\n \"level\": \"link\"\n }\n ],\n \"size\": \"xs\",\n \"className\": \"space-x-4\"\n },\n \"size\": \"xs\",\n \"className\": \"slds-filters__footer slds-grid slds-shrink-none flex justify-between p-0\"\n }],\n \"size\": \"xs\",\n \"className\": \"slds-filters\"\n },\n \"size\": \"xs\",\n \"className\": `border-gray-300 border-y slds-grid slds-grid_vertical slds-nowrap ${!ctx.isLookup && \"mt-2\"}`,\n \"visibleOn\": \"this.showFieldsFilter\",\n },\n \"className\": \"bg-white\"\n };\n}\n\n","import { getObjectRelatedListButtons, getButtonVisibleOn } from '../../buttons'\nimport { getObjectFieldsFilterButtonSchema, getObjectFieldsFilterBarSchema } from './fields_filter';\nimport { map, each, sortBy, compact, keys } from 'lodash';\n\nimport { getObjectDetailButtonsSchemas, getObjectListViewButtonsSchemas, getObjectRecordDetailRelatedListButtonsSchemas } from '../../buttons'\n\n/**\n * 列表视图顶部第一行amisSchema\n * @param {*} objectSchema 对象UISchema\n * @returns amisSchema\n */\nexport function getObjectListHeaderFirstLine(objectSchema, listViewName, ctx) {\n const { icon, label } = objectSchema;\n const listViewButtonOptions = [];\n each(\n objectSchema.list_views,\n (listView, name) => {\n if(name === \"lookup\"){\n // 内置lookup为弹出选择专用视图,不显示在列表切换区域\n return;\n }\n listViewButtonOptions.push({\n type: \"button\",\n label: listView.label,\n actionType: \"link\",\n link: `/app/\\${appId}/${objectSchema.name}/grid/${name}`\n });\n }\n );\n\n let amisButtonsSchema = getObjectListViewButtonsSchemas(objectSchema, {formFactor: ctx.formFactor})\n const reg = new RegExp('_', 'g');\n const standardIcon = icon && icon.replace(reg, '-');\n const standardNewButton = _.find(amisButtonsSchema, { name: \"standard_new\" });\n const buttonSchema = [{\n \"type\": \"flex\",\n \"items\": amisButtonsSchema,\n \"visibleOn\": \"${display == 'split'?false:true}\"\n }]\n if(ctx.formFactor !== 'SMALL'){\n const restButtons = Array.isArray(amisButtonsSchema) ? amisButtonsSchema.filter(obj => obj.name !== \"standard_new\"):[]\n buttonSchema.push({\n \"type\": \"flex\",\n \"items\":[\n standardNewButton,\n (restButtons.length > 0) && {\n \"type\": \"dropdown-button\",\n \"buttons\": restButtons,\n \"className\": \" ml-1\",\n \"menuClassName\": \"p-none split-dropdown-buttons\",\n \"align\": \"right\",\n \"size\": \"sm\"\n }\n ],\n \"visibleOn\": \"${display == 'split'?true:false}\"\n })\n }\n return {\n \"type\": \"grid\",\n \"columns\": [\n {\n \"body\": [\n {\n \"type\": \"grid\",\n \"columns\": [\n {\n \"body\": {\n \"type\": \"tpl\",\n \"className\": \"block\",\n \"tpl\":`<svg class=\"slds-icon slds-icon_container slds-icon-standard-${standardIcon} slds-page-header__icon\" aria-hidden=\"true\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${icon}\"></use></svg>`\n },\n \"md\": \"auto\",\n \"className\": \"\",\n \"columnClassName\": \"flex justify-center items-center\",\n \"valign\": \"middle\",\n },\n {\n \"body\": [\n {\n \"type\": \"tpl\",\n \"tpl\": `${label}`,\n \"inline\": false,\n \"wrapperComponent\": \"\",\n \"className\": \"text-md leading-none text-black\",\n },\n {\n \"type\": \"dropdown-button\",\n \"className\": \"\", \n \"label\": \"\\${listName ? uiSchema.list_views[listName].label : uiSchema.list_views[defaultListName].label}\",\n \"rightIcon\": \"fa fa-caret-down\",\n \"size\": \"sm\",\n \"hideCaret\": true,\n \"closeOnClick\": true,\n \"btnClassName\": \"!bg-transparent !border-none !hover:border-none text-lg h-5 font-bold p-0 text-black leading-none\",\n \"buttons\": listViewButtonOptions\n }\n ],\n \"md\": \"\",\n \"columnClassName\": \"p-l-xs\"\n }\n ],\n \"className\": \"flex justify-between\"\n }\n ],\n \"md\": \"auto\"\n },\n {\n \"body\": buttonSchema,\n \"md\": \"auto\",\n \"valign\": \"middle\",\n }\n ],\n \"className\": \"flex justify-between\"\n }\n}\n\n/**\n * 列表视图顶部第二行amisSchema\n * @param {*} objectSchema 对象UISchema\n * @returns amisSchema\n */\nexport async function getObjectListHeaderSecordLine(objectSchema, listViewName, ctx) {\n const amisListViewId = `listview_${objectSchema.name}`;\n const fieldsFilterButtonSchema = await getObjectFieldsFilterButtonSchema(objectSchema);\n // const onFilterChangeScript = `\n // const eventData = event.data;\n // const uiSchema = eventData.uiSchema;\n // const listName = eventData.listName;\n // const listViewId = eventData.listViewId;\n // var selectedListView = uiSchema.list_views[listName]\n // var filter = eventData.filter;\n // SteedosUI.ListView.showFilter(uiSchema.name, {\n // listView: selectedListView,\n // data: {\n // filters: SteedosUI.ListView.getVisibleFilter(selectedListView, filter, { listViewId }),\n // },\n // onFilterChange: (filter) => {\n // doAction({\n // componentId: \\`service_listview_\\${uiSchema.name}\\`,\n // actionType: 'setValue',\n // \"args\": {\n // \"value\": {\n // filter: filter\n // }\n // }\n // });\n // doAction({\n // componentId: \\`listview_\\${uiSchema.name}\\`,\n // actionType: 'reload',\n // \"args\": {\n // filter: filter\n // }\n // });\n // }\n // });\n // `;\n let secordLineSchema = {\n \"type\": \"grid\",\n \"columns\": [\n {\n \"body\": [\n {\n \"type\": \"tpl\",\n \"tpl\": \"${$count} 个项目\",\n \"visibleOn\": \"this.$count >= 0\",\n \"inline\": false,\n \"wrapperComponent\": \"\",\n \"className\": \"leading-none\",\n \"style\": {\n \"fontFamily\": \"\",\n \"fontSize\": 14\n },\n \"id\": \"u:1661f8471235\"\n }\n ],\n \"md\": \"auto\",\n \"columnClassName\": \"flex items-center\"\n },\n {\n \"body\": [\n {\n \"type\": \"button\",\n \"label\": \"\",\n \"icon\": \"fa fa-refresh\",\n \"actionType\": \"reload\",\n \"target\": amisListViewId,\n \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\"\n },\n fieldsFilterButtonSchema,\n // {\n // \"type\": \"button\",\n // \"label\": \"\",\n // \"icon\": \"fa fa-filter\",\n // \"actionType\": \"custom\",\n // \"className\": \"bg-transparent p-2 rounded border-gray-300 text-gray-500\",\n // \"id\": \"u:c20cb87d96c9\",\n // \"onEvent\": {\n // \"click\": {\n // \"actions\": [\n // {\n // \"actionType\": \"custom\",\n // \"script\": onFilterChangeScript\n // }\n // ],\n // \"weight\": 0\n // }\n // }\n // }\n ],\n \"md\": \"auto\"\n }\n ],\n \"className\": \"flex justify-between\"\n };\n return secordLineSchema;\n}\n\n\n/**\n * 列表视图顶部放大镜过滤条件栏amisSchema\n * @param {*} objectSchema 对象UISchema\n * @returns amisSchema\n */\nexport async function getObjectListHeaderFieldsFilterBar(objectSchema, listViewName, ctx) {\n const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, ctx);\n return fieldsFilterBarSchema;\n}\n\n/**\n * 列表视图顶部amisSchema\n * @param {*} objectSchema 对象UISchema\n * @returns amisSchema\n */\nexport function getObjectListHeader(objectSchema, listViewName, ctx) {\n if (!ctx) {\n ctx = {};\n }\n let firstLineSchema = getObjectListHeaderFirstLine(objectSchema, listViewName, ctx);\n let body = [firstLineSchema];\n let headerSchema = [{\n \"type\": \"wrapper\",\n \"body\": body,\n \"className\": `bg-gray-100 sm:rounded-tl sm:rounded-tr p-4 -mb-4`\n }];\n return headerSchema;\n}\n\n/**\n * 记录详细界面顶部头amisSchema,也是标题面板组件的amisSchema\n * @param {*} objectSchema 对象UISchema\n * @param {*} recordId 记录id\n * @param {*} optioins: {showRecordTitle: true}\n * @returns amisSchema\n */\nexport async function getObjectRecordDetailHeader(objectSchema, recordId, options) {\n const { showRecordTitle = true } = options || {}\n // console.log('getObjectRecordDetailHeader==>', objectSchema, recordId)\n const { name, label, icon, NAME_FIELD_KEY } = objectSchema;\n \n let amisButtonsSchema = getObjectDetailButtonsSchemas(objectSchema, recordId, options);\n\n // console.log(`getObjectRecordDetailHeader==>`, amisButtonsSchema)\n \n const reg = new RegExp('_', 'g');\n const standardIcon = icon && icon.replace(reg, '-');\n\n const gridBody = [];\n if(showRecordTitle){\n gridBody.push({\n \"body\": [\n {\n \"type\": \"grid\",\n \"columns\": [\n {\n \"body\": [{\n \"type\": \"service\",\n \"onEvent\": {\n \"@history_paths.changed\": {\n \"actions\": [\n {\n \"actionType\": \"reload\"\n }\n ]\n }\n },\n \"body\":[{\n \"type\": \"button\",\n \"visibleOn\": \"${window:innerWidth > 768 && (window:historyPaths.length > 1 || window:historyPaths[0].params.record_id) && display !== 'split'}\",\n \"className\":\"flex mr-4\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": \"window.goBack()\"\n }\n ]\n }\n },\n \"body\": [\n {\n \"type\": \"steedos-icon\",\n \"category\": \"utility\",\n \"name\": \"back\",\n \"colorVariant\": \"default\",\n \"className\": \"slds-button_icon slds-global-header__icon w-4\"\n }\n ]\n }]\n },{\n \"type\": \"tpl\",\n \"className\": \"block\",\n // \"tpl\": `<img class='slds-icon slds-icon_container slds-icon-standard-${standardIcon}' src='\\${context.rootUrl}/unpkg.com/@salesforce-ux/design-system/assets/icons/standard/${icon}.svg'>`\n \"tpl\":`<svg class=\"slds-icon slds-icon_container slds-icon-standard-${standardIcon} slds-page-header__icon\" aria-hidden=\"true\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${icon}\"></use></svg>`\n }],\n \"md\": \"auto\",\n \"className\": \"\",\n \"columnClassName\": \"flex justify-center items-center\"\n },\n {\n \"body\": [\n {\n \"type\": \"tpl\",\n \"tpl\": `${label}`,\n \"inline\": false,\n \"wrapperComponent\": \"\",\n \"className\": \"leading-4 text-md\"\n },\n {\n \"type\": \"tpl\",\n \"tpl\": \"${name}\",\n // \"tpl\": \"${(record && uiSchema && record[uiSchema.NAME_FIELD_KEY]) || name}\",\n \"inline\": false,\n \"wrapperComponent\": \"\",\n \"className\": \"record-detail-header-name leading-5 text-xl font-bold\"\n }\n ],\n \"columnClassName\": \"p-l-xs\"\n }\n ],\n \"className\": \"flex justify-between\"\n }\n ],\n \"columnClassName\": \"flex-initial\",\n \"md\": \"auto\",\n })\n };\n\n gridBody.push({\n \"body\": {\n \"type\": \"flex\",\n \"items\": amisButtonsSchema,\n },\n \"md\": \"auto\",\n // \"hiddenOn\": \"${recordLoaded != true}\"\n })\n\n let body = [\n {\n \"type\": \"wrapper\",\n \"className\": \"p-0\",\n \"body\": [\n {\n \"type\": \"grid\",\n \"columns\": gridBody,\n \"className\": \"flex justify-between flex-nowrap\"\n }\n ],\n \"hiddenOn\": \"${recordLoaded != true}\"\n }\n ];\n\n if(showRecordTitle){\n body.push({\n \"type\": \"wrapper\",\n \"className\": \"p-0\",\n \"body\": [\n {\n \"type\": \"grid\",\n \"columns\": [gridBody[0]],\n \"className\": \"flex justify-between\"\n }\n ],\n \"hiddenOn\": \"${recordLoaded == true}\"\n })\n }\n\n return {\n type: 'service',\n id: `page_readonly_${name}_header`,\n name: `page`,\n data: { objectName: name, _id: recordId, recordPermissions: objectSchema.permissions, uiSchema: objectSchema, record: \"${record}\" },\n body: body, \n className: ''\n }\n\n}\n\n/**\n * 记录详细界面中相关表顶部头amisSchema\n * @param {*} relatedObjectSchema 相关对象UISchema\n * @returns amisSchema\n */\nexport async function getObjectRecordDetailRelatedListHeader(relatedObjectSchema, relatedLabel, ctx) {\n const { icon, label } = relatedObjectSchema;\n let amisButtonsSchema = getObjectRecordDetailRelatedListButtonsSchemas(relatedObjectSchema, {formFactor: ctx.formFactor});\n const reg = new RegExp('_', 'g');\n const standardIcon = icon && icon.replace(reg, '-');\n const recordRelatedListHeader = {\n \"type\": \"wrapper\",\n \"body\": [\n {\n \"type\": \"grid\",\n \"valign\": \"middle\",\n \"columns\": [\n {\n \"body\": [\n {\n \"type\": \"grid\",\n \"valign\": \"middle\",\n \"className\": \"flex justify-between\",\n \"columns\": [\n {\n \"body\": {\n \"type\": \"tpl\",\n \"className\": \"block\",\n // \"tpl\": `<img class=\\\"slds-icon_small slds-icon_container slds-icon-standard-${standardIcon}\\\" src=\\\"\\${context.rootUrl}/unpkg.com/@salesforce-ux/design-system/assets/icons/standard/${icon}.svg\\\" />`\n \"tpl\":`<svg class=\"w-6 h-6 slds-icon slds-icon_container slds-icon-standard-${standardIcon}\" aria-hidden=\"true\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${icon}\"></use></svg>`\n },\n \"md\": \"auto\",\n \"className\": \"\",\n \"columnClassName\": \"flex justify-center items-center\"\n },\n {\n \"body\": [\n {\n \"type\": \"tpl\",\n \"tpl\": `<a class=\"text-black text-base font-bold hover:font-bold\" href=\"/app/\\${appId}/\\${_master.objectName}/\\${_master.recordId}/\\${objectName}/grid?related_field_name=\\${relatedKey}\">${relatedLabel}(\\${$count})</a>`,\n \"inline\": false,\n \"wrapperComponent\": \"\",\n \"className\": \"\",\n }\n ],\n \"md\": \"\",\n \"valign\": \"middle\",\n \"columnClassName\": \"p-l-xs\"\n }\n ]\n }\n ],\n \"md\": \"auto\"\n },\n {\n \"body\": {\n \"type\": \"flex\",\n \"items\": amisButtonsSchema,\n },\n \"md\": \"auto\"\n }\n ],\n \"className\": \"flex justify-between\"\n }\n ],\n \"className\": \"p-3\"\n };\n return recordRelatedListHeader;\n}\n\n/**\n * 点击记录详细界面相关表顶部标题进入的相关表页面的顶部amisSchema\n * @param {*} objectSchema \n * @param {*} recordId \n * @param {*} relatedObjectName \n * @returns amisSchema\n */\nexport async function getObjectRelatedListHeader(objectSchema, recordId, relatedObjectName) {\n}","import { i18next } from \"../../../../../i18n\"\nexport const getNewListviewButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_new_label'),\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_new_title'),\n \"data\": {\n //\"&\":\"$$\",2.7、2.9、3.0在此处失效\n \"all\": \"${uiSchema.list_views.all}\",\n \"list_view\": \"${uiSchema.list_views[listName]}\",\n \"appId\": \"${appId}\",\n \"global\": \"${global}\",\n \"targetObjectName\": \"${objectName}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"\",\n \"mode\": \"edit\",\n \"defaultData\": {\n \"&\": \"${list_view}\",\n \"name\":\"\",\n \"label\":\"\",\n \"filters\":\"\",\n \"shared\":false,\n \"object_name\": \"${targetObjectName}\",\n },\n \"fieldsExtend\": fieldsExtend(),\n \"fields\": fields(),\n \"onEvent\": {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {\n // 直接使用recordId不能拿到数据,只能通过result里面拿数据\n \"url\": \"${context.rootUrl}/app/${appId}/${targetObjectName}/grid/listview_${result.data.recordId|lowerCase}\",\n \"blank\": false\n },\n \"actionType\": \"url\",\n }\n ]\n }\n },\n \"messages\": {\n \"success\": i18next.t('frontend_listview_control_new_message_success'),\n \"failed\": i18next.t('frontend_listview_control_new_message_failed')\n },\n }\n ],\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"closeOnEsc\": false,\n \"dataMapSwitch\": false,\n \"size\": \"lg\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}\n\nfunction fields(){\n return [\n \"label\",\n \"name\",\n \"object_name\",\n \"filter_scope\",\n \"show_count\",\n \"columns\",\n \"sort\",\n \"filters\",\n \"mobile_columns\",\n \"searchable_fields\",\n \"is_system\",\n \"shared\"\n ]\n}\n\nfunction fieldsExtend(){\n return {\n \"group\": \"\",\n \"label\": {\n \"is_wide\": true\n },\n \"name\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"object_name\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true\n }\n },\n \"filter_scope\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"columns\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"mobile_columns\":{\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"searchable_fields\":{\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"filter_fields\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"scrolling_mode\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"sort\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"show_count\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"type\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"shared\": {\n \"group\": \"\",\n \"amis\": {\n \"visibleOn\": \"${global.user.is_space_admin}\"\n }\n },\n \"filters\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true\n }\n }\n }\n}","import { i18next } from \"../../../../../i18n\"\nexport const getCopyListviewButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_clone_label'),\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_clone_title'),\n \"data\": {\n //\"&\":\"$$\",2.7、2.9、3.0在此处失效\n \"listName\": \"${listName}\",\n \"targetObjectName\": \"${objectName}\",\n \"list_view\": \"${uiSchema.list_views[listName]}\",\n \"appId\": \"${appId}\",\n \"global\": \"${global}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"\",\n \"mode\": \"edit\",\n \"defaultData\": {\n \"&\": \"${list_view}\",\n \"name\":\"\",\n \"label\": i18next.t('frontend_listview_control_clone_defaultData_label_start') + \" ${list_view.label} \" + i18next.t('frontend_listview_control_clone_defaultData_label_end'),\n \"shared\":false,\n \"object_name\": \"${targetObjectName}\",\n },\n \"fieldsExtend\": fieldsExtend(),\n \"fields\": fields(),\n \"onEvent\": {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {\n \"url\": \"${context.rootUrl}/app/${appId}/${targetObjectName}/grid/listview_${result.data.recordId|lowerCase}\",\n \"blank\": false\n },\n \"actionType\": \"url\",\n }\n ]\n }\n }\n }\n ],\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"closeOnEsc\": false,\n \"dataMapSwitch\": false,\n \"size\": \"lg\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}\n\nfunction fields(){\n return [\n \"label\",\n \"name\",\n \"object_name\",\n \"filter_scope\",\n \"show_count\",\n \"columns.$.field\",\n \"columns.$.width\",\n \"sort.$.field_name\",\n \"sort.$.order\",\n \"filters\",\n \"mobile_columns.$.field\",\n \"searchable_fields.$.field\",\n \"is_system\",\n \"shared\"\n ]\n}\n\nfunction fieldsExtend(){\n return {\n \"label\": {\n \"is_wide\": true\n },\n \"name\": {\n \"is_wide\": true,\n \"amis\": {\n \"hidden\": true\n }\n },\n \"object_name\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"filter_scope\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"columns\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"filter_fields\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"scrolling_mode\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"sort\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"show_count\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"type\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"shared\": {\n \"amis\": {\n \"visibleOn\": \"${global.user.is_space_admin}\"\n }\n },\n \"filters\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true\n }\n }\n }\n}","import { i18next } from \"../../../../../i18n\"\nexport const getRenameListviewButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_rename_label'),\n \"disabledOn\": \"!((global.user.is_space_admin || global.userId == uiSchema.list_views[listName].owner) && !!uiSchema.list_views[listName].owner)\",\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_rename_title'),\n \"data\": {\n \"targetObjectName\": \"${objectName}\",\n \"recordId\": \"${uiSchema.list_views[listName]._id}\",\n \"appId\": \"${appId}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"${recordId}\",\n \"mode\": \"edit\",\n \"fields\": [\n \"label\"\n ],\n \"fieldsExtend\": \"{\\n \\\"label\\\":{\\n \\\"is_wide\\\": true\\n }\\n}\",\n \"onEvent\": {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {\n \"url\": \"${context.rootUrl}/app/${appId}/${targetObjectName}/grid/${name}\",\n \"blank\": false\n },\n \"actionType\": \"url\",\n },\n ]\n }\n }\n }\n ],\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"size\": \"lg\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}","import { i18next } from \"../../../../../i18n\"\nexport const getSetListviewShareButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_share'),\n \"disabledOn\": \"!(global.user.is_space_admin && !!uiSchema.list_views[listName].owner)\",\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_share'),\n \"data\": {\n \"recordId\": \"${uiSchema.list_views[listName]._id}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"${recordId}\",\n \"mode\": \"edit\",\n \"fields\": [\n \"shared\"\n ]\n }\n ],\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"closeOnEsc\": false,\n \"dataMapSwitch\": false,\n \"size\": \"md\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}","import { i18next } from \"../../../../../i18n\"\nexport const getSetListviewFiltersButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_filters'),\n \"disabledOn\": \"!((global.user.is_space_admin || global.userId == uiSchema.list_views[listName].owner) && !!uiSchema.list_views[listName].owner)\",\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_filters'),\n \"data\": {\n \"targetObjectName\": \"${objectName}\",\n \"recordId\": \"${uiSchema.list_views[listName]._id}\",\n \"listName\": \"${listName}\",\n \"appId\": \"${appId}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"${recordId}\",\n \"mode\": \"edit\",\n \"fields\": [\n \"filters\"\n ],\n \"initApiAdaptor\": initApiAdaptor(),\n \"apiRequestAdaptor\": apiRequestAdaptor(),\n \"fieldsExtend\": fieldsExtend(),\n \"onEvent\": {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {\n \"url\": \"${context.rootUrl}/app/${appId}/${targetObjectName}/grid/${listName}\",\n \"blank\": false\n },\n \"actionType\": \"url\",\n }\n ]\n }\n }\n }\n ],\n \"className\": \"steedos-overflow-visible-dialog\",\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"closeOnEsc\": false,\n \"dataMapSwitch\": false,\n \"size\": \"lg\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}\n\n\nfunction initApiAdaptor(){\n return `\n const recordId_tmp = api.body.recordId;\n let data_tmp;\n if (recordId_tmp) {\n data_tmp = payload.data;\n // 数据格式转换\n if (data_tmp) {\n if (data_tmp.filters && lodash.isString(data_tmp.filters)) {\n try {\n data_tmp.filters = JSON.parse(data_tmp.filters);\n } catch (e) { }\n }\n \n if (data_tmp.filters && lodash.isString(data_tmp.filters)) {\n data_tmp._filters_type_controller = 'function';\n } else {\n data_tmp._filters_type_controller = 'conditions'\n }\n \n if (data_tmp._filters_type_controller === 'conditions') {\n data_tmp._filters_conditions = window.amisConvert.filtersToConditions(data_tmp.filters || []);\n data_tmp.filters = data_tmp._filters_conditions;\n } else {\n data_tmp._filters_function = data_tmp.filters;\n }\n }\n }\n for (key in data_tmp) {\n if (data_tmp[key] === null) {\n delete data_tmp[key];\n }\n }\n payload.data = Object.assign(payload.data, data_tmp);\n delete payload.extensions;\n return payload;\n `\n}\n\nfunction apiRequestAdaptor(){\n return `\n const recordId = api.body.recordId;\n if (formData._filters_type_controller === 'conditions' && formData._filters_conditions) {\n formData.filters = window.amisConvert.conditionsToFilters(formData.filters);\n } else {\n formData.filters = formData._filters_function || null;\n }\n \n delete formData._filters_type_controller;\n delete formData._filters_conditions;\n delete formData._filters_function;\n \n query = 'mutation{record: ' + objectName + '__insert(doc: {__saveData}){_id}}';\n if (api.body.recordId) {\n query = 'mutation{record: ' + objectName + '__update(id: \"' + recordId + '\", doc: {__saveData}){_id}}';\n };\n __saveData = JSON.stringify(JSON.stringify(formData));\n api.data = { query: query.replace('{__saveData}', __saveData) };\n return api;\n `\n}\n\nfunction fieldsExtend(){\n return {\n \"filters\": {\n \"visible_on\": \"true\",\n \"amis\": {\n \"type\": \"condition-builder\",\n \"label\": i18next.t('frontend_listview_control_filters_fields_extend'),\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-listviews/getFilterFields?objectName=${targetObjectName}\",\n \"dataType\": \"json\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n }\n }\n}","import { i18next } from \"../../../../../i18n\"\n\nexport const getSetListviewColumnsButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_columns'),\n \"disabledOn\": \"!((global.user.is_space_admin || global.userId == uiSchema.list_views[listName].owner) && !!uiSchema.list_views[listName].owner)\",\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {},\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_columns'),\n \"data\": {\n //\"&\":\"$$\",2.7、2.9、3.0在此处失效\n \"targetObjectName\": \"${objectName}\",\n \"recordId\": \"${uiSchema.list_views[listName]._id}\",\n \"listName\": \"${listName}\",\n \"appId\": \"${appId}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"${recordId}\",\n \"mode\": \"edit\",\n \"fieldsExtend\": fieldsExtend(),\n \"initApiAdaptor\": initApiAdaptor(),\n \"apiRequestAdaptor\": apiRequestAdaptor(),\n \"fields\": [\n \"columns\",\n \"mobile_columns\"\n ],\n \"onEvent\": {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {\n \"url\": \"${context.rootUrl}/app/${appId}/${targetObjectName}/grid/${listName}\",\n \"blank\": false\n },\n \"actionType\": \"url\"\n }\n ]\n }\n }\n }\n ],\n \"searchable\": true,\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"size\": \"lg\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}\n\nfunction fieldsExtend(){\n return {\n \"columns\": {\n \"amis\": {\n \"type\": \"transfer\",\n \"sortable\": true,\n \"searchable\": true,\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${targetObjectName}/fields/options\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n },\n \"mobile_columns\": {\n \"amis\": {\n \"type\": \"transfer\",\n \"sortable\": true,\n \"searchable\": true,\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${targetObjectName}/fields/options\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n }\n }\n}\n\nfunction initApiAdaptor(){\n return `\n const recordId_tmp = api.body.recordId;\n let columns_tmp = {}, mobile_columns_tmp = {};\n if (recordId_tmp) {\n columns_tmp = payload.data.columns;\n mobile_columns_tmp = payload.data.mobile_columns;\n if (columns_tmp) {\n columns_tmp = lodash.map(columns_tmp, 'field');\n }\n if (mobile_columns_tmp) {\n mobile_columns_tmp = lodash.map(mobile_columns_tmp, 'field');\n }\n }\n payload.data.columns = columns_tmp;\n payload.data.mobile_columns = mobile_columns_tmp;\n \n delete payload.extensions;\n return payload;\n `\n}\n\nfunction apiRequestAdaptor(){\n return `\n const formData_tmp = api.body.$;\n const objectName_tmp = api.body.objectName;\n const recordId_tmp = api.body.recordId;\n \n if (typeof formData_tmp.columns == 'string') {\n formData_tmp.columns = formData_tmp.columns && formData_tmp.columns.split(',');\n }\n if (typeof formData_tmp.mobile_columns == 'string') {\n formData_tmp.mobile_columns = formData_tmp.mobile_columns && formData_tmp.mobile_columns.split(',');\n }\n \n // 数据格式转换\n formData_tmp.columns = lodash.map(formData_tmp.columns, (item) => {\n return { field: item };\n });\n formData.mobile_columns = lodash.map(formData.mobile_columns, (item) => {\n return { field: item };\n });\n \n let query_tmp = 'mutation{record: ' + objectName_tmp + '__insert(doc: {__saveData}){_id}}';\n if (api.body.recordId) {\n query_tmp = 'mutation{record: ' + objectName_tmp + '__update(id: \"' + recordId_tmp +'\", doc: {__saveData}){_id}}';\n };\n delete formData_tmp._id;\n let __saveData_tmp = JSON.stringify(JSON.stringify(formData_tmp));\n api.data = { query: query_tmp.replace('{__saveData}', __saveData_tmp) };\n \n return api;\n `\n}","import { i18next } from \"../../../../../i18n\"\nexport const getSetListviewSortButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_sort'),\n \"disabledOn\": \"!((global.user.is_space_admin || global.userId == uiSchema.list_views[listName].owner) && !!uiSchema.list_views[listName].owner)\",\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_sort'),\n \"data\": {\n //\"&\":\"$$\",2.7、2.9、3.0在此处失效\n \"targetObjectName\": \"${objectName}\",\n \"recordId\": \"${uiSchema.list_views[listName]._id}\",\n \"listName\": \"${listName}\",\n \"appId\": \"${appId}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"${recordId}\",\n \"className\": \"\",\n \"id\": \"u:061f158b4c5a\",\n \"mode\": \"edit\",\n \"fields\": [\n \"sort\",\n \"sort.$.field_name\",\n \"sort.$.order\"\n ],\n \"onEvent\": {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {\n \"url\": \"${context.rootUrl}/app/${appId}/${targetObjectName}/grid/${listName}\",\n \"blank\": false\n },\n \"actionType\": \"url\"\n }\n ]\n }\n },\n \"fieldsExtend\": fieldsExtend(),\n \"initApiAdaptor\": initApiAdaptor(),\n \"apiRequestAdaptor\": apiRequestAdaptor()\n }\n ],\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"id\": \"u:d3f6947b6acf\",\n \"size\": \"lg\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}\n\nfunction fieldsExtend(){\n return {\n \"sort\": {\n \"amis\": {\n \"type\": \"tabs-transfer\",\n \"sortable\": true,\n \"searchable\": true,\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${targetObjectName}/sortFields/options\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n }\n }\n}\n\nfunction initApiAdaptor(){\n return `\n let sort;\n if (recordId) {\n sort = payload.data.sort;\n //数据格式转换\n if (sort instanceof Array) {\n sort = lodash.map(sort, (item) => {\n return item.field_name + ':' + (item.order || 'asc')\n });\n }\n }\n payload.data.sort = sort;\n delete payload.extensions;\n return payload;\n `\n}\n\nfunction apiRequestAdaptor(){\n return `\n const recordId = api.body.recordId;\n //数据格式转换\n if (typeof formData.sort == 'string') {\n formData.sort = formData.sort && formData.sort.split(',');\n }\n formData.sort = lodash.map(formData.sort, (item) => {\n const arr = item.split(':');\n return { field_name: arr[0], order: arr[1] };\n });\n if (recordId) {\n query = 'mutation{record: ' + objectName + '__update(id: \"' + recordId + '\", doc: {__saveData}){_id}}';\n }\n __saveData = JSON.stringify(JSON.stringify(formData));\n api.data = { query: query.replace('{__saveData}', __saveData) };\n return api;\n `\n}","import { i18next } from \"../../../../../i18n\"\nexport const getDeleteListviewButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_delete_label'),\n \"disabledOn\": \"!((global.user.is_space_admin || global.userId == uiSchema.list_views[listName].owner) && !!uiSchema.list_views[listName].owner)\",\n \"confirmText\": i18next.t('frontend_listview_control_delete_confirm_text'),\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"ajax\",\n \"args\": {\n \"api\": {\n \"url\": \"${context.rootUrl}/graphql\",\n \"method\": \"post\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"data\": {\n \"&\": \"$$\",\n \"uiSchema\": \"${uiSchema}\",\n \"recordId\": \"${uiSchema.list_views[listName]._id}\"\n },\n \"messages\": {\n \"success\": i18next.t('frontend_listview_control_delete_message_success')\n },\n \"requestAdaptor\": requestAdaptor(),\n \"adaptor\": adaptor(),\n }\n }\n },\n {\n \"actionType\": \"url\",\n \"args\": {\n \"url\": \"${context.rootUrl}/app/${appId}/${objectName}/grid/all\",\n \"blank\": false\n },\n \"expression\": \"data.delete == 1\"\n }\n ]\n }\n }\n }\n}\n\n\nfunction requestAdaptor(){\n return `\n const { recordId } = api.body;\n var deleteArray = [];\n if (recordId) { deleteArray.push(\\`delete:object_listviews__delete(id: \"\\${recordId}\")\\`); }\n api.data = { query: \\`mutation{\\${deleteArray.join(',')}}\\` };\n return api;\n `\n}\n\nfunction adaptor(){\n return `\n if (payload.errors) {\n payload.status = 2;\n payload.msg = payload.errors[0].message;\n }\n return payload;\n `\n}","import { getNewListviewButtonSchema } from \"./setting_listview/new\"\nimport { getCopyListviewButtonSchema } from \"./setting_listview/copy\"\nimport { getRenameListviewButtonSchema } from \"./setting_listview/rename\"\nimport { getSetListviewShareButtonSchema } from \"./setting_listview/share\"\nimport { getSetListviewFiltersButtonSchema } from \"./setting_listview/filters\"\nimport { getSetListviewColumnsButtonSchema } from \"./setting_listview/columns\"\nimport { getSetListviewSortButtonSchema } from \"./setting_listview/sort\"\nimport { getDeleteListviewButtonSchema } from \"./setting_listview/delete\"\nimport { i18next } from \"../../../../i18n\"\n\nexport const getSettingListviewToolbarButtonSchema = ()=>{\n return {\n \"type\": \"dropdown-button\",\n \"trigger\": \"click\",\n \"icon\": \"fa fa-cog\",\n //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330\n // \"tooltip\": i18next.t('frontend_button_listview_control_tooltip'),\n \"btnClassName\": \"antd-Button--iconOnly bg-white !p-2 rounded border-gray-300 text-gray-500\",\n \"align\": \"right\",\n \"visibleOn\": \"${!isLookup}\",\n \"buttons\": [\n {\n \"label\": i18next.t('frontend_button_listview_control_label'),\n \"children\": [\n getNewListviewButtonSchema(),\n getCopyListviewButtonSchema(),\n getRenameListviewButtonSchema(),\n getSetListviewShareButtonSchema(),\n getSetListviewFiltersButtonSchema(),\n getSetListviewColumnsButtonSchema(),\n getSetListviewSortButtonSchema(),\n getDeleteListviewButtonSchema()\n ]\n }\n ]\n }\n}","import { getObjectListHeaderFieldsFilterBar } from './header';\nimport { Router } from \"@steedos-widgets/amis-lib\";\nimport { getExportExcelToolbarButtonSchema } from './toolbars/export_excel';\nimport { getSettingListviewToolbarButtonSchema } from './toolbars/setting_listview'; \nimport { i18next } from \"../../../i18n\"\nimport * as Fields from './fields/index';\n\nconst getDisplayAsButton = function(objectName, showDisplayAs){\n let displayAs = Router.getTabDisplayAs(objectName);\n let buttons = [\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_display_type_is_table'),\n \"onClick\": \"const key = 'tab_\"+objectName+\"_display';localStorage.setItem(key, 'grid');let url = document.location.pathname; var urlSearch = new URLSearchParams(document.location.search); if(urlSearch.get(\\\"side_object\\\") && urlSearch.get(\\\"side_listview_id\\\")){url=`/app/${props.data.appId}/${urlSearch.get(\\\"side_object\\\")}/grid/${urlSearch.get(\\\"side_listview_id\\\")}`;}; props.env.jumpTo(url + '?display=grid');\",\n \"rightIcon\": displayAs != 'split' ? \"fa fa-check\" : null,\n \"rightIconClassName\": \"m-l-sm\"\n },\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_display_type_is_split'),\n \"onClick\": \"const key = 'tab_\"+objectName+\"_display';localStorage.setItem(key, 'split');const url = document.location.pathname + '?display=split'; props.env.jumpTo(url);\",\n \"rightIcon\": displayAs === 'split' ? \"fa fa-check\" : null,\n \"rightIconClassName\": \"m-l-sm\"\n }\n ];\n const displayAsLabel = displayAs === 'split'? i18next.t('frontend_display_type_is_split') : i18next.t('frontend_display_type_is_table');\n return {\n \"type\": \"dropdown-button\",\n \"icon\": \"fa fa-table-columns\",\n //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330\n // \"tooltip\": `${i18next.t('frontend_display_as')} ${displayAsLabel}`,\n \"btnClassName\": \"antd-Button--iconOnly bg-white !p-2 rounded border-gray-300 text-gray-500\",\n \"align\": \"right\",\n \"visibleOn\": \"${window:innerWidth > 768 && !!!isLookup}\",\n \"buttons\": [ \n {\n \"label\": i18next.t('frontend_display_as'),\n \"children\": buttons\n }\n ]\n };\n}\n\n\nconst onFieldsFilterToggleScript = `\nconst scope = event.context.scoped;\nconst filterForm = scope.getComponents().find(function(n){\n return n.props.type === \"form\";\n});\nconst filterService = filterForm.context.getComponents().find(function(n){\n return n.props.type === \"service\";\n});\nlet toShowFieldsFilter = !!!filterService.props.data.showFieldsFilter;\nfilterService.setData({showFieldsFilter: toShowFieldsFilter});\nlet resizeWindow = function(){\n //触发amis crud 高度重算\n setTimeout(()=>{\n window.dispatchEvent(new Event(\"resize\"))\n }, 1000);\n}\nresizeWindow();\n// 手机端在显示搜索栏时隐藏crud上的刷新按钮,因为点击后crud高度显示有问题\nlet crudService = scope.getComponentById(\"service_listview_\" + event.data.objectName);\ncrudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});\n// if(filterService.props.data.showFieldsFilter){\n// if(isMobile){\n// // 手机上只能通过取消按钮来关闭搜索栏\n// return;\n// }\n// let buttonCancel = SteedosUI.getClosestAmisComponentByType(filterForm.context, \"button\", { \n// direction: \"down\", \n// name: \"btn_filter_form_cancel\" \n// });\n// buttonCancel.props.dispatchEvent('click', {}).then(function(){\n// resizeWindow();\n// });\n// }\n// else{\n// if(isMobile){\n// // 手机端在显示搜索栏时隐藏crud上的刷新按钮,因为点击后crud高度显示有问题\n// let crudService = scope.getComponentById(\"service_listview_\" + event.data.objectName);\n// crudService && crudService.setData({showFieldsFilter: true});\n// }\n// }\n`;\n\n// function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = \"__keywords\", crudId } = {}){\nfunction getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = \"__keywords\" } = {}){\n const searchableFieldsLabel = [];\n _.each(mainObject.fields, function (field) {\n if (Fields.isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {\n searchableFieldsLabel.push(field.label);\n }\n });\n\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n let crudKeywords = \"\";\n if(localListViewProps && !isLookup){\n localListViewProps = JSON.parse(localListViewProps);\n crudKeywords = (localListViewProps && localListViewProps.__keywords) || \"\";\n }\n\n const onChangeScript = `\n const scope = event.context.scoped;\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n // let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n let __changedSearchBoxValues = {};\n __changedSearchBoxValues[\"${keywordsSearchBoxName}\"] = event.data[\"${keywordsSearchBoxName}\"];\n // crudService && crudService.setData({__changedSearchBoxValues: __changedSearchBoxValues});\n // 这里不用crudService而用crud是因为lookup字段弹出的列表中的crudService中的变量无法传入crud的发送适配器中\n crud && crud.setData({__changedSearchBoxValues: __changedSearchBoxValues});\n `;\n\n // onSearchScript中加上了onChangeScript中的脚本,是因为amis 3.2不能用change事件执行onChangeScript\n // 而点击回车按键又不会触发blur事件,所以只能每次回车事件中额外再执行一次onChangeScript\n // 等升级到amis 3.4+,blur事件换成change事件执行onChangeScript,就可以不用在onSearchScript中执行onChangeScript了\n const onSearchScript = `\n ${onChangeScript}\n\n // 下面的脚本只为解决点击搜索表单取消按钮,再重新在其中输入过滤条件但是不点击搜索按钮或回车按键触发搜索,此时在快速搜索框输入过滤条件按回车按键会把搜索表单中的过滤条件清空的问题\n // const scope = event.context.scoped;\n // 如果点击过顶部搜索栏表单的取消按钮,会把此处event.data.__super.__super.__super中的搜索表单项的所有字段设置为null\n // 点击取消按钮后继续在表单项中输入过滤条件且最后没有点击回车按键或点击表单项搜索按钮的话,在快速搜索中点击回车按钮提交搜索会所顶部搜索表单中的字段值清空\n let filterForm = SteedosUI.getClosestAmisComponentByType(scope, \"form\");\n setTimeout(function(){\n filterForm.setValues(event.data.__changedFilterFormValues);\n }, 500);\n `;\n\n return {\n \"type\": \"tooltip-wrapper\",\n \"id\": \"steedos_crud_toolbar_quick_search\",\n \"align\": \"right\",\n \"title\": \"\",\n \"content\": \"可搜索字段:\" + searchableFieldsLabel.join(\",\"),\n \"placement\": \"bottom\",\n \"tooltipTheme\": \"dark\",\n \"trigger\": \"click\",\n \"className\": formFactor !== 'SMALL' ? \"mr-1\" : '',\n \"visible\": !!searchableFieldsLabel.length,\n \"body\": [\n {\n \"type\": \"search-box\",\n \"name\": keywordsSearchBoxName,\n \"placeholder\": \"搜索此列表\",\n \"value\": crudKeywords,\n \"clearable\": true,\n // \"clearAndSubmit\": true,//因为清除并不会触发失去焦点事件,只有禁用,但是它会触发change事件,所以等升级到amis 3.4+后可以重新放开\n \"searchImediately\": false,\n \"onEvent\": {\n \"search\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onSearchScript\n }\n ]\n },\n \"blur\": { //这里把change事件换成blur是因为amis 3.2change事件中setData会卡,升级到3.4+后就可以换回change事件\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onChangeScript\n },\n ]\n }\n }\n }\n ]\n }\n}\n\nexport function getObjectHeaderToolbar(mainObject, fields, formFactor, { \n showDisplayAs = false, hiddenCount = false, headerToolbarItems,\n filterVisible = true, isLookup = false, keywordsSearchBoxName } = {}){\n // console.log(`getObjectHeaderToolbar====>`, filterVisible)\n // console.log(`getObjectHeaderToolbar`, mainObject)\n\n const isMobile = window.innerWidth < 768;\n if(isMobile){\n showDisplayAs = false;\n }\n let toolbarCount;\n if(!hiddenCount){\n toolbarCount = {\n \"type\": \"tpl\",\n \"tpl\": \"${count} \" + i18next.t('frontend_record_sum')\n };\n }\n let toolbarReloadButton;\n if(formFactor === 'SMALL'){\n // const onReloadScript = `\n // const scope = event.context.scoped;\n // var listView = scope.parent.getComponents().find(function(n){\n // return n.props.type === \"crud\";\n // });\n // listView.handleChangePage(1);\n // `;\n // toolbarReloadButton = {\n // // \"type\": \"reload\",//不可以直接使用reload,因为它不会设置页码到第一页,这在加载更多按钮的翻页模式下会有问题\n // \"type\": \"button\",\n // \"align\": \"right\",\n // //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330\n // // \"tooltip\": i18next.t('frontend_button_reload_tooltip'),\n // \"tooltipPlacement\": \"top\",\n // \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\",\n // \"label\": \"\",\n // \"icon\": \"fa fa-sync\",\n // \"visibleOn\": \"${!showFieldsFilter}\",\n // \"onEvent\": {\n // \"click\": {\n // \"actions\": [\n // {\n // \"actionType\": \"custom\",\n // \"script\": onReloadScript\n // }\n // ]\n // }\n // },\n // };\n\n // 后续如果换成加载更多按钮的翻页模式的话,不可以直接使用下面的reload,需要换成上面的自定义脚本模式\n toolbarReloadButton = {\n \"type\": \"reload\",\n \"align\": \"right\",\n //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330\n // \"tooltip\": i18next.t('frontend_button_reload_tooltip'),\n \"tooltip\":\"\",\n \"tooltipPlacement\": \"top\",\n \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\"\n };\n }\n else{\n toolbarReloadButton = {\n \"type\": \"reload\",\n \"align\": \"right\",\n //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330\n // \"tooltip\": i18next.t('frontend_button_reload_tooltip'),\n \"tooltip\":\"\",\n \"tooltipPlacement\": \"top\",\n \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\"\n };\n }\n let toolbarFilter;\n if(filterVisible){\n toolbarFilter ={\n \"label\": i18next.t('frontend_button_search_tooltip'),\n \"icon\": \"fa fa-filter\",\n //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330\n // \"tooltip\": i18next.t('frontend_button_search_tooltip'),\n // \"tooltipPlacement\": \"top\",\n \"type\": \"button\",\n \"badge\": {\n \"offset\": [\n -5,\n 1\n ],\n \"size\":8,\n \"animation\": true,\n \"visibleOn\": \"${isFieldsFilterEmpty == false && isLookup != true}\"\n },\n \"align\": \"right\",\n \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onFieldsFilterToggleScript\n }\n ]\n }\n },\n \"id\": \"steedos_crud_toolbar_filter\"\n };\n }\n let toolbarDisplayAsButton = getDisplayAsButton(mainObject?.name, showDisplayAs);\n let toolbarDQuickSearchBox = getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName });\n\n // toolbars返回的数组元素不可以是空对象{},比如hiddenCount ? {} : {\"type\": \"tpl\",...},因为空对象最终还是会生成一个空的.antd-Crud-toolbar-item dom\n // 当出现空的.antd-Crud-toolbar-item dom时会影响toolbar元素的maring-right css样式计算,如果有动态需要应该加到动态数组变量toolbars中\n let toolbars = [];\n if(formFactor === 'SMALL'){\n if(toolbarCount){\n toolbars.push(toolbarCount);\n }\n if(toolbarFilter){\n toolbars.push(toolbarFilter);\n }\n toolbars.push(toolbarReloadButton);\n toolbars.push(toolbarDisplayAsButton);\n toolbars.push(toolbarDQuickSearchBox);\n return [\n // \"bulkActions\",\n ...(headerToolbarItems || []),\n ...toolbars,\n ]\n }else{\n if(toolbarCount){\n toolbars.push(toolbarCount);\n }\n if(toolbarFilter){\n toolbars.push(toolbarFilter);\n }\n toolbars.push(toolbarReloadButton);\n toolbars.push(toolbarDisplayAsButton);\n if(mainObject?.permissions?.allowCreateListViews){\n toolbars.push(getSettingListviewToolbarButtonSchema());\n }\n toolbars.push(toolbarDQuickSearchBox);\n return [\n // \"filter-toggler\",\n ...(headerToolbarItems || []),\n \"bulkActions\",\n // 不能放开crud columns-toggler否则crud card模式会报错\n // {\n // \"type\": \"columns-toggler\",\n // \"className\": \"hidden\"\n // },\n ...toolbars,\n // {\n // \"type\": \"columns-toggler\",\n // \"className\": \"mr-2\"\n // },\n // getExportExcelToolbarButtonSchema(),\n // {\n // \"type\": \"drag-toggler\",\n // \"align\": \"right\"\n // },\n // {\n // \"type\": \"pagination\",\n // \"align\": \"right\"\n // }\n ]\n }\n\n\n \n}\n\nexport function getObjectFooterToolbar(mainObject, formFactor, options) {\n // crud card模式与table模式两种情况下showPageInput默认值不一样,所以需要显式设置为false\n if (formFactor === 'SMALL') {\n // return [\n // \"load-more\",\n // ]\n if(options.displayAs === 'split'){\n return [\n \"switch-per-page\",\n {\n \"type\": \"pagination\",\n \"maxButtons\": 5,\n \"showPageInput\": false\n }\n ]\n }else{\n return [\n // \"statistics\",\n {\n \"type\": \"pagination\",\n \"maxButtons\": 5,\n \"showPageInput\": false\n }\n ]\n }\n }\n else {\n if(options && options.isRelated){\n return [\n \"statistics\",\n {\n \"type\": \"pagination\",\n \"maxButtons\": 10,\n \"showPageInput\": false\n }\n ]\n\n }\n else{\n const no_pagination = mainObject.paging && (mainObject.paging.enabled === false);\n const is_lookup = options.isLookup;\n const commonConfig = [\n \"statistics\",\n {\n \"type\": \"pagination\",\n \"maxButtons\": 10,\n \"showPageInput\": false\n }\n ];\n\n if (no_pagination && is_lookup) {\n return commonConfig;\n } else {\n return [\"switch-per-page\", ...commonConfig];\n }\n }\n }\n}\n\nexport async function getObjectFilter(objectSchema, fields, options) {\n const fieldsFilterBarSchema = await getObjectListHeaderFieldsFilterBar(objectSchema, null, options);\n let onSubmitSuccScript = `\n let isLookup = event.data.isLookup;\n if(isLookup){\n return;\n }\n // 列表搜索栏字段值变更后立刻触发提交表单执行crud搜索,所以这里需要额外重算crud高度及筛选按钮红色星号图标显示隐藏\n let resizeWindow = function(){\n //触发amis crud 高度重算\n setTimeout(()=>{\n window.dispatchEvent(new Event(\"resize\"))\n }, 1000);\n }\n resizeWindow();\n const scope = event.context.scoped;\n // let filterFormValues = event.data;\n let filterForm = SteedosUI.getClosestAmisComponentByType(scope, \"form\");\n let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, \"service\");\n // 使用event.data的话,并不能拿到本地存储中的过滤条件,所以需要从filterFormService中取。\n let filterFormValues = filterFormService.getData()\n let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n crudService && crudService.setData({isFieldsFilterEmpty});\n `;\n let onChangeScript = `\n const scope = event.context.scoped;\n // let filterFormValues = event.data;\n let filterForm = SteedosUI.getClosestAmisComponentByType(scope, \"form\");\n let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, \"service\");\n // 使用event.data的话,并不能拿到本地存储中的过滤条件,所以需要从filterFormService中取。\n let filterFormValues = filterFormService.getData();\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});;\n // let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n // crudService && crudService.setData({__changedFilterFormValues: changedFilterFormValues});\n // 这里不用crudService而用crud是因为lookup字段弹出的列表中的crudService中的变量无法传入crud的发送适配器中\n crud && crud.setData({__changedFilterFormValues: changedFilterFormValues});\n `;\n return {\n \"title\": \"\",\n \"submitText\": \"\",\n \"className\": \"\",\n \"debug\": false,\n \"mode\": \"normal\",\n \"wrapWithPanel\": false,\n \"body\": [\n fieldsFilterBarSchema\n ],\n \"onEvent\": {\n \"submitSucc\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onSubmitSuccScript\n }\n ]\n },\n \"change\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onChangeScript\n }\n ]\n }\n }\n }\n}\n","import { getAuthToken , getTenantId, getRootUrl, getSteedosAuth } from '../../steedos.client.js';\nimport { getReadonlyFormInitApi, getSaveApi, getEditFormInitApi, getBatchDelete } from './api';\nimport { getTableSchema, getTableApi } from './fields/table';\nimport { getFormBody } from './form';\nimport { getListSchema, getCardSchema } from './fields/list';\nimport _, { map } from 'lodash';\nimport { defaultsDeep } from '../../defaultsDeep';\nimport { getObjectHeaderToolbar, getObjectFooterToolbar, getObjectFilter } from './toolbar';\nimport { i18next } from \"../../../i18n\"\nimport { createObject } from '../../../utils/object';\n\nfunction getBulkActions(objectSchema){\n return [\n {\n \"type\": \"button\",\n \"level\": \"danger\",\n \"label\": \"批量删除\",\n \"actionType\": \"ajax\",\n \"confirmText\": i18next.t('frontend_delete_many_confirm_text'),\n \"className\": \"hidden\",\n \"id\": \"batchDelete\",\n \"api\": getBatchDelete(objectSchema.name),\n }\n // {\n // \"label\": \"批量修改\",\n // \"actionType\": \"dialog\",\n // \"dialog\": {\n // \"title\": \"批量编辑\",\n // \"name\": \"sample-bulk-edit\",\n // \"body\": {\n // \"type\": \"form\",\n // \"api\": \"https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample/bulkUpdate2\",\n // \"controls\": [\n // {\n // \"type\": \"hidden\",\n // \"name\": \"ids\"\n // },\n // {\n // \"type\": \"text\",\n // \"name\": \"name\",\n // \"label\": \"Name\"\n // }\n // ]\n // }\n // }\n // }\n ]\n}\n\nfunction getHeaderToolbar(mainObject, formFactor){\n\n if(formFactor === 'SMALL'){\n return [\n \"bulkActions\",\n {\n \"type\": \"reload\",\n \"align\": \"right\"\n },\n {\n \"type\": \"search-box\",\n \"align\": \"right\",\n \"name\": \"__keywords\",\n \"placeholder\": \"请输入关键字\",\n \"mini\": true\n }\n ]\n }else{\n return [\n \"filter-toggler\",\n \"bulkActions\",\n // {\n // \"type\": \"export-excel\",\n // \"align\": \"right\"\n // },\n // {\n // \"type\": \"reload\",\n // \"align\": \"right\"\n // },\n // {\n // \"type\": \"columns-toggler\",\n // \"align\": \"right\"\n // },\n {\n \"type\": \"search-box\",\n \"align\": \"right\",\n \"name\": \"__keywords\",\n \"placeholder\": \"请输入关键字\",\n \"mini\": true\n },\n // {\n // \"type\": \"drag-toggler\",\n // \"align\": \"right\"\n // },\n // {\n // \"type\": \"pagination\",\n // \"align\": \"right\"\n // }\n ]\n }\n\n\n \n}\n\n\nfunction footerToolbar(){\n return [\n \"statistics\",\n // \"switch-per-page\",\n \"pagination\"\n ]\n}\n\nfunction getFilter(){\n return {\n \"title\": \"条件搜索\",\n \"submitText\": \"\",\n \"body\": [\n {\n \"type\": \"input-text\",\n \"name\": \"name\",\n \"placeholder\": \"合同名称\",\n \"addOn\": {\n \"label\": \"搜索\",\n \"type\": \"submit\"\n }\n }\n ]\n }\n}\n\nasync function getCrudSchemaWithDataFilter(crud, options = {}){\n const { crudDataFilter, amisData, env } = options;\n let onCrudDataFilter = options.onCrudDataFilter;\n if (!onCrudDataFilter && typeof crudDataFilter === 'string') {\n onCrudDataFilter = new Function(\n 'crud',\n 'env',\n 'data',\n crudDataFilter\n );\n }\n\n try {\n onCrudDataFilter && (crud = await onCrudDataFilter(crud, env, amisData) || crud);\n } catch (e) {\n console.warn(e);\n }\n return crud;\n}\n\nexport async function getObjectCRUD(objectSchema, fields, options){\n // console.time('getObjectCRUD');\n const { top, perPage, showDisplayAs = false, displayAs, crudClassName = \"\",\n crudDataFilter, onCrudDataFilter, amisData, env } = options;\n const nonpaged = objectSchema.paging && objectSchema.paging.enabled === false;\n const isTreeObject = objectSchema.enable_tree;\n const bulkActions = getBulkActions(objectSchema);\n const defaults = options.defaults;\n const listSchema = (defaults && defaults.listSchema) || {};\n\n const bodyProps = {\n // toolbar: getToolbar(),\n // headerToolbar: getObjectHeaderToolbar(objectSchema, options.formFactor, {showDisplayAs}),\n headerToolbarClassName: \"px-4 py-2 border-gray-300 bg-gray-100 border-solid border-b\",\n footerToolbar: getObjectFooterToolbar(objectSchema, options.formFactor, {\n ...options,\n disableStatistics: options.queryCount === false\n }), \n filter: options.filterVisible !== false && await getObjectFilter(objectSchema, fields, options),\n };\n if(options.formFactor !== 'SMALL' || [\"split\"].indexOf(options.displayAs) == -1){\n if(listSchema.mode !== \"cards\"){\n // card模式时默认不显示勾选框\n Object.assign(bodyProps, {\n bulkActions: options.bulkActions != false ? bulkActions : false\n });\n }\n }\n // yml里配置的 不分页和enable_tree:true 优先级最高,组件中输入的top次之。\n options.queryCount = true;\n if(nonpaged || isTreeObject){\n options.top = 5000;\n bodyProps.footerToolbar = [];\n options.queryCount = true; // 禁止翻页的时候, 需要查找总数\n }else if(top){\n bodyProps.footerToolbar = [];\n if(options.isRelated){\n options.queryCount = true;\n }else{\n options.queryCount = false;\n }\n }\n // console.log(`getObjectHeaderToolbar====2===>`, options.filterVisible)\n bodyProps.headerToolbar = getObjectHeaderToolbar(objectSchema, fields, options.formFactor, {\n showDisplayAs, \n hiddenCount: options.queryCount === false, \n headerToolbarItems: options.headerToolbarItems,\n filterVisible: options.filterVisible\n });\n\n options.amisData = createObject(options.amisData, {\n objectName: objectSchema.name,\n // _id: null,\n recordPermissions: objectSchema.permissions,\n uiSchema: objectSchema,\n // loaded: false //crud接收适配器中设置为true,否则就是刷新浏览器第一次加载\n });\n\n\n let body = null;\n const id = `listview_${objectSchema.name}`;\n if(options.formFactor === 'SMALL' && false){\n delete bodyProps.bulkActions;\n delete bodyProps.headerToolbar;\n delete bodyProps.footerToolbar;\n const card = await getCardSchema(fields, Object.assign({idFieldName: objectSchema.idFieldName, labelFieldName: objectSchema.NAME_FIELD_KEY || 'name'}, options, {actions: false}));\n body = Object.assign({}, card , {\n type: 'crud', \n primaryField: '_id', \n id: id,\n name: id,\n keepItemSelectionOnPageChange: false, \n api: await getTableApi(objectSchema, fields, options),\n hiddenOn: options.tableHiddenOn,\n }, \n bodyProps\n );\n }else{\n let labelFieldName = objectSchema.NAME_FIELD_KEY || 'name';\n // organizations 对象的历史遗留问题, fullname 被标记为了 名称字段. 在此处特殊处理.\n if(objectSchema.name === 'organizations'){\n labelFieldName = 'name';\n }\n let tableOptions = Object.assign({\n idFieldName: objectSchema.idFieldName, labelFieldName: labelFieldName, \n permissions:objectSchema.permissions,enable_inline_edit:objectSchema.enable_inline_edit,\n crudId: listSchema.id || id\n }, options);\n tableOptions.amisData = createObject(options.amisData || {}, {});\n const table = await getTableSchema(fields, tableOptions);\n // delete table.mode;\n //image与avatar需要在提交修改时特别处理\n const imageNames = _.compact(_.map(_.filter(fields, (field) => [\"image\",\"avatar\"].includes(field.type)), 'name'));\n const quickSaveApiRequestAdaptor = `\n var graphqlOrder = \"\";\n var imageNames = ${JSON.stringify(imageNames)};\n const rowsDiff = _.cloneDeep(api.data.rowsDiff);\n rowsDiff.forEach(function (item, index) {\n for(key in item){\n if(_.includes(imageNames, key)){\n if(typeof item[key] == \"string\"){\n const match = item[key].match(/\\\\/([^\\\\/]+)$/);\n item[key] = match && match.length > 1?match[1]:\"\";\n }else{\n item[key] = _.map(item[key], function(ele){\n const match = ele.match(/\\\\/([^\\\\/]+)$/);\n return match && match.length > 1?match[1]:\"\";\n })\n }\n }\n }\n item = _.omit(item, '_display');\n const itemOrder = 'update' + index + ':' + api.data.objectName + '__update(id:\"' + item._id + '\", doc:' + JSON.stringify(JSON.stringify(_.omit(item, '_id'))) + ') {_id}';\n graphqlOrder += itemOrder;\n })\n graphqlOrder = 'mutation {' + graphqlOrder + '}';\n return {\n ...api,\n data: {\n query: graphqlOrder\n }\n }\n `\n let autoFillHeight = true\n if(options.isRelated || window.innerWidth < 768){\n autoFillHeight = false\n }\n\n body = Object.assign({}, table, {\n type: 'crud', \n primaryField: '_id', \n affixHeader: false,\n id: id,\n name: id,\n keepItemSelectionOnPageChange: true, \n api: await getTableApi(objectSchema, fields, options),\n hiddenOn: options.tableHiddenOn,\n autoFillHeight,\n className: `flex-auto ${crudClassName || \"\"}`,\n // 这里不可以用动态className,因为它会把样式类加到.antd-Crud和.antd-Table.antd-Crud-body这两层div中,而子表列表中crudClassName中有hidden样式类会造成所有子表都不显示的bug\n // className: {\n // [`flex-auto ${crudClassName || \"\"}`]: \"true\",\n // \"is-steedos-crud-data-empty\": \"${!items || COUNT(items) == 0}\"\n // },\n bodyClassName: \"bg-white\",//上面className写成动态的class变量对象的话,bodyClassName不会生效,会被上面的className值覆盖\n crudClassName: crudClassName,\n quickSaveApi: {\n url: `\\${context.rootUrl}/graphql`,\n method: \"post\",\n dataType: \"json\",\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\",\n },\n requestAdaptor: quickSaveApiRequestAdaptor,\n adaptor: `\n if(payload.errors){\n payload.status = 2;\n payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;\n }\n return payload;\n `\n },\n rowClassNameExpr: options.rowClassNameExpr\n }, bodyProps);\n\n }\n\n body = defaultsDeep({}, listSchema, body);\n body = await getCrudSchemaWithDataFilter(body, { crudDataFilter, onCrudDataFilter, amisData, env });\n\n let crudModeClassName = \"\";\n if(body.mode){\n crudModeClassName = `steedos-crud-mode-${body.mode}`;\n }\n\n if (defaults) {\n const headerSchema = defaults.headerSchema;\n const footerSchema = defaults.footerSchema;\n if (headerSchema || footerSchema) {\n let wrappedBody = [body];\n if (headerSchema) {\n if(_.isArray(headerSchema)){\n wrappedBody = _.union(headerSchema,wrappedBody);\n }\n else{\n wrappedBody.unshift(headerSchema);\n }\n }\n if (footerSchema) {\n if(_.isArray(footerSchema)){\n wrappedBody = _.union(wrappedBody,footerSchema);\n }\n else{\n wrappedBody.push(footerSchema);\n }\n }\n body = wrappedBody;\n }\n }\n // console.timeEnd('getObjectCRUD');\n // TODO: data应该只留loaded,其他属性都改为从上层传递下来\n return {\n type: 'service',\n className: crudModeClassName,\n //目前crud的service层id不认用户自定义id,只支持默认规则id,许多地方的格式都写死了service_listview_${objectname}\n id: `service_${id}`,\n name: `page`,\n data: options.amisData,\n body: body\n }\n}\n\nconst getGlobalData = (mode)=>{\n const user = getSteedosAuth();\n return {mode: mode, user: user, spaceId: user.spaceId, userId: user.userId}\n}\n\nconst getFormFields = (objectSchema, formProps)=>{\n // console.log(`getFormFields`, objectSchema, formProps)\n const { fields: objectFields } = objectSchema;\n /**\n * fieldsExtend: 重写字段定义\n * fields: 包含的字段\n * excludedFields: 排除的字段\n */\n const { fieldsExtend, fields: includedFields, excludedFields } = formProps;\n \n let fields = {};\n // 以uiSchema fields 为基础, 遍历字段, 并更新字段定义\n _.forEach(objectSchema.fields, (field, fieldName)=>{\n if(!lodash.has(field, \"name\")){\n field.name = fieldName\n }\n if(fieldsExtend && fieldsExtend[fieldName]){\n fields[field.name] = Object.assign({}, field, fieldsExtend[fieldName], {name: field.name})\n }else{\n fields[field.name] = field\n }\n });\n\n if(!_.isEmpty(includedFields) && _.isArray(includedFields)){\n const includedFieldsMap = {}\n _.each(includedFields, (fName, index)=>{\n if(fields[fName]){\n includedFieldsMap[fName] = Object.assign({}, fields[fName], {sort_no: index})\n }\n })\n fields = includedFieldsMap\n }\n\n if(!_.isEmpty(excludedFields) && _.isArray(excludedFields)){\n _.each(excludedFields, (fName)=>{\n delete fields[fName]\n })\n }\n\n return lodash.sortBy(_.values(fields), \"sort_no\");\n}\n\nasync function getFormSchemaWithDataFilter(form, options = {}){\n const { formDataFilter, amisData, env } = options;\n let onFormDataFilter = options.onFormDataFilter;\n if (!onFormDataFilter && typeof formDataFilter === 'string') {\n onFormDataFilter = new Function(\n 'form',\n 'env',\n 'data',\n formDataFilter\n );\n }\n\n try {\n onFormDataFilter && (form = await onFormDataFilter(form, env, amisData) || form);\n } catch (e) {\n console.warn(e);\n }\n return form;\n}\n\nexport async function getObjectForm(objectSchema, ctx){\n const { recordId, formFactor, layout = formFactor === 'SMALL' ? 'normal' : \"normal\", labelAlign, tabId, appId, defaults, submitSuccActions = [], \n formDataFilter, onFormDataFilter, amisData, env } = ctx;\n const fields = _.values(objectSchema.fields);\n const formFields = getFormFields(objectSchema, ctx);\n const formSchema = defaults && defaults.formSchema || {};\n if(_.has(formSchema, 'className')){\n formSchema.className = 'steedos-amis-form'\n }\n if(!formSchema.id){\n formSchema.id = 'form_' + objectSchema.name;\n }\n const amisSchema = {\n type: 'service',\n id: `service_${formSchema.id}`,\n className: 'p-0',\n name: `page_edit_${recordId}`,\n api: await getEditFormInitApi(objectSchema, recordId, fields, ctx),\n data:{\n editFormInited: false,\n ...amisData\n },\n // data: {global: getGlobalData('edit'), recordId: recordId, objectName: objectSchema.name, context: {rootUrl: getRootUrl(), tenantId: getTenantId(), authToken: getAuthToken()}},\n initApi: null,\n initFetch: null ,\n body: [defaultsDeep({}, formSchema, {\n type: \"form\",\n mode: layout,\n data: {\n \"&\": \"${initialValues}\"\n },\n labelAlign,\n persistData: false,\n resetAfterSubmit: true,\n preventEnterSubmit: true,\n promptPageLeave: true,\n canAccessSuperData: false,\n name: `form_edit_${recordId}`,\n debug: false,\n title: \"\",\n submitText: \"\", // amis 表单不显示提交按钮, 表单提交由项目代码接管\n api: await getSaveApi(objectSchema, recordId, fields, ctx),\n initFetch: recordId != 'new',\n body: await getFormBody(fields, formFields, Object.assign({}, ctx, {fieldGroups: objectSchema.field_groups})),\n panelClassName:'m-0 sm:rounded-lg shadow-none border-none',\n bodyClassName: 'p-0',\n className: 'steedos-amis-form',\n hiddenOn: \"${editFormInited != true}\",\n onEvent: {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": `@data.changed.${objectSchema.name}`\n },\n \"data\": {\n \"objectName\": `${objectSchema.name}`,\n \"displayAs\": \"${displayAs}\"\n }\n },\n {\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": \"@data.changed.${_master.objectName}\"\n },\n \"data\": {\n \"objectName\": \"${_master.objectName}\",\n \"_isRelated\": \"${_isRelated || _master._isRelated}\"\n },\n \"expression\": `\\${_master.objectName != '${objectSchema.name}' && _master.objectName}`\n },\n ...submitSuccActions,\n // {\n // \"actionType\": \"custom\",\n // \"script\": `setTimeout(function(){doAction({'actionType': 'setValue','componentId': '${formSchema.id}','args': {'value': {'sort_no': 879}}})}, 300)`\n // },\n // {\n // \"args\": {},\n // \"actionType\": \"closeDialog\"\n // }\n ]\n }\n }\n })]\n };\n amisSchema.body[0] = await getFormSchemaWithDataFilter(amisSchema.body[0], { formDataFilter, onFormDataFilter, amisData, env });\n return amisSchema;\n}\n\nexport async function getObjectDetail(objectSchema, recordId, ctx){\n const { formFactor, layout = formFactor === 'SMALL' ? 'normal' : \"normal\", labelAlign, \n formDataFilter, onFormDataFilter, amisData, env } = ctx;\n const fields = _.values(objectSchema.fields);\n const formFields = getFormFields(objectSchema, ctx);\n const serviceId = `service_detail_page`;\n const amisSchema = {\n type: 'service',\n name: `page_readonly_${recordId}`,\n id: serviceId,\n data: {global: getGlobalData('read'), context: {rootUrl: getRootUrl(), tenantId: getTenantId(), authToken: getAuthToken()}},\n api: await getReadonlyFormInitApi(objectSchema, recordId, fields, ctx),\n body: [\n {\n \"type\": \"wrapper\", //form 的 hiddenOn 会导致 form onEvent 异常, 使用wrapper包裹一次form,并在wrapper上控制显隐\n hiddenOn: \"${recordLoaded != true}\",\n \"className\": \"p-0 m-0\",\n \"body\": {\n type: \"form\",\n mode: layout,\n labelAlign,\n persistData: false,\n promptPageLeave: false,\n name: `form_readonly_${recordId}`,\n debug: false,\n title: \"\",\n data: {\n \"formData\": \"$$\"\n },\n wrapWithPanel: false, \n body: await getFormBody(\n map(fields, (field) => { field.readonly = true; return field; }),\n map(formFields, (field) => { field.readonly = true; return field; }),\n Object.assign({}, ctx, { showSystemFields: true, fieldGroups: objectSchema.field_groups })\n ),\n className: 'steedos-amis-form bg-white',\n actions: [], // 不显示表单默认的提交按钮\n onEvent: {\n [`@data.changed.${objectSchema.name}`]: { // 由于amis service 组件的 onEvent 存在bug ,此处借助form来刷新 上层 service https://github.com/baidu/amis/issues/6294\n \"actions\": [\n {\n \"actionType\": \"reload\",\n \"componentId\": serviceId,\n \"expression\": \"this.__deletedRecord != true\"\n },\n {\n // \"args\": {\n // \"url\": \"/app/${appId}/${objectName}/grid/${side_listview_id}\",\n // \"blank\": false\n // },\n \"actionType\": \"custom\",\n \"script\": \"window.goBack()\",\n \"expression\": \"this.__deletedRecord === true\"\n }\n ]\n }\n }\n },\n }\n ],\n onEvent: {\n \"fetchInited\": {\n \"weight\": 0,\n \"actions\": [\n {\n actionType: 'broadcast',\n eventName: \"recordLoaded\",\n args: {\n eventName: \"recordLoaded\"\n },\n data: {\n objectName: \"${event.data.__objectName}\",\n record: \"${event.data.__record}\"\n },\n expression: \"${event.data.__response.error != true}\"\n },\n {\n \"actionType\": \"setValue\",\n \"args\": {\n value: {\n \"recordLoaded\": true,\n }\n },\n expression: \"${event.data.__response.error != true}\"\n }\n ]\n }\n }\n }\n\n amisSchema.body[0].body = await getFormSchemaWithDataFilter(amisSchema.body[0].body, { formDataFilter, onFormDataFilter, amisData, env });\n return amisSchema;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-01 09:00:26\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-09-03 13:21:38\n * @Description: \n */\nimport { fetchAPI, getSteedosAuth } from \"./steedos.client\"\nimport { each } from \"lodash\";\n\nconst getGraphqlFieldsQuery = (fields)=>{\n const fieldsName = ['_id'];\n fields.push('record_permissions');\n //TODO 此处需要考虑相关对象查询\n each(fields, (fieldName)=>{\n if(fieldName.indexOf('.') > -1){\n fieldName = fieldName.split('.')[0]\n }\n fieldsName.push(`${fieldName}`)\n })\n return `${fieldsName.join(' ')}`;\n}\n\nconst getFindOneQuery = (objectName, id, fields)=>{\n objectName = objectName.replace(/\\./g, '_');\n const queryFields = getGraphqlFieldsQuery(fields);\n let queryOptions = ''\n let alias = \"record\";\n \n const queryOptionsArray = [`id: \"${id}\"`];\n \n if(queryOptionsArray.length > 0){\n queryOptions = `(${queryOptionsArray.join(',')})`\n }\n\n return `{${alias}:${objectName}__findOne${queryOptions}{${queryFields}}}`\n}\n\nexport const getRecord = async (objectName, recordId, fields)=>{\n const result = await fetchAPI('/graphql', {\n method: 'post',\n body: JSON.stringify({\n query: getFindOneQuery(objectName, recordId, fields)\n })\n })\n return result.data.record;\n}\n\nexport const getRelatedsCount = async (masterRecordId, relateds) => {\n const relatedQuery = [];\n\n each(relateds, (relate)=>{\n relatedQuery.push(`${relate.object_name}: ${relate.object_name}__count(filters: [[\"${relate.foreign_key}\",\"=\",\"${masterRecordId}\"]])`);\n })\n\n const query = `\n {\n ${relatedQuery.join(',')}\n }\n `;\n const result = await fetchAPI('/graphql', {\n method: 'POST',\n body: JSON.stringify({ query })\n })\n\n return result.data\n}\n\nexport const getRecordPermissions = async (objectName, recordId)=>{\n const result = await fetchAPI(`/service/api/@${objectName}/recordPermissions/${recordId}`, {\n method: 'GET'\n })\n return result;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-05 15:55:39\n * @LastEditors: liaodaxue\n * @LastEditTime: 2023-11-14 15:55:32\n * @Description:\n */\n\n\nimport { getObjectRecordDetailRelatedListHeader } from './converter/amis/header';\nimport { isEmpty, find, isString, forEach, keys, findKey, isArray, union, has, map } from \"lodash\";\nimport { getUISchema, getField, getListViewColumns, getListViewSort, getListViewFilter } from './objects'\nimport { getRecord } from './record';\nimport { i18next } from '../i18n'\n\nfunction str2function(\n contents,\n ...args\n ) {\n try {\n let fn = new Function(...args, contents);\n return fn;\n } catch (e) {\n console.warn(e);\n return null;\n }\n}\n\nexport const getRelatedFieldValue = (masterObjectName, record_id, uiSchema, foreign_key) => {\n const relatedField = find(uiSchema.fields, (field) => {\n return foreign_key === field?.name\n });\n // console.log(`getRelatedFieldValue`, relatedField, uiSchema, foreign_key)\n if (!isString(relatedField.reference_to)) {\n return { o: masterObjectName, ids: [record_id] }\n } else if (relatedField.multiple) {\n return [record_id]\n } else {\n return record_id\n }\n}\n\n// 获取所有相关表\nexport async function getObjectRelatedList(\n objectName,\n recordId,\n formFactor\n) {\n const uiSchema = await getUISchema(objectName);\n const related = [];\n const relatedLists = [].concat(uiSchema.related_lists || []);\n if(!isEmpty(relatedLists)){\n for (const relatedList of relatedLists) {\n const arr = relatedList.related_field_fullname.split(\".\");\n const foreign_key = arr[2] ? arr[1]+'.'+arr[2] : arr[1];\n related.push({\n masterObjectName: objectName,\n object_name: arr[0],\n foreign_key,\n label: relatedList.label,\n columns: relatedList.field_names,\n sort: relatedList.sort,\n filters: relatedList.filters,\n visible_on: relatedList.visible_on,\n page_size: relatedList.page_size\n }); \n }\n }else{\n const details = [].concat(uiSchema.details || []);\n for (const detail of details) {\n const arr = detail.split(\".\");\n const foreign_key = arr[2] ? arr[1]+'.'+arr[2] : arr[1];\n related.push({\n masterObjectName: objectName,\n object_name: arr[0],\n foreign_key\n });\n }\n }\n\n return related;\n}\n\n// 获取单个相关表\nexport async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObjectName, relatedKey, ctx){\n let { top, perPage, appId, relatedLabel, className, columns, sort, filters, visible_on } = ctx;\n // console.log('getRecordDetailRelatedListSchema==>',objectName,recordId,relatedObjectName)\n const relatedObjectUiSchema = await getUISchema(relatedObjectName);\n if(!relatedObjectUiSchema){\n // 子表对象不存在时直接返回空值.\n return {\n uiSchema: {},\n amisSchema: {}\n }\n }\n const { label , fields } = relatedObjectUiSchema;\n if(!relatedLabel){\n relatedLabel = label;\n }\n if(!relatedKey){\n let mainRelated = {};\n const mainObjectUiSchema = await getUISchema(objectName);\n if(mainObjectUiSchema){\n const mainRelatedLists = mainObjectUiSchema.related_lists || [];\n if(!isEmpty(mainRelatedLists)){\n for (const relatedList of mainRelatedLists) {\n const arr = relatedList.related_field_fullname.split(\".\");\n const foreign_key_value = arr[2] ? arr[1]+'.'+arr[2] : arr[1];\n mainRelated[arr[0]] = foreign_key_value;\n }\n }else{\n const details = union(mainObjectUiSchema.details,mainObjectUiSchema.lookup_details) || [];\n for (const detail of details) {\n const arr = detail.split(\".\");\n const foreign_key_value = arr[2] ? arr[1]+'.'+arr[2] : arr[1];\n if(!has(mainRelated,arr[0])){\n mainRelated[arr[0]] = foreign_key_value;\n }\n }\n }\n }\n relatedKey = mainRelated[relatedObjectName];\n }\n let globalFilter = null;\n // TODO: refField变量去掉,写到amis运行时脚本中,uiSchema.fields[relatedKey];可以取到\n const refField = await getField(relatedObjectName, relatedKey);\n\n if(!refField){\n return {\n uiSchema: relatedObjectUiSchema,\n amisSchema: {\n \"type\": \"alert\",\n \"body\": `${i18next.t('frontend_objects_related_alert_start')} ${relatedObjectName} ${i18next.t('frontend_objects_related_alert_end')}`,\n \"level\": \"warning\",\n \"showIcon\": true,\n \"className\": \"mb-3\"\n }\n }\n }\n\n let relatedValue = \"${recordId}\";\n // if(refField.reference_to_field && refField.reference_to_field != '_id'){\n // const masterRecord = await getRecord(objectName, recordId, [refField.reference_to_field]);\n // relatedValue = masterRecord[refField.reference_to_field]\n // }\n \n // if (\n // refField._reference_to ||\n // (refField.reference_to && !isString(refField.reference_to))\n // ) {\n // globalFilter = [\n // [`${relatedKey}/o`, \"=\", objectName],\n // [`${relatedKey}/ids`, \"=\", relatedValue],\n // ];\n // } else {\n // globalFilter = [`${relatedKey}`, \"=\", relatedValue];\n // }\n const recordRelatedListHeader = await getObjectRecordDetailRelatedListHeader(relatedObjectUiSchema, relatedLabel, ctx);\n const componentId = `steedos-record-related-list-${relatedObjectName}`;\n const isMobile = window.innerWidth < 768;\n let headerToolbar = [];\n if(!isMobile){\n headerToolbar.push(\"bulkActions\");\n }\n const options = {\n globalFilter,\n defaults: {\n listSchema: { \n headerToolbar,\n columnsTogglable: false,\n onEvent: {\n [`@data.changed.${relatedObjectName}`]: {\n \"actions\": [\n {\n \"actionType\": \"reload\"\n }\n ]\n }\n }\n },\n headerSchema: recordRelatedListHeader\n },\n showHeader: true,\n top: top,\n perPage: perPage,\n setDataToComponentId: componentId,\n // tableHiddenOn: hiddenEmptyTable ? \"this.$count === 0\" : null,\n appId: appId,\n crudClassName: 'border-t border-gray-300 hidden',\n refField,\n ...ctx\n }\n const amisSchema= (await getRelatedListSchema(relatedObjectName, 'all', options)).amisSchema;\n if(!amisSchema){\n return;\n }\n return {\n uiSchema: relatedObjectUiSchema,\n amisSchema: {\n type: \"service\",\n id: componentId,\n className: `steedos-record-related-list ${componentId} rounded border border-gray-300 bg-gray-100 mb-4 ${className}`,\n data: {\n relatedKey: relatedKey, \n listViewId: `amis-\\${appId}-${relatedObjectName}-listview`,\n _isRelated: true\n },\n body:[\n amisSchema\n ]\n }\n };\n}\n\n/**\n* \n* @param {*} uiSchema \n* @param {*} ctx \n* @returns \n* 1 对象uiSchema\n* 2 列表视图名称: (排除日历视图)当无视图传入,取is_name为true的字段显示。\n* 3 options\n*/\nfunction getDefaultRelatedListProps(uiSchema, listName, ctx) {\n // console.log('getDefaultRelatedListProps==>', uiSchema, listName, ctx)\n const listView = find(\n uiSchema.list_views,\n (listView, name) => {\n // 日历视图不在相关子表中出现\n if(listView.type === 'calendar'){\n return false;\n }\n // 传入listViewName空值则取第一个\n if (!listName) {\n listName = name;\n }\n return name === listName;\n }\n );\n let columns = [];\n let sort = '';\n let filter = null;\n let filtersFunction = null;\n if(listView){\n columns = getListViewColumns(listView, ctx.formFactor);\n sort = getListViewSort(listView);\n filter = getListViewFilter(listView);\n // if(isArray(ctx.globalFilter) && ctx.globalFilter.length && isArray(filter) && filter.length){\n // // 都有值\n // filter = [ctx.globalFilter, 'and', filter]\n // }else if(ctx.globalFilter && (!filter || !filter.length)){\n // // globalFilter有值,filter无值\n // filter = ctx.globalFilter;\n // }\n filtersFunction = listView && listView._filters;\n }else{\n const isNameField = find(\n uiSchema.fields,\n (field,name)=>{\n return field.is_name;\n }\n )\n columns = isNameField ? [isNameField.name] : ['name'];\n // if(ctx.globalFilter){\n // filter = ctx.globalFilter;\n // }\n }\n\n return {\n columns,\n sort,\n filter,\n filtersFunction\n }\n};\n \nfunction getRelatedListProps(uiSchema, listViewName, ctx) {\n if (ctx.columns) {\n const sort = getListViewSort({sort: ctx.sort});\n let { filters , filtersFunction} = ctx;\n if(!filtersFunction && filters){\n filtersFunction = str2function(\n filters,\n 'filters',\n 'data'\n ) \n }\n return {\n columns: ctx.columns,\n sort,\n // filter: ctx.globalFilter,\n filtersFunction: filtersFunction\n }\n } else {\n return getDefaultRelatedListProps(uiSchema, listViewName, ctx);\n }\n}\n\n// 仅提供给单个相关子表内部使用\nexport async function getRelatedListSchema(\n objectName,\n listViewName,\n ctx\n ) {\n const uiSchema = await getUISchema(objectName);\n if(!uiSchema){\n return {}\n }\n const listViewNames = map(uiSchema.list_views, 'name');\n const listView = find(\n uiSchema.list_views,\n (listView, name) => {\n // 传入listViewName空值 或者 不存在 则取第一个\n if(!listViewName || listViewNames.indexOf(listViewName)<0){\n listViewName = name;\n }\n return name === listViewName || listView._id === listViewName;\n }\n );\n const listViewProps = getRelatedListProps(uiSchema,listViewName, ctx);\n // console.log('listViewProps==>', listViewProps)\n const {columns: listViewColumns, sort: listViewSort, filter: listviewFilter, filtersFunction } = listViewProps;\n\n const refFieldName = ctx.refField && ctx.refField.name;\n\n let relatedListColumns = listViewColumns;\n if(refFieldName){\n relatedListColumns = listViewColumns.filter(function(columnItem){\n if(typeof columnItem === \"string\"){\n return columnItem !== refFieldName;\n }\n else{\n return columnItem.field !== refFieldName;\n }\n });\n }\n \n const defaults = ctx.defaults || {};\n \n if(!defaults.headerSchema && ctx.showHeader){\n defaults.headerSchema = await getObjectListHeader(uiSchema, listViewName);\n }\n \n if(!ctx.showHeader){\n defaults.headerSchema = null;\n }\n \n ctx.defaults = defaults;\n\n // 由于steedos-object-table组件的上下文覆盖规则异常,此处手动删除无需的ctx参数\n delete ctx.filtersFunction;\n delete ctx.sort;\n delete ctx.extraColumns;\n delete ctx.filters;\n\n delete ctx.globalFilter;\n\n const adaptor = `\n try{\n if(setDataToComponentId){\n if(payload.data.count){\n setTimeout(function(){\n // 设计器中获取不到window.$从而导致报错, 所以用纯js替换下。\n // window.$(\".\" + setDataToComponentId + \" .antd-Crud\").removeClass(\"hidden\");\t\t\n document.querySelectorAll(\".\" + setDataToComponentId + \" .antd-Crud\").forEach(function(element) {\n element.classList.remove(\"hidden\");\n });\n }, 10);\n }\n };\n }catch(e){\n console.log(e);\n }\n `;\n const amisSchema = {\n \"type\": \"steedos-object-table\",\n \"objectApiName\": objectName,\n \"columns\": relatedListColumns,\n \"extraColumns\": listView.extra_columns,\n \"filters\": listviewFilter,\n \"filtersFunction\": filtersFunction,\n \"sort\": listViewSort,\n \"filterVisible\": false,\n \"requestAdaptor\": ctx.requestAdaptor, \n \"adaptor\": adaptor + ctx.adaptor || '',\n \"ctx\": ctx\n };\n // console.log(`getRelatedListSchema amisSchema`, amisSchema);\n return {\n uiSchema,\n amisSchema,\n };\n }","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-05 15:55:39\n * @LastEditors: liaodaxue\n * @LastEditTime: 2023-10-20 11:38:25\n * @Description:\n */\nimport { fetchAPI, getUserId } from \"./steedos.client\";\nimport { getObjectCalendar } from './converter/amis/calendar';\nimport { i18next } from '../i18n'\nimport { createObject } from '../utils/object'\n\nimport {\n getObjectCRUD,\n getObjectDetail,\n getObjectForm,\n} from \"./converter/amis/index\";\nimport { getObjectListHeader, getObjectListHeaderFirstLine, getObjectRecordDetailHeader, getObjectRecordDetailRelatedListHeader } from './converter/amis/header';\nimport _, { cloneDeep, slice, isEmpty, each, has, findKey, find, isString, isObject, keys, includes, isArray, isFunction, map, forEach, defaultsDeep } from \"lodash\";\nimport { getRecord } from './record';\nimport { getListViewItemButtons } from './buttons'\nimport { getObjectRelatedList } from './objectsRelated';\n\nlet UI_SCHEMA_CACHE = {};\n\nlet UISchemaFunction;\nexport const setUISchemaFunction = function(fun){\n UISchemaFunction = fun;\n};\n\nif('undefined' != typeof window){\n if(!window.UI_SCHEMA_CACHE){\n window.UI_SCHEMA_CACHE = UI_SCHEMA_CACHE;\n }\n UI_SCHEMA_CACHE = window.UI_SCHEMA_CACHE;\n}\n\nconst setUISchemaCache = (key, value) => {\n UI_SCHEMA_CACHE[key] = value;\n};\n\nconst getUISchemaCache = (key) => {\n return cloneDeep(UI_SCHEMA_CACHE[key]);\n};\n\nconst hasUISchemaCache = (key) => {\n return has(UI_SCHEMA_CACHE, key);\n};\n\nexport function getListViewColumns(listView, formFactor) {\n let listViewColumns = [];\n if (formFactor === \"SMALL\") {\n listViewColumns = !isEmpty(listView.mobile_columns)\n ? listView.mobile_columns\n : slice(listView.columns, 0, 4);\n } else {\n listViewColumns = listView.columns;\n }\n return listViewColumns;\n};\n\nexport function getListViewSort(listView) {\n let sort = '';\n if(listView && listView.sort && listView.sort.length){\n each(listView.sort,function(item,index){\n if(isArray(item)){\n const field_name = item[0];\n const order = item[1] || '';\n let sortStr = field_name + ' ' + order;\n sortStr = index > 0 ? ','+sortStr : sortStr\n sort += sortStr;\n }else{\n let sortStr = item.field_name + ' ' + item.order;\n sortStr = index > 0 ? ','+sortStr : sortStr\n sort += sortStr;\n }\n })\n }\n return sort;\n};\n\nexport function getListViewFilter(listView){\n if(!listView){\n return ;\n }\n try {\n const userId = getUserId();\n let filters = listView.filters;\n if(listView.filter_scope === 'mine'){\n if(_.isEmpty(filters)){\n filters = [[\"owner\", \"=\", userId]]\n }else{\n if(_.isString(filters) && _.startsWith(_.trim(filters), \"function\")){\n filters = new Function(`return ${filters}`);\n filters = filters();\n }\n if(_.isArray(filters)){\n filters.push([\"owner\", \"=\", userId])\n }else{\n console.debug(`listView filters is not array`, listView)\n throw new Error('filters is not array')\n }\n }\n };\n return filters;\n } catch (error) {\n console.error(error)\n }\n}\n\nfunction formatUISchemaCache(objectName, uiSchema){\n setUISchemaCache(objectName, uiSchema);\n each(uiSchema.fields, (field)=>{\n try {\n if(field.type === \"lookup\" && field._reference_to && _.isString(field._reference_to)){\n field.reference_to = eval(`(${field._reference_to})`)();\n }\n } catch (exception) {\n field.reference_to = undefined;\n console.error(exception)\n }\n })\n each(uiSchema.list_views, (v, k)=>{\n v.name = k;\n if(!has(v, 'columns')){\n v.columns = uiSchema.list_views.all.columns;\n }\n })\n}\n\nexport async function getUISchema(objectName, force) {\n if (!objectName) {\n return;\n }\n if (hasUISchemaCache(objectName) && !force) {\n return getUISchemaCache(objectName);\n }\n let uiSchema = null;\n try {\n if(UISchemaFunction){\n uiSchema = await UISchemaFunction(objectName, force);\n }\n else {\n const url = `/service/api/@${objectName.replace(/\\./g, \"_\")}/uiSchema`;\n uiSchema = await fetchAPI(url, { method: \"get\" });\n }\n if(!uiSchema){\n return ;\n }\n formatUISchemaCache(objectName, uiSchema);\n } catch (error) {\n console.error(`getUISchema`, objectName, error);\n setUISchemaCache(objectName, null);\n }\n return getUISchemaCache(objectName);\n}\n\nexport function getUISchemaSync(objectName, force) {\n if (!objectName) {\n return;\n }\n if (hasUISchemaCache(objectName) && !force) {\n return getUISchemaCache(objectName);\n }\n let uiSchema = null;\n try {\n \n const url = `/service/api/@${objectName.replace(/\\./g, \"_\")}/uiSchema`;\n uiSchema = Steedos.authRequest(url, {\n type: 'GET',\n async: false,\n });\n\n if(!uiSchema){\n return ;\n }\n formatUISchemaCache(objectName, uiSchema);\n } catch (error) {\n console.error(`getUISchema`, objectName, error);\n setUISchemaCache(objectName, null);\n }\n return getUISchemaCache(objectName);\n}\n\nexport async function getField(objectName, fieldName) {\n const uiSchema = await getUISchema(objectName);\n return uiSchema?.fields[fieldName];\n}\n\n// 获取表单页面\nexport async function getFormSchema(objectName, ctx) {\n const uiSchema = await getUISchema(objectName);\n const amisSchema = await getObjectForm(uiSchema, ctx);\n console.log(`getFormSchema====>`, amisSchema)\n return {\n uiSchema,\n amisSchema,\n };\n}\n\n// 获取只读页面 recordId 已废弃, 函数签名保持不变, 但recordId变量不可再使用, 请使用运行时的${recordId}\nexport async function getViewSchema(objectName, recordId, ctx) {\n const uiSchema = await getUISchema(objectName);\n const amisSchema = await getObjectDetail(uiSchema, recordId, ctx);\n // console.log(`getViewSchema amisSchema`, amisSchema)\n return {\n uiSchema,\n amisSchema\n };\n}\n\n// 获取列表视图\nexport async function getListSchema(\n appName,\n objectName,\n listViewName,\n ctx = {}\n) {\n const uiSchema = await getUISchema(objectName);\n if(!uiSchema){\n return {}\n }\n const listView = find(\n uiSchema.list_views,\n (listView, name) => {\n // 传入listViewName空值则取第一个\n if(!listViewName){\n listViewName = name;\n }\n return name === listViewName || listView._id === listViewName;\n }\n );\n\n if (!listView) {\n return { uiSchema };\n }\n\n // 直接返回自定义的列表视图schema\n if(listView.enable_amis_schema && listView.amis_schema){\n const amisSchema = isString(listView.amis_schema) ? JSON.parse(listView.amis_schema) : listView.amis_schema;\n return {\n uiSchema,\n isCustomAmisSchema: true,\n amisSchema\n };\n }\n\n let listViewColumns = getListViewColumns(listView, ctx.formFactor);\n let sort = getListViewSort(listView);\n let listviewFilter = getListViewFilter(listView, ctx);\n let listview_filters = listView && listView._filters;\n // 返回 calendar 组件\n if(listView.type === \"calendar\"){\n const amisSchema = {\n \"type\": \"steedos-object-calendar\",\n \"objectApiName\": objectName,\n \"filters\": listviewFilter,\n \"filtersFunction\": listview_filters,\n \"sort\": sort,\n ...listView.options\n };\n return {\n uiSchema,\n isCalendar: true,\n amisSchema\n };\n }\n\n const defaults = ctx.defaults || {};\n\n // // 未自定义header 且显示header的时候, 使用系统header\n // if(!defaults.headerSchema && ctx.showHeader){\n // defaults.headerSchema = getObjectListHeader(uiSchema, listViewName);\n // }\n \n // // 如果不显示header,则清理掉\n // if(!ctx.showHeader){\n // defaults.headerSchema = null;\n // }\n\n defaults.headerSchema = null;\n\n /**\n * 本次存储代码段\n */\n try {\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n /**\n * localListViewProps规范来自crud请求api中api.data.$self参数值的。\n * 比如:{\"perPage\":20,\"page\":1,\"__searchable__name\":\"7\",\"__searchable__between__n1__c\":[null,null],\"filter\":[[\"name\",\"contains\",\"a\"]]}\n * __searchable__...:顶部放大镜搜索条件\n * filter:右侧过滤器\n * perPage:每页条数\n * page:当前页码\n * orderBy:排序字段\n * orderDir:排序方向\n */\n if (localListViewProps) {\n localListViewProps = JSON.parse(localListViewProps);\n // localListViewProps.perPage = 3;\n let listSchema = {};\n if(localListViewProps.orderBy){\n listSchema.orderBy = localListViewProps.orderBy;\n }\n if(localListViewProps.orderDir){\n listSchema.orderDir = localListViewProps.orderDir;\n }\n\n if(localListViewProps.perPage){\n listSchema.defaultParams = {\n perPage: localListViewProps.perPage\n }\n }\n defaults.listSchema = defaultsDeep({}, listSchema, defaults.listSchema || {});\n }\n }\n catch (ex) {\n console.error(\"本地存储中crud参数解析异常:\", ex);\n }\n\n ctx.defaults = defaults;\n\n if (listViewName == \"recent\") {\n listview_filters = `\n function(filters, data) {\n var result = Steedos.authRequest('/graphql', {\n type: 'POST',\n async: false,\n data: JSON.stringify({\n query: '{object_recent_viewed(filters: [[\"record.o\",\"=\",\"' + data.objectName + '\"],[\"space\",\"=\",\"' + data.context.tenantId + '\"],[\"owner\",\"=\",\"' + data.context.userId + '\"]],sort:\"modified desc\",top:50){ _id,record} }'\n }),\n });\n var _ids = []\n result.data.object_recent_viewed.forEach(function (item) {\n _ids = _ids.concat(item.record.ids)\n })\n return [\"_id\", \"=\", _ids];\n }\n `\n }\n const amisSchema = {\n \"type\": \"steedos-object-table\",\n \"objectApiName\": objectName,\n \"columns\": listViewColumns,\n \"extraColumns\": listView.extra_columns,\n \"filters\": listviewFilter,\n \"filtersFunction\": listview_filters,\n \"sort\": sort,\n \"ctx\": ctx,\n \"requestAdaptor\": listView.requestAdaptor || ctx.requestAdaptor, \n \"adaptor\": listView.adaptor || ctx.adaptor,\n \"headerToolbarItems\": ctx.headerToolbarItems,\n \"filterVisible\": ctx.filterVisible,\n \"rowClassNameExpr\": ctx.rowClassNameExpr,\n \"crudDataFilter\": ctx.crudDataFilter,\n \"onCrudDataFilter\": ctx.onCrudDataFilter\n };\n // console.log(`getListSchema===>`,amisSchema)\n return {\n uiSchema,\n amisSchema,\n };\n}\n\nasync function convertColumnsToTableFields(columns, uiSchema, ctx = {}) {\n let fields = [];\n for (const column of columns) {\n if (isString(column)) {\n if (column.indexOf('.') > 0) {\n const fieldName = column.split('.')[0];\n const displayName = column.split('.')[1];\n const filedInfo = uiSchema.fields[fieldName];\n if (filedInfo && (filedInfo.type === 'lookup' || filedInfo.type === 'master_detail') && isString(filedInfo.reference_to)) {\n const rfUiSchema = await getUISchema(filedInfo.reference_to);\n const rfFieldInfo = rfUiSchema.fields[displayName];\n fields.push(Object.assign({}, rfFieldInfo, { name: `${fieldName}__expand.${displayName}`, expand: true, expandInfo: { fieldName, displayName } }, ctx));\n }\n } else {\n if (uiSchema.fields[column]) {\n fields.push(Object.assign({}, uiSchema.fields[column], ctx));\n }\n else if(ctx.extra){\n // 配置列表视图extra_columns时允许字段是hidden的,hidden的字段在uiSchema.fields中不存在\n fields.push({\n extra: true,\n name: column\n });\n }\n }\n } else if (isObject(column)) {\n if (column.field.indexOf('.') > 0) {\n const fieldName = column.field.split('.')[0];\n const displayName = column.field.split('.')[1];\n const filedInfo = uiSchema.fields[fieldName];\n if (filedInfo && (filedInfo.type === 'lookup' || filedInfo.type === 'master_detail') && isString(filedInfo.reference_to)) {\n const rfUiSchema = await getUISchema(filedInfo.reference_to);\n const rfFieldInfo = rfUiSchema.fields[displayName];\n fields.push(Object.assign({}, rfFieldInfo, ctx,\n { name: `${fieldName}__expand.${displayName}`, expand: true, expandInfo: { fieldName, displayName } },\n {\n width: column.width,\n wrap: column.wrap, // wrap = true 是没效果的\n amis: column.amis\n }\n ));\n }\n } else {\n if (uiSchema.fields[column.field]) {\n fields.push(\n Object.assign({}, uiSchema.fields[column.field], ctx, {\n width: column.width,\n wrap: column.wrap, // wrap = true 是没效果的\n amis: column.amis\n })\n );\n }\n else if(ctx.extra){\n // 配置列表视图extra_columns时允许字段是hidden的,hidden的字段在uiSchema.fields中不存在\n fields.push({\n extra: true,\n name: column.field\n });\n }\n }\n }\n }\n return fields;\n}\n\n// 获取对象表格\nexport async function getTableSchema(\n appName,\n objectName,\n columns,\n ctx = {}\n) {\n // console.time('getTableSchema', columns);\n const uiSchema = await getUISchema(objectName);\n\n let sort = ctx.sort;\n if(!sort){\n const sortField = ctx.sortField;\n const sortOrder = ctx.sortOrder;\n if(sortField){\n let sortStr = sortField + ' ' + sortOrder || 'asc';\n sort = sortStr;\n }\n }\n\n let fields = await convertColumnsToTableFields(columns, uiSchema);\n\n const extraColumns = ctx.extraColumns;\n\n if (extraColumns) {\n let extraFields = await convertColumnsToTableFields(extraColumns, uiSchema, {extra: true});\n fields = fields.concat(extraFields);\n }\n \n let crudOptions = {\n tabId: objectName,\n appId: appName,\n objectName: objectName,\n ...ctx,\n filter: ctx.filters,\n sort,\n headerToolbarItems: ctx.headerToolbarItems,\n buttons: await getListViewItemButtons(uiSchema, ctx)\n };\n crudOptions.amisData = createObject(ctx.amisData || {}, {});\n const amisSchema = await getObjectCRUD(uiSchema, fields, crudOptions);\n // console.timeEnd('getTableSchema');\n return {\n uiSchema,\n amisSchema,\n };\n}\n\n// 获取对象日历\nexport async function getCalendarSchema(\n appName,\n objectName,\n calendarOptions,\n ctx = {}\n) {\n const uiSchema = await getUISchema(objectName);\n const amisSchema = await getObjectCalendar(uiSchema, calendarOptions, {\n tabId: objectName,\n appId: appName,\n objectName: objectName,\n ...ctx\n });\n return {\n uiSchema,\n amisSchema\n };\n}\n\nexport async function getRecordDetailHeaderSchema(objectName,recordId, options){\n const uiSchema = await getUISchema(objectName);\n const amisSchema = await getObjectRecordDetailHeader(uiSchema, recordId, options);\n return {\n uiSchema,\n amisSchema,\n };\n}\n\nexport async function getRecordDetailSchema(objectName, appId, props = {}){\n const uiSchema = await getUISchema(objectName);\n const relatedLists = await getObjectRelatedList(objectName, null, null);\n const detailed = {\n \"title\": i18next.t('frontend_record_detail_tab_detailed'),\n \"className\": \"px-0 py-4\",\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"${objectName}\",\n \"recordId\": \"${recordId}\",\n \"id\": \"u:d4a495811d57\",\n appId: appId\n }\n ],\n \"id\": \"u:5d4e7e3f6ecc\"\n };\n const related = {\n \"title\": i18next.t('frontend_record_detail_tab_related'),\n \"className\": \"px-0 pt-4\",\n \"body\": [\n {\n \"type\": \"steedos-object-related-lists\",\n \"label\": \"相关列表\",\n \"objectApiName\": \"${objectName}\",\n \"recordId\": \"${recordId}\",\n \"id\": \"u:3b85b7b7a7f6\",\n appId: appId\n }\n ],\n \"id\": \"u:1a0326aeec2b\"\n }\n const content = {\n \"type\": \"tabs\",\n \"className\": \"sm:mt-3 bg-white sm:rounded sm:border border-gray-300 p-4\",\n \"tabs\": [\n detailed\n ],\n \"id\": \"u:a649e4094a12\"\n };\n if(relatedLists.length){\n content.tabs.push(related)\n }\n return {\n uiSchema,\n amisSchema: {\n \"type\": \"service\",\n \"body\": [\n {\n \"type\": \"steedos-record-detail-header\",\n \"label\": \"标题面板\",\n \"objectApiName\": \"${objectName}\",\n \"recordId\": \"${recordId}\",\n \"id\": \"u:48d2c28eb755\"\n },\n content\n ],\n data: {\n \"_master.objectName\": \"${objectName}\", \n \"_master.recordId\": \"${recordId}\"\n },\n onEvent: {\n \"recordLoaded\": {\n \"actions\": [\n {\n \"actionType\": \"reload\",\n \"data\": {\n \"name\": `\\${record.${uiSchema.NAME_FIELD_KEY || 'name'}}`,\n \"_master.record\": `\\${record}`, \n // 不清楚reload 如何给对象下的某个key复制, 所以此处重复设置_master的objectName、recordId\n \"_master.objectName\": \"${objectName}\", \n \"_master.recordId\": \"${recordId}\"\n }\n }\n ]\n },\n ...props.onEvent\n },\n }\n }\n}\n\nexport async function getRecordServiceSchema(objectName, appId, props = {}) {\n const uiSchema = await getUISchema(objectName);\n return {\n uiSchema,\n amisSchema: {\n \"type\": \"service\",\n \"body\": [],\n data: {\n \"_master.objectName\": \"${objectName}\",\n \"_master.recordId\": \"${recordId}\"\n },\n \"style\": {\n \"padding\": \"var(--Page-body-padding)\",\n ...props.style\n },\n onEvent: {\n \"recordLoaded\": {\n \"actions\": [\n {\n \"actionType\": \"reload\",\n \"data\": {\n \"name\": `\\${record.${uiSchema.NAME_FIELD_KEY || 'name'}}`,\n \"_master.record\": `\\${record}`,\n // 不清楚reload 如何给对象下的某个key复制, 所以此处重复设置_master的objectName、recordId\n \"_master.objectName\": \"${objectName}\",\n \"_master.recordId\": \"${recordId}\"\n }\n }\n ]\n },\n ...props.onEvent\n }\n }\n }\n}\n\n// 获取单个相关表\nexport async function getObjectRelated(\n {appName,\n masterObjectName,\n objectName,\n relatedFieldName,\n recordId,\n formFactor}\n) {\n let filter = null;\n const refField = await getField(objectName, relatedFieldName);\n if (\n refField._reference_to ||\n (refField.reference_to && !isString(refField.reference_to))\n ) {\n filter = [\n [`${relatedFieldName}/o`, \"=\", masterObjectName],\n [`${relatedFieldName}/ids`, \"=\", recordId],\n ];\n } else {\n filter = [`${relatedFieldName}`, \"=\", recordId];\n }\n const masterObjectUISchema = await getUISchema(masterObjectName);\n return {\n masterObjectName: masterObjectName,\n object_name: objectName,\n foreign_key: relatedFieldName,\n schema: await getListSchema(appName, objectName, \"all\", {\n globalFilter: filter,\n formFactor: formFactor,\n }),\n record: await getRecord(masterObjectName, recordId, [\n masterObjectUISchema.NAME_FIELD_KEY,\n ]),\n masterObjectUISchema: masterObjectUISchema,\n };\n}\n\n\nif(typeof window != 'undefined'){\n window.getUISchema = getUISchema;\n window.getUISchemaSync = getUISchemaSync;\n window.getListSchema = getListSchema;\n}","import * as graphql from '../graphql';\nimport * as Field from './index';\nimport * as Tpl from '../tpl';\nimport * as _ from 'lodash';\nimport { getUISchema, getListViewSort } from '../../../objects';\nimport { getLookupListView } from '../util';\n\nconst refUsersObjectName = \"space_users\";\nconst refOrgsObjectName = \"organizations\";\n\nasync function getSource(field, ctx) {\n // data.query 最终格式 \"{ \\tleftOptions:organizations(filters: {__filters}){value:_id,label:name,children}, children:organizations(filters: {__filters}){ref:_id,children}, defaultValueOptions:space_users(filters: {__options_filters}){user,name} }\"\n const data = await graphql.getFindQuery({ name: refOrgsObjectName }, null, [{ name: \"_id\", alias: \"value\" },{name: \"parent\"}, { name: \"name\", alias: \"label\" }, { name: \"children\" }], {\n alias: \"leftOptions\",\n filters: \"{__filters}\"\n });\n data.query = data.query.replace(/,count\\:.+/, \"}\");\n const childrenData = await graphql.getFindQuery({ name: refOrgsObjectName }, null, [{ name: \"_id\", alias: \"ref\" }], {\n alias: \"children\",\n filters: \"{__filters}\"\n });\n childrenData.query = childrenData.query.replace(/,count\\:.+/, \"}\");\n data.query = data.query.replace(/}$/, \",\" + childrenData.query.replace(/{(.+)}/, \"$1}\"));\n const defaultValueOptionsData = await graphql.getFindQuery({ name: refUsersObjectName }, null, [{ name: \"user\", alias: \"value\" }, { name: \"name\", alias: \"label\" }], {\n alias: \"defaultValueOptions\",\n filters: \"{__options_filters}\"\n });\n defaultValueOptionsData.query = defaultValueOptionsData.query.replace(/,count\\:.+/, \"}\");\n data.query = data.query.replace(/}$/, \",\" + defaultValueOptionsData.query.replace(/{(.+)}/, \"$1}\"))\n let valueField = `${field.name}`;\n if(field._prefix){\n // field._prefix一般来object类型字段的子字段的父字段api名称,比如流程对象的字段perms.users_can_add前缀为perms.\n valueField = `${field._prefix}${field.name}`;\n }\n if(ctx.fieldNamePrefix){\n // ctx.fieldNamePrefix一般来自列表搜索,值为__searchable__\n valueField = `${ctx.fieldNamePrefix}${valueField}`;\n }\n data.$value = `$${valueField}`;\n // data[\"&\"] = \"$$\";\n\n const requestAdaptor = `\n var filters = [];\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters));\n var defaultValue = api.data.$value;\n var optionsFiltersOp = \"${field.multiple ? \"in\" : \"=\"}\";\n var optionsFilters = [[\"user\", optionsFiltersOp, []]];\n if (defaultValue) { \n optionsFilters = [[\"user\", optionsFiltersOp, defaultValue]];\n }\n api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters));\n return api;\n `;\n const adaptor = `\n const data = payload.data;\n const rows = data.leftOptions\n data.children = data.children.map(function (child) { \n // child.defer = !!(child.children && child.children.length);\n child.defer = true;\n delete child.children;\n return child;\n });\n\n var getTreeOptions = SteedosUI.getTreeOptions\n data.leftOptions = getTreeOptions(rows);\n\n \n var defaultValueOptions = data.defaultValueOptions;\n data.children = _.union(data.children, defaultValueOptions);\n delete data.defaultValueOptions;\n payload.data = { options: [data] };\n return payload;\n `;\n return {\n \"method\": \"post\",\n // 这里需要ObjectForm在api请求成功后才显示其中的amis form,否则就会有bug\n // 见issue: https://github.com/baidu/amis/issues/6065\n // \"url\": graphql.getApi() + `?value=\\${${field.multiple ? valueField + \"|join\" : valueField}}`,\n // \"url\": graphql.getApi() + `?value=\\${editFormInited}`,\n \"url\": graphql.getApi(),\n \"requestAdaptor\": requestAdaptor,\n \"adaptor\": adaptor,\n \"data\": data,\n // \"sendOn\": `this.editFormInited`,\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n }\n}\n\nasync function getDeferApi(field, ctx) {\n // data.query 最终格式 \"{ \\toptions:{__object_name}(filters:{__filters}){{__fields}} }\"\n const data = await graphql.getFindQuery({ name: \"{__object_name}\" }, null, [], {\n alias: \"options\",\n // filters: \"{__filters}\",\n queryOptions: `filters: {__filters}, sort: \"{__sort}\"`\n });\n // 传入的默认过滤条件,比如[[\"name\", \"contains\", \"三\"]],将会作为基本过滤条件\n let filters = field.filters;\n if(typeof filters === \"string\"){\n filters = new Function(`return ${filters}`);\n filters = filters();\n }\n if(typeof filters === \"function\"){\n filters = filters(field);\n }\n data.query = data.query.replace(/,count\\:.+/, \"}\");\n // 字段要根据请求参数动态生成,写死为__fields后续在发送适配器中替换\n data.query = data.query.replace(\"{_id}\", \"{{__fields}}\");\n const requestAdaptor = `\n var dep = api.query.dep;\n var ref = api.query.ref;\n var term = api.query.term;\n var filters;\n var objectName;\n var fields;\n var sort = \"\";\n if (dep) {\n objectName = \"${refOrgsObjectName}\";\n fields = \"value:_id,label:name,children\";\n filters = [['parent', '=', dep]];\n sort = \"${ctx.orgsSort}\";\n }\n else if (ref) { \n objectName = \"${refUsersObjectName}\";\n // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次\n fields = \"_id,value:user,label:name\";\n // fields = \"user,name,value:user,label:name\";\n filters = [['user_accepted', '=', true]];\n var defaultFilters = ${filters && JSON.stringify(filters)};\n if(defaultFilters){\n filters.push(defaultFilters);\n }\n filters.push(['organizations_parents', '=', ref]);\n sort = \"${ctx.usersSort}\";\n }\n api.data.query = api.data.query.replace(/{__object_name}/g, objectName).replace(/{__fields}/g, fields).replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());\n return api;\n `;\n const adaptor = `\n if (api.query.dep) {\n // 展开组织时才需要根据children值设置defer属性\n const data = payload.data;\n data.options = data.options.map(function (option) {\n option.defer = !!(option.children && option.children.length);\n delete option.children;\n return option;\n });\n payload.data = data;\n }\n return payload;\n `;\n return {\n \"method\": \"post\",\n \"url\": graphql.getApi() + \"&ref=${ref}&dep=${value}\",\n \"requestAdaptor\": requestAdaptor,\n \"adaptor\": adaptor,\n \"data\": data,\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nasync function getSearchApi(field, ctx) {\n // data.query 最终格式 \"{ \\toptions:space_users(filters: {__filters}){user,name,value:user,label:name}}\"\n // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次\n const data = await graphql.getFindQuery({ name: refUsersObjectName }, null, [{ name: \"user\", alias: \"value\" }, { name: \"name\", alias: \"label\" }], {\n alias: \"options\",\n // filters: \"{__filters}\",\n queryOptions: `filters: {__filters}, sort: \"{__sort}\"`\n });\n data.query = data.query.replace(/,count\\:.+/, \"}\");\n // 传入的默认过滤条件,比如[[\"name\", \"contains\", \"三\"]],将会作为基本过滤条件\n const filters = field.filters;\n const requestAdaptor = `\n var term = api.query.term;\n var filters;\n var sort = \"\";\n if (term) { \n filters = [['user_accepted', '=', true]];\n var defaultFilters = ${filters && JSON.stringify(filters)};\n if(defaultFilters){\n filters.push(defaultFilters);\n }\n var fieldsForSearch = [\"name\", \"username\", \"email\", \"mobile\"];\n var termFilters = [];\n fieldsForSearch.forEach(function (field) {\n termFilters.push([field, 'contains', term]);\n termFilters.push(\"or\");\n });\n termFilters.pop();\n filters.push(termFilters);\n sort = \"${ctx.usersSort}\";\n }\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());\n return api;\n `;\n return {\n \"method\": \"post\",\n \"url\": graphql.getApi() + \"?term=${term}\",\n \"requestAdaptor\": requestAdaptor,\n \"data\": data,\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nfunction getRefListViewSort(refObject){\n let listView = getLookupListView(refObject);\n let sort = \"\";\n if(listView){\n sort = getListViewSort(listView);\n }\n return sort;\n}\n\nexport async function getSelectUserSchema(field, readonly, ctx) {\n if (!field) {\n return {}\n }\n\n if (!ctx) {\n ctx = {};\n }\n const amisSchema = {\n \"type\": Field.getAmisStaticFieldType('select', readonly)\n };\n\n if (readonly) {\n amisSchema.tpl = await Tpl.getLookupTpl(field, ctx)\n }\n else{\n const refUsersObjectConfig = await getUISchema(refUsersObjectName);\n ctx.usersSort = getRefListViewSort(refUsersObjectConfig);\n const refOrgsObjectConfig = await getUISchema(refOrgsObjectName);\n ctx.orgsSort = getRefListViewSort(refOrgsObjectConfig);\n Object.assign(amisSchema, {\n // \"labelField\": \"name\",\n // \"valueField\": \"user\",\n \"multiple\": field.multiple,\n \"searchable\": field.searchable,\n \"selectMode\": \"associated\",\n \"leftMode\": \"tree\",\n \"extractValue\": true,\n \"clearable\": true,\n \"source\": await getSource(field, ctx),\n \"deferApi\": await getDeferApi(field, ctx),\n \"searchApi\": await getSearchApi(field, ctx)\n });\n if(field.multiple){\n // 单选时如果配置joinValues为false,清空字段值会把字段值设置为空数组,这是amis人员单选功能的bug,普通的select没有这个问题\n Object.assign(amisSchema, {\n \"joinValues\": false,\n });\n }\n if (typeof amisSchema.searchable !== \"boolean\") {\n amisSchema.searchable = true;\n }\n\n if(ctx.value){\n amisSchema.value = ctx.value;\n }\n\n const onEvent = field.onEvent;\n if (onEvent) {\n amisSchema.onEvent = onEvent;\n }\n }\n return amisSchema;\n}\n","import * as graphql from '../graphql';\nimport * as Field from './index';\nimport * as Tpl from '../tpl';\nimport * as _ from 'lodash';\nimport { getUISchema, getListViewSort } from '../../../objects';\nimport { getLookupListView } from '../util';\n\nconst refUsersObjectName = \"space_users\";\nconst refOrgsObjectName = \"organizations\";\n\nasync function getSource(field, ctx) {\n // data.query 最终格式 \"{ \\tleftOptions:organizations(filters: {__filters}){value:_id,label:name,children}, children:organizations(filters: {__filters}){ref:_id,children}, defaultValueOptions:space_users(filters: {__options_filters}){user,name} }\"\n const refObjectName = ctx.objectName;\n const data = await graphql.getFindQuery({ name: refObjectName }, null, [{ name: ctx.valueField, alias: \"value\" }, { name: ctx.labelField, alias: \"label\" }, { name: \"children\" }], {\n alias: \"options\",\n filters: \"{__filters}\"\n });\n data.query = data.query.replace(/,count\\:.+/, \"}\");\n // const childrenData = await graphql.getFindQuery({ name: refObjectName }, null, [{ name: ctx.valueField, alias: \"ref\" }], {\n // alias: \"children\",\n // filters: \"{__filters}\"\n // });\n // childrenData.query = childrenData.query.replace(/,count\\:.+/, \"}\");\n // data.query = data.query.replace(/}$/, \",\" + childrenData.query.replace(/{(.+)}/, \"$1}\"));\n const defaultValueOptionsData = await graphql.getFindQuery({ name: refObjectName }, null, [{ name: ctx.valueField, alias: \"value\" }, { name: ctx.labelField, alias: \"label\" }], {\n alias: \"defaultValueOptions\",\n filters: \"{__options_filters}\"\n });\n defaultValueOptionsData.query = defaultValueOptionsData.query.replace(/,count\\:.+/, \"}\");\n data.query = data.query.replace(/}$/, \",\" + defaultValueOptionsData.query.replace(/{(.+)}/, \"$1}\"))\n let valueField = `${field.name}`;\n if(field._prefix){\n // field._prefix一般来object类型字段的子字段的父字段api名称,比如流程对象的字段perms.users_can_add前缀为perms.\n valueField = `${field._prefix}${field.name}`;\n }\n if(ctx.fieldNamePrefix){\n // ctx.fieldNamePrefix一般来自列表搜索,值为__searchable__\n valueField = `${ctx.fieldNamePrefix}${valueField}`;\n }\n data.$value = `$${valueField}`;\n data['$'] = `$$`;\n const requestAdaptor = `\n var filters = [['parent', '=', null]];\n const filtersFunction = ${field.filtersFunction || field._filtersFunction};\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data.$);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\n }\n }\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters));\n var defaultValue = api.data.$value;\n var optionsFiltersOp = \"${field.multiple ? \"in\" : \"=\"}\";\n var optionsFilters = [[\"${ctx.valueField}\", optionsFiltersOp, []]];\n if (defaultValue) { \n optionsFilters = [[\"${ctx.valueField}\", optionsFiltersOp, defaultValue]];\n }\n api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters));\n return api;\n `;\n const adaptor = `\n const data = payload.data;\n data.options = data.options.map(function (optionItem) {\n optionItem.defer = !!(optionItem.children && optionItem.children.length);\n delete optionItem.children;\n return optionItem;\n });\n var defaultValueOptions = data.defaultValueOptions;\n // 字段值下拉选项合并到options中\n data.options = _.unionWith(data.options, defaultValueOptions, function(a,b){\n return a[\"value\"]=== b[\"value\"];\n });\n delete data.defaultValueOptions;\n payload.data = data;\n return payload;\n `;\n return {\n \"method\": \"post\",\n \"url\": graphql.getApi(),\n \"requestAdaptor\": requestAdaptor,\n \"adaptor\": adaptor,\n \"data\": data,\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n }\n}\n\nasync function getDeferApi(field, ctx) {\n // data.query 最终格式 \"{ \\toptions:{__object_name}(filters:{__filters}){{__fields}} }\"\n const refObjectName = ctx.objectName;\n const data = await graphql.getFindQuery({ name: \"{__object_name}\" }, null, [], {\n alias: \"options\",\n // filters: \"{__filters}\",\n queryOptions: `filters: {__filters}, sort: \"{__sort}\"`\n });\n // 传入的默认过滤条件,比如[[\"name\", \"contains\", \"三\"]],将会作为基本过滤条件\n let filters = field.filters;\n if(typeof filters === \"string\"){\n filters = new Function(`return ${filters}`);\n filters = filters();\n }\n if(typeof filters === \"function\"){\n filters = filters(field);\n }\n data.query = data.query.replace(/,count\\:.+/, \"}\");\n // 字段要根据请求参数动态生成,写死为__fields后续在发送适配器中替换\n data.query = data.query.replace(\"{_id}\", \"{{__fields}}\");\n const requestAdaptor = `\n var dep = api.query.dep;\n var term = api.query.term;\n var filters;\n var objectName;\n var fields;\n var sort = \"\";\n if (dep) {\n objectName = \"${refObjectName}\";\n fields = \"_id,value:${ctx.valueField},label:${ctx.labelField},children\";\n filters = [['parent', '=', dep]];\n sort = \"${ctx.sort}\";\n }\n api.data.query = api.data.query.replace(/{__object_name}/g, objectName).replace(/{__fields}/g, fields).replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());\n return api;\n `;\n const adaptor = `\n if (api.query.dep) {\n // 展开组织时才需要根据children值设置defer属性\n const data = payload.data;\n data.options = data.options.map(function (option) {\n option.defer = !!(option.children && option.children.length);\n delete option.children;\n return option;\n });\n payload.data = data;\n }\n return payload;\n `;\n return {\n \"method\": \"post\",\n \"url\": graphql.getApi() + \"&dep=${value}\",\n \"requestAdaptor\": requestAdaptor,\n \"adaptor\": adaptor,\n \"data\": data,\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nasync function getSearchApi(field, ctx) {\n // data.query 最终格式 \"{ \\toptions:space_users(filters: {__filters}){user,name,value:user,label:name}}\"\n // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次\n const data = await graphql.getFindQuery({ name: refUsersObjectName }, null, [{ name: \"user\" }, { name: \"name\" }, { name: \"user\", alias: \"value\" }, { name: \"name\", alias: \"label\" }], {\n alias: \"options\",\n // filters: \"{__filters}\",\n queryOptions: `filters: {__filters}, sort: \"{__sort}\"`\n });\n data.query = data.query.replace(/,count\\:.+/, \"}\");\n // 传入的默认过滤条件,比如[[\"name\", \"contains\", \"三\"]],将会作为基本过滤条件\n const filters = field.filters;\n const requestAdaptor = `\n var term = api.query.term;\n var filters;\n var sort = \"\";\n if (term) { \n filters = [['user_accepted', '=', true]];\n var defaultFilters = ${filters && JSON.stringify(filters)};\n if(defaultFilters){\n filters.push(defaultFilters);\n }\n var fieldsForSearch = [\"name\", \"username\", \"email\", \"mobile\"];\n var termFilters = [];\n fieldsForSearch.forEach(function (field) {\n termFilters.push([field, 'contains', term]);\n termFilters.push(\"or\");\n });\n termFilters.pop();\n filters.push(termFilters);\n sort = \"${ctx.usersSort}\";\n }\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());\n return api;\n `;\n return {\n \"method\": \"post\",\n \"url\": graphql.getApi() + \"&term=${term}\",\n \"requestAdaptor\": requestAdaptor,\n \"data\": data,\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nfunction getRefListViewSort(refObject){\n let listView = getLookupListView(refObject);\n \n let sort = \"\";\n if(listView){\n sort = getListViewSort(listView);\n }\n return sort;\n}\n\nexport async function lookupToAmisTreeSelect(field, readonly, ctx) {\n if (!field) {\n return {}\n }\n\n if (!ctx) {\n ctx = {};\n }\n const amisSchema = {\n \"type\": Field.getAmisStaticFieldType('tree-select', readonly)\n };\n\n if (readonly) {\n amisSchema.tpl = await Tpl.getLookupTpl(field, ctx)\n }\n else{\n const refObjectConfig = await getUISchema(ctx.objectName);\n ctx.sort = getRefListViewSort(refObjectConfig);\n Object.assign(amisSchema, {\n // \"labelField\": ctx.labelField,\n // \"valueField\": ctx.valueField,\n \"multiple\": field.multiple,\n \"searchable\": field.searchable,\n \"extractValue\": true,\n \"hideNodePathLabel\": true,\n \"clearable\": true,\n \"source\": await getSource(field, ctx),\n \"deferApi\": await getDeferApi(field, ctx),\n // \"searchApi\": await getSearchApi(field, ctx)\n });\n if(field.multiple){\n // 单选时如果配置joinValues为false,清空字段值会把字段值设置为空数组,这是amis人员单选功能的bug,普通的select没有这个问题\n Object.assign(amisSchema, {\n \"joinValues\": false,\n });\n }\n if (typeof amisSchema.searchable !== \"boolean\") {\n amisSchema.searchable = true;\n }\n const onEvent = field.onEvent;\n if (onEvent) {\n amisSchema.onEvent = onEvent;\n }\n }\n return amisSchema;\n}\n","import { getUISchema } from '../../../objects';\nimport * as _ from 'lodash'\nimport * as graphql from '../graphql'\nimport * as Tpl from '../tpl';\nimport * as Field from './index';\nimport * as Table from './table';\nimport * as List from './list';\nimport { getLookupListView } from '../util';\nimport { getSelectUserSchema } from './user';\nimport { getObjectHeaderToolbar, getObjectFooterToolbar, getObjectFilter } from './../toolbar';\nimport { getListViewSort } from './../../../objects';\nimport { lookupToAmisTreeSelect } from './tree_select';\nimport * as standardNew from '../../../../schema/standard_new.amis'\nimport { i18next } from \"../../../../i18n\";\n\nexport const getReferenceToFieldSchema = (field, refObjectConfig)=>{\n let referenceTo = field.reference_to;\n if(!referenceTo){\n return;\n }\n\n // 如果lookup 引用的对象未定义\n if (!refObjectConfig)\n return null;\n\n let valueField = null;\n let valueFieldName = field.reference_to_field;\n if(!valueFieldName){\n valueFieldName = refObjectConfig.idFieldName || '_id';\n }\n if(valueFieldName === '_id'){\n valueField = {name: '_id', label: 'ID', type: 'text', toggled: false};\n }else{\n valueField = refObjectConfig.fields[valueFieldName] || {name: valueFieldName};\n }\n return {\n objectName: referenceTo,\n valueField: valueField,\n labelField: refObjectConfig.fields[refObjectConfig.NAME_FIELD_KEY || 'name'],\n NAME_FIELD_KEY: refObjectConfig.NAME_FIELD_KEY || 'name'\n }\n}\n\nexport const getReferenceTo = async (field)=>{\n let referenceTo = field.reference_to;\n if(referenceTo === 'users'){\n field.reference_to = 'space_users';\n field.reference_to_field = 'user'\n }\n\n const refObjectConfig = await getUISchema(field.reference_to);\n return getReferenceToFieldSchema(field, refObjectConfig);\n}\n\nexport function getReferenceToSync(field) {\n let referenceTo = field.reference_to;\n if(referenceTo === 'users'){\n field.reference_to = 'space_users';\n field.reference_to_field = 'user'\n }\n\n const refObjectConfig = getUISchemaSync(field.reference_to);\n return getReferenceToFieldSchema(field, refObjectConfig);\n}\n\nexport function getLookupSapceUserTreeSchema(isMobile){\n const treeSchema = {\n \"type\": \"input-tree\",\n \"className\":\"steedos-select-user-tree\",\n \"inputClassName\": \"p-0\",\n \"source\": {\n \"method\": \"post\",\n \"url\": \"${context.rootUrl}/graphql\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"adaptor\": \"if (payload.data.treeCache == true) {\\n return payload;\\n }\\n const records = payload.data.options;\\n const treeRecords = [];\\n const getChildren = (records, childrenIds) => {\\n if (!childrenIds) {\\n return;\\n }\\n const children = _.filter(records, (record) => {\\n return _.includes(childrenIds, record.value)\\n });\\n _.each(children, (item) => {\\n if (item.children) {\\n item.children = getChildren(records, item.children)\\n }\\n })\\n return children;\\n }\\n\\n const getRoot = (records) => {\\n for (var i = 0; i < records.length; i++){\\n records[i].noParent = 0;\\n if (!!records[i].parent) {\\n biaozhi = 1\\n for (var j = 0; j < records.length; j++){\\n if (records[i].parent == records[j].value)\\n biaozhi = 0;\\n }\\n if (biaozhi == 1) records[i].noParent = 1;\\n } else records[i].noParent = 1;\\n }\\n }\\n getRoot(records);\\n console.log(records)\\n\\n _.each(records, (record) => {\\n if (record.noParent ==1) {\\n treeRecords.push(Object.assign({}, record, { children: getChildren(records, record.children) }));\\n }\\n });\\n console.log(treeRecords)\\n\\n payload.data.options = treeRecords;\\n payload.data.treeCache = true;\\n return payload;\\n \",\n \"requestAdaptor\": \"\\n \",\n \"data\": {\n \"query\": \"{options:organizations(filters:[\\\"hidden\\\", \\\"!=\\\", true],sort:\\\"sort_no desc\\\"){value:_id label:name,parent,children}}\"\n },\n \"messages\": {\n },\n \"cache\": 300000\n },\n \"onEvent\": {\n \"change\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": `\n const scope = event.context.scoped;\n var filterFormValues={\n \"__searchable__organizations_parents\":event.data.value.value\n }\n var listView = scope.parent.getComponents().find(function(n){\n return n.props.type === \"crud\";\n });\n listView.handleFilterSubmit(Object.assign({}, filterFormValues));\n `\n },\n {\n \"actionType\": \"custom\",\n \"script\": \" if(window.innerWidth < 768){ document.querySelector('.steedos-select-user-sidebar').classList.remove('steedos-select-user-sidebar-open'); }\"\n }\n ]\n }\n },\n \"label\": \"\",\n \"name\": \"organizations\",\n \"multiple\": false,\n \"joinValues\": false,\n \"clearValueOnHidden\": false,\n \"fieldName\": \"organizations\",\n \"hideRoot\": true,\n \"initiallyOpen\": false,\n \"extractValue\": true,\n \"onlyChildren\": true,\n \"treeContainerClassName\": \"no-border\",\n \"showIcon\": false,\n \"enableNodePath\": false,\n \"autoCheckChildren\": false,\n \"searchable\": true,\n \"searchConfig\": {\n \"sticky\": true,\n \"placeholder\": \"查找部门\"\n },\n \"unfoldedLevel\": 2,\n \"originPosition\": \"left-top\"\n }\n const tree = []\n if(isMobile){\n tree.push({\n type: \"action\",\n body:[\n {\n type: \"action\",\n body:[\n treeSchema\n ],\n className:\"h-full w-[240px]\"\n }\n ],\n className: \"absolute inset-0 steedos-select-user-sidebar\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": \"document.querySelector('.steedos-select-user-sidebar').classList.remove('steedos-select-user-sidebar-open')\"\n }\n ]\n }\n },\n id: \"steedos_crud_toolbar_select_user_tree\"\n })\n tree.push({\n \"type\": \"button\",\n \"label\": \"组织\",\n \"icon\": \"fa fa-sitemap\",\n \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\",\n \"align\": \"left\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": \"document.querySelector('.steedos-select-user-sidebar').classList.toggle('steedos-select-user-sidebar-open')\"\n }\n ]\n }\n },\n \"id\": \"steedos_crud_toolbar_organization_button\"\n })\n }else{\n tree.push(treeSchema)\n }\n \n return tree;\n}\n\nexport async function lookupToAmisPicker(field, readonly, ctx){\n let referenceTo = await getReferenceTo(field);\n if(!referenceTo){\n return ;\n }\n const refObjectConfig = await getUISchema(referenceTo.objectName);\n\n ctx.idFieldName = refObjectConfig.idFieldName\n ctx.objectName = refObjectConfig.name\n\n let tableFields = [];\n const searchableFields = [];\n\n let fieldsArr = [];\n \n const isMobile = window.innerWidth < 768;\n\n let listView = getLookupListView(refObjectConfig);\n let listName = listView && listView.name;\n if (listView && listView.columns) {\n _.each(listView.columns, function (column) {\n if (_.isString(column) && refObjectConfig.fields[column]) {\n fieldsArr.push(refObjectConfig.fields[column]);\n } else if (_.isObject(column) && refObjectConfig.fields[column.field]) {\n fieldsArr.push(\n Object.assign({}, refObjectConfig.fields[column.field], {\n width: column.width,\n wrap: column.wrap,\n })\n );\n }\n });\n }else{\n _.each(refObjectConfig.fields, (field, field_name)=>{\n if(field_name != '_id' && !field.hidden){\n if(!_.has(field, \"name\")){\n field.name = field_name\n }\n fieldsArr.push(field)\n }\n });\n // 没有视图权限时,取对象上前5个字段,按sort_no排序\n fieldsArr = _.sortBy(fieldsArr, \"sort_no\").slice(0,5);\n }\n\n _.each(fieldsArr,function(field){\n if(!_.find(tableFields, function(f){\n return f.name === field.name\n })){\n tableFields.push(field)\n }\n });\n\n _.each(refObjectConfig.fields, function (field) {\n if(Field.isFieldQuickSearchable(field, refObjectConfig.NAME_FIELD_KEY)){\n searchableFields.push(field.name);\n }\n });\n\n const fields = {\n [referenceTo.labelField.name]: referenceTo.labelField,\n [referenceTo.valueField.name]: referenceTo.valueField\n };\n\n _.each(tableFields, (tableField)=>{\n if(!tableField.hidden){\n fields[tableField.name] = tableField;\n }\n });\n\n let sort = \"\";\n if(listView){\n sort = getListViewSort(listView);\n }\n\n const source = await getApi(refObjectConfig, null, fields, {expand: true, alias: 'rows', queryOptions: `filters: {__filters}, top: {__top}, skip: {__skip}, sort: \"{__sort}\"`});\n \n if(source.url && !ctx.inFilterForm){\n const depend_on = [];\n const sendOn = [];\n _.each(field.depend_on, (fName)=>{\n depend_on.push(`depend_on_${fName}=\\${${fName}}`)\n sendOn.push(`this.${fName}`)\n })\n if(depend_on.length > 0){\n source.url = `${source.url}?${depend_on.join('&')}`;\n source.sendOn = `${sendOn.join(' && ')}`\n }\n }\n \n source.data.$term = \"$term\";\n source.data.$self = \"$$\";\n\n // field.name可能是带点的名称,比如审批王中子表字段'instances.instances_submitter',如果不替换掉点,会造成审批王表单中新建子表行时报错\n let keywordsSearchBoxName = `__keywords_lookup__${field.name.replace(/\\./g, \"_\")}__to__${refObjectConfig.name}`;\n\n source.requestAdaptor = `\n let __changedFilterFormValues = api.data.$self.__changedFilterFormValues || {};\n let __changedSearchBoxValues = api.data.$self.__changedSearchBoxValues || {};\n // 把表单搜索和快速搜索中的change事件中记录的过滤条件也拼到$self中,是为解决触发搜索请求时,两边输入的过滤条件都带上,即:\n // 有时在搜索表单中输入过滤条件事,忘记点击回车键或搜索按钮,而是进一步修改快速搜索框中的关键字点击其中回车键触发搜索\n // 这种情况下,触发的搜索请求中没有带上搜索表单中输入的过滤条件。\n // 反过来先在快速搜索框中输入过滤条件却不点击其中回车键触发搜索,而是到搜索表单中触发搜索请求也是一样的。\n Object.assign(api.data.$self, __changedSearchBoxValues, __changedFilterFormValues);\n const selfData = JSON.parse(JSON.stringify(api.data.$self));\n var filters = [];\n var pageSize = api.data.pageSize || 10;\n var pageNo = api.data.pageNo || 1;\n var skip = (pageNo - 1) * pageSize;\n var orderBy = api.data.orderBy || '';\n var orderDir = api.data.orderDir || '';\n var sort = orderBy + ' ' + orderDir;\n sort = orderBy ? sort : \"${sort}\";\n var allowSearchFields = ${JSON.stringify(searchableFields)};\n let fieldValue;\n if(api.data.$term){\n filters = [[\"name\", \"contains\", \"'+ api.data.$term +'\"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n if(selfData.value && selfData.value.indexOf(',') > 0){\n fieldValue = selfData.value.split(',');\n filters = [[\"${referenceTo.valueField.name}\", \"=\", fieldValue]];\n }else{\n fieldValue = selfData.value;\n filters = [[\"${referenceTo.valueField.name}\", \"=\", fieldValue]];\n }\n }\n\n var searchableFilter = SteedosUI.getSearchFilter(selfData) || [];\n\n if(searchableFilter.length > 0){\n if(filters.length > 0 ){\n filters = [filters, 'and', searchableFilter];\n }else{\n filters = searchableFilter;\n }\n }\n\n if(${referenceTo?.objectName === \"space_users\"} && ${field.reference_to_field === \"user\"}){\n if(filters.length > 0){\n filters = [ [\"user_accepted\", \"=\", true], \"and\", filters ]\n }else{\n filters = [[\"user_accepted\", \"=\", true]];\n }\n }\n\n if(allowSearchFields){\n allowSearchFields.forEach(function(key){\n const keyValue = selfData[key];\n if(_.isString(keyValue)){\n filters.push([key, \"contains\", keyValue]);\n }else if(_.isArray(keyValue) || _.isBoolean(keyValue) || keyValue){\n filters.push([key, \"=\", keyValue]);\n }\n })\n }\n\n var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.${keywordsSearchBoxName}, allowSearchFields);\n if(keywordsFilters && keywordsFilters.length > 0){\n filters.push(keywordsFilters);\n }\n\n var fieldFilters = ${JSON.stringify(field.filters)};\n if(fieldFilters && fieldFilters.length){\n filters.push(fieldFilters);\n }\n \n const inFilterForm = ${ctx.inFilterForm};\n const filtersFunction = ${field.filtersFunction || field._filtersFunction};\n\n if(filtersFunction && !inFilterForm){\n const _filters = filtersFunction(filters, api.data.$self.__super);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\n }\n }\n\n const enable_tree = ${refObjectConfig.enable_tree};\n if(enable_tree){\n pageSize = 10000;\n }\n if(fieldValue && _.isArray(fieldValue) && fieldValue.length > pageSize){\n pageSize = fieldValue.length;\n }\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim());\n return api;\n `\n source.adaptor = `\n const enable_tree = ${refObjectConfig.enable_tree};\n const op = api.data.$self.op;\n if(!_.isEmpty(op)){\n // op不为空,表示处于字段初始编辑状态,不是点击后出现弹窗状态。\n // 这里不可以用_.pick函数让payload只返回labelField和valueField,因为字段上配置的amis autoFill功能可能依赖了其他字段\n /*\n const rows = _.map(payload.data.rows, (item)=>{\n return _.pick(item, [\"${referenceTo.labelField.name}\", \"${referenceTo.valueField.name}\"]);\n })\n payload.data.rows = rows;\n */\n return payload;\n }\n if(enable_tree){\n const records = payload.data.rows;\n const treeRecords = [];\n\n const getParentIds = (records)=>{\n const ids = _.map(records, (item)=>{\n return item._id;\n });\n const parents = _.filter(records,(record)=>{\n return !record.parent || !_.includes(ids,record.parent);\n })\n const parentsIds = _.map(parents,(item)=>{\n return item._id;\n })\n return parentsIds;\n }\n const getChildren = (records, childrenIds)=>{\n if(!childrenIds){\n return;\n }\n const children = _.filter(records, (record)=>{\n return _.includes(childrenIds, record._id)\n });\n _.each(children, (item)=>{\n if(item.children){\n item.children = getChildren(records, item.children)\n }\n })\n return children;\n }\n\n const parentIds = getParentIds(records);\n _.each(records, (record)=>{\n if(!record.parent || _.includes(parentIds, record._id)){\n treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));\n }\n });\n payload.data.rows = treeRecords;\n try{\n setTimeout(() => {\n $('.amis-dialog-widget.antd-Modal .antd-Table-content .antd-Table-table thead .antd-Table-expandBtn')[0]?.click();\n }, 600);\n }\n catch(ex){\n console.error(\"tree数据格式展开异常:\", ex);\n }\n }\n return payload;\n `;\n if(field.optionsFunction || field._optionsFunction){\n source.adaptor = `\n payload.data.rows = eval(${field.optionsFunction || field._optionsFunction})(api.data.$self);\n return payload;\n `\n }\n let top = 20;\n\n if(refObjectConfig.paging && refObjectConfig.paging.enabled === false){\n top = 1000;\n };\n\n\n let pickerSchema = null;\n if(false){\n // if(ctx.formFactor === 'SMALL'){\n pickerSchema = await List.getListSchema(tableFields, {\n top: top,\n ...ctx,\n actions: false\n })\n }else{\n let labelFieldName = refObjectConfig.NAME_FIELD_KEY || 'name';\n // organizations 对象的历史遗留问题, fullname 被标记为了 名称字段. 在此处特殊处理.\n if(refObjectConfig.name === 'organizations'){\n labelFieldName = 'name';\n }\n pickerSchema = await Table.getTableSchema(tableFields, {\n labelFieldName,\n top: top,\n isLookup: true,\n ...ctx\n })\n\n pickerSchema.affixHeader = false;\n\n var headerToolbarItems = [];\n if(referenceTo.objectName === \"space_users\" && field.reference_to_field === \"user\"){\n headerToolbarItems = getLookupSapceUserTreeSchema(isMobile);\n pickerSchema.className = pickerSchema.className || \"\" + \" steedos-select-user\";\n }\n\n pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true, keywordsSearchBoxName });\n const isAllowCreate = refObjectConfig.permissions.allowCreate;\n const isCreate = _.isBoolean(field.create) ? field.create : true;\n // lookup字段配置过滤条件就强制不显示新建按钮\n let isHasFilters = (field.filters || field._filtersFunction) ? true : false;\n if (isAllowCreate && isCreate && !isHasFilters) {\n const new_button = await standardNew.getSchema(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });\n new_button.align = \"right\";\n // 保持快速搜索放在最左侧,新建按钮往里插,而不是push到最后\n pickerSchema.headerToolbar.splice(pickerSchema.headerToolbar.length - 1, 0, new_button);\n }\n pickerSchema.footerToolbar = refObjectConfig.enable_tree ? [] : getObjectFooterToolbar(refObjectConfig,ctx.formFactor,{isLookup: true});\n if (ctx.filterVisible !== false) {\n pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {\n ...ctx,\n isLookup: true,\n keywordsSearchBoxName\n });\n }\n pickerSchema.data = Object.assign({}, pickerSchema.data, {\n \"&\": \"$$\",\n \"objectName\": refObjectConfig.name,\n \"uiSchema\": refObjectConfig,\n \"listName\": listName,// 需要按视图取可搜索项\n \"isLookup\": true\n });\n\n if(!pickerSchema.onEvent){\n pickerSchema.onEvent = {}\n }\n\n pickerSchema.onEvent[`@data.changed.${refObjectConfig.name}`] = {\n \"actions\": [\n {\n \"actionType\": \"reload\"\n },\n {\n \"actionType\": \"custom\",\n \"script\": `\n const masterRecord = event.data._master && event.data._master.record;\n const fieldConfig = ${JSON.stringify(field)};\n let reference_to = fieldConfig.reference_to;\n let saveValue;\n const newRecord = {\n _id: event.data.result.data.recordId,\n ...event.data.__super.__super\n }\n const saveField = fieldConfig.reference_to_field || '_id';\n const saveFieldValue = newRecord[saveField];\n\n if( fieldConfig._reference_to && (_.isArray(fieldConfig._reference_to) || _.isFunction(fieldConfig._reference_to) || fieldConfig._reference_to.startsWith('function') ) ){\n \n const fieldValue = masterRecord ? masterRecord[fieldConfig.name] : {o: reference_to, ids: []};\n const baseSaveValue = {\n o: reference_to,\n ids: [saveFieldValue]\n };\n if(fieldValue && fieldValue.o){\n if(fieldValue.o === reference_to){\n saveValue = fieldConfig.multiple ? { o: reference_to, ids: fieldValue.ids.concat(saveFieldValue)} : baseSaveValue;\n }else{\n saveValue = baseSaveValue;\n }\n }else{\n saveValue = baseSaveValue;\n }\n\n }else{\n if(fieldConfig.multiple){\n // TODO: 连续新建多个记录时,因为获取的主记录不是实时的,所以只会勾选最后一个新建的记录。\n const fieldValue = (masterRecord && masterRecord[fieldConfig.name]) || [];\n saveValue = fieldValue.concat(saveFieldValue);\n }else{\n saveValue = saveFieldValue;\n }\n }\n \n const ctx = ${JSON.stringify(ctx)};\n const componentId = ctx.defaults.formSchema.id;\n doAction({\n actionType: 'setValue',\n componentId: componentId, \n args: {\n value: { [fieldConfig.name]: saveValue }\n }\n });\n `\n }\n ]\n }\n }\n\n if(field.pickerSchema){\n pickerSchema = Object.assign({}, pickerSchema, field.pickerSchema)\n }\n\n if(referenceTo.objectName === \"space_users\" && field.reference_to_field === \"user\" && isMobile){\n //手机端选人控件只保留部分toolbar\n pickerSchema.headerToolbar = pickerSchema.headerToolbar && pickerSchema.headerToolbar.filter(function(item){\n if([\"steedos_crud_toolbar_quick_search\",\"steedos_crud_toolbar_filter\",\"steedos_crud_toolbar_select_user_tree\",\"steedos_crud_toolbar_organization_button\"].indexOf(item.id) > -1){\n return true;\n }else{\n return false;\n }\n })\n pickerSchema.footerToolbar = [\"pagination\"]\n }\n\n const data = {\n type: Field.getAmisStaticFieldType('picker', readonly),\n modalTitle: i18next.t('frontend_form_please_select') + \" \" + refObjectConfig.label,\n labelField: referenceTo.labelField.name,\n valueField: referenceTo.valueField.name,\n // disabledOn: this._master目的是相关表新建时禁止编辑关联字段; this.relatedKey目的是相关表编辑时禁止编辑关联字段,多选字段可以编辑。\n disabledOn: `${readonly} || ( (this._master && (this._master.relatedKey ==='${field.name}')) || ((this.relatedKey ==='${field.name}') && (${field.multiple} != true)) )`,\n modalMode: 'dialog', //TODO 设置 dialog 或者 drawer,用来配置弹出方式\n source: source,\n size: \"lg\",\n pickerSchema: pickerSchema,\n joinValues: false,\n extractValue: true\n }\n if(field.multiple){\n data.multiple = true\n data.extractValue = true\n }\n\n if(readonly){\n data.tpl = await Tpl.getLookupTpl(field, ctx)\n }\n return data;\n}\n\nexport async function lookupToAmisSelect(field, readonly, ctx){\n let referenceTo = await getReferenceTo(field);\n const isMobile = window.innerWidth <= 768;\n const valueFieldKey = referenceTo && referenceTo.valueField?.name || '_id' ;\n // const labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';\n\n let apiInfo;\n let defaultValueOptionsQueryData;\n if(referenceTo){\n // 字段值单独走一个请求合并到source的同一个GraphQL接口中\n defaultValueOptionsQueryData = await graphql.getFindQuery({ name: referenceTo.objectName }, null, [\n Object.assign({}, referenceTo.labelField, {alias: 'label'}),\n Object.assign({}, referenceTo.valueField, {alias: 'value'})\n ], {\n alias: \"defaultValueOptions\",\n filters: \"{__options_filters}\",\n count: false\n });\n apiInfo = await getApi({\n name: referenceTo.objectName\n }, null, [\n Object.assign({}, referenceTo.labelField, {alias: 'label'}),\n Object.assign({}, referenceTo.valueField, {alias: 'value'})\n ], {expand: false, alias: 'options', queryOptions: `filters: {__filters}, top: {__top}, sort: \"{__sort}\"`});\n\n apiInfo.adaptor = `\n const data = payload.data;\n var defaultValueOptions = data.defaultValueOptions;\n // 字段值下拉选项合并到options中\n data.options = _.unionWith(defaultValueOptions, data.options, function(a,b){\n return a[\"value\"]=== b[\"value\"];\n });\n delete data.defaultValueOptions;\n payload.data.options = data.options;\n return payload;\n `;\n }else{\n apiInfo = {\n method: \"post\",\n url: graphql.getApi(),\n data: {query: '{objects(filters: [\"_id\", \"=\", \"-1\"]){_id}}', $: \"$$\"},\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n\n const refObjectConfig = referenceTo && await getUISchema(referenceTo.objectName);\n let listView = getLookupListView(refObjectConfig);\n\n let sort = \"\";\n if(listView){\n sort = getListViewSort(listView);\n }\n\n // 列表视图搜索栏中,即inFilterForm=true时,不需要执行depend_on\n if(apiInfo.url && !ctx.inFilterForm){\n const depend_on = [];\n const sendOn = [];\n _.each(field.depend_on, (fName)=>{\n depend_on.push(`depend_on_${fName}=\\${${fName}}`)\n sendOn.push(`this.${fName}`)\n })\n if(depend_on.length > 0){\n apiInfo.url = `${apiInfo.url}?${depend_on.join('&')}`;\n apiInfo.sendOn = `${sendOn.join(' && ')}`\n }\n }\n \n apiInfo.data.$term = \"$term\";\n // apiInfo.data.$value = `$${field.name}.${referenceTo ? referenceTo.valueField.name : '_id'}`;\n apiInfo.data.$value = ctx.isRefToMutiple ? `$${field.name}.ids` : `$${field.name}`;\n _.each(field.depend_on, function(fName){\n apiInfo.data[fName] = `$${fName}`;\n })\n apiInfo.data['$'] = `$$`;\n apiInfo.data['rfield'] = `\\${object_name}`;\n // [[\"_id\", \"=\", \"$${field.name}._id\"],\"or\",[\"name\", \"contains\", \"$term\"]]\n apiInfo.requestAdaptor = `\n var filters = [];\n var top = 200;\n if(api.data.$term){\n filters = [[\"${referenceTo?.NAME_FIELD_KEY || 'name'}\", \"contains\", api.data.$term]];\n }\n // else if(api.data.$value){\n // filters = [[\"_id\", \"=\", api.data.$value]];\n // }\n\n var fieldFilters = ${JSON.stringify(field.filters)};\n if(fieldFilters && fieldFilters.length){\n filters.push(fieldFilters);\n }\n\n if(${referenceTo?.objectName === \"space_users\"} && ${field.reference_to_field === \"user\"}){\n if(filters.length > 0){\n filters = [ [\"user_accepted\", \"=\", true], \"and\", filters ]\n }else{\n filters = [[\"user_accepted\", \"=\", true]];\n }\n }\n\n const inFilterForm = ${ctx.inFilterForm};\n const filtersFunction = ${field.filtersFunction || field._filtersFunction};\n\n if(filtersFunction && !inFilterForm){\n const _filters = filtersFunction(filters, api.data.$);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\n }\n }\n var sort = \"${sort}\";\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', top).replace('{__sort}', sort.trim());\n\n var defaultValue = api.data.$value;\n var optionsFiltersOp = \"${field.multiple ? \"in\" : \"=\"}\";\n var optionsFilters = [[\"${valueFieldKey}\", optionsFiltersOp, []]];\n if (defaultValue && !api.data.$term) { \n const defaultValueOptionsQueryData = ${JSON.stringify(defaultValueOptionsQueryData)};\n const defaultValueOptionsQuery = defaultValueOptionsQueryData?.query?.replace(/^{/,\"\").replace(/}$/,\"\");\n // 字段值单独请求,没值的时候在请求中返回空\n optionsFilters = [[\"${valueFieldKey}\", optionsFiltersOp, defaultValue]];\n if(filters.length > 0){\n optionsFilters = [filters, optionsFilters];\n }\n if(defaultValueOptionsQuery){\n api.data.query = \"{\"+api.data.query.replace(/^{/,\"\").replace(/}$/,\"\")+\",\"+defaultValueOptionsQuery+\"}\";\n } \n }\n api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters));\n return api;\n `\n let labelField = referenceTo ? referenceTo.labelField.name : '';\n let valueField = referenceTo ? referenceTo.valueField.name : '';\n if(field.optionsFunction || field._optionsFunction){\n apiInfo.adaptor = `\n var options = eval(${field.optionsFunction || field._optionsFunction})(api.data.$);\n if(api.data.$term){\n options = _.filter(options, function(o) {\n var label = o.label;\n return label.toLowerCase().indexOf(api.data.$term.toLowerCase()) > -1;\n });\n }\n payload.data.options = options;\n return payload;\n `\n labelField = 'label';\n valueField = 'value';\n }else if(field.options){\n apiInfo.adaptor = `\n var options = ${JSON.stringify(field.options)}\n if(api.data.$term){\n options = _.filter(options, function(o) {\n var label = o.label;\n return label.toLowerCase().indexOf(api.data.$term.toLowerCase()) > -1;\n });\n }\n payload.data.options = options;\n return payload;\n `\n labelField = 'label';\n valueField = 'value';\n }\n\n const data = {\n type: Field.getAmisStaticFieldType('select', readonly),\n joinValues: false,\n extractValue: true,\n clearable: true,\n // disabledOn: this._master目的是相关表新建时禁止编辑关联字段; this.relatedKey目的是相关表编辑时禁止编辑关联字段,多选字段可以编辑。\n disabledOn: `${readonly} || ( (this._master && (this._master.relatedKey ==='${field.name}')) || ((this.relatedKey ==='${field.name}') && (${field.multiple} != true)) )`,\n // labelField: labelField,\n // valueField: valueField,\n // source: apiInfo,\n autoComplete: apiInfo,\n searchable: true,\n }\n //删除xlink:href中的rootUrl前缀,解决客户端svg为空的问题\n const select_menuTpl = `<span class='flex items-center mt-0.5'>\n <span role='img' aria-label='smile' class='anticon anticon-smile'>\n <span class='slds-icon_container slds-icon-standard-\\${REPLACE(icon,'_','-')}'>\n <svg class='slds-icon slds-icon_x-small' aria-hidden='true'>\n <use xlink:href='/assets/icons/standard-sprite/svg/symbols.svg#\\${icon}'></use>\n </svg>\n </span> \n </span>\n <span class='pl-1.5'>\\${label}</span>\n </span>`\n const menuTpl = \"${icon ? `\"+select_menuTpl+\"` : label}\"\n // TODO: 待amis修复了此bug, 就可以撤销添加menuTpl的判断。\n if(!(isMobile && field.multiple)){\n data.menuTpl = menuTpl;\n }\n if(field.multiple){\n data.multiple = true\n data.extractValue = true\n }\n\n if(readonly){\n data.tpl = await Tpl.getLookupTpl(field, ctx)\n }\n return data;\n}\n\nasync function getApi(object, recordId, fields, options){\n const data = await graphql.getFindQuery(object, recordId, fields, options);\n return {\n method: \"post\",\n url: graphql.getApi(),\n data: data,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nexport async function lookupToAmis(field, readonly, ctx){\n if(!ctx){\n ctx = {};\n }\n // console.log(`lookupToAmis====`, field, readonly, ctx)\n if(readonly){\n return {\n type: Field.getAmisStaticFieldType('picker', readonly),\n tpl: Tpl.getRelatedFieldTpl(field, ctx)\n }\n }\n if(field.reference_to && !_.isString(field.reference_to) && !readonly){\n return {\n type: 'steedos-field-lookup',\n field,\n readonly,\n ctx,\n }\n // return await lookupToAmisGroup(field, readonly, ctx);\n }\n\n let referenceTo = await getReferenceTo(field);\n if(!referenceTo){\n return await lookupToAmisSelect(field, readonly, ctx);\n }\n\n if(referenceTo.objectName === \"space_users\" && field.reference_to_field === \"user\"){\n ctx = Object.assign({}, ctx, {\n onlyDisplayLookLabel: true\n });\n if(ctx.idsDependOn){\n // ids人员点选模式\n return await lookupToAmisIdsPicker(field, readonly, ctx);\n }\n // 左侧树右侧人员列表的下拉框模式,不再支持,而是执行下面的lookupToAmisPicker函数弹出选人窗口\n // return await lookupToAmisSelectUser(field, readonly, ctx);\n }\n\n const refObject = await getUISchema(referenceTo.objectName);\n\n // 优先取字段中配置的enable_enhanced_lookup,字段上没配置时,才从对象上取enable_enhanced_lookup属性\n let enableEnhancedLookup = _.isBoolean(field.enable_enhanced_lookup) ? field.enable_enhanced_lookup : refObject.enable_enhanced_lookup;\n // 默认使用下拉框模式显示lookup选项,只能配置了enable_enhanced_lookup才使用弹出增强模式\n if(enableEnhancedLookup == true){\n return await lookupToAmisPicker(field, readonly, ctx);\n }else if(refObject.enable_tree) {\n return await lookupToAmisTreeSelect(field, readonly, Object.assign({}, ctx, {\n labelField: referenceTo.labelField?.name || 'name',\n valueField: referenceTo.valueField?.name || '_id',\n objectName: referenceTo.objectName\n }));\n }else{\n return await lookupToAmisSelect(field, readonly, ctx);\n }\n}\n\nexport async function lookupToAmisSelectUser(field, readonly, ctx){\n return getSelectUserSchema(field, readonly, ctx);\n}\n\nexport async function lookupToAmisIdsPicker(field, readonly, ctx){\n return getIdsPickerSchema(field, readonly, ctx);\n}\n\nexport async function getIdsPickerSchema(field, readonly, ctx){\n if(!ctx){\n ctx = {};\n }\n let referenceTo = await getReferenceTo(field);\n if(!referenceTo){\n return ;\n }\n const refObjectConfig = await getUISchema(referenceTo.objectName);\n\n const { idsDependOn } = ctx;\n\n const fields = {\n [referenceTo.labelField.name]: referenceTo.labelField,\n [referenceTo.valueField.name]: referenceTo.valueField\n };\n\n const tableFields = [referenceTo.labelField];\n\n const source = await getApi(refObjectConfig, null, fields, {expand: true, alias: 'rows', queryOptions: `filters: {__filters}, top: {__top}, skip: {__skip}, sort: \"{__sort}\"`});\n \n source.data.$term = \"$term\";\n source.data.$self = \"$$\";\n\n if(idsDependOn && source.url && !ctx.inFilterForm){\n source.sendOn = `\\${${idsDependOn} && ${idsDependOn}.length}`;\n source.url = `${source.url}&depend_on_${idsDependOn}=\\${${idsDependOn}|join}`;\n }\n\n let listView = getLookupListView(refObjectConfig);\n let sort = \"\";\n if(listView){\n sort = getListViewSort(listView);\n }\n \n source.requestAdaptor = `\n const selfData = JSON.parse(JSON.stringify(api.data.$self));\n var filters = [];\n var pageSize = api.data.pageSize || 1000;\n var pageNo = api.data.pageNo || 1;\n var skip = (pageNo - 1) * pageSize;\n var orderBy = api.data.orderBy || '';\n var orderDir = api.data.orderDir || '';\n var sort = orderBy + ' ' + orderDir;\n sort = orderBy ? sort : \"${sort}\";\n if(selfData.op === 'loadOptions' && selfData.value){\n if(selfData.value && selfData.value.indexOf(',') > 0){\n filters = [[\"${referenceTo.valueField.name}\", \"=\", selfData.value.split(',')]];\n }else{\n filters = [[\"${referenceTo.valueField.name}\", \"=\", selfData.value]];\n }\n }\n\n var ids;\n var idsDependOn = \"${idsDependOn}\";\n if(idsDependOn){\n ids = api.data.$self[idsDependOn];\n }\n if(ids && ids.length){\n filters.push([\"${referenceTo.valueField.name}\", \"=\", ids]);\n }\n\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim());\n return api;\n `;\n\n let top = 1000;\n\n let pickerSchema = null;\n if(ctx.formFactor === 'SMALL'){\n pickerSchema = await List.getListSchema(tableFields, {\n top: top,\n ...ctx,\n actions: false\n })\n }else{\n pickerSchema = await Table.getTableSchema(tableFields, {\n labelFieldName: refObjectConfig.NAME_FIELD_KEY,\n top: top,\n isLookup: true,\n ...ctx\n })\n\n pickerSchema.affixHeader = false;\n\n }\n\n const data = {\n type: Field.getAmisStaticFieldType('picker', readonly),\n labelField: referenceTo.labelField.name,\n valueField: referenceTo.valueField.name,\n modalMode: 'dialog', \n source: source,\n // disabledOn: this._master目的是相关表新建时禁止编辑关联字段; this.relatedKey目的是相关表编辑时禁止编辑关联字段,多选字段可以编辑。\n disabledOn: `${readonly} || ( (this._master && (this._master.relatedKey ==='${field.name}')) || ((this.relatedKey ==='${field.name}') && (${field.multiple} != true)) )`,\n size: \"lg\",\n pickerSchema: pickerSchema,\n joinValues: false,\n extractValue: true\n }\n if(field.multiple){\n data.multiple = true\n data.extractValue = true\n }\n\n if(ctx.value){\n data.value = ctx.value;\n }\n\n if(ctx.selectFirst != undefined){\n data.selectFirst = ctx.selectFirst;\n }\n\n if(readonly){\n data.tpl = await Tpl.getLookupTpl(field, ctx)\n }\n return data;\n}\n\n\nif(typeof window != 'undefined'){\n window.getReferenceTo = getReferenceTo;\n window.getReferenceToSync = getReferenceToSync;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2023-01-13 17:27:54\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-08-28 17:45:38\n * @Description: \n */\nimport { i18next } from \"../../../../i18n\"\n\nexport const getMarkdownFieldSchema = (field, readonly, ctx)=>{\n if(readonly){\n return {\n \"type\": \"control\",\n \"label\": field.label,\n \"body\": {\n \"type\": \"markdown\",\n \"name\": field.name,\n \"options\": {\n \"linkify\": true,\n \"html\": true,\n \"breaks\": true\n }\n }\n }\n }else{\n return {\n \"type\": \"control\",\n \"label\": field.label,\n \"body\": [\n {\n \"type\": \"tabs\",\n \"tabsMode\": \"strong\",\n \"className\": \"steedos-markdown\",\n \"tabs\": [\n {\n \"title\": i18next.t('frontend_form_edit'),\n \"tab\": [\n {\n \"type\": \"editor\",\n \"name\": field.name,\n \"language\": \"markdown\",\n }\n ]\n },\n {\n \"title\": i18next.t('frontend_form_preview'),\n \"tab\": [\n {\n \"type\": \"markdown\",\n \"name\": field.name,\n \"options\": {\n \"linkify\": true,\n \"html\": true,\n \"breaks\": true\n }\n }\n ]\n }\n ]\n }\n ]\n }\n }\n}\n\nexport const getHtmlFieldSchema = (field, readonly, ctx)=>{\n if(readonly){\n // return {\n // \"type\": \"control\",\n // \"label\": field.label,\n // \"body\": {\n // \"type\": \"html\",\n // \"name\": field.name\n // }\n // }\n return {\n \"type\": \"input-rich-text\",\n \"receiver\": \"${context.rootUrl}/s3/images\",\n \"name\": field.name,\n \"options\": {\n \"menu\": {\n \"insert\": {\n \"title\": \"Insert\",\n \"items\": \"image link media addcomment pageembed codesample inserttable | charmap emoticons hr | pagebreak nonbreaking anchor tableofcontents | insertdatetime\"\n }\n },\n \"plugins\": [\n \"autoresize\"\n ],\n // \"max_height\": 2000,\n \"statusbar\": false,\n \"readonly\": true,\n \"toolbar\": false,\n \"menubar\": false\n }\n }\n }else{\n return {\n \"type\": \"input-rich-text\",\n \"receiver\": \"${context.rootUrl}/s3/images\",\n \"options\":{\n \"menu\": {\n \"insert\": {\n \"title\": \"Insert\",\n \"items\": \"image link media addcomment pageembed codesample inserttable | charmap emoticons hr | pagebreak nonbreaking anchor tableofcontents | insertdatetime\"\n }\n }\n },\n \"name\": field.name\n }\n // return {\n // \"type\": \"group\",\n // \"body\": [\n // {\n // \"type\": \"editor\",\n // \"name\": field.name,\n // \"language\": \"html\"\n // },\n // {\n // \"type\": \"html\",\n // \"name\": field.name\n // }\n // ]\n // }\n }\n}","import { cloneDeep, includes } from 'lodash';\nimport { lookupToAmis } from './lookup';\nimport { getMarkdownFieldSchema, getHtmlFieldSchema } from './editor';\nimport * as Fields from '../fields';\nimport * as Tpl from '../tpl';\nimport * as File from './file';\nimport { getAmisStaticFieldType } from './type';\nimport * as _ from 'lodash'\n\nexport const QUICK_SEARCHABLE_FIELD_TYPES = [\"text\", \"textarea\", \"autonumber\", \"url\", \"email\"];\nexport const OMIT_FIELDS = ['created', 'created_by', 'modified', 'modified_by'];\nexport { getAmisStaticFieldType } from './type';\n// const Lookup = require('./lookup');\n\nexport function getBaseFields(readonly){\n let calssName = 'm-1';\n if(readonly){\n calssName = `${calssName}`\n }\n return [\n { \n name: \"createdInfo\", \n label: \"创建人\",\n type: \"static\",\n labelClassName: 'text-left',\n className: calssName,\n tpl: Tpl.getCreatedInfoTpl()\n },\n { \n name: \"modifiedInfo\", \n label: \"修改人\",\n type: \"static\",\n labelClassName: 'text-left',\n className: calssName,\n tpl: Tpl.getModifiedInfoTpl()\n }\n ]\n};\n\n\n\nexport function getAmisFieldType(sField){\n switch (sField.type) {\n case 'text':\n return 'text';\n case 'textarea':\n return 'textarea';\n case 'html':\n return 'html';\n case 'markdown':\n return 'markdown';\n case 'select':\n return 'select';\n case 'boolean':\n return 'checkbox';\n case 'date':\n return 'date';\n case 'datetime':\n return 'datetime';\n case 'number':\n return 'number';\n case 'currency':\n return 'number';\n case 'percent':\n return 'number'\n case 'password':\n return 'password';\n case 'lookup':\n // TODO 根据字段配置返回 select || picker\n return 'select';\n case 'master_detail':\n // TODO 根据字段配置返回 select || picker\n return 'picker';\n case 'autonumber':\n return 'text';\n case 'url':\n return 'url'\n case 'email':\n return 'email'\n case 'image':\n return 'image'\n case 'formula':\n //TODO\n break;\n case 'summary':\n //TODO\n break;\n case 'grid':\n return 'table';\n case 'table':\n return 'steedos-input-table';\n default:\n console.log('convertData default', sField.type);\n // convertData.type = field.type\n break;\n }\n\n};\n\nexport function getObjectFieldSubFields(mainField, fields){\n const newMainField = Object.assign({subFields: []}, mainField);\n const subFields = _.filter(fields, function(field){\n let result = field.name.startsWith(`${mainField.name}.`) && _.split(field.name, \".\").length < 3;\n if(result){\n field._prefix = `${mainField.name}.`\n }\n return result;\n });\n newMainField.subFields = subFields;\n return newMainField;\n}\n\nexport function getGridFieldSubFields(mainField, fields){\n const newMainField = Object.assign({subFields: []}, mainField);\n const subFields = _.filter(fields, function(field){\n let result = field.name.startsWith(`${mainField.name}.`)\n if(result){\n field._prefix = `${mainField.name}.`\n }\n return result;\n });\n newMainField.subFields = subFields;\n return newMainField;\n}\n\nexport function getTabledFieldSubFields(mainField, fields){\n const newMainField = Object.assign({subFields: []}, mainField);\n const subFields = _.filter(fields, function(field){\n let result = field.name.startsWith(`${mainField.name}.`)\n if(result){\n field._prefix = `${mainField.name}.`\n }\n return result;\n });\n newMainField.subFields = subFields;\n return newMainField;\n}\n\n/**\n * TODO 处理权限\n * @param {*} object steedos object\n * @param {*} userSession \n */\n export function getPermissionFields(object, userSession){\n const permissionFields = [];\n const fieldsArr = [];\n\t_.each(object.fields , (field, field_name)=>{\n\t\tif(!_.has(field, \"name\")){\n\t\t\tfield.name = field_name\n }\n\t\tfieldsArr.push(field)\n })\n _.each(_.sortBy(fieldsArr, \"sort_no\"), function(field){\n if(!field.hidden){\n permissionFields.push( Object.assign({}, field, {permission: {allowEdit: true}}))\n }\n })\n return permissionFields;\n}\n\n\nexport function getSelectFieldOptions(field){\n const dataType = field.data_type || 'text';\n const options = [];\n _.each(field.options, (item)=>{\n switch (dataType) {\n case 'number':\n options.push({label: item.label, value: Number(item.value), icon: item.icon});\n break;\n case 'text':\n options.push({label: item.label, value: String(item.value), icon: item.icon});\n break;\n case 'boolean':\n options.push({label: item.label, value: item.value === 'false' ? false : true, icon: item.icon});\n break;\n default:\n break;\n }\n });\n return options;\n}\n\nexport async function convertSFieldToAmisField(field, readonly, ctx) {\n // console.log('convertSFieldToAmisField====>', field, readonly, ctx)\n const isMobile = window.innerWidth <= 768;\n let rootUrl = null;\n // 创建人和修改人、创建时间和修改时间不显示\n if(_.includes(OMIT_FIELDS, field.name) && ctx.showSystemFields != true){\n return;\n }\n const baseData = {name: ctx.fieldNamePrefix ? `${ctx.fieldNamePrefix}${field.name}` : field.name, label: field.label, labelRemark: field.inlineHelpText, required: _.has(ctx, 'required') ? ctx.required : field.required};\n let convertData = {\n };\n // if(_.includes(OMIT_FIELDS, field.name)){\n // readonly = true;\n // }\n switch (field.type) {\n case 'text':\n convertData.type = getAmisStaticFieldType('text', readonly, field);\n break;\n case 'textarea':\n convertData.type = getAmisStaticFieldType('textarea', readonly);\n // convertData.tpl = `<b><%=data.${field.name}%></b>`;\n convertData.tpl = `<%=(data.${field.name} || \"\").split(\"\\\\n\").join('<br>')%>`;\n break;\n case 'html':\n convertData = getHtmlFieldSchema(field, readonly)\n break;\n // convertData = {\n // type: getAmisStaticFieldType('html', readonly)\n // }\n // break;\n case 'markdown':\n convertData = getMarkdownFieldSchema(field, readonly)\n break;\n // convertData = {\n // type: getAmisStaticFieldType('html', readonly)\n // }\n // break;\n case 'select':\n if(readonly){\n const map = Tpl.getSelectMap(field.options);\n convertData = {\n type: \"static-mapping\",\n name: field.name,\n label: field.label,\n map: map\n }\n }else{\n convertData = {\n type: getAmisStaticFieldType('select', readonly),\n joinValues: false,\n options: getSelectFieldOptions(field),\n extractValue: true,\n clearable: true,\n labelField: 'label',\n valueField: 'value'\n }\n const select_menuTpl = `<span class='flex items-center mt-0.5'>\n <span role='img' aria-label='smile' class='anticon anticon-smile'>\n <span class='slds-icon_container slds-icon-standard-\\${REPLACE(icon,'_','-')}'>\n <svg class='slds-icon slds-icon_x-small' aria-hidden='true'>\n <use xlink:href='/assets/icons/standard-sprite/svg/symbols.svg#\\${icon}'></use>\n </svg>\n </span> \n </span>\n <span class='pl-1.5'>\\${label}</span>\n </span>`\n const menuTpl = \"${icon ? `\"+select_menuTpl+\"` : label}\"\n // TODO: 待amis修复了此bug, 就可以撤销添加menuTpl的判断。\n if(!(isMobile && field.multiple)){\n convertData.menuTpl = menuTpl;\n }\n if(field.multiple){\n convertData.multiple = true\n convertData.extractValue = true\n }\n }\n\n break;\n case 'boolean':\n convertData = {\n type: getAmisStaticFieldType('checkbox', readonly),\n // option: field.inlineHelpText,\n tpl: readonly ? Tpl.getSwitchTpl(field) : null\n }\n break;\n case 'input-date-range':\n convertData = {\n type: \"input-date-range\",\n inputFormat: \"YYYY-MM-DD\",\n format:'YYYY-MM-DDT00:00:00.000[Z]',\n tpl: readonly ? Tpl.getDateTpl(field) : null,\n // utc: true,\n joinValues: false\n }\n break;\n case 'date':\n // convertData = isMobile && !readonly ? {\n // type: \"native-date\",\n // pipeIn: (value, data) => {\n // if (value) {\n // value = moment(value).utc().format('YYYY-MM-DD');\n // return value;\n // } else {\n // return \"\";\n // }\n\n // },\n // pipeOut: (value, oldValue, data) => {\n // if (value) {\n // value = moment(value).format('YYYY-MM-DDT00:00:00.000[Z]');\n // return value;\n // } else {\n // return \"\";\n // }\n // }\n // } : {\n // type: getAmisStaticFieldType('date', readonly),\n // inputFormat: \"YYYY-MM-DD\",\n // format:'YYYY-MM-DDT00:00:00.000[Z]',\n // tpl: readonly ? Tpl.getDateTpl(field) : null,\n // // utc: true\n // }\n convertData = {\n type: getAmisStaticFieldType('date', readonly),\n inputFormat: \"YYYY-MM-DD\",\n format:'YYYY-MM-DDT00:00:00.000[Z]',\n tpl: readonly ? Tpl.getDateTpl(field) : null,\n // utc: true\n }\n break;\n case 'input-datetime-range':\n convertData = {\n type: \"input-datetime-range\",\n inputFormat: 'YYYY-MM-DD HH:mm',\n format:'YYYY-MM-DDTHH:mm:ss.SSSZ',\n tpl: readonly ? Tpl.getDateTimeTpl(field) : null,\n utc: true,\n joinValues: false\n }\n break;\n case 'datetime':\n // convertData = isMobile && !readonly ? {\n // type: \"combo\",\n // pipeIn: (value, data) => {\n // let revalue = {};\n // if (value && value != \"Invalid date\") {\n // value = moment(value).format('YYYY-MM-DD HH:mm:ss');\n // revalue[field.name + \"-native-date\"] = value.split(' ')[0];\n // revalue[field.name + \"-native-time\"] = value.split(' ')[1];\n // } else {\n // revalue[field.name + \"-native-date\"] = \"\";\n // revalue[field.name + \"-native-time\"] = \"\";\n // }\n // return revalue;\n // },\n // pipeOut: (value, oldValue, data) => {\n // let revalue = \"\";\n // if (value[field.name + \"-native-date\"] && value[field.name + \"-native-time\"]) {\n // revalue = value[field.name + \"-native-date\"] + \" \" + value[field.name + \"-native-time\"];\n // revalue = moment(revalue).utc().format('YYYY-MM-DDTHH:mm:ss.SSS[Z]');\n // }\n // return revalue;\n // },\n // items: [\n // {\n // type: \"native-date\",\n // name: field.name + \"-native-date\",\n // className: \"steedos-native-date\",\n // value: \"\"\n // },\n // {\n // type: \"native-time\",\n // name: field.name + \"-native-time\",\n // className: \"steedos-native-time\",\n // value: \"\"\n // }\n // ]\n // } : {\n // type: getAmisStaticFieldType('datetime', readonly),\n // inputFormat: 'YYYY-MM-DD HH:mm',\n // format: 'YYYY-MM-DDTHH:mm:ss.SSSZ',\n // tpl: readonly ? Tpl.getDateTimeTpl(field) : null,\n // utc: true,\n // }\n\n convertData = {\n type: getAmisStaticFieldType('datetime', readonly),\n inputFormat: 'YYYY-MM-DD HH:mm',\n format: 'YYYY-MM-DDTHH:mm:ss.SSSZ',\n tpl: readonly ? Tpl.getDateTimeTpl(field) : null,\n utc: true,\n }\n break;\n case 'input-time-range':\n convertData = {\n type: 'input-time-range',\n inputFormat: 'HH:mm',\n timeFormat:'HH:mm',\n format:'1970-01-01THH:mm:00.000[Z]',\n tpl: readonly ? Tpl.getDateTimeTpl(field) : null,\n // utc: true,\n joinValues: false\n }\n break;\n case 'time':\n // convertData = isMobile && !readonly ? {\n // type: \"native-time\",\n // pipeIn: (value, data) => {\n // if (value) {\n // value = moment(value).utc().format('HH:mm');\n // return value;\n // } else {\n // return \"\";\n // }\n\n // },\n // pipeOut: (value, oldValue, data) => {\n // if (value) {\n // value = moment('1970-01-01 ' + value).format('1970-01-01THH:mm:00.000[Z]');\n // return value;\n // } else {\n // return \"\";\n // }\n // }\n // } : {\n // type: getAmisStaticFieldType('time', readonly),\n // inputFormat: 'HH:mm',\n // timeFormat:'HH:mm',\n // format:'1970-01-01THH:mm:00.000[Z]',\n // tpl: readonly ? Tpl.getDateTimeTpl(field) : null,\n // // utc: true\n // }\n convertData = {\n type: getAmisStaticFieldType('time', readonly),\n inputFormat: 'HH:mm',\n timeFormat:'HH:mm',\n format:'1970-01-01THH:mm:00.000[Z]',\n tpl: readonly ? Tpl.getDateTimeTpl(field) : null,\n // utc: true\n }\n break;\n case 'currency':\n case 'number':\n if(readonly){\n convertData = {\n type: 'static-tpl',\n tpl: Tpl.getNumberTpl(field)\n }\n }else{\n convertData = {\n type: getAmisStaticFieldType('number', readonly),\n min: field.min,\n max: field.max,\n precision: field.scale\n }\n }\n \n break;\n case 'input-array':\n convertData = Object.assign({}, field, baseData);\n break;\n case 'input-range':\n convertData = {\n type: 'input-range',\n min: field.min,\n max: field.max,\n value: [0, 0],\n multiple: true,\n showInput: true\n }\n break;\n case 'percent':\n if(readonly){\n convertData = {\n type: 'static-tpl',\n tpl: Tpl.getUiFieldTpl(field)\n }\n }else{\n convertData = {\n type: getAmisStaticFieldType('number', readonly),\n min: field.min,\n max: field.max,\n precision: field.scale,\n suffix: \"%\",\n pipeIn: (value, data) => {\n if(value){\n // 因为例如 1.11 * 100 的值不是111,所以调整下。\n const result = value*100;\n return Number(result.toFixed(field.scale));\n }\n return value;\n },\n pipeOut: (value, oldValue, data) => {\n if(value){\n return value/100;\n }\n return value;\n },\n }\n }\n break;\n case 'password':\n convertData = {\n type: getAmisStaticFieldType('password', readonly),\n tpl: readonly ? Tpl.getPasswordTpl(field) : null\n }\n break;\n case 'lookup':\n convertData = await lookupToAmis(field, readonly, ctx) //TODO\n break;\n case 'master_detail':\n convertData = await lookupToAmis(field, readonly, ctx) //TODO\n break;\n case 'autonumber':\n if(readonly){\n convertData = {\n type: 'static-text'\n }\n }\n break;\n case 'url':\n convertData = {\n type: getAmisStaticFieldType('url', readonly, field),\n static: readonly ? true : false\n }\n if(readonly && field.show_as_qr){\n convertData = {\n type: \"control\",\n label: field.label,\n body: {\n type: \"qr-code\",\n codeSize: 128,\n name: field.name\n }\n }\n }\n break;\n case 'email':\n convertData = {\n type: getAmisStaticFieldType('email', readonly)\n }\n break;\n case 'location':\n // 申请ak后需要设置白名单; https://lbsyun.baidu.com/apiconsole/key/create#/home\n // console.log('fie==>', field.name, field);\n let ak = \"LiZT5dVbGTsPI91tFGcOlSpe5FDehpf7\";\n let vendor = \"baidu\"; /* 'baidu' | 'gaode' */\n if(window.Meteor){\n const map_ak = Meteor.settings?.public?.amis?.map_ak;\n if(map_ak){\n ak = map_ak;\n }\n const map_vendor = Meteor.settings?.public?.amis?.map_vendor;\n if(map_vendor){\n vendor = map_vendor;\n }\n }\n \n const coordinatesType = field.coordinatesType || \"bd09\";\n convertData = {\n type: getAmisStaticFieldType('location', readonly),\n tpl: readonly ? Tpl.getLocationTpl(field) : null,\n ak,\n vendor,\n clearable: true,\n coordinatesType,\n label: field.label,\n pipeOut: (value, oldValue, data) => {\n if (value) {\n const lng = value.lng;\n const lat = value.lat;\n let coordinates = [lng,lat];\n if(window.coordtransform){\n if(coordinatesType.toLowerCase() === 'bd09'){\n const bd09togcj02 = window.coordtransform.bd09togcj02(lng,lat);\n coordinates = window.coordtransform.gcj02towgs84(bd09togcj02[0],bd09togcj02[1]);\n }else if(coordinatesType.toLowerCase() === 'gcj02'){\n coordinates = window.coordtransform.gcj02towgs84(lng,lat);\n }\n }\n value.wgs84 = {\n type: \"Point\",\n coordinates\n }\n return value; // 切换到数字之后的默认值\n }\n }\n }\n break;\n case 'avatar':\n convertData = File.getAmisFileSchema(field, readonly);\n break;\n case 'image':\n convertData = File.getAmisFileSchema(field, readonly);\n break;\n case 'file':\n convertData = File.getAmisFileSchema(field, readonly);\n break;\n case 'formula':\n if(readonly){\n convertData = {\n type: 'static-tpl',\n tpl: Tpl.getUiFieldTpl(field)\n }\n }\n break;\n case 'summary':\n if(readonly){\n convertData = {\n type: 'static-tpl',\n tpl: Tpl.getUiFieldTpl(field)\n }\n }\n break;\n case 'code':\n convertData = {\n type: \"editor\",\n disabled: readonly ? true : false,\n language: field.language,\n editorDidMount: new Function('editor', 'monaco', field.editorDidMount)\n }\n break;\n case 'toggle':\n convertData = {\n type: \"switch\",\n name: field.name,\n label: field.label,\n width: field.width,\n toggled: field.toggled,\n disabled: readonly,\n }\n break;\n case 'grid':\n if(field.subFields){\n convertData = {\n type: 'input-table',\n showIndex: true,\n columnsTogglable: false,\n strictMode:false,\n affixHeader: false, // 是否固定表头, 不固定表头, 否则form有y轴滚动条时, 表头会跟随滚动条滚动.\n needConfirm: false,\n editable: !readonly,\n addable: !readonly,\n removable: !readonly,\n draggable: !readonly,\n columns: []\n }\n // console.log(`convertData ==2====>`, field, convertData)\n for (const subField of field.subFields) {\n const subFieldName = subField.name.replace(`${field._prefix || ''}${field.name}.$.`, '').replace(`${field.name}.`, '');\n const gridSub = await convertSFieldToAmisField(Object.assign({}, subField, {name: subFieldName, isTableField: true}), readonly, ctx);\n if(gridSub){\n delete gridSub.name\n delete gridSub.label\n const gridItemSchema = {\n name: subFieldName,\n label: subField.label,\n quickEdit: readonly ? false : gridSub\n };\n if([\"lookup\", \"boolean\", \"toggle\"].indexOf(subField.type) > -1){\n gridItemSchema.type = gridSub.type;\n gridItemSchema.tpl = gridSub.tpl;\n }\n convertData.columns.push(Object.assign({}, gridItemSchema, subField.amis, {name: subFieldName}))\n }\n }\n }\n break;\n case 'table':\n if(field.subFields){\n convertData = {\n type: 'steedos-input-table',\n showIndex: true,\n editable: !readonly,\n addable: !readonly,\n removable: !readonly,\n draggable: !readonly,\n fields: [],\n amis:{\n columnsTogglable: false\n }\n }\n // console.log(`convertData ======>`, field, convertData)\n for (const subField of field.subFields) {\n if(!subField.name.endsWith(\".$\")){\n const subFieldName = subField.name.replace(`${field._prefix || ''}${field.name}.$.`, '').replace(`${field.name}.`, '');\n // const gridSub = await convertSFieldToAmisField(Object.assign({}, subField, {name: subFieldName, isTableField: true}), readonly, ctx);\n convertData.fields.push(Object.assign({}, subField, {name: subFieldName}))\n }\n }\n }\n break;\n case 'object':\n if(field.subFields){\n convertData = {\n type: 'combo',\n items: []\n };\n // console.log(`convertData ======>`, field, convertData)\n for (let subField of field.subFields) {\n let subFieldName = subField.name.replace(`${field.name}.$.`, '').replace(`${field.name}.`, '');\n if(subField.type === 'grid'){\n subField = await Fields.getGridFieldSubFields(subField, ctx.__formFields);\n }else{\n if(readonly){\n subFieldName = `${field.name}.${subFieldName}`\n }\n }\n const gridSub = await convertSFieldToAmisField(Object.assign({}, subField, {name: subFieldName}), readonly, ctx);\n if(gridSub){\n delete gridSub.name\n delete gridSub.label\n convertData.items.push(\n Object.assign({}, gridSub, {label: subField.label}, subField.amis, {\n name: subFieldName\n })\n )\n }\n }\n }\n break;\n default:\n // console.log('convertData default', field.type);\n // convertData.type = field.type\n break;\n }\n if(!_.isEmpty(convertData)){\n if(field.is_wide || convertData.type === 'group'){\n convertData.className = 'col-span-2 m-1';\n }else{\n convertData.className = 'm-1';\n }\n if(readonly){\n convertData.className = `${convertData.className} border-b`\n }\n if(readonly){\n convertData.quickEdit = false;\n }\n\n let fieldTypeClassName = ' steedos-' + convertData.type + (readonly ? '-readonly' : '-edit');\n if (convertData.className) {\n convertData.className = convertData.className + fieldTypeClassName;\n } else {\n convertData.className = fieldTypeClassName;\n }\n\n if(field.visible_on && !ctx.inFilterForm){\n // convertData.visibleOn = `\\$${field.visible_on.substring(1, field.visible_on.length -1).replace(/formData./g, '')}`;\n if(field.visible_on.startsWith(\"{{\")){\n convertData.visibleOn = `${field.visible_on.substring(2, field.visible_on.length -2).replace(/formData./g, 'data.')}`\n }else{\n convertData.visibleOn = `${field.visible_on.replace(/formData./g, 'data.')}`\n }\n }\n\n if(_.isString(baseData.required)){\n if(baseData.required.startsWith(\"{{\")){\n baseData.requiredOn = `${baseData.required.substring(2, baseData.required.length -2).replace(/formData./g, 'data.')}`;\n delete baseData.required;\n }\n }\n\n if(convertData.type === 'group'){\n convertData.body[0] = Object.assign({}, baseData, convertData.body[0], { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name});\n return convertData\n }\n // if(ctx.mode === 'edit'){\n let convertDataResult = Object.assign({}, baseData, convertData, { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name}, field.amis, {name: baseData.name});\n // console.log(\"convertDataResult:\", convertDataResult);\n return convertDataResult;\n // }else{\n // return Object.assign({}, baseData, convertData, { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name});\n // }\n }\n \n}\n\nexport async function getFieldSearchable(perField, permissionFields, ctx){\n if(!ctx){\n ctx = {};\n }\n let field = perField;\n if(field.type === 'grid'){\n field = await Fields.getGridFieldSubFields(perField, permissionFields);\n }else if(perField.type === 'object'){\n field = await Fields.getObjectFieldSubFields(perField, permissionFields);\n }\n\n let fieldNamePrefix = '__searchable__';\n if(field.name.indexOf(\".\") < 0){\n let _field = cloneDeep(field)\n if(includes(['textarea', 'html', 'code', 'autonumber'], field.type)){\n _field.type = 'text'\n }\n\n if(includes(['formula', 'summary'], field.type)){\n _field.type = field.data_type;\n _field.precision = field.precision;\n _field.scale = field.scale;\n }\n else if(field.type === \"select\" && field.data_type && field.data_type != \"text\"){\n _field.type = field.data_type;\n }\n\n if(_field.type === 'number' || _field.type === 'currency'){\n _field.type = 'input-array';\n _field.inline = true;\n _field.addable = false;\n _field.removable = false;\n _field.value = [null,null];\n _field.items = {\n type: \"input-number\"\n }\n _field.is_wide = true;\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n\n if(_field.type ==='date'){\n _field.type = 'input-date-range';\n _field.is_wide = true;\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n if(_field.type === 'datetime'){\n _field.type = 'input-datetime-range'\n _field.is_wide = true;\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n if(_field.type === 'time'){\n _field.type = 'input-time-range'\n _field.is_wide = true;\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n if(_field.reference_to === 'users'){\n _field.reference_to = 'space_users';\n _field.reference_to_field = 'user';\n }\n _field.readonly = false;\n _field.disabled = false;\n _field.multiple = true;\n _field.is_wide = false;\n _field.defaultValue = undefined;\n _field.required = false;\n _field.hidden = false;\n _field.omit = false;\n\n if(_field.amis){\n delete _field.amis.static;\n delete _field.amis.staticOn;\n delete _field.amis.disabled;\n delete _field.amis.disabledOn;\n delete _field.amis.required;\n delete _field.amis.requiredOn;\n delete _field.amis.visible;\n delete _field.amis.visibleOn;\n delete _field.amis.hidden;\n delete _field.amis.hiddenOn;\n delete _field.amis.autoFill;\n }\n\n const amisField = await Fields.convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true, inFilterForm: true}));\n if(amisField){\n return amisField;\n }\n }\n}\n\nif(typeof window != 'undefined'){\n window.getFieldSearchable = getFieldSearchable;\n}\n\n\nexport function isFieldTypeSearchable(fieldType) {\n return !_.includes(\n [\n \"grid\",\n \"table\",\n \"avatar\",\n \"image\",\n \"object\",\n \"[object]\",\n \"[Object]\",\n \"[grid]\",\n \"[text]\",\n \"audio\",\n \"file\",\n ],\n fieldType\n )\n}\n\nif (typeof window != 'undefined') {\n window.isFieldTypeSearchable = isFieldTypeSearchable;\n}\n\n\nexport function isFieldQuickSearchable(field, nameFieldKey) {\n let fieldSearchable = field.searchable;\n if(fieldSearchable !== false && field.name === nameFieldKey){\n // 对象上名称字段的searchable默认认为是true\n fieldSearchable = true;\n }\n if (fieldSearchable && QUICK_SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1) {\n return true;\n }\n return false;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-05-26 16:02:08\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-11-29 17:48:27\n * @Description: \n */\nimport * as Fields from '../fields';\nimport * as lodash from 'lodash';\nimport { i18next } from '../../../../i18n'\n\nconst getFieldSchemaArray = (formFields, ctx) => {\n let fieldSchemaArray = [];\n fieldSchemaArray.length = 0\n const recordId = ctx && ctx.recordId;\n\n lodash.forEach(formFields, (field) => {\n if (!field.group || field.group == 'null' || field.group == '-')\n field.group = i18next.t('frontend_field_group_generalization')\n const fieldName = field.name;\n let isObjectField = /\\w+\\.\\w+/.test(fieldName)\n if (field.type == 'grid' || field.type == 'object' || field.type == 'table') {\n // field.group = field.label\n field.is_wide = true;\n }\n\n let forceHidden = false;\n if(!recordId && field.readonly && !ctx.isEditor){\n // 新建记录时,只读字段先隐藏,后续支持显示后,即任务:https://github.com/steedos/steedos-platform/issues/3164 完成后再放开\n // 表单只读时所有字段都是readonly,设计器中如果forceHidden会造成整个表单在只读的时候显示为空白了,所以要排除掉\n forceHidden = true;\n }\n\n if (!isObjectField) {\n if (!field.hidden && !forceHidden) {\n fieldSchemaArray.push(Object.assign({ name: fieldName }, field, { permission: { allowEdit: true } }))\n }\n }\n })\n return fieldSchemaArray;\n}\n\nconst getSection = async (formFields, permissionFields, fieldSchemaArray, sectionName, ctx) => {\n if (!ctx) {\n ctx = {};\n }\n const sectionFields = lodash.filter(fieldSchemaArray, { 'group': sectionName });\n if (sectionFields.length == lodash.filter(sectionFields, ['hidden', true]).length) {\n return;\n }\n\n const fieldSetBody = [];\n\n for (const perField of sectionFields) {\n let field = perField;\n if (perField.type === 'grid') {\n field = await Fields.getGridFieldSubFields(perField, formFields);\n // console.log(`perField.type grid ===> field`, field)\n } else if (perField.type === 'table') {\n field = await Fields.getTabledFieldSubFields(perField, formFields);\n } else if (perField.type === 'object') {\n field = await Fields.getObjectFieldSubFields(perField, formFields);\n // console.log(`perField.type object ===> field`, field)\n }\n if (field.name.indexOf(\".\") < 0) {\n if(field.type === \"steedos-field\"){\n // 如果是steedos-field则不需要通过convertSFieldToAmisField函数转换,因为steedos-field组件会转换\n fieldSetBody.push(field);\n }\n else{\n ctx.__formFields = formFields;\n const amisField = await Fields.convertSFieldToAmisField(field, field.readonly, ctx);\n // 如果steedos-field稳定了,可以放开下面的代码直接用组件统一渲染字段\n // const amisField = {\n // \"type\": \"steedos-field\",\n // \"config\": field,\n // \"readonly\": field.readonly,\n // \"ctx\": ctx\n // };\n // console.log(`${field.name} amisField`, field, amisField)\n if (amisField) {\n fieldSetBody.push(amisField);\n }\n }\n }\n }\n\n // fieldSet 已支持显隐控制\n const sectionFieldsVisibleOn = lodash.map(lodash.compact(lodash.map(fieldSetBody, 'visibleOn')), (visibleOn) => {\n let visible = visibleOn;\n if(visible.indexOf('${')>-1){\n visible = visible.substring(visible.indexOf('{')+1, visible.indexOf('}'))\n }\n return visible ? \"(\"+visible+\")\" : visible;\n });\n\n let section = {\n \"type\": \"fieldSet\",\n \"title\": sectionName,\n \"collapsable\": true,\n \"body\": fieldSetBody,\n }\n\n if (ctx.enableTabs) {\n section = {\n \"title\": sectionName,\n \"body\": fieldSetBody,\n }\n }\n\n if (sectionFieldsVisibleOn.length > 0 && fieldSetBody.length === sectionFieldsVisibleOn.length) {\n section.visibleOn = `${sectionFieldsVisibleOn.join(\" || \")}`\n }\n\n const fieldGroups = ctx.fieldGroups;\n const group = fieldGroups && fieldGroups.find(function(groupItem){\n return groupItem.group_name == sectionName;\n });\n let groupVisibleOn = group && group.visible_on;\n if (groupVisibleOn) {\n if (groupVisibleOn.startsWith(\"{{\")) {\n groupVisibleOn = `${groupVisibleOn.substring(2, groupVisibleOn.length - 2).replace(/formData./g, 'data.')}`\n } else {\n groupVisibleOn = `${groupVisibleOn.replace(/formData./g, 'data.')}`\n }\n if (section.visibleOn) {\n section.visibleOn = `${section.visibleOn + \" && \" + groupVisibleOn}`;\n }\n else {\n section.visibleOn = groupVisibleOn;\n }\n }\n return section\n}\n\nexport const getSections = async (permissionFields, formFields, ctx) => {\n if (!ctx) {\n ctx = {};\n }\n const fieldSchemaArray = getFieldSchemaArray(formFields, ctx)\n const _sections = lodash.groupBy(fieldSchemaArray, 'group');\n const sections = [];\n var sectionVisibleOns = [];\n for (const key in _sections) {\n const section = await getSection(formFields, permissionFields, fieldSchemaArray, key, ctx);\n if (section.body.length > 0) {\n if (section.visibleOn) {\n sectionVisibleOns.push(\"(\"+section.visibleOn+\")\");\n }\n else{\n sectionVisibleOns.push(\"true\");\n }\n sections.push(section)\n }\n }\n /*\n 为了实现只有一个分组时隐藏该分组标题,需要分三种情况(分组如果没有visibleon属性就代表一定显示,有visibleon需要进行判断)\n 1 当前分组为隐藏时,标题就设置为隐藏\n 2 当前分组为显示时,其他分组只要有一个是显示,就显示该分组标题\n 3 当前分组为显示时,其他分组都隐藏,就隐藏该分组标题\n */\n sections.forEach((section, index) => {\n var tempSectionVisibleOns = sectionVisibleOns.slice();\n tempSectionVisibleOns.splice(index, 1);\n section.headingClassName = {\n \"hidden\": `!((${tempSectionVisibleOns.join(\" || \") || 'false'}) && ${sectionVisibleOns[index]})`\n }\n });\n\n if (ctx.enableTabs) {\n // TODO: 以下sectionHeaderVisibleOn代码逻辑是为实现只有一个选项卡时给选项卡添加sectionHeaderVisibleOn样式类来把选项卡顶部卡头隐藏\n // 但是 amis filter过滤器有两个bug造成此功能不好实现:\n // 1.filter过滤器只支持对象数组,并不支持boolean或字符串数组,见: https://github.com/baidu/amis/issues/7078\n // 2.filter过滤器的返回结果无法进一步获取最终过滤后的数组长度,见:https://github.com/baidu/amis/issues/7077\n // let sectionHeaderVisibleOn = \"false\";\n // if(sectionVisibleOns.length){\n // sectionHeaderVisibleOn = \"[\" + sectionVisibleOns.join(\",\") + \"]\" + \"|filter:equals:true.length > 1\";\n // }\n // console.log(\"===sectionHeaderVisibleOn===\", sectionHeaderVisibleOn);\n // sectionHeaderVisibleOn = \"[true]|filter:equals:true.length > 1\";\n // sectionHeaderVisibleOn = \"false\";\n // sectionHeaderVisibleOn = \"[1,1,1]|filter:equals:1.length > 1\";\n return [\n {\n \"type\": \"tabs\",\n // \"className\": {\n // \"hiddenFormTabs\": `!(${sectionHeaderVisibleOn})`\n // },\n \"tabs\": sections,\n \"tabsMode\": ctx.tabsMode\n }\n ]\n }\n\n return sections;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-07 11:02:29\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-03-07 17:19:34\n * @Description: \n */\nimport { getSections } from './fields/sections';\n\nexport async function getFormBody(permissionFields, formFields, ctx){\n return await getSections(permissionFields, formFields, ctx);\n}","/*\n * @Author: 殷亮辉 yinlianghui@hotoa.com\n * @Date: 2023-11-15 09:50:22\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-12-04 17:36:50\n */\n\nimport { getFormBody } from './converter/amis/form';\nimport { clone } from 'lodash';\n\n/**\n * @param {*} props \n * @param {*} mode edit/new/readonly\n */\nfunction getFormFields(props, mode = \"edit\") {\n return (props.fields || []).map(function (item) {\n let formItem = {\n \"type\": \"steedos-field\",\n \"name\": item.name,\n \"config\": item\n }\n if(mode === \"readonly\"){\n formItem.static = true;\n }\n return formItem;\n }) || [];\n}\n\n/**\n * @param {*} props \n * @param {*} mode edit/new/readonly\n */\nasync function getInputTableColumns(props) {\n let columns = props.columns || [];\n // 实测过,直接不生成对应的隐藏column并不会对input-table值造成丢失问题,隐藏的列字段值能正常维护\n let fields = props.fields;\n if(columns && columns.length){\n return columns.map(function(column){\n let field, extendColumnProps = {};\n if(typeof column === \"string\"){\n // 如果字符串,则取出要显示的列配置\n field = fields.find(function(fieldItem){\n return fieldItem.name === column;\n });\n }\n else{\n // 如果是对象,则合并到steedos-field的config.amis属性中,steedos组件会把config.amis属性混合到最终生成的input-table column\n field = fields.find(function(fieldItem){\n return fieldItem.name === column.name;\n });\n if(field){\n // field.amis = Object.assign({}, field.amis, column);\n // 如果把column合并到field.amis,column的label/width等属性不会生效,只能放外层合并\n extendColumnProps = column;\n }\n }\n if(field){\n return {\n \"type\": \"steedos-field\",\n \"config\": field,\n \"static\": true,\n \"readonly\": true,\n label: field.label,\n name: field.name,\n hideLabel: true,\n ...extendColumnProps\n }\n }\n else{\n return column;\n }\n });\n }\n else{\n return fields.map(function(field){\n return {\n \"type\": \"steedos-field\",\n \"config\": field,\n \"static\": true,\n \"readonly\": true,\n label: field.label,\n name: field.name,\n hideLabel: true\n }\n }) || [];\n }\n}\n\n/**\n * @param {*} props \n * @param {*} mode edit/new/readonly\n */\nasync function getForm(props, mode = \"edit\") {\n let formFields = getFormFields(props, mode)\n let body = await getFormBody(null, formFields);\n let schema = {\n \"type\": \"form\",\n \"title\": \"表单\",\n \"debug\": false,\n \"mode\": \"normal\",\n \"body\": body,\n \"className\": \"steedos-object-form steedos-amis-form\"\n };\n if (mode === \"edit\") {\n Object.assign(schema, {\n \"onEvent\": {\n \"submit\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"actionType\": \"setValue\",\n \"args\": {\n \"index\": \"${index}\",\n \"value\": {\n \"&\": \"$$\"\n }\n },\n \"componentId\": props.id\n }\n ]\n }\n }\n });\n }\n else if (mode === \"new\") {\n let onNewItemSubmitScript = `\n let fieldValue = _.cloneDeep(event.data[\"${props.name}\"]);\n if(!fieldValue){\n fieldValue = [];\n }\n fieldValue.push(JSON.parse(JSON.stringify(event.data)));\n doAction({\n \"componentId\": \"${props.id}\",\n \"actionType\": \"setValue\",\n \"args\": {\n \"value\": fieldValue\n }\n });\n `;\n Object.assign(schema, {\n \"onEvent\": {\n \"submit\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onNewItemSubmitScript\n },\n // {\n // \"componentId\": props.id,\n // \"actionType\": \"addItem\",//input-table组件的needConfirm属性为true时,addItem动作会把新加的行显示为编辑状态,所以只能使用上面的custom script来setValue实现添加行\n // \"args\": {\n // \"index\": `\\${${props.name}.length || 9000}`,//这里加9000是因为字段如果没放在form组件内,props.name.length拿不到值\n // \"item\": {\n // \"&\": \"$$\"\n // }\n // }\n // }\n ]\n }\n }\n });\n }\n return schema;\n}\n\nasync function getButtonNew(props) {\n return {\n \"label\": \"新增\",\n \"type\": \"button\",\n \"icon\": \"fa fa-plus\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": \"新增行\",\n \"body\": [\n await getForm(props, \"new\")\n ],\n \"size\": \"lg\",\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"className\": \"app-popover\",\n \"closeOnEsc\": false\n }\n }\n ]\n }\n },\n \"level\": \"primary\"\n };\n}\n\nasync function getButtonEdit(props) {\n return {\n \"type\": \"button\",\n \"label\": \"\",\n \"icon\": \"fa fa-pencil\",\n \"level\": \"link\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": \"编辑行\",\n \"body\": [\n await getForm(props, \"edit\")\n ],\n \"size\": \"lg\",\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"className\": \"app-popover\",\n \"closeOnEsc\": false\n }\n }\n ]\n }\n }\n };\n}\n\nasync function getButtonView(props) {\n return {\n \"type\": \"button\",\n \"label\": \"\",\n \"icon\": \"fa fa-external-link\",\n \"level\": \"link\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": \"查看行\",\n \"body\": [\n await getForm(props, \"readonly\")\n ],\n \"size\": \"lg\",\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"className\": \"app-popover\",\n \"closeOnEsc\": false\n }\n }\n ]\n }\n }\n };\n}\n\nfunction getButtonDelete(props) {\n return {\n \"type\": \"button\",\n \"label\": \"\",\n \"icon\": \"fa fa-minus\",\n \"level\": \"link\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"deleteItem\",\n \"args\": {\n \"index\": \"${index+','}\" //这里不加逗号后续会报错,语法是逗号分隔可以删除多行\n },\n \"componentId\": props.id\n }\n ]\n }\n }\n };\n}\n\nexport const getAmisInputTableSchema = async (props, readonly) => {\n if (!props.id) {\n props.id = \"steedos_input_table_\" + props.name + \"_\" + Math.random().toString(36).substr(2, 9);\n }\n let buttonsForColumnOperations = [];\n if (props.editable) {\n let buttonEditSchema = await getButtonEdit(props);\n buttonsForColumnOperations.push(buttonEditSchema);\n }\n else{\n // 只读时显示查看按钮\n if(props.columns && props.columns.length > 0 && props.columns.length < props.fields.length){\n // 只在有列被隐藏时才需要显示查看按钮\n let buttonViewSchema = await getButtonView(props);\n buttonsForColumnOperations.push(buttonViewSchema);\n }\n }\n if (props.removable) {\n let buttonDeleteSchema = getButtonDelete(props);\n buttonsForColumnOperations.push(buttonDeleteSchema);\n }\n let inputTableSchema = {\n \"type\": \"input-table\",\n \"label\": props.label,\n \"name\": props.name,\n //不可以addable/editable/removable设置为true,因为会在原生的操作列显示操作按钮图标,此开关实测只控制这个按钮显示不会影响功能\n // \"addable\": props.addable,\n // \"editable\": props.editable,\n // \"removable\": props.removable, \n \"draggable\": props.draggable,\n \"showIndex\": props.showIndex,\n \"perPage\": props.perPage,\n \"id\": props.id,\n \"columns\": await getInputTableColumns(props),\n // \"needConfirm\": false, //不可以配置为false,否则,单元格都是可编辑状态,且很多static类型无法正常显示,比如static-mapping\n \"strictMode\": true,\n \"showTableAddBtn\": false,\n \"showFooterAddBtn\": false,\n \"className\": props.tableClassName\n };\n if (buttonsForColumnOperations.length) {\n inputTableSchema.columns.push({\n \"name\": \"__op__\",\n \"type\": \"operation\",\n \"buttons\": buttonsForColumnOperations,\n \"width\": buttonsForColumnOperations.length > 1 ? \"46px\" : \"20px\"\n });\n }\n let schema = {\n \"type\": \"wrapper\",\n \"size\": \"none\",\n \"body\": [\n inputTableSchema\n ],\n \"className\": props.className\n };\n let footerToolbar = clone(props.footerToolbar || []); //这里不clone的话,会造成死循环,应该是因为props属性变更会让组件重新渲染\n if (props.addable) {\n let buttonNewSchema = await getButtonNew(props);\n footerToolbar.unshift(buttonNewSchema);\n }\n if (footerToolbar.length) {\n schema.body.push({\n \"type\": \"wrapper\",\n \"size\": \"none\",\n \"body\": footerToolbar\n });\n }\n if (props.amis) {\n delete props.amis.id;\n Object.assign(schema.body[0], props.amis);\n }\n return schema;\n}","import { first, keys, map, find } from 'lodash';\nimport { getUISchema, getRecordDetailHeaderSchema, getFormSchema, getViewSchema, getListViewColumns, getListViewSort, getTableSchema } from './objects';\nimport { getObjectRelatedList } from './objectsRelated';\n\nimport { getObjectListHeader,getObjectRecordDetailRelatedListHeader } from './converter/amis/header';\n// import { getListSchema } from './objects';\n\nfunction getScopeId(objectApiName,type){\n return `page_${objectApiName}_${type}`;\n}\n\n// 获取表单初始化amisSchema\nexport async function getFormPageInitSchema(objectApiName) {\n const schema = await getFormSchema(objectApiName, {recordId: '${recordId}'});\n return {\n type: 'page',\n name: getScopeId(objectApiName,\"form\"),\n bodyClassName: '',\n regions: [\n \"body\"\n ],\n body:[\n schema.amisSchema\n ]\n }\n}\n\n// 获取列表页面初始化amisSchema\nexport async function getListPageInitSchema(objectApiName, formFactor, userSession) {\n // let schema = await getListSchema(null, objectApiName, null, { showHeader: true });\n // let amisSchema = schema && schema.amisSchema;\n // if (amisSchema) {\n // return {\n // type: 'page',\n // bodyClassName: 'p-0',\n // regions: [\n // \"body\"\n // ],\n // // name: `page_${readonly ? 'readonly':'edit'}_${recordId}`\n // body: amisSchema\n // }\n // }\n\n // const uiSchema = await getUISchema(objectApiName);\n // const listViewName = first(keys(uiSchema.list_views));\n // const headerSchema = await getObjectListHeader(uiSchema, listViewName);\n\n return {\n type: 'page',\n name: getScopeId(objectApiName,\"list\"),\n bodyClassName: '',\n regions: [\n \"body\"\n ],\n // name: `page_${readonly ? 'readonly':'edit'}_${recordId}`\n body: [{\n \"type\": \"steedos-object-listview\",\n \"objectApiName\": objectApiName,\n // \"listName\": \"${listName}\",\n // \"headerToolbar\": [],\n \"columnsTogglable\": false,\n \"showHeader\": true,\n // \"headerSchema\": headerSchema\n className: \"sm:border bg-white sm:rounded border-gray-300 border-solid\"\n }]\n }\n}\n\n// 获取\nexport async function getRecordPageInitSchema(objectApiName){\n // console.log('getRecordPageSchema==>', objectApiName, ctx, formFactor, userSession);\n // const detailHeaderAmisSchema = (await getRecordDetailHeaderSchema(objectApiName, \"${recordId}\")).amisSchema;\n // const objectFormAmisSchema = (await getViewSchema(objectApiName, \"${recordId}\", {labelAlign:\"left\"})).amisSchema;\n \n const recordId = '${recordId}';\n const relatedList = await getObjectRelatedList(objectApiName, recordId, null);\n const uiSchema = await getUISchema(objectApiName);\n let body = [\n // detailHeaderAmisSchema,\n {\n \"type\": \"steedos-record-detail-header\",\n \"label\": \"标题面板\",\n \"objectApiName\": \"${objectName}\",\n \"recordId\": \"${recordId}\",\n \"onEvent\": {\n \"recordLoaded\": {\n \"actions\": [\n {\n \"actionType\": \"setValue\",\n \"args\": {\n \"value\": {\n \"recordLoaded\": true,\n }\n }\n },\n {\n \"actionType\": \"reload\",\n \"data\": {\n \"name\": `\\${record.${uiSchema?.NAME_FIELD_KEY || 'name'}}`,\n \"record\": `\\${record}`,\n \"recordLoaded\": true,\n }\n }\n ]\n }\n }\n }\n ];\n let contentBody = {\n \"type\": \"tabs\",\n \"tabs\": [\n {\n \"title\": \"详情\",\n \"body\": [\n // objectFormAmisSchema\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"mode\": \"read\",\n \"objectApiName\": \"${objectName}\",\n \"recordId\": \"${recordId}\",\n \"labelAlign\": \"left\"\n }\n ]\n }\n ],\n \"className\": \"sm:mt-3 flex flex-col region-main bg-white sm:rounded sm:border border-gray-300\",\n \"linksClassName\": \"pl-4 pt-2\"\n };\n if(relatedList.length){\n contentBody.tabs.push({\n \"title\": \"相关\",\n \"body\": {\n \"type\": \"steedos-object-related-lists\",\n \"label\": \"所有相关表\",\n \"objectApiName\": \"${objectName}\",\n \"recordId\": \"${recordId}\",\n },\n })\n }\n body.push(contentBody);\n return {\n type: 'page',\n id: `page_${objectApiName}_record_detail`,\n name: getScopeId(objectApiName,\"record_detail\"),\n bodyClassName: '',\n regions: [\n \"body\"\n ],\n body\n }\n}\n\n// 获取对象的某个列表视图初始化amisSchema\nexport async function getListviewInitSchema(objectApiName, listViewName, ctx) {\n if(!ctx){\n ctx = {};\n }\n const uiSchema = await getUISchema(objectApiName);\n const listView = find(\n uiSchema.list_views,\n (listView, name) => {\n return name === listViewName;\n }\n );\n\n let amisSchema = {};\n\n if (listView) {\n const listViewColumns = getListViewColumns(listView, ctx.formFactor);\n const sort = getListViewSort(listView);\n \n // amisSchema = {\n // \"type\": \"steedos-object-table\",\n // \"objectApiName\": objectApiName,\n // \"columns\": listViewColumns,\n // \"extraColumns\": listView.extra_columns,\n // \"filters\": listView.filters,\n // \"sort\": sort,\n // \"headerSchema\": headerSchema\n // };\n\n const defaults = ctx.defaults || {};\n if(!defaults.headerSchema){\n //传入isListviewInit是区别于对象列表类型的微页面,即getListPageInitSchema函数中该属性为false\n const headerSchema = await getObjectListHeader(uiSchema, listViewName, {\n onlySecordLine: true,\n isListviewInit: true\n });\n defaults.headerSchema = headerSchema;\n }\n ctx.defaults = defaults;\n let setDataToComponentId = ctx.setDataToComponentId;\n if(!setDataToComponentId){\n setDataToComponentId = `service_listview_${objectApiName}`;\n }\n const schema = await getTableSchema(null, objectApiName, listViewColumns, {\n sort,\n ...ctx,\n setDataToComponentId\n });\n amisSchema = schema.amisSchema;\n // TODO: 下面这些data下的无用属性在底层代码中就不应该加,待底层移除后下面的删除语句就可以去掉了\n delete amisSchema.data.$master;\n delete amisSchema.data._id;\n delete amisSchema.data.recordPermissions;\n delete amisSchema.data.uiSchema;\n }\n // 不可以外面包一层page,否则列表视图渲染时的data无法传入顶部第一行造成按钮显示异常\n return amisSchema;\n\n // return {\n // type: 'page',\n // bodyClassName: 'p-0',\n // regions: [\n // \"body\"\n // ],\n // // name: `page_${readonly ? 'readonly':'edit'}_${recordId}`\n // body: [amisSchema],\n // data:{\n // listName: listViewName\n // }\n // }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-05 15:54:17\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-07-05 16:30:29\n * @Description: \n */\nimport { fetchAPI } from './steedos.client';\n\nexport async function getApps(){\n const APPS_API = '/service/api/apps/menus';\n const apps = await fetchAPI(APPS_API);\n return apps;\n}\n\nexport async function getApp(appName){\n const appApi = `/service/api/apps/${appName}/menus`;\n const app = await fetchAPI(appApi);\n return app;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-15 11:53:28\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-08-27 16:54:21\n * @Description: \n */\nimport { fetchAPI, getSteedosAuth } from \"./steedos.client\"\n\nexport const getNotifications = async () => {\n const auth = getSteedosAuth();\n const query = `\n {\n notifications(filters: [\"owner\",\"=\",\"${auth.userId}\"], sort: \"created desc,name\", top : 10){\n _id,name,body,related_to,related_name,url,owner,is_read,from,created\n },\n unReadCount: notifications__count(filters: [[\"owner\",\"=\",\"${auth.userId}\"], [\"is_read\", \"!=\", true]])\n }\n `;\n const result = await fetchAPI('/graphql', {\n method: 'POST',\n body: JSON.stringify({ query })\n })\n\n return result.data\n}\n\nexport const markReadAll = async ()=>{\n return await fetchAPI('/api/v4/notifications/all/markReadAll', {\n method: 'POST'\n });\n}","import { map } from 'lodash';\n\nconst PUBLIC_ENV = {};\n\nexport const setEnv = (k, v)=>{\n PUBLIC_ENV[k] = v;\n}\n\nexport const getEnv = (k) =>{\n return PUBLIC_ENV[k];\n}\n\nexport const setEnvs = (data) =>{\n map(data, (v, k)=>{\n PUBLIC_ENV[k] = v;\n });\n}\n\nexport const getEnvs = () =>{\n return PUBLIC_ENV;\n}","import { getUISchema } from './objects';\n\nexport async function getSpaceUsersPickerAmisSchema(spaceUserSchema, name, options) {\n return {\n \"type\": \"picker\",\n \"label\": \"人员\",\n \"name\": name,\n \"id\": options.id,\n \"modalMode\": \"dialog\",\n \"joinValues\": false,\n \"source\": {\n \"method\": \"post\",\n \"url\": \"${context.rootUrl}/graphql\",\n \"data\": {\n \"orderBy\": \"${orderBy}\",\n \"orderDir\": \"${orderDir}\",\n \"pageNo\": \"${page}\",\n \"pageSize\": \"${perPage}\",\n \"query\": \"{rows:space_users(filters: {__filters}, top: {__top}, skip: {__skip}, sort: \\\"{__sort}\\\"){_id,name,email,mobile},count:space_users__count(filters:{__filters})}\",\n \"$term\": \"$term\",\n \"$self\": \"$$\"\n },\n \"requestAdaptor\": \"\\n const selfData = JSON.parse(JSON.stringify(api.data.$self));\\n var filters = [];\\n var pageSize = api.data.pageSize || 10;\\n var pageNo = api.data.pageNo || 1;\\n var skip = (pageNo - 1) * pageSize;\\n var orderBy = api.data.orderBy || '';\\n var orderDir = api.data.orderDir || '';\\n var sort = orderBy + ' ' + orderDir;\\n var allowSearchFields = [\\\"name\\\"];\\n if(api.data.$term){\\n filters = [[\\\"name\\\", \\\"contains\\\", \\\"'+ api.data.$term +'\\\"]];\\n }else if(selfData.op === 'loadOptions' && selfData.value){\\n filters = [[\\\"_id\\\", \\\"=\\\", selfData.value]];\\n }\\n if(allowSearchFields){\\n allowSearchFields.forEach(function(key){\\n const keyValue = selfData[key];\\n if(keyValue){\\n filters.push([key, \\\"contains\\\", keyValue]);\\n }\\n })\\n }\\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim());\\n return api;\\n \"\n },\n \"pickerSchema\": {\n \"mode\": \"table\",\n \"name\": \"thelist\",\n \"draggable\": false,\n \"headerToolbar\": [\n \"switch-per-page\",\n \"pagination\"\n ],\n \"defaultParams\": {\n \"perPage\": 50\n },\n \"columns\": [\n {\n \"name\": \"_index\",\n \"type\": \"text\",\n \"width\": 32,\n \"placeholder\": \"\"\n },\n {\n \"name\": \"_id\",\n \"label\": \"ID\",\n \"type\": \"text\",\n \"toggled\": false\n },\n {\n \"name\": \"name\",\n \"label\": \"姓名\",\n \"sortable\": true,\n \"searchable\": true,\n \"type\": \"text\"\n },\n {\n \"name\": \"email\",\n \"label\": \"邮件\",\n \"sortable\": true,\n \"type\": \"text\",\n \"searchable\": true\n },\n {\n \"name\": \"mobile\",\n \"label\": \"手机\",\n \"type\": \"text\",\n \"sortable\": true,\n \"searchable\": true\n }\n ],\n \"syncLocation\": false,\n \"keepItemSelectionOnPageChange\": true\n },\n \"labelField\": \"name\",\n \"valueField\": \"_id\",\n \"size\": \"lg\",\n \"extractValue\": true,\n \"className\": \"m-0\",\n \"labelClassName\": \"text-left\"\n }\n}\n\nexport async function getSpaceUsersPickerSchema(name, options) {\n const uiSchema = await getUISchema(\"space_users\");\n const amisSchema = await getSpaceUsersPickerAmisSchema(uiSchema, name, options);\n return {\n uiSchema,\n amisSchema,\n };\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-02 11:19:09\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-08-05 11:15:42\n * @Description:\n */\n// # 日期类型: date, datetime 支持操作符: \"=\", \"<>\", \"<\", \">\", \"<=\", \">=\"\n// # 文本类型: text, textarea, html 支持操作符: \"=\", \"<>\", \"contains\", \"notcontains\", \"startswith\"\n// # 选择类型: lookup, master_detail, select 支持操作符: \"=\", \"<>\"\n// # 数值类型: currency, number 支持操作符: \"=\", \"<>\", \"<\", \">\", \"<=\", \">=\"\n// # 布尔类型: boolean 支持操作符: \"=\", \"<>\"\n// # 数组类型: checkbox, [text] 支持操作符: \"=\", \"<>\"\nimport lodash from 'lodash';\n\nconst DATE_DATETIME_BETWEEN_VALUES = [\n \"last_year\",\n \"this_year\",\n \"next_year\",\n \"last_quarter\",\n \"this_quarter\",\n \"next_quarter\",\n \"last_month\",\n \"this_month\",\n \"next_month\",\n \"last_week\",\n \"this_week\",\n \"next_week\",\n \"yestday\",\n \"today\",\n \"tomorrow\",\n \"last_7_days\",\n \"last_30_days\",\n \"last_60_days\",\n \"last_90_days\",\n \"last_120_days\",\n \"next_7_days\",\n \"next_30_days\",\n \"next_60_days\",\n \"next_90_days\",\n \"next_120_days\",\n];\n\n/**\n *\n */\n\nconst opMaps = {\n equal: \"=\",\n not_equal: \"!=\",\n less: \"<\",\n less_or_equal: \"<=\",\n greater: \">\",\n greater_or_equal: \">=\",\n between: \"between\",\n not_between: \"not_between\", // TODO 不支持待@steedos/filters 增强\n is_empty: \"is_empty\", // TODO 不支持待@steedos/filters 增强\n is_not_empty: \"is_not_empty\", // TODO 不支持待@steedos/filters 增强\n select_equals: \"=\",\n select_not_equals: \"!=\",\n select_any_in: \"in\",\n select_not_any_in: \"<>\",\n like: \"contains\",\n not_like: \"notcontains\",\n starts_with: \"startswith\",\n ends_with: \"endswith\",\n};\n\nconst isGroup = (item) => {\n return _.has(item, \"conjunction\");\n};\n\nconst conditionGroupToFilters = (group) => {\n const filters = [];\n const { conjunction, children } = group;\n if (conjunction && children) {\n children.forEach((item) => {\n if (filters.length > 0) {\n filters.push(conjunction);\n }\n if (isGroup(item)) {\n const filter = conditionGroupToFilters(item);\n if (filter && filter.length > 0) {\n filters.push(filter);\n }\n } else {\n const filter = conditionItemToFilters(item);\n if (filter) {\n filters.push(filter);\n }\n }\n });\n }\n return filters;\n};\n\nconst conditionItemToFilters = (item) => {\n const { left, op, right } = item;\n if (left && left.type === \"field\") {\n if (op) {\n if (op.startsWith(\"between:\")) {\n const array = op.split(\":\");\n return [left.field, array[0], array[1]];\n } else {\n if (right != null) {\n return [left.field, opMaps[op], right];\n }\n }\n }\n }\n};\n\n// const conditionChildrenToFilters = (children)=>{\n\n// }\nconst filterToConditionItem = (filter) => {\n if (filter.length === 3) {\n const op = lodash.findKey(opMaps, (value) => {\n return value === filter[1];\n });\n if (\n op === \"between\" &&\n lodash.includes(DATE_DATETIME_BETWEEN_VALUES, filter[2])\n ) {\n return {\n left: {\n type: \"field\",\n field: filter[0],\n },\n op: `${op}:${filter[2]}`,\n };\n } else {\n return {\n left: {\n type: \"field\",\n field: filter[0],\n },\n op: op,\n right: filter[2],\n };\n }\n } else {\n console.warn(`无效的filter:${JSON.stringify(filter)}`);\n }\n};\n\nconst filterObjectToArray = (filter) => {\n if (!lodash.isArray(filter) && lodash.isObject(filter)) {\n return [filter.field, filter.operation, filter.value];\n }\n return filter;\n};\n\nconst filtersToConditionGroup = (filters) => {\n filters = filterObjectToArray(filters);\n\n const conditions = {\n conjunction: \"and\",\n children: [],\n };\n if (!filters || filters.length == 0) {\n return conditions;\n }\n filters.forEach((filter) => {\n filter = filterObjectToArray(filter);\n if (filter === \"or\" || filter === \"and\") {\n conditions.conjunction = filter;\n } else {\n if (\n filter.length === 3 &&\n filter.indexOf(\"and\") == -1 &&\n filter.indexOf(\"or\") == -1\n ) {\n conditions.children.push(filterToConditionItem(filter));\n } else {\n conditions.children.push(filtersToConditionGroup(filter));\n }\n }\n });\n return conditions;\n};\n\nexport const conditionsToFilters = (conditions) => {\n return conditionGroupToFilters(conditions);\n};\n\nexport const filtersToConditions = (filters) => {\n return filtersToConditionGroup(filters);\n};\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-13 14:34:18\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-09-13 14:59:00\n * @Description: 加载资产包,并返回所有可用资产\n */\nimport { isString, filter, map } from 'lodash';\n\nexport const registerRemoteAssets = async (assetUrls)=>{\n if(assetUrls && assetUrls.length > 0){\n let assetUrlsArray = assetUrls;\n if(isString(assetUrlsArray)){\n assetUrlsArray = assetUrlsArray.split(',');\n }\n await Builder.registerRemoteAssets(assetUrlsArray);\n const amisComps = filter(Builder.registry['meta-components'], function(item){ return item.componentName && item.amis?.render});\n return map(amisComps, (item)=>{\n return { componentType: item.componentType, componentName: item.componentName, ...item.amis.render}\n })\n }else{\n return []\n }\n}","import { getRootUrl, getSteedosAuth } from \"./lib/steedos.client\";\n\n/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-12-17 17:03:40\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-02-22 18:19:44\n * @Description: \n */\nexport const getDefaultRenderData = ()=>{\n const steedosAuth = getSteedosAuth();\n return {\n context: {\n rootUrl: getRootUrl(),\n userId: steedosAuth.userId,\n tenantId: steedosAuth.tenantId,\n authToken: steedosAuth.authToken,\n user: steedosAuth\n },\n global: {\n userId: steedosAuth.userId,\n spaceId: steedosAuth.tenantId,\n user: steedosAuth, \n now: new Date(),\n // mode: mode //由表单提供\n }\n }\n }","import {\n lookupToAmisPicker,\n getSteedosAuth, Router\n} from \"@steedos-widgets/amis-lib\";\n//TODO Meteor.settings.public?.workflow?.hideCounterSignJudgeOptions\n\nconst HIDE_COUNTER_SIGN_JUDGE_OPTIONS = false;\n\nconst getJudgeOptions = async (instance) => {\n const { step } = instance;\n const options = [];\n if (step.step_type === \"sign\") {\n options.push({\n label: \"核准\",\n value: \"approved\",\n });\n options.push({\n label: \"驳回\",\n value: \"rejected\",\n });\n } else if (\n step.step_type === \"counterSign\" &&\n HIDE_COUNTER_SIGN_JUDGE_OPTIONS != true\n ) {\n options.push({\n label: \"核准\",\n value: \"approved\",\n });\n options.push({\n label: \"驳回\",\n value: \"rejected\",\n });\n options.push({\n label: \"已阅\",\n value: \"readed\",\n });\n }\n return options;\n};\n\nconst getJudgeInput = async (instance) => {\n const judgeOptions = await getJudgeOptions(instance);\n if (judgeOptions.length > 0 && instance.approve.type != 'cc') {\n return {\n type: \"radios\",\n label: false,\n name: \"judge\",\n value: \"approved\",\n options: judgeOptions,\n id: \"u:444dbad76e90\",\n required: true,\n \"onEvent\": {\n \"change\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"instance_approval\",\n \"args\": {\n \"value\": {\n new_judge: \"${event.data.value}\",\n next_step: undefined,\n }\n },\n \"actionType\": \"setValue\"\n },\n {\n // \"componentId\": \"u:next_step\",\n \"args\": {\n judge: \"${event.data.value}\"\n },\n \"actionType\": \"broadcast\",\n eventName: \"approve_judge_change\"\n },\n ]\n }\n }\n };\n }\n};\n\n//TODO 只有一个下一步时,默认选中,并且禁止修改.\nconst getNextStepInput = async (instance) => {\n if(instance.approve?.type == 'cc'){\n return ;\n }\n return {\n type: \"grid\",\n columns: [\n {\n body: [\n {\n type: \"tpl\",\n tpl: \"下一步\",\n inline: true,\n wrapperComponent: \"\",\n id: \"u:0a85de51480f\",\n },\n ],\n id: \"u:bf75adfb544e\",\n md: \"auto\",\n valign: \"middle\",\n },\n {\n body: [\n {\n type: \"list-select\",\n label: \"\",\n name: \"next_step\",\n id: \"u:next_step\",\n multiple: false,\n required: true,\n // selectFirst: true,\n autoFill: {\n \"new_next_step\": \"${step}\",\n \"next_users\": null\n },\n \"source\": {\n \"url\": \"${context.rootUrl}/api/workflow/v2/nextStep?judge=${new_judge}\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"method\": \"post\",\n \"messages\": {\n },\n \"requestAdaptor\": \"let { context, judge } = api.data; if(!judge){judge='approved'}\\nconst formValues = SteedosUI.getRef(api.data.$scopeId).getComponentById(\\\"instance_form\\\").getValues();\\n\\napi.data = {\\nflowVersionId: context.flowVersion._id,\\n instanceId: context._id,\\n flowId: context.flow._id,\\n step: context.step,\\n judge: judge,\\n values: formValues\\n}\\n\\n\\n return api;\",\n \"adaptor\": `\n payload.data = {\n value: payload.nextSteps.length === 1 ? payload.nextSteps[0]._id : null, \n options: _.map(payload.nextSteps, (item)=>{\n return {\n label: item.name, \n value: item._id,\n step: item\n }\n })\n };\n return payload;\n `,\n \"data\": {\n // \"&\": \"$$\",\n \"context\": \"${context}\",\n \"$scopeId\": \"${scopeId}\",\n \"judge\": \"${new_judge}\",\n }\n },\n // \"onEvent\": {\n // \"change\": {\n // \"weight\": 0,\n // \"actions\": [\n // {\n // \"componentId\": \"instance_approval\",\n // \"args\": {\n // \"value\": {\n // new_next_step: \"${event.data.value}\",\n // }\n // },\n // \"actionType\": \"setValue\"\n // },\n // // {\n // // \"args\": {\n // // next_step: \"${event.data.value}\",\n // // },\n // // \"actionType\": \"broadcast\",\n // // eventName: \"approve_next_step_change\"\n // // },\n // ]\n // }\n // }\n },\n ],\n id: \"u:4d3a884b437c\",\n },\n ],\n id: \"u:016c56efe5fd\",\n className: \"b-a b-1x m-none p-xs\",\n subFormMode: \"\",\n };\n};\n\n//TODO 只有一个处理人时,默认选中,禁止修改. 部分情况不需要显示下一步处理人\nconst getNextStepUsersInput = async (instance) => {\n if(instance.approve?.type == 'cc'){\n return ;\n }\n return {\n type: \"grid\",\n columns: [\n {\n body: [\n {\n type: \"tpl\",\n tpl: \"处理人\",\n inline: true,\n wrapperComponent: \"\",\n id: \"u:3203cc281b3c\",\n },\n ],\n id: \"u:8eece76a9e4c\",\n md: \"auto\",\n valign: \"middle\",\n },\n {\n body: [\n // TODO 处理下一步处理人默认值\n Object.assign({}, \n {\n \"type\": \"steedos-select-user\"\n },\n {\n name: \"next_users\", \n hiddenOn: \"this.new_next_step.deal_type != 'pickupAtRuntime'\",\n required: true\n }),\n {\n type: \"steedos-select-user\",\n label: \"\",\n name: \"next_users\",\n id: \"u:next_users\",\n required: true,\n hiddenOn: \"this.new_next_step.deal_type === 'pickupAtRuntime'\",\n amis: {\n multiple: \"this.new_next_step.deal_type === 'counterSign'\",\n \"source\": {\n \"url\": \"${context.rootUrl}/api/workflow/v2/nextStepUsers\",\n \"method\": \"post\",\n \"sendOn\": \"!!this.new_next_step && this.new_next_step.step_type != 'end'\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"messages\": {\n },\n \"requestAdaptor\": \"\\nconst { context, next_step, $scopeId } = api.data;\\nconst formValues = SteedosUI.getRef($scopeId).getComponentById(\\\"instance_form\\\").getValues();\\n\\napi.data = {\\n instanceId: context._id,\\n nextStepId: next_step._id,\\n values: formValues\\n}\\n\\n\\n return api;\",\n \"adaptor\": \"\\npayload.data = {value: payload.nextStepUsers.length === 1 ? payload.nextStepUsers[0].id : null, options: payload.nextStepUsers};\\nreturn payload;\",\n \"data\": {\n \"&\": \"$$\",\n \"$scopeId\": \"$scopeId\",\n \"context\": \"${context}\",\n \"next_step\": \"${new_next_step}\",\n }\n },\n \"labelField\": \"name\",\n \"valueField\": \"id\",\n }\n }\n ],\n id: \"u:81a4913c61cc\",\n },\n ],\n id: \"u:ffff15b76c89\",\n className: \"b-a b-1x p-xs m-b-none m-l-none m-r-none m-t-sm\",\n subFormMode: \"\",\n hiddenOn: \"!!!this.new_next_step || (this.new_next_step && this.new_next_step.step_type === 'end')\"\n };\n};\n\nconst getCCSubmitRequestAdaptor = async (instance) => {\n return ` \n const instanceForm = SteedosUI.getRef(api.data.$scopeId).getComponentById(\"instance_form\");\n const approveValues = SteedosUI.getRef(api.data.$scopeId).getComponentById(\"instance_approval\").getValues();\n api.data = {\n instanceId: \"${instance._id}\", \n traceId: \"${instance.trace._id}\", \n approveId: \"${instance.approve._id}\", \n description: approveValues.suggestion \n };\n return api;\n `;\n};\n\nconst getPostSubmitRequestAdaptor = async (instance) => {\n return ` const instanceForm = SteedosUI.getRef(api.data.$scopeId).getComponentById(\"instance_form\");\n const formValues = instanceForm.getValues();\n const approveValues = SteedosUI.getRef(api.data.$scopeId).getComponentById(\"instance_approval\").getValues();\n let nextUsers = approveValues.next_users;\n if(_.isString(nextUsers)){\n nextUsers = [approveValues.next_users];\n }\n const body = {Instances: [{\n _id: \"${instance._id}\",\n flow: \"${instance.flow._id}\",\n applicant: formValues.applicant,\n submitter: formValues.submitter,\n traces: [{\n _id: \"${instance.trace._id}\",\n step: \"${instance.step._id}\",\n approves: [{\n _id: \"${instance.approve._id}\",\n next_steps: [{\n step: approveValues.next_step._id,\n users: nextUsers,\n }],\n description: approveValues.suggestion,\n values: formValues\n }]\n }]\n }]};\n api.data = body;\n return api;\n `;\n};\n\nconst getPostEngineRequestAdaptor = async (instance) => {\n return ` \n const formValues = SteedosUI.getRef(api.data.$scopeId).getComponentById(\"instance_form\").getValues();\n const approveValues = SteedosUI.getRef(api.data.$scopeId).getComponentById(\"instance_approval\").getValues();\n let nextUsers = approveValues.next_users;\n if(_.isString(nextUsers)){\n nextUsers = [approveValues.next_users];\n }\n const body = {Approvals: [{\n instance: \"${instance._id}\",\n judge: approveValues.judge,\n trace: \"${instance.approve.trace}\",\n _id: \"${instance.approve._id}\",\n next_steps: [{\n step: approveValues.next_step._id,\n users: nextUsers,\n }],\n description: approveValues.suggestion,\n values: formValues\n }]};\n api.data = body;\n return api;\n `;\n};\n\n/**\n * 1 TODO 处理传阅提交\n * 2 草稿状态提交. TODO 申请单的表单、流程升级\n * 3 待审核提交\n * @param instance\n * @returns\n */\nconst getSubmitActions = async (instance) => {\n // console.log(`getSubmitActions instance====`, instance)\n let api = \"\";\n let requestAdaptor = \"\";\n if(instance.approve?.type == \"cc\"){\n api = \"/api/workflow/v2/cc_submit\";\n requestAdaptor = await getCCSubmitRequestAdaptor(instance);\n }else{\n if (instance.state === \"draft\") {\n api = \"/api/workflow/submit\";\n requestAdaptor = await getPostSubmitRequestAdaptor(instance);\n } else if (instance.state === \"pending\") {\n api = \"/api/workflow/engine\";\n requestAdaptor = await getPostEngineRequestAdaptor(instance);\n } else {\n return null; //TODO 考虑异常情况?\n }\n }\n\n return [\n // 校验表单\n {\n \"componentId\": \"\",\n \"args\": {},\n \"actionType\": \"custom\",\n \"script\": `\n // console.log(\"======getSubmitActions\");\n const form = event.context.scoped.getComponentById(\"instance_form\");\n return form.validate().then((instanceFormValidate)=>{\n event.setData({...event.data, instanceFormValidate})\n })\n `\n },\n // 校验审批表单\n {\n \"componentId\": \"\",\n \"args\": {},\n \"actionType\": \"custom\",\n \"script\": `\n const form = event.context.scoped.getComponentById(\"instance_approval\");\n return form.validate().then((approvalFormValidate)=>{\n event.setData({...event.data, approvalFormValidate})\n })\n `,\n expression: \"${event.data.instanceFormValidate}\"\n },\n {\n componentId: \"\",\n args: {\n api: {\n url: `\\${context.rootUrl}${api}`,\n method: \"post\",\n dataType: \"json\",\n data: {\n \"&\": \"$$\",\n \"$scopeId\": \"${$scopeId}\"\n },\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\",\n },\n requestAdaptor: requestAdaptor,\n },\n messages: {\n success: \"提交成功!\",\n },\n },\n actionType: \"ajax\",\n expression: \"${event.data.instanceFormValidate && event.data.approvalFormValidate}\"\n },\n {\n \"componentId\": \"\",\n \"args\": {\n \"blank\": false,\n \"url\": Router.getObjectListViewPath({appId: \"${appId}\", objectName: \"${objectName}\", listViewName: \"${side_listview_id}\"})\n },\n \"actionType\": \"url\",\n expression: \"${event.data.instanceFormValidate && event.data.approvalFormValidate}\"\n },\n {\n \"actionType\": \"closeDialog\",\n expression: \"${event.data.instanceFormValidate && event.data.approvalFormValidate}\"\n }\n ];\n};\n\nexport const getApprovalDrawerSchema = async (instance) => {\n // console.log(\"=============getApprovalDrawerSchema=============\")\n return {\n type: \"drawer\",\n overlay: true,\n resizable: false,\n closeOnEsc: true,\n closeOnOutside: true,\n size: \"sm\",\n title: `${instance.step.name}`,\n className: \"approval-drawer absolute\",\n headerClassName: 'p-2',\n bodyClassName: 'p-2',\n footerClassName: 'p-2 pt-0',\n drawerContainer: ()=>{\n return window.$(\".antd-Page-content\",window.$(\".steedos-instance-wrapper\"))[0];\n },\n body: [\n {\n type: \"form\",\n debug: false,\n id: \"instance_approval\",\n resetAfterSubmit: true,\n clearPersistDataAfterSubmit: true,\n persistData: `workflow_approve_form_${instance.approve._id}`,\n body: [\n {\n type: 'hidden',\n name: 'new_next_step'\n },\n await getJudgeInput(instance),\n {\n type: \"textarea\",\n label: false,\n name: \"suggestion\",\n id: \"u:cd344f708ddc\",\n minRows: 3,\n maxRows: 20,\n placeholder: \"请填写意见\",\n requiredOn: \"${judge === 'rejected'}\"\n },\n await getNextStepInput(instance),\n await getNextStepUsersInput(instance),\n ],\n onEvent: {\n \"approve_judge_change\": {\n \"actions\": [\n {\n \"actionType\": \"reload\",\n \"componentId\": \"u:next_step\",\n \"args\": {\n }\n }\n ]\n },\n // \"approve_next_step_change\": {\n // \"actions\": [\n // {\n // \"actionType\": \"reload\",\n // \"componentId\": \"u:nex_users\",\n // \"args\": {\n // }\n // }\n // ]\n // },\n validateError: {\n weight: 0,\n actions: [\n {\n \"componentId\": \"\",\n \"args\": {\n \"msgType\": \"info\",\n \"position\": \"top-right\",\n \"closeButton\": true,\n \"showIcon\": true,\n \"title\": \"提交失败\",\n \"msg\": \"请填写必填字段\"\n },\n \"actionType\": \"toast\"\n }\n ],\n }\n },\n \n },\n ],\n id: \"u:approve_8861156e0b23\",\n position: \"bottom\",\n actions: [\n {\n type: \"button\",\n label: \"提交\",\n onEvent: {\n click: {\n actions: await getSubmitActions(instance),\n },\n },\n id: \"u:f6f8c3933f6c\",\n level: \"primary\",\n },\n {\n type: \"button\",\n label: \"取消\",\n onEvent: {\n click: {\n actions: [\n {\n componentId: \"\",\n args: {},\n actionType: \"closeDrawer\",\n },\n ],\n },\n },\n id: \"u:127ff1da7283\",\n },\n ]\n };\n};\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-16 17:27:24\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-02-08 10:13:06\n * @Description: \n */\nimport { getSteedosAuth } from '@steedos-widgets/amis-lib'\n// TODO attachments\nexport const getAttachments = async (instance)=>{\n\n return {\n \"type\": \"panel\",\n className: \"border-none bg-none shadow-none\",\n headerClassName: \"p-0 border-none mb-1\",\n bodyClassName: \"p-0\",\n \"title\": [\n await getAttachmentUploadInput(instance)\n ],\n \"body\": [\n {\n type: 'service',\n id: 'u:attachmentsService',\n api: {\n \"method\": \"post\",\n \"url\": \"${context.rootUrl}/graphql\",\n dataType: \"json\",\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\",\n },\n requestAdaptor: `\n api.data.query = 'query{attachments:cfs_instances_filerecord(filters: [[\"metadata.instance\", \"=\", \"${instance._id}\"], \"metadata.current\", \"=\", true]){ _id,original,metadata}}';\n return api;\n `\n },\n body: [\n {\n \"type\": \"list\",\n \"source\": \"${attachments}\",\n title: false,\n \"listItem\": {\n \"body\": [\n {\n type: 'tpl',\n inline: true,\n tpl: `<a href='\\${context.rootUrl}/api/files/instances/\\${_id}?download=true' target='_blank'>\\${original.name}</a>`\n }\n ],\n \"actions\": [\n {\n \"icon\": \"fa fa-eye\",\n \"type\": \"button\",\n \"id\": \"u:ef52fa8940a8\"\n }\n ],\n \"id\": \"u:550b3fdc8788\"\n },\n \"id\": \"u:f538be693fad\"\n }\n ]\n }\n ]\n }\n}\n\nexport const getAttachmentUploadInput = async (instance)=>{\n if(!instance.approve){\n return {\n type: 'tpl',\n tpl: \"附件\"\n }\n }\n const auth = getSteedosAuth();\n return {\n \"type\": \"form\",\n \"title\": \"表单\",\n \"body\": [\n {\n \"type\": \"input-file\",\n labelClassName: \"antd-List-heading\",\n className: \"flex items-center\",\n \"label\": \"附件\",\n mode:\"inline\",\n \"name\": \"file\",\n \"id\": \"u:a58d02614e04\",\n \"btnLabel\": \"上传\",\n \"btnClassName\": \"m-0\", \n \"multiple\": true,\n \"maxLength\": 10,\n \"submitType\": \"asUpload\",\n \"uploadType\": \"fileReceptor\",\n \"proxy\": false,\n \"drag\": false,\n \"autoUpload\": true,\n \"useChunk\": false,\n \"joinValues\": false,\n \"extractValue\": false,\n \"valueField\": \"version_id\",\n \"receiver\": {\n \"url\": \"${context.rootUrl}/api/v4/instances/s3\",\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"method\": \"post\",\n \"messages\": {},\n \"dataType\": \"form-data\",\n \"requestAdaptor\": `\n api.data.append('space', '${instance.space}');\n api.data.append('instance', '${instance._id}');\n api.data.append('approve', '${instance.approve?._id}');\n api.data.append('owner', '${auth.userId}');\n api.data.append('owner_name', '${auth.name}');\n return api;\n `\n },\n \"onEvent\": {\n \"success\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"u:5f901c0b917b\",\n \"args\": {},\n \"actionType\": \"clear\"\n },\n {\n \"componentId\": \"\",\n \"args\": {\n \"msgType\": \"success\",\n \"position\": \"top-right\",\n \"closeButton\": true,\n \"showIcon\": true,\n \"msg\": \"上传成功\"\n },\n \"actionType\": \"toast\"\n },\n {\n \"componentId\": \"u:attachmentsService\",\n \"args\": {},\n \"actionType\": \"reload\",\n }\n ]\n }\n }\n }\n ],\n \"id\": \"u:5f901c0b917b\",\n \"wrapWithPanel\": false\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-16 17:26:12\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-02-09 09:48:18\n * @Description: \n */\nimport { map, isEmpty } from 'lodash'\nimport { getSteedosAuth } from '@steedos-widgets/amis-lib';\nexport const getRelatedRecords = async (instance)=>{\n if(!instance.record_ids || isEmpty(instance.record_ids)){\n return ;\n }\n return map(instance.record_ids, (item)=>{\n return {\n type: 'tpl',\n tpl: `<a href='/app/-/${item.o}/view/${item.ids[0]}' target='_blank'>相关台账信息</a>`\n }\n })\n}\n\n// TODO delete button\nexport const getRelatedInstances = async (instance)=>{\n // if(!instance.related_instances || isEmpty(instance.related_instances)){\n // return ;\n // }\n const spaceId = getSteedosAuth().tenantId;\n \n return {\n \"type\": \"list\",\n \"name\": \"relatedInstances\",\n \"source\": \"${related_instances}\",\n title: \"相关文件\",\n \"listItem\": {\n \"body\": [\n {\n type: 'tpl',\n inline: true,\n tpl: `<a href='\\${context.rootUrl}/workflow/space/${spaceId}/view/readonly/\\${_id}' target='_blank'>\\${name}</a>`\n }\n ],\n \"actions\": [\n {\n \"icon\": \"fa fa-eye\",\n \"type\": \"button\",\n \"id\": \"u:ef52fa8940a8\"\n }\n ],\n \"id\": \"u:550b3fdc8788\"\n },\n \"id\": \"related_instances\"\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-24 16:48:28\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-09-27 16:45:58\n * @Description: \n */\n\nimport _, { each } from 'lodash';\n\nexport const getInstanceApprovalHistory = async ()=>{\n return {\n \"type\": \"table\",\n \"headerClassName\": \"hidden\",\n \"title\": \"签批历程\",\n \"source\": \"${historyApproves}\",\n \"className\": \"m-b-none instance-approve-history\",\n \"columnsTogglable\": false,\n \"footable\": {\n \"expand\": \"all\"\n },\n \"columns\": [\n {\n \"name\": \"name\",\n \"label\": \"name\"\n },\n {\n \"name\": \"user_name\",\n \"label\": \"user_name\",\n \"type\": \"tpl\",\n \"tpl\": \"<div><div>${opinion}</div>${user_name}</div>\"\n },\n {\n \"name\": \"finish_date\",\n \"label\": \"finish_date\",\n \"classNameExpr\": \"<%= data.finish_date == '已读' ? 'text-[blue]' : (data.finish_date == '未处理' ? 'text-[red]' : '') %>\"\n // \"type\": \"datetime\",\n // \"format\": \"YYYY-MM-DD HH:mm\"\n },\n {\n \"name\": \"judge\",\n \"label\": \"judge\",\n \"classNameExpr\": \"<%= data.judge == '已核准' ? 'text-green-600' : (data.judge == '已驳回' ? 'text-[red]' : '') %>\"\n }\n ]\n }\n}\n\n\nconst getTrs = (instance)=>{\n const { traces } = instance;\n _.each(traces, (trace)=>{\n console.log(`trace`, trace)\n })\n}\n\nexport const getINstanceApproveHistory2 = async (instance)=>{\n \n return {\n type: \"table-view\",\n className: \"instance-history\",\n trs: await getTrs(instance),\n id: \"u:instance-history\",\n };\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-07 16:20:45\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-03-23 16:49:44\n * @Description:\n */\nimport {\n lookupToAmis,\n getSteedosAuth,\n} from \"@steedos-widgets/amis-lib\";\n\nimport { each, startsWith, includes } from \"lodash\";\n\nimport { getApprovalDrawerSchema } from \"./approve\";\n\nimport { getAttachments } from './attachment';\n\nimport { getRelatedRecords, getRelatedInstances } from './related';\n\nimport { getInstanceApprovalHistory } from './history';\n\n\nconst getSelectOptions = (field) => {\n const options = [];\n each(field.options.split(\"\\n\"), (item) => {\n var foo = item.split(\":\");\n if (foo.length == 2) {\n options.push({ label: foo[0], value: foo[1] });\n } else {\n options.push({ label: item, value: item });\n }\n });\n return options;\n};\n\nconst isOpinionField = (field)=>{\n const field_formula = field.formula;\n return (field_formula?.indexOf(\"{traces.\") > -1 || field_formula?.indexOf(\"{signature.traces.\") > -1 || field_formula?.indexOf(\"{yijianlan:\") > -1 || field_formula?.indexOf(\"{\\\"yijianlan\\\":\") > -1 || field_formula?.indexOf(\"{'yijianlan':\") > -1)\n}\n\nconst getFieldEditTpl = async (field, label)=>{\n const tpl = {\n label: label === true ? field.name : false,\n name: field.code,\n mode: \"horizontal\",\n className: \"m-none p-none form-control\",\n disabled: field.permission !== \"editable\",\n required: field.is_required\n };\n if(isOpinionField(field)){\n tpl.type = 'input-group';\n tpl.body = [\n {\n \"type\": \"textarea\",\n \"inputClassName\": \"b-r-none p-r-none\",\n \"name\": \"input-group\",\n \"id\": `yijian-${field.code}`,\n \"minRows\": 3,\n \"maxRows\": 20,\n \"mode\": \"normal\",\n \"size\": \"full\"\n },\n {\n \"type\": \"button\",\n \"label\": \"签批\",\n \"level\": \"link\",\n \"id\": \"u:2592111d236d\",\n \"block\": false,\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": `${field.name || field.code}`,\n \"body\": [\n {\n \"type\": \"form\",\n \"title\": \"表单\",\n \"body\": [\n {\n \"label\": \"\",\n \"type\": \"textarea\",\n \"name\": \"yijian\",\n \"id\": \"u:1d5a60623000\",\n \"minRows\": 6,\n \"maxRows\": 20,\n \"mode\": \"normal\",\n \"placeholder\": \"请填写意见\"\n },\n {\n \"type\": \"grid\",\n \"columns\": [\n {\n \"body\": [\n {\n \"type\": \"button\",\n \"label\": \"已阅\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": \"u:1d5a60623000\",\n \"args\": {\n \"valueInput\": \"已阅\",\n \"value\": \"已阅\"\n },\n \"actionType\": \"setValue\"\n }\n ]\n }\n },\n \"id\": \"u:13498f8d2882\",\n \"level\": \"link\",\n \"className\": \"m-r\"\n },\n {\n \"type\": \"button\",\n \"label\": \"已办\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": \"u:1d5a60623000\",\n \"args\": {\n \"valueInput\": \"已办\",\n \"value\": \"已办\"\n },\n \"actionType\": \"setValue\"\n }\n ]\n }\n },\n \"id\": \"u:cfa2e3c54a21\",\n \"level\": \"link\",\n \"className\": \"m-r\"\n },\n {\n \"type\": \"button\",\n \"label\": \"同意\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": \"u:1d5a60623000\",\n \"args\": {\n \"valueInput\": \"同意\",\n \"value\": \"同意\"\n },\n \"actionType\": \"setValue\"\n }\n ]\n }\n },\n \"id\": \"u:06e0037dcd23\",\n \"level\": \"link\",\n \"className\": \"m-r\"\n },\n {\n \"type\": \"button\",\n \"label\": \"其他常用意见\",\n \"onEvent\": {\n \"click\": {\n \"actions\": []\n }\n },\n \"id\": \"u:3a781bc550a2\",\n \"level\": \"link\",\n \"className\": \"m-r\"\n }\n ],\n \"id\": \"u:3def7a5b7cd5\"\n }\n ],\n \"id\": \"u:ecbefa51b638\"\n }\n ],\n \"id\": \"u:dd32ae67b5c7\"\n }\n ],\n \"id\": \"u:a5d06d3a61b9\",\n \"closeOnEsc\": false,\n \"closeOnOutside\": false,\n \"showCloseButton\": true,\n \"actions\": [\n {\n \"type\": \"button\",\n \"label\": \"确认\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": `yijian-${field.code}`,\n \"args\": {\n \"valueInput\": \"${yijian}\",\n \"value\": \"${yijian}\"\n },\n \"actionType\": \"setValue\"\n },\n {\n \"componentId\": \"\",\n \"args\": {},\n \"actionType\": \"closeDialog\"\n }\n ]\n }\n },\n \"id\": \"u:87e22efe707a\",\n \"level\": \"primary\"\n },\n {\n \"type\": \"button\",\n \"label\": \"取消\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {},\n \"actionType\": \"closeDialog\"\n }\n ]\n }\n },\n \"id\": \"u:d0e6550a848e\"\n }\n ]\n }\n }\n ],\n \"weight\": 0\n }\n },\n \"className\": \"instance-sign-text-btn\",\n }\n ]\n }else{\n switch (field.type) {\n case \"input\":\n if (field.is_textarea) {\n tpl.type = \"textarea\";\n } else {\n tpl.type = \"input-text\";\n }\n break;\n case \"number\":\n tpl.type = \"input-number\";\n break;\n case \"date\":\n tpl.type = \"input-date\";\n tpl.inputFormat = \"YYYY-MM-DD\";\n tpl.format = 'YYYY-MM-DDT00:00:00.000[Z]';\n break;\n case \"dateTime\":\n tpl.type = \"input-datetime\";\n tpl.inputFormat = \"YYYY-MM-DD HH:mm\";\n tpl.format = 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n break;\n case \"checkbox\":\n tpl.type = \"checkbox\";\n break;\n case \"email\":\n tpl.type = \"input-email\";\n tpl.validations = {\n isEmail: true,\n };\n break;\n case \"url\":\n tpl.type = \"input-url\";\n tpl.validations = {\n isUrl: true,\n };\n break;\n case \"password\":\n tpl.type = \"input-password\";\n tpl.showCounter = true;\n break;\n case \"select\":\n tpl.type = \"select\";\n tpl.options = getSelectOptions(field);\n break;\n case \"user\":\n const useTpl = await lookupToAmis(\n {\n name: field.code,\n label: field.name,\n reference_to: \"space_users\",\n reference_to_field: 'user',\n multiple: field.is_multiselect,\n },\n false,\n {}\n );\n Object.assign(tpl, useTpl);\n break;\n case \"group\":\n const orgTpl = await lookupToAmis(\n {\n name: field.code,\n label: field.name,\n reference_to: \"organizations\",\n multiple: field.is_multiselect,\n },\n false,\n {}\n );\n Object.assign(tpl, orgTpl);\n break;\n case \"radio\":\n tpl.type = \"radios\";\n tpl.options = getSelectOptions(field);\n break;\n case \"multiSelect\":\n tpl.type = \"checkboxes\";\n tpl.options = getSelectOptions(field);\n break;\n case \"odata\":\n var labelField = field.formula.substr(1, field.formula.length - 2);\n labelField = labelField.substr(labelField.indexOf(\".\") + 1);\n tpl.type = \"select\";\n tpl.multiple = field.is_multiselect;\n // tpl.labelField = labelField;\n // tpl.valueField = \"_value\";\n tpl.source = {\n url: startsWith(field.url, \"http\")\n ? field.url\n : `\\${context.rootUrl}${field.url}`,\n method: \"get\",\n dataType: \"json\",\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\",\n },\n adaptor:`\n payload.data = {\n options: _.map(payload.value, (item)=>{\n const value = item;\n item[\"@label\"] = item[\"${labelField}\"]\n delete item['@odata.editLink'];\n delete item['@odata.etag'];\n delete item['@odata.id'];\n return {\n label: item[\"@label\"],\n value: value\n }\n })\n }\n return payload;\n `\n };\n break;\n case \"html\":\n if (tpl.disabled) {\n tpl.type = 'html';\n } else {\n tpl.type = \"input-rich-text\";\n }\n break;\n case \"table\":\n tpl.type = \"input-table\"; //TODO\n tpl.addable = field.permission === \"editable\";\n tpl.editable = tpl.addable;\n tpl.copyable = tpl.addable;\n tpl.removable = tpl.addable;\n tpl.columns = [];\n for (const sField of field.fields) {\n if (sField.type != \"hidden\") {\n sField.permission = field.permission\n const column = await getTdInputTpl(sField, true);\n tpl.columns.push(column);\n }\n }\n break;\n case \"section\":\n tpl.type = \"input-text\";\n break;\n default:\n break;\n }\n }\n // console.log('getFieldEditTpl ', label, tpl)\n return tpl;\n};\n\nconst getFieldReadonlyTpl = async (field, label)=>{\n // console.log(`getFieldReadonlyTpl`, label, field)\n const tpl = {\n label: label === true ? field.name : false,\n name: field.code,\n mode: \"horizontal\",\n className: \"m-none p-none form-control\",\n };\n if(includes(['text'], field.type)){\n tpl.type = `static-${field.type}`;\n }else if(field.type === 'select'){\n const options = getSelectOptions(field);\n const map = {};\n each(options , (item)=>{\n map[item.value] = item.label;\n })\n tpl.type = 'static';\n tpl.tpl = `<% var options = ${JSON.stringify(map)}; return (options && options[data.${field.code}]) || ''%>`\n }else if(field.type === 'odata'){\n tpl.type = 'static';\n tpl.tpl = `<div>\\${${field.code}['@label']}</div>`\n }else if(field.type === 'checkbox'){\n tpl.type = 'static';\n tpl.tpl = `\\${${field.code} ? '是': '否'}`\n }else if(field.type === 'email'){\n tpl.type = 'static'\n tpl.tpl = `<a href=\"mailto:\\${${field.code}}\">\\${${field.code}}</a>`\n }else if(field.type === 'url'){\n tpl.type = 'static'\n tpl.tpl = `<a href=\"\\${${field.code}}\" target=\"_blank\">\\${${field.code}}</a>`\n }else if(field.type === 'password'){\n tpl.type = 'static'\n tpl.tpl = `******`\n }else if(field.type === 'date'){\n tpl.type = 'static'\n // tpl.format = 'YYYY-MM-DD HH:mm'\n tpl.tpl = `<%=data.${field.code} ? date(new Date(data.${field.code}), 'YYYY-MM-DD') : '' %>`\n }else if(field.type === 'dateTime'){\n tpl.type = 'static'\n // tpl.format = 'YYYY-MM-DD HH:mm'\n tpl.tpl = `<%=data.${field.code} ? date(new Date(data.${field.code}), 'YYYY-MM-DD HH:mm') : '' %>`\n }else if(field.type === 'user'){\n tpl.type = 'static'\n // tpl.format = 'YYYY-MM-DD HH:mm'\n if(field.is_multiselect){\n tpl.tpl = `\\${_.map(${field.code}, 'name')}`\n }else{\n tpl.tpl = `\\${${field.code} && ${field.code}.name}`\n }\n }else if(field.type === 'group'){\n tpl.type = 'static'\n // tpl.format = 'YYYY-MM-DD HH:mm'\n tpl.tpl = `\\${${field.code}.name}`\n }else if(field.type === 'table'){\n tpl.type = \"input-table\"; //TODO\n tpl.addable = field.permission === \"editable\";\n tpl.editable = tpl.addable;\n tpl.removable = tpl.addable;\n tpl.copyable = tpl.addable;\n tpl.columns = [];\n for (const sField of field.fields) {\n if (sField.type != \"hidden\") {\n const column = await getTdInputTpl(sField, true);\n tpl.columns.push(column);\n }\n }\n }else if(field.type === 'html'){\n tpl.type = 'tpl';\n }\n else{\n tpl.type = 'static';\n }\n return tpl;\n};\n\n/**\n * TODO 先将申请单上的字段转化为 steedos field 类型, 只读、编辑 使用 steedos field tpl\n * @param {*} field \n * @param {*} label \n * @returns \n */\nconst getTdInputTpl = async (field, label) => {\n const edit = field.permission === \"editable\";\n if(edit){\n return await getFieldEditTpl(field, label)\n }else{\n return await getFieldReadonlyTpl(field, label)\n }\n};\n\nconst getTdField = async (field, fieldsCount) => {\n return {\n background: field.permission !== \"editable\" ? \"#FFFFFF\" : \"rgba(255,255,0,.1)\",\n colspan: field.type === \"table\" ? 4 : 3 - (fieldsCount - 1) * 2,\n align: \"left\",\n className: \"td-field\",\n width: \"32%\",\n body: [await getTdInputTpl(field)],\n style: {\n marginTop: \"0\",\n paddingTop: \"0\",\n paddingRight: \"0\",\n paddingBottom: \"0\",\n paddingLeft: \"0\",\n marginRight: \"0\",\n marginBottom: \"0\",\n marginLeft: \"0\",\n borderLeftColor: \"#000000\",\n borderTopColor: \"#000000\",\n borderRightColor: \"#000000\",\n borderBottomColor: \"#000000\",\n },\n // \"id\": \"u:9b001b7ff92d\"\n };\n};\n\nconst getTdTitle = (field) => {\n return {\n className: \"td-title\",\n align: field.type != \"section\" ? \"center\" : \"left\",\n width: field.type != \"section\" ? \"16%\" : \"\",\n colspan: field.type == \"section\" ? 4 : \"\",\n background: \"#FFFFFF\",\n body: [\n {\n type: \"tpl\",\n tpl: `<div>${field.name || field.code} ${field.is_required ? '<span class=\"antd-Form-star\">*</span>' : ''}</div>`,\n },\n ],\n // \"id\": \"u:9b001b7ff92d\",\n style: {\n borderLeftColor: \"#000000\",\n borderTopColor: \"#000000\",\n borderRightColor: \"#000000\",\n borderBottomColor: \"#000000\",\n },\n };\n};\n\nconst getTds = async (tdFields) => {\n const tds = [];\n for (const field of tdFields) {\n if (field.type != \"table\") {\n tds.push(getTdTitle(field));\n }\n if (field.type != \"section\") {\n tds.push(await getTdField(field, tdFields.length));\n }\n }\n return tds;\n};\n\nconst getFormTrs = async (instance) => {\n const trsSchema = [];\n const trs = [];\n let tdFields = [];\n let fields = [];\n each(instance.fields, (field) => {\n fields.push(field);\n if (field.type === \"section\" && field.fields) {\n fields = fields.concat(field.fields);\n }\n });\n each(fields, (field, index) => {\n if (field.is_wide) {\n if (tdFields.length != 0) {\n trs.push(tdFields);\n }\n if (field.type == \"table\") {\n trs.push([Object.assign({}, field, { type: \"section\" })]);\n }\n tdFields = [];\n tdFields.push(field);\n trs.push(tdFields);\n tdFields = [];\n } else {\n tdFields.push(field);\n if (tdFields.length == 2 || index === fields.length - 1) {\n trs.push(tdFields);\n tdFields = [];\n }\n }\n });\n for (const tdFields of trs) {\n trsSchema.push({\n background: \"#F7F7F7\",\n tds: await getTds(tdFields),\n });\n }\n return trsSchema;\n};\n\nconst getFormTableView = async (instance) => {\n const formSchema = {\n type: \"table-view\",\n className: \"instance-form-view\",\n trs: await getFormTrs(instance),\n id: \"u:047f3669468b\",\n };\n return formSchema;\n};\n\nconst getApplicantTableView = async (instance) => {\n let applicantInput = null;\n if(instance.state === 'draft'){\n applicantInput = Object.assign({name: \"applicant\", value: getSteedosAuth().userId, disabled: instance.box !== 'draft'}, await lookupToAmis(\n {\n name: \"applicant\",\n label: false,\n reference_to: \"space_users\",\n reference_to_field: 'user',\n multiple: false\n },\n false,\n {}\n ));\n }else{\n applicantInput = {\n label: false,\n mode: \"horizontal\",\n className: \"m-none p-none\",\n disabled: true,\n type: \"tpl\",\n tpl: '<div>${applicant_name}</div>',\n id: \"u:2016b04355f4\",\n }\n }\n\n return {\n type: \"table-view\",\n className: \"instance-applicant-view\",\n trs: [\n {\n background: \"#FFFFFF\",\n tds: [\n {\n className: \"td-title\",\n background: \"#FFFFFF\",\n align: \"left\",\n width: \"16%\",\n colspan: \"\",\n body: [\n {\n type: \"tpl\",\n tpl: \"<div>提交人</div>\",\n id: \"u:ee62634201bf\",\n },\n ],\n id: \"u:6c24c1bb99c9\",\n style: {\n padding: \"none\",\n },\n },\n {\n background: \"#FFFFFF\",\n colspan: 1,\n align: \"left\",\n className: \"td-field\",\n width: \"32%\",\n body: [\n applicantInput\n ],\n id: \"u:45d65d91905c\",\n },\n {\n className: \"td-title\",\n background: \"#FFFFFF\",\n align: \"left\",\n width: \"16%\",\n colspan: \"\",\n body: [\n {\n type: \"tpl\",\n tpl: \"<div>提交日期</div>\",\n id: \"u:6d0a7763d527\",\n },\n ],\n id: \"u:c8b8214ac931\",\n style: {\n padding: \"none\",\n },\n },\n {\n background: \"#FFFFFF\",\n colspan: 1,\n align: \"left\",\n className: \"td-field\",\n width: \"32%\",\n body: [\n {\n label: false,\n mode: \"horizontal\",\n className: \"m-none p-none\",\n disabled: true,\n type: \"tpl\",\n inputFormat: \"YYYY-MM-DD\",\n valueFormat: \"YYYY-MM-DDT00:00:00.000[Z]\",\n tpl: '<div>${submit_date}</div>',\n id: \"u:2016b04355f4\",\n },\n ],\n id: \"u:81b07d82a5e4\",\n },\n ],\n },\n ],\n id: \"u:047f3669468b\",\n style: {\n borderLeftStyle: \"none\",\n borderTopStyle: \"none\",\n borderRightStyle: \"none\",\n borderBottomStyle: \"none\",\n },\n };\n};\n\nconst getApproveButton = async (instance)=>{\n if(!instance.approve || ( instance.box != 'inbox' && instance.box != 'draft')){\n return null;\n }\n return {\n type: \"button\",\n label: \"签批\",\n onEvent: {\n click: {\n actions: [\n {\n componentId: \"\",\n args: {},\n actionType: \"drawer\",\n drawer: await getApprovalDrawerSchema(instance),\n },\n ],\n },\n },\n id: \"steedos-approve-button\",\n level: \"primary\",\n className:\n \"approve-button w-14 h-14 rounded-full fixed bottom-4 right-4 shadow-lg text-white text-base text-center font-semibold bg-blue-500 p-0\",\n }\n}\n\nexport const getFlowFormSchema = async (instance, box) => {\n return {\n type: \"page\",\n name: \"instancePage\",\n className: \"steedos-amis-instance-view\",\n bodyClassName: \"overflow-y-auto h-full\",\n \"title\": {\n \"type\": \"steedos-record-detail-header\",\n \"label\": \"标题面板\",\n \"objectApiName\": \"instances\",\n \"recordId\": instance._id,\n \"id\": \"u:e6b2adbe0e21\",\n \"showRecordTitle\": false,\n \"className\": \"p-0 m-0 p0 m0\"\n },\n \"css\": {\n \".instance-approve-history .antd-Table-table thead\": {\n \"display\": \"none\"\n },\n \".instance-approve-history .antd-Table-heading\": {\n \"font-size\": \"14px\",\n \"font-weight\": \"500\",\n \"padding-left\": \"0px\"\n },\n \".antd-List-heading\": {\n \"font-size\": \"14px\",\n \"font-weight\": \"500\"\n }\n },\n body: [\n await getAttachments(instance),\n await getRelatedInstances(instance),\n await getRelatedRecords(instance),\n {\n type: \"form\",\n debug: false,\n wrapWithPanel: false,\n resetAfterSubmit: true,\n body: [\n {\n type: \"tpl\",\n id: \"u:f5bb0ad602a6\",\n tpl: `<div class=\"instance-name\">${instance.title}</div>`,\n inline: true,\n wrapperComponent: \"\",\n style: {\n fontFamily: \"\",\n fontSize: 12,\n textAlign: \"center\",\n },\n },\n await getFormTableView(instance),\n await getApplicantTableView(instance),\n \n ],\n id: \"instance_form\",\n onEvent: {\n validateError: {\n weight: 0,\n actions: [\n {\n \"componentId\": \"\",\n \"args\": {\n \"msgType\": \"info\",\n \"position\": \"top-right\",\n \"closeButton\": true,\n \"showIcon\": true,\n \"title\": \"提交失败\",\n \"msg\": \"请填写必填字段\"\n },\n \"actionType\": \"toast\"\n }\n ],\n }\n }\n },\n await getInstanceApprovalHistory(),\n await getApproveButton(instance)\n ],\n id: \"u:63849ea39e12\",\n messages: {},\n pullRefresh: {},\n regions: [\n \"body\",\n \"header\"\n ],\n onEvent: {\n \"@data.@instanceDetail.changed\": {\n actions: [\n {\n actionType: \"reload\"\n }\n ]\n }\n // inited: {\n // weight: 0,\n // actions: [\n // // {\n // // componentId: \"steedos-approve-button\",\n // // actionType: \"click\",\n // // },\n // // {\n // // \"componentId\": \"\",\n // // \"args\": {},\n // // \"actionType\": \"drawer\",\n // // \"drawer\": await getApprovalDrawerSchema()\n // // }\n // ],\n // }\n },\n initApi:{\n \"url\": \"${context.rootUrl}/graphql\",\n \"method\": \"post\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"messages\": {\n },\n \"requestAdaptor\": `\n const { context } = api.data;\n api.data = {\n query: \\`\n {\n instance: instances__findOne(id:\"${instance._id}\"){\n related_instances: related_instances__expand{\n _id,\n name\n }\n }\n }\n \\`\n }\n return api;\n `,\n \"adaptor\": `\n payload.data = {\n related_instances: payload.data.instance.related_instances\n };\n return payload;\n `,\n \"data\": {\n // \"&\": \"$$\",\n \"context\": \"${context}\",\n \"judge\": \"${new_judge}\",\n }\n },\n initFetch: true\n };\n};\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-10-08 16:26:26\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-10-08 16:28:42\n * @Description: \n */\n\nconst isOpinionField = (field_formula)=>{\n return (field_formula?.indexOf(\"{traces.\") > -1 || field_formula?.indexOf(\"{signature.traces.\") > -1 || field_formula?.indexOf(\"{yijianlan:\") > -1 || field_formula?.indexOf(\"{\\\"yijianlan\\\":\") > -1 || field_formula?.indexOf(\"{'yijianlan':\") > -1)\n}\n\nexport const getOpinionFieldStepsName = (field, top_keywords) => {\n const field_formula = field.formula;\n var foo1, opinionFields;\n opinionFields = new Array();\n if (isOpinionField(field_formula)) {\n if (field_formula) {\n foo1 = field_formula.split(\";\");\n foo1.forEach(function(foo) {\n var json_formula, s1, sf, _ref, _ref1;\n json_formula = {};\n try {\n json_formula = eval(\"(\" + foo + \")\");\n } catch (_error) {\n json_formula = {};\n }\n if (json_formula != null ? json_formula.yijianlan : void 0) {\n sf = {};\n sf.stepName = json_formula.yijianlan.step;\n sf.image_sign = json_formula.yijianlan.image_sign || false;\n sf.only_cc_opinion = json_formula.yijianlan.only_cc || false;\n sf.default_description = json_formula.yijianlan[\"default\"];\n sf.only_handler = json_formula.yijianlan.only_handler;\n sf.top_keywords = json_formula.yijianlan.top_keywords || top_keywords;\n return opinionFields.push(sf);\n } else if ((field_formula != null ? field_formula.indexOf(\"{traces.\") : void 0) > -1 || (field_formula != null ? field_formula.indexOf(\"{signature.traces.\") : void 0) > -1) {\n sf = {\n only_cc_opinion: false,\n image_sign: false,\n top_keywords: top_keywords\n };\n if (foo.indexOf(\"{signature.\") > -1) {\n sf.image_sign = true;\n foo = foo.replace(\"{signature.\", \"\");\n }\n s1 = foo.replace(\"{\", \"\").replace(\"}\", \"\");\n if (s1.split(\".\").length > 1) {\n sf.stepName = s1.split(\".\")[1];\n if (opinionFields.filterProperty(\"stepName\", sf.stepName).length > 0) {\n if ((_ref = opinionFields.findPropertyByPK(\"stepName\", sf.stepName)) != null) {\n _ref.only_cc_opinion = true;\n }\n } else {\n if (s1.split(\".\").length > 2) {\n if (((_ref1 = s1.split(\".\")[2]) != null ? _ref1.toLocaleLowerCase() : void 0) === 'cc') {\n sf.only_cc_opinion = true;\n }\n }\n }\n }\n return opinionFields.push(sf);\n }\n });\n }\n }\n return opinionFields;\n}\n","import { fetchAPI, getSteedosAuth } from \"@steedos-widgets/amis-lib\";\nimport _, { find, isEmpty } from \"lodash\";\nimport { getOpinionFieldStepsName } from './util';\n/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-09 17:47:37\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-10-10 13:57:02\n * @Description:\n */\n\nconst getMoment = ()=>{\n if(window.amisRequire){\n return window.amisRequire(\"moment\");\n }else if(window.moment){\n return window.moment;\n }\n}\n\nconst getTrace = ({ instance, traceId }) => {\n return find(instance.traces, (trace) => {\n return trace._id === traceId;\n });\n};\n\nconst getUserApprove = ({ instance, userId }) => {\n const currentTrace = find(instance.traces, (trace) => {\n return trace.is_finished != true;\n });\n let currentApprove = null;\n if (currentTrace) {\n currentApprove = find(currentTrace.approves, (approve) => {\n return approve.is_finished != true && approve.handler == userId;\n });\n }\n\n //传阅的approve返回最新一条\n if (!currentApprove || currentApprove.type == \"cc\") {\n // 当前是传阅\n _.each(instance.traces, function (t) {\n _.each(t.approves, function (a) {\n if (a.type == \"cc\" && a.handler == userId && a.is_finished == false) {\n currentApprove = a;\n }\n });\n });\n }\n\n if (!currentApprove) return;\n\n if (currentApprove._id) {\n currentApprove.id = currentApprove._id;\n }\n return currentApprove;\n};\n\nconst getApproveValues = ({ instance, trace, step, approve, box }) => {\n let instanceValues = null;\n if (!approve || approve.type === \"cc\") {\n instanceValues = instance.values;\n } else {\n if (box === \"draft\") {\n instanceValues = approve.values;\n } else if (box === \"inbox\") {\n if (\n step.step_type == \"counterSign\" ||\n (step.cc_has_edit_permission && !trace.is_finished)\n ) {\n //TODO\n instanceValues = instance.values;\n } else {\n if (isEmpty(approve.values)) {\n instanceValues = instance.values;\n } else {\n instanceValues = approve.values;\n }\n }\n } else if (\n box === \"outbox\" ||\n box === \"pending\" ||\n box == \"completed\" ||\n box == \"monitor\"\n ) {\n instanceValues = instance.values;\n } else {\n instanceValues = instance.values;\n }\n }\n return instanceValues;\n};\n\nconst getFlowVersion = (instance) => {\n if (instance.flow.current._id === instance.flow_version) {\n return instance.flow.current;\n } else {\n return find(instance.flow.historys, (history) => {\n return history._id === instance.flow_version;\n });\n }\n};\n\nconst getFormVersion = (instance) => {\n if (instance.form.current._id === instance.form_version) {\n return instance.form.current;\n } else {\n return find(instance.form.historys, (history) => {\n return history._id === instance.form_version;\n });\n }\n};\n\nconst getStep = ({ flowVersion, stepId }) => {\n return find(flowVersion.steps, (step) => {\n return step._id === stepId;\n });\n};\n\nconst getLastCCStep = ({ traces }, userId) => {\n var i, step_id, trace_id, user_id;\n\n user_id = userId;\n\n trace_id = null;\n\n step_id = null;\n\n i = traces.length - 1;\n\n while (i >= 0) {\n if (!trace_id && traces[i].is_finished) {\n _.each(traces[i].approves, function (ap) {\n if (!trace_id) {\n if (\n ap.is_finished &&\n ap.user === user_id &&\n (!ap.type || ap.type == \"cc\") &&\n [\"approved\", \"submitted\", \"rejected\"].includes(ap.judge)\n ) {\n trace_id = ap.trace;\n }\n if (trace_id) {\n step_id = traces[i].step;\n }\n }\n });\n }\n i--;\n }\n\n return step_id;\n};\n\nconst isCurrentStepOpinionField = (field, currentStep)=>{\n return _.includes(_.map(getOpinionFieldStepsName(field), 'stepName'), currentStep?.name);\n}\n\nexport const getInstanceInfo = async ({ instanceId, box }) => {\n const userId = getSteedosAuth().userId;\n const query = `{\n instance: instances__findOne(id:\"${instanceId}\"){\n _id,\n space,\n name,\n state,\n values,\n applicant,\n cc_users,\n applicant_name,\n submitter,\n submit_date,\n record_ids,\n forward_from_instance,\n related_instances: related_instances__expand{\n _id,\n name\n },\n traces,\n form_version,\n form:form__expand{\n _id,\n name\n current,\n historys\n },\n flow_version,\n flow:flow__expand{\n _id,\n name,\n perms,\n current,\n historys\n }\n }\n }\n `;\n\n const result = await fetchAPI(\"/graphql\", {\n method: \"post\",\n body: JSON.stringify({\n query: query,\n }),\n });\n \n\n let userApprove = null;\n let trace = null;\n let step = null;\n const instance = result.data.instance;\n if (!instance) {\n return undefined;\n }\n if (box === \"inbox\" || box === \"draft\") {\n userApprove = getUserApprove({ instance, userId });\n }\n const flowVersion = getFlowVersion(instance);\n const formVersion = getFormVersion(instance);\n\n if (userApprove) {\n trace = getTrace({ instance, traceId: userApprove.trace });\n step = getStep({ flowVersion, stepId: trace.step });\n }\n\n let currentStep = getStep({ flowVersion, stepId: _.last(instance.traces).step });\n\n const lastCCStep = getLastCCStep(instance, userId);\n\n const values = getApproveValues({\n instance,\n trace,\n step,\n approve: userApprove,\n box,\n });\n\n const flowPermissions = await fetchAPI(`/api/workflow/v2/flow_permissions/${instance.flow._id}`, {\n method: \"get\",\n });\n\n const moment = getMoment();\n\n return {\n box: box,\n _id: instanceId,\n space: instance.space,\n flow: instance.flow,\n form: instance.form,\n applicant: instance.applicant,\n applicant_name: instance.applicant_name,\n submitter: instance.submitter,\n submit_date: instance.submit_date\n ? (moment && moment(instance.submit_date).format(\"YYYY-MM-DD\"))\n : \"\",\n state: instance.state,\n approveValues: values,\n title: instance.name || instance.form.name,\n name: instance.name || instance.form.name,\n fields: _.map(formVersion.fields, (field) => {\n return Object.assign({}, field, {\n permission: userApprove?.type != 'cc' && (step?.permissions[field.code] || ( isCurrentStepOpinionField(field, step) ? 'editable' : '')),\n }) ;\n }),\n flowVersion: flowVersion,\n formVersion: formVersion,\n step: step,\n lastCCStep: lastCCStep,\n trace: trace,\n currentStep,\n flowPermissions: flowPermissions?.permissions || [],\n approve: userApprove,\n record_ids: instance.record_ids,\n related_instances: instance.related_instances,\n forward_from_instance: instance.forward_from_instance,\n cc_users: instance.cc_users,\n traces: instance.traces,\n historyApproves: _.map(instance.traces, (trace) => {\n return Object.assign(\n {\n children: _.map(trace.approves, (approve) => {\n let finishDate = approve.finish_date;\n let judge = approve.judge;\n let userName = approve.user_name;\n let opinion = approve.description;\n if(approve.type === 'cc'){\n userName = `${userName} (传阅)`\n opinion = approve.cc_description;\n }\n if (!finishDate) {\n finishDate = approve.is_read ? \"已读\" : \"未处理\";\n judge = null;\n } else {\n finishDate = moment && moment(finishDate).format(\"YYYY-MM-DD HH:mm\");\n }\n\n switch (judge) {\n case \"submitted\":\n judge = \"\";\n break;\n case \"returned\":\n judge = \"已退回\";\n break;\n case \"terminated\":\n judge = \"被取回\";\n break;\n case \"pending\":\n judge = \"审核中\";\n break;\n case \"approved\":\n judge = \"已核准\";\n break;\n case \"rejected\":\n judge = \"已驳回\";\n break;\n case \"finished\":\n judge = \"已完成\";\n break;\n case \"reassigned\":\n judge = \"转签核\";\n break;\n case \"inhand\":\n judge = \"处理中\";\n break;\n case \"relocated\":\n judge = \"重定位\";\n break;\n case \"readed\":\n judge = \"已阅\";\n break;\n default:\n break;\n }\n return {\n name: \"\",\n user_name: userName,\n finish_date: finishDate,\n judge: judge,\n opinion: opinion,\n };\n }),\n },\n { name: trace.name, judge: \"\" }\n );\n }),\n };\n};\n"],"names":["RegisterRenders","normalizeLink","to","location","window","pathname","search","idx","indexOf","idx2","substring","undefined","hash","test","relativeBase","paths","split","pop","m","exec","length","concat","join","amisRootClick","router","e","target","nodeName","toLocaleLowerCase","href","preventDefault","push","getEvn","theme","notify","type","msg","props","schema","tpl","SteedosUI","message","console","warn","confirm","Promise","resolve","reject","Modal","title","onOk","okText","cancelText","jumpTo","action","history","back","actionType","blank","open","replace","registerRenders","assets","isEmpty","isArray","amisLib","amisRequire","registerMap","renderer","Renderer","formitem","FormItem","options","OptionsControl","amisReact","each","asset","find","componentName","Component","Builder","components","item","name","AmisWrapper","componentType","body","render","useState","setSchema","useEffect","result","then","data","createElement","Fragment","usage","error","consoleTag","RegExp","weight","autoVar","info","component","framework","amisRender","root","env","amis","embed","Object","assign","STEEDOS_AUTH","getBuilderContext","settings","context","setSteedosAuth","steedosSession","fetchAPI","api","credentials","headers","AUTHORIZATION","getAuthorization","fetch","getRootUrl","res","status","Error","json","errors","getFileSrc","fileId","getImageSrc","getTenantId","spaceId","tenantId","searchParams","URLSearchParams","get","getAuthToken","token","authToken","getUserId","userId","absoluteUrl","url","defaultRootUrl","rootUrl","localStorage","getItem","setRootUrl","endsWith","setItem","getSteedosAuth","cloneDeep","Router","getTabDisplayAs","tab_id","urlSearch","document","has","key","value","setTabDisplayAs","displayAs","getAppPath","formFactor","appId","getPagePath","getObjectListViewPath","objectName","listViewName","getObjectDetailPath","recordId","_templateType","getObjectRelatedViewPath","masterObjectName","masterRecordId","foreignKey","getImageFieldUrl","Meteor","isCordova","doubleSlashIndex","urlIndex","getContrastColor","bgColor","backgroundColor","charAt","r","parseInt","substr","g","b","brightness","getLookupListView","refObjectConfig","listNameAll","listNameLookup","listViewAll","listViewLookup","_","list_views","view","listView","getCreatedInfoTpl","getModifiedInfoTpl","getNumberTpl","field","getTimeTpl","getDateTpl","getDateTimeTpl","getUiFieldTpl","getUiFileSizeTpl","getRefObjectNameFieldName","getUISchema","reference_to","refUiSchema","NAME_FIELD_KEY","getSelectTpl","getSelectMap","selectOptions","map","forEach","option","optionValue","optionColor","color","background","optionColorStyle","label","getNameTplUrl","ctx","idFieldName","getNameTpl","linkTarget","isLookup","getRelatedFieldTpl","optionsFunction","_optionsFunction","isTableField","onlyDisplayLookLabel","fieldDataStrTpl","isString","multiple","labelTpl","objectNameTpl","recordIdTpl","getLookupTpl","getSwitchTpl","getPasswordTpl","getLocationTpl","getFieldTpl","is_name","labelFieldName","getFieldsTemplate","fields","display","expandFields","fieldsName","displayFields","fieldsArr","values","expand","alias","includes","objectFieldName","uniq","expandFieldsQuery","expandInfo","fieldName","displayName","trimEnd","getRecordPermissionsTemplate","getFindOneQuery","object","queryOptions","filters","query","getSaveQuery","$","modalName","getScriptForReadonlyFields","scripts","readonly","getScriptForRemoveUrlPrefixForImgFields","imgFieldsKeys","imgFields","JSON","stringify","getScriptForSimplifiedValueForFileFields","fileFieldsKeys","fileFields","getSaveDataTpl","getSaveRequestAdaptor","apiRequestAdaptor","getFindQuery","limit","treeFields","enable_tree","keys","cfsFields","countQuery","count","orderBy","orderDir","pageNo","pageSize","getRecordPermissionsQuery","recordPermissionsTemplate","getApi","isMobile","config","newRecordMode","editRecordMode","perPage","AmisFormInputs","getAmisStaticFieldType","getFileTableName","steedosField","getAmisFieldType","getAmisFileReadonlySchema","amisFieldType","defaultImage","enlargeAble","showToolbar","getAmisFileEditSchema","tableName","convertData","useChunk","receiver","method","dataType","requestAdaptor","adaptor","Authorization","joinValues","extractValue","getAmisFileSchema","resources","translation","en_us","zh_cn","locale","i18next__default","use","initReactI18next","init","lng","interpolation","escapeValue","getQuickEditSchema","isAmisVersionforBatchEdit","version","Amis","quickEditId","quickEditSchema","id","submitEvent","submit","actions","script","onEvent","disabled","Fields.convertSFieldToAmisField","omit","fieldSchema","TempDisplayField","quickEditOnEvent","displayField","EventType","labelField","valueField","scale","removeDisplayField","visibleOn","i18next","t","crudId","getFieldWidth","width","defaultWidth","isNaN","Number","getTableColumns","columns","isInputTable","placeholder","className","allowEdit","permissions","enable_inline_edit","wrap","columnItem","previewFileScript","toggled","Tpl.getSelectMap","sortable","inputClassName","Tpl.getFieldTpl","show_as_qr","hidden","extra","html","quickEdit","quickEditEnabledOn","some","getMobileLines","tpls","lines","maxLineCount","lineChildren","isNewLine","isLeft","lineChildrenClassName","lineClassName","is_wide","getMobileTableColumns","nameField","Tpl.getNameTplUrl","columnLines","column","level","link","innerClassName","getDefaultParams","top","getButtonVisibleOn","button","visible","_visible","isBoolean","toString","trim","startsWith","amisSchema","amis_schema","btn1","getTableOperation","buttons","operationButtons","fixed","labelClassName","onOpenApi","getDefaultCrudCard","bodyColumns","titleColumn","card","toolbar","hideToolbarOperation","toolbarOperation","getTableSchema","hiddenColumnOperation","defaults","listSchema","useMobileColumns","mode","perPageAvailable","headerToolbarClassName","draggable","defaultParams","syncLocation","keepItemSelectionOnPageChange","checkOnItemClick","autoFillHeight","columnsTogglable","getTableApi","mainObject","searchableFields","filter","filtersFunction","sort","setDataToComponentId","operation","baseFilters","Fields.isFieldQuickSearchable","lookupFields","key_field","queryCount","isRelated","cache","$term","term","$self","self","loaded","listViewId","listName","graphql.getFindQuery","graphql.getApi","getRecordPermissionsApi","graphql.getRecordPermissionsQuery","API_CACHE","getReadonlyFormAdaptor","scriptStr","selectFields","gridAndObjectFieldsName","OMIT_FIELDS","fieldNames","n","isEditor","getScriptForAddUrlPrefixForImgFields","getScriptForRewriteValueForFileFields","initApiAdaptor","getReadonlyFormInitApi","findOneOptions","initApiRequestAdaptor","graphql.getFindOneQuery","getEditFormInitApi","uiSchema","global","defaultData","_master","responseData","initialValues","editFormInited","getSaveApi","graphql.getSaveQuery","graphql.getSaveRequestAdaptor","apiAdaptor","getBatchDelete","ids","DEFAULT_CALENDAR_OPTIONS","startDateExpr","endDateExpr","allDayExpr","textExpr","getCalendarApi","calendarOptions","searchable","getCalendarRecordPermissionsApi","getCalendarRecordSaveApi","formData","nameFieldKey","apiData","saveDataTpl","getObjectCalendar","objectSchema","omitBy","isNil","titleFields","sortField","sortOrder","sortStr","initialView","currentView","onGetEventsScript","onSelectScript","onEventClickScript","recordPermissionsApi","recordSaveApi","businessHours","daysOfWeek","startTime","endTime","startDayHour","endDayHour","eventContent","hasReturn","fn","Function","noEventsContent","allowCreate","listWeek","buttonText","__assign","s","i","arguments","p","prototype","hasOwnProperty","call","apply","keyToPath","string","charCodeAt","match","expression","quote","subString","createObject","superProps","properties","isFrozen","cloneObject","obj","create","__super","writable","enumerable","isObject","persistOwnProps","extendObject","src","typename","Array","setVariable","convertKeyToPath","parts","last","key_1","shift","isPlainObject","deleteVariable","key_2","getListBody","getListSchema","listBody","headerToolbar","listItem","icon","tabId","getCardSchema","titleField","f","defaultsDeep","output","args","toArray","reverse","mergeWith","objectValue","sourceValue","globalTag","getParentPath","path","pathArr","getValueByPath","isExpression","func","pattern","reg1","reg2","getMoment","moment","getGlobalNowData","now","Date","today","utc","set","toDate","timeNow","hours","utcOffset","parseSingleExpression","dataPath","userSession","funcBody","parent","parentPath","str","_error","log","getSchema","schemaApiAdaptor","onDialogCancelScript","getSelectedRowsScript","close","primary","getPage","pageId","page","parse","defaultFormSchema","objectApiName","formSchema","click","dialog","bodyClassName","closeOnEsc","closeOnOutside","showCloseButton","size","regions","debug","resetAfterSubmit","initApi","sendOn","importState","interval","stopAutoRefreshWhen","initFetch","inited","submitSucc","eventData","messages","success","failed","closeDialogOnSubmit","list_views_name","listViewPropsStoreKey","sessionStorage","select","filename","url_tmp","encodeURIComponent","StandardButtons","getStandardNew","standardNew.getSchema","getStandardEdit","standardEdit.getSchema","getStandardDelete","standardDelete.getSchema","getStandardDeleteMany","todo","scopeId","scope","getRef","listViewRef","getComponentById","store","toJSON","selectedItems","handleAction","handleBulkAction","bulkActions","getStandardImportData","standardImportData.getSchema","getStandardOpenView","standardOpenView.getSchema","getStandardExportExcel","standardExportExcel.getSchema","getGlobalData","hasIn","getButtonVisible","eval","fun","record","isFunction","standardButtonsTodo","standard_delete_many","getButtons","disabledButtons","disabled_actions","sortBy","include","allow_customActions","exclude_actions","on","getListViewButtons","listButtons","getObjectDetailButtons","detailButtons","getObjectDetailMoreButtons","moreButtons","getListViewItemButtons","getObjectRelatedListButtons","getButton","buttonName","hasImportTemplates","execute","todoThis","object_name","record_id","executeButton","getObjectDetailHeaderButtons","amisButtonsSchema","moreButtonsVisibleOn","dropdownButtons","index","getObjectDetailButtonsSchemas","phoneMoreButtonsVisibleOn","dropdownButtonsSchema","getObjectListViewButtonsSchemas","getObjectRecordDetailRelatedListButtonsSchemas","getObjectFieldsFilterButtonSchema","getObjectFieldsFilterFormSchema","getObjectFieldsFilterBarSchema","btnSearchId","getTime","filterFormSchema","keywordsSearchBoxName","onSearchScript","onCancelScript","dataProviderInited","onSearchableFieldsChangeScript","getObjectListHeaderFirstLine","listViewButtonOptions","reg","standardIcon","standardNewButton","buttonSchema","restButtons","getObjectListHeaderSecordLine","amisListViewId","fieldsFilterButtonSchema","secordLineSchema","getObjectListHeaderFieldsFilterBar","fieldsFilterBarSchema","getObjectListHeader","firstLineSchema","headerSchema","getObjectRecordDetailHeader","showRecordTitle","gridBody","_id","recordPermissions","getObjectRecordDetailRelatedListHeader","relatedObjectSchema","relatedLabel","recordRelatedListHeader","getObjectRelatedListHeader","relatedObjectName","getNewListviewButtonSchema","fieldsExtend","getCopyListviewButtonSchema","getRenameListviewButtonSchema","getSetListviewShareButtonSchema","getSetListviewFiltersButtonSchema","getSetListviewColumnsButtonSchema","getSetListviewSortButtonSchema","getDeleteListviewButtonSchema","getSettingListviewToolbarButtonSchema","getDisplayAsButton","showDisplayAs","onFieldsFilterToggleScript","getObjectHeaderQuickSearchBox","searchableFieldsLabel","localListViewProps","crudKeywords","__keywords","onChangeScript","getObjectHeaderToolbar","hiddenCount","headerToolbarItems","filterVisible","innerWidth","toolbarCount","toolbarReloadButton","toolbarFilter","toolbarDisplayAsButton","toolbarDQuickSearchBox","toolbars","allowCreateListViews","getObjectFooterToolbar","no_pagination","paging","enabled","is_lookup","commonConfig","getObjectFilter","onSubmitSuccScript","getBulkActions","getCrudSchemaWithDataFilter","crud","crudDataFilter","amisData","onCrudDataFilter","getObjectCRUD","crudClassName","nonpaged","isTreeObject","disableStatistics","bodyProps","footerToolbar","tableHiddenOn","primaryField","hiddenOn","tableOptions","table","imageNames","compact","quickSaveApiRequestAdaptor","rowClassNameExpr","affixHeader","quickSaveApi","crudModeClassName","footerSchema","wrappedBody","union","unshift","user","getFormFields","formProps","includedFields","excludedFields","lodash","includedFieldsMap","fName","sort_no","getFormSchemaWithDataFilter","form","formDataFilter","onFormDataFilter","getObjectForm","layout","labelAlign","submitSuccActions","formFields","getFormBody","fieldGroups","field_groups","persistData","preventEnterSubmit","promptPageLeave","canAccessSuperData","submitText","panelClassName","getObjectDetail","serviceId","showSystemFields","wrapWithPanel","eventName","getGraphqlFieldsQuery","queryFields","queryOptionsArray","getRecord","getRelatedsCount","relateds","relatedQuery","relate","foreign_key","getRecordPermissions","str2function","contents","getRelatedFieldValue","relatedField","o","getObjectRelatedList","related","relatedLists","related_lists","relatedList","arr","related_field_fullname","field_names","visible_on","page_size","details","detail","getRecordDetailRelatedListSchema","relatedKey","relatedObjectUiSchema","mainRelated","mainObjectUiSchema","mainRelatedLists","foreign_key_value","lookup_details","globalFilter","getField","refField","componentId","showHeader","getRelatedListSchema","_isRelated","getDefaultRelatedListProps","getListViewColumns","getListViewSort","getListViewFilter","_filters","isNameField","getRelatedListProps","listViewNames","listViewProps","listViewColumns","listViewSort","listviewFilter","refFieldName","relatedListColumns","extraColumns","extra_columns","UI_SCHEMA_CACHE","UISchemaFunction","setUISchemaFunction","setUISchemaCache","getUISchemaCache","hasUISchemaCache","mobile_columns","slice","field_name","order","filter_scope","formatUISchemaCache","_reference_to","exception","v","k","all","force","getUISchemaSync","Steedos","authRequest","async","getFormSchema","getViewSchema","appName","enable_amis_schema","isCustomAmisSchema","listview_filters","isCalendar","ex","convertColumnsToTableFields","filedInfo","rfUiSchema","rfFieldInfo","extraFields","crudOptions","getCalendarSchema","getRecordDetailHeaderSchema","getRecordDetailSchema","detailed","content","tabs","getRecordServiceSchema","style","getObjectRelated","relatedFieldName","masterObjectUISchema","refUsersObjectName","refOrgsObjectName","getSource","childrenData","defaultValueOptionsData","_prefix","fieldNamePrefix","$value","getDeferApi","orgsSort","usersSort","getSearchApi","getRefListViewSort","refObject","getSelectUserSchema","Field.getAmisStaticFieldType","Tpl.getLookupTpl","refUsersObjectConfig","refOrgsObjectConfig","refObjectName","_filtersFunction","lookupToAmisTreeSelect","getReferenceToFieldSchema","referenceTo","valueFieldName","reference_to_field","getReferenceTo","getReferenceToSync","getLookupSapceUserTreeSchema","treeSchema","tree","lookupToAmisPicker","tableFields","Field.isFieldQuickSearchable","tableField","source","inFilterForm","depend_on","pickerSchema","Table.getTableSchema","isAllowCreate","isCreate","isHasFilters","new_button","align","splice","modalTitle","disabledOn","modalMode","lookupToAmisSelect","valueFieldKey","defaultValueOptionsQueryData","apiInfo","isRefToMutiple","clearable","autoComplete","select_menuTpl","menuTpl","lookupToAmis","Tpl.getRelatedFieldTpl","idsDependOn","lookupToAmisIdsPicker","enableEnhancedLookup","enable_enhanced_lookup","lookupToAmisSelectUser","getIdsPickerSchema","List.getListSchema","selectFirst","getMarkdownFieldSchema","getHtmlFieldSchema","QUICK_SEARCHABLE_FIELD_TYPES","getBaseFields","calssName","Tpl.getCreatedInfoTpl","Tpl.getModifiedInfoTpl","sField","getObjectFieldSubFields","mainField","newMainField","subFields","getGridFieldSubFields","getTabledFieldSubFields","getPermissionFields","permissionFields","permission","getSelectFieldOptions","data_type","String","convertSFieldToAmisField","baseData","labelRemark","inlineHelpText","required","Tpl.getSwitchTpl","inputFormat","format","Tpl.getDateTpl","Tpl.getDateTimeTpl","timeFormat","Tpl.getNumberTpl","min","max","precision","showInput","Tpl.getUiFieldTpl","suffix","pipeIn","toFixed","pipeOut","oldValue","Tpl.getPasswordTpl","codeSize","ak","vendor","map_ak","map_vendor","coordinatesType","Tpl.getLocationTpl","lat","coordinates","coordtransform","toLowerCase","bd09togcj02","gcj02towgs84","wgs84","File.getAmisFileSchema","language","editorDidMount","showIndex","strictMode","needConfirm","editable","addable","removable","subField","subFieldName","gridSub","gridItemSchema","items","Fields.getGridFieldSubFields","__formFields","fieldTypeClassName","requiredOn","clearValueOnHidden","convertDataResult","getFieldSearchable","perField","Fields.getObjectFieldSubFields","_field","inline","defaultValue","staticOn","autoFill","amisField","isFieldTypeSearchable","fieldType","isFieldQuickSearchable","fieldSearchable","getFieldSchemaArray","fieldSchemaArray","group","isObjectField","forceHidden","getSection","sectionName","sectionFields","fieldSetBody","Fields.getTabledFieldSubFields","sectionFieldsVisibleOn","section","enableTabs","groupItem","group_name","groupVisibleOn","getSections","_sections","groupBy","sections","sectionVisibleOns","tempSectionVisibleOns","headingClassName","tabsMode","formItem","getInputTableColumns","extendColumnProps","fieldItem","hideLabel","getForm","onNewItemSubmitScript","getButtonNew","getButtonEdit","getButtonView","getButtonDelete","getAmisInputTableSchema","Math","random","buttonsForColumnOperations","buttonEditSchema","buttonViewSchema","buttonDeleteSchema","tableClassName","inputTableSchema","clone","buttonNewSchema","getScopeId","getFormPageInitSchema","getListPageInitSchema","getRecordPageInitSchema","contentBody","getListviewInitSchema","onlySecordLine","isListviewInit","$master","getApps","APPS_API","apps","getApp","appApi","app","getNotifications","auth","markReadAll","PUBLIC_ENV","setEnv","getEnv","setEnvs","getEnvs","getSpaceUsersPickerAmisSchema","spaceUserSchema","getSpaceUsersPickerSchema","DATE_DATETIME_BETWEEN_VALUES","opMaps","equal","not_equal","less","less_or_equal","greater","greater_or_equal","between","not_between","is_empty","is_not_empty","select_equals","select_not_equals","select_any_in","select_not_any_in","like","not_like","starts_with","ends_with","isGroup","conditionGroupToFilters","conjunction","children","conditionItemToFilters","left","op","right","array","filterToConditionItem","findKey","filterObjectToArray","filtersToConditionGroup","conditions","conditionsToFilters","filtersToConditions","registerRemoteAssets","assetUrls","assetUrlsArray","amisComps","registry","getDefaultRenderData","steedosAuth","HIDE_COUNTER_SIGN_JUDGE_OPTIONS","getJudgeOptions","instance","step","step_type","getJudgeInput","judgeOptions","approve","new_judge","next_step","judge","getNextStepInput","wrapperComponent","md","valign","subFormMode","getNextStepUsersInput","getCCSubmitRequestAdaptor","trace","getPostSubmitRequestAdaptor","flow","getPostEngineRequestAdaptor","getSubmitActions","state","getApprovalDrawerSchema","minRows","maxRows","validateError","clearPersistDataAfterSubmit","overlay","resizable","headerClassName","footerClassName","drawerContainer","position","getAttachments","getAttachmentUploadInput","space","getRelatedRecords","record_ids","getRelatedInstances","getInstanceApprovalHistory","getSelectOptions","foo","isOpinionField","field_formula","formula","getFieldEditTpl","code","is_required","is_textarea","validations","isEmail","isUrl","showCounter","is_multiselect","useTpl","orgTpl","copyable","getTdInputTpl","getFieldReadonlyTpl","edit","getTdField","fieldsCount","marginTop","paddingTop","paddingRight","paddingBottom","paddingLeft","marginRight","marginBottom","marginLeft","borderLeftColor","borderTopColor","borderRightColor","borderBottomColor","colspan","getTdTitle","getTds","tdFields","tds","getFormTrs","trsSchema","trs","getFormTableView","getApplicantTableView","applicantInput","box","padding","valueFormat","borderLeftStyle","borderTopStyle","borderRightStyle","borderBottomStyle","getApproveButton","drawer","getFlowFormSchema","fontFamily","fontSize","textAlign","pullRefresh","getOpinionFieldStepsName","top_keywords","foo1","opinionFields","json_formula","s1","sf","_ref","_ref1","yijianlan","stepName","image_sign","only_cc_opinion","only_cc","default_description","only_handler","filterProperty","findPropertyByPK","getTrace","traceId","traces","getUserApprove","currentTrace","is_finished","currentApprove","approves","handler","a","getApproveValues","instanceValues","cc_has_edit_permission","getFlowVersion","current","flow_version","historys","getFormVersion","form_version","getStep","flowVersion","stepId","steps","getLastCCStep","step_id","trace_id","user_id","ap","isCurrentStepOpinionField","currentStep","getInstanceInfo","instanceId","userApprove","formVersion","lastCCStep","flowPermissions","applicant","applicant_name","submitter","submit_date","approveValues","related_instances","forward_from_instance","cc_users","historyApproves","finishDate","finish_date","userName","user_name","opinion","description","cc_description","is_read"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/lib/amis.js","../src/lib/steedos.client.js","../src/lib/router.js","../src/lib/converter/amis/util.js","../src/lib/converter/amis/tpl.js","../src/lib/converter/amis/graphql.js","../src/config/index.js","../src/lib/converter/amis/fields/type.js","../src/lib/converter/amis/fields/file.js","../src/i18n.js","../src/lib/converter/amis/fields/table.js","../src/lib/converter/amis/api.js","../src/lib/converter/amis/calendar.js","../../../../node_modules/tslib/tslib.es6.js","../../src/utils/keyToPath.ts","../../src/utils/object.ts","../src/lib/converter/amis/fields/list.js","../src/lib/defaultsDeep.js","../src/lib/expression.js","../src/schema/standard_new.amis.js","../src/lib/page.js","../src/schema/standard_edit.amis.js","../src/schema/standard_delete.amis.js","../src/schema/standard_import_data.amis.js","../src/schema/standard_open_view.amis.js","../src/schema/standard_export_excel.amis.js","../src/standard/button.js","../src/lib/buttons.js","../src/lib/converter/amis/fields_filter.js","../src/lib/converter/amis/header.js","../src/lib/converter/amis/toolbars/setting_listview/new.js","../src/lib/converter/amis/toolbars/setting_listview/copy.js","../src/lib/converter/amis/toolbars/setting_listview/rename.js","../src/lib/converter/amis/toolbars/setting_listview/share.js","../src/lib/converter/amis/toolbars/setting_listview/filters.js","../src/lib/converter/amis/toolbars/setting_listview/columns.js","../src/lib/converter/amis/toolbars/setting_listview/sort.js","../src/lib/converter/amis/toolbars/setting_listview/delete.js","../src/lib/converter/amis/toolbars/setting_listview.js","../src/lib/converter/amis/toolbar.js","../src/lib/converter/amis/index.js","../src/lib/record.js","../src/lib/objectsRelated.js","../src/lib/objects.js","../src/lib/converter/amis/fields/user.js","../src/lib/converter/amis/fields/tree_select.js","../src/lib/converter/amis/fields/lookup.js","../src/lib/converter/amis/fields/editor.js","../src/lib/converter/amis/fields/index.js","../src/lib/converter/amis/fields/sections.js","../src/lib/converter/amis/form.js","../src/lib/input_table.js","../src/lib/page_init.js","../src/lib/apps.js","../src/lib/notification.js","../src/lib/public.env.js","../src/lib/space_users.js","../src/lib/converter/amis/filters.js","../src/lib/assets.js","../../src/render.ts","../src/workflow/approve.js","../src/workflow/attachment.js","../src/workflow/related.js","../src/workflow/history.js","../src/workflow/flow.js","../src/workflow/util.js","../src/workflow/instance.js"],"sourcesContent":["/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-13 11:31:12\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-09-27 10:34:59\n * @Description:\n */\nimport { each, find, isArray, isEmpty } from 'lodash';\n\nconst RegisterRenders = [];\n\nconst normalizeLink = (to, location = window.location) => {\n to = to || \"\";\n\n if (to && to[0] === \"#\") {\n to = location.pathname + location.search + to;\n } else if (to && to[0] === \"?\") {\n to = location.pathname + to;\n }\n\n const idx = to.indexOf(\"?\");\n const idx2 = to.indexOf(\"#\");\n let pathname = ~idx\n ? to.substring(0, idx)\n : ~idx2\n ? to.substring(0, idx2)\n : to;\n let search = ~idx ? to.substring(idx, ~idx2 ? idx2 : undefined) : \"\";\n let hash = ~idx2 ? to.substring(idx2) : location.hash;\n\n if (!pathname) {\n pathname = location.pathname;\n } else if (pathname[0] != \"/\" && !/^https?\\:\\/\\//.test(pathname)) {\n let relativeBase = location.pathname;\n const paths = relativeBase.split(\"/\");\n paths.pop();\n let m;\n while ((m = /^\\.\\.?\\//.exec(pathname))) {\n if (m[0] === \"../\") {\n paths.pop();\n }\n pathname = pathname.substring(m[0].length);\n }\n pathname = paths.concat(pathname).join(\"/\");\n }\n\n return pathname + search + hash;\n};\n\nexport const amisRootClick = (router, e) => {\n if (e.target.nodeName.toLocaleLowerCase() === \"a\" && e.target.href) {\n e.preventDefault();\n router.push(e.target.href);\n }\n};\n\nexport const getEvn = (router)=>{\n return {\n theme: \"antd\",\n notify: (type, msg)=>{\n if(msg.props?.schema.tpl){\n SteedosUI.message[type](msg.props?.schema.tpl)\n }else if(typeof msg == 'string'){\n SteedosUI.message[type](msg)\n }else{\n console.warn('notify', type, msg)\n }\n },\n confirm: (msg)=>{\n return new Promise((resolve, reject)=>{\n return SteedosUI.Modal.confirm({\n title: msg,\n onOk: ()=>{\n resolve(true);\n },\n okText: \"确认\",\n cancelText: \"取消\"\n })\n })\n },\n jumpTo: (to, action) => {\n if (to === \"goBack\") {\n return window.history.back();\n }\n\n to = normalizeLink(to);\n\n if (action && action.actionType === \"url\") {\n action.blank === true ? window.open(to) : router.push(to);\n return;\n }\n\n // 主要是支持 nav 中的跳转\n if (action && to && action.target) {\n window.open(to, action.target);\n return;\n }\n if (/^https?:\\/\\//.test(to)) {\n window.location.replace(to);\n } else {\n router.push(to);\n }\n }\n }\n}\n\nexport const registerRenders = (assets)=>{\n if(!isEmpty(assets) && isArray(assets)){\n let amisLib = amisRequire('amis');\n\n const registerMap = {\n renderer: amisLib.Renderer,\n formitem: amisLib.FormItem,\n options: amisLib.OptionsControl,\n };\n \n let amisReact = amisRequire('react');\n each(assets, (asset)=>{\n // 防止组件重复注册\n if(!find(RegisterRenders, (componentName)=>{ return componentName === asset.componentName})){\n let Component = Builder.components.find(item => item.name === asset.componentName);\n let AmisWrapper = Component.class\n if(asset.componentType === 'amisSchema'){\n AmisWrapper = (props)=>{\n const { body, render } = props\n const [schema, setSchema] = amisReact.useState(null);\n amisReact.useEffect(()=>{\n const result = Component.class(props);\n if(result && result.then && typeof result.then === 'function'){\n result.then((data)=>{\n setSchema(data);\n })\n }else{\n setSchema(result)\n }\n }, [])\n return amisReact.createElement(amisReact.Fragment, null, amisReact.createElement(amisReact.Fragment, null, schema && render ? render('body', schema) : ''), amisReact.createElement(amisReact.Fragment, null, render ? render('body', body) : ''));\n }\n }\n\n // 注册amis渲染器\n if (!registerMap[asset.usage]) {\n console.error(\n `${consoleTag}自定义组件注册失败,不存在${asset.usage}自定义组件类型。`,\n );\n } else {\n registerMap[asset.usage]({\n test: new RegExp(`(^|\\/)${asset.type}`),\n type: asset.type,\n weight: asset.weight,\n autoVar: true,\n })(AmisWrapper);\n // 记录当前创建的amis自定义组件\n console.info('注册了一个自定义amis组件:', {\n type: asset.type,\n weight: asset.weight,\n component: AmisWrapper,\n framework: asset.framework,\n usage: asset.usage,\n });\n }\n // amisLib.Renderer({\n // test: new RegExp(`(^|\\/)${asset.type}`)\n // })(AmisWrapper);\n RegisterRenders.push(asset.componentName)\n }\n })\n }\n}\n\nexport const amisRender = (root, schema, data = {}, env = {}, options) => {\n let amis = amisRequire(\"amis/embed\");\n const { router, assets } = options;\n registerRenders(assets);\n return amis.embed(root, schema, data, Object.assign(getEvn(router), env));\n};\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-04 11:24:28\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-06-12 11:51:15\n * @Description: \n */\nimport { endsWith, isEmpty, cloneDeep } from \"lodash\";\n\nconst STEEDOS_AUTH = {};\n\nconst getBuilderContext = ()=>{\n if(typeof window === \"undefined\"){\n return {};\n }\n return Builder.settings.context ? Builder.settings.context : Builder.settings\n}\n\nexport const setSteedosAuth = (steedosSession) => {\n Object.assign(STEEDOS_AUTH, steedosSession);\n}\n\nexport async function fetchAPI(api, options = { credentials: 'include' }) {\n const headers = { 'Content-Type': 'application/json' }\n const AUTHORIZATION = getAuthorization()\n if (AUTHORIZATION) {\n headers[\n 'Authorization'\n ] = AUTHORIZATION\n // } else {\n // throw new Error(401)\n }\n\n options.headers = Object.assign({}, headers, options.headers);\n options.credentials = 'include'\n const res = await fetch(`${getRootUrl()}${api}`, options)\n \n if(res.status === 401){\n throw new Error(401)\n }\n\n const json = await res.json()\n if (json.errors) {\n console.error(json.errors)\n throw new Error('Failed to fetch API')\n }\n return json\n}\n\nexport function getFileSrc(fileId){\n return `${getRootUrl()}/api/files/files/${fileId}`\n}\n\nexport function getImageSrc(fileId){\n return `${getRootUrl()}/api/files/images/${fileId}`\n}\n\n\nexport function getTenantId(){\n try {\n let spaceId = getBuilderContext().tenantId\n\n if (window.location.search && !spaceId) {\n var searchParams = new URLSearchParams(window.location.search);\n spaceId = searchParams.get('X-Space-Id');\n }\n if (!spaceId) {\n return null;\n }\n return spaceId;\n } catch (error) {\n console.error(error)\n }\n}\n\nexport function getAuthToken(){\n try {\n const context = getBuilderContext()\n let token = context.authToken;\n if (!token) {\n return null;\n }\n return token;\n } catch (error) {\n console.error(error)\n }\n}\n\nexport function getAuthorization(){\n try {\n const context = getBuilderContext()\n let spaceId = context.tenantId;\n let token = context.authToken;\n \n if (!spaceId || !token) {\n return null;\n }\n return `Bearer ${spaceId},${token}`;\n } catch (error) {\n console.error(error)\n }\n}\n\nexport function getUserId(){\n try {\n const context = getBuilderContext()\n let userId = context.userId;\n if (!userId) {\n return null;\n }\n return userId;\n } catch (error) {\n console.error(error)\n } \n}\n\nexport function absoluteUrl(url){\n return `${getRootUrl()}${url}`\n}\n\nexport function getRootUrl(defaultRootUrl){\n const context = getBuilderContext()\n if(context.rootUrl){\n return context.rootUrl;\n }\n const rootUrl = typeof window != 'undefined' ? window.localStorage.getItem(\"steedos:rootUrl\") : '';\n if(rootUrl){\n return rootUrl\n }\n return defaultRootUrl || '';\n}\n\nexport function setRootUrl(rootUrl){\n if(endsWith(rootUrl, '/')){\n rootUrl = rootUrl.substring(0, rootUrl.length-1)\n }\n localStorage.setItem(\"steedos:rootUrl\", rootUrl)\n}\n\nexport const getSteedosAuth = () => {\n // if(isEmpty(STEEDOS_AUTH)){\n // return {\n // space: localStorage.getItem(\"steedos:spaceId\"),\n // token: localStorage.getItem(\"steedos:token\"), \n // userId: localStorage.getItem(\"steedos:userId\"),\n // name: Meteor.user().name //TODO: 使用steedos 函数. 此属性在上传附件时使用\n // }\n // }\n return Object.assign( {}, cloneDeep(STEEDOS_AUTH) || {}, getBuilderContext() || {});\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-16 17:02:08\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-06-20 13:50:15\n * @Description:\n */\n\n\nexport const Router = {\n getTabDisplayAs(tab_id){\n var urlSearch = new URLSearchParams(document.location.search); \n if(urlSearch.has('display')){\n return urlSearch.get('display')\n }\n const key = `tab_${tab_id}_display`;\n // const key = `page_display`;\n const value = localStorage.getItem(key)\n return value ? value : 'grid'\n },\n \n setTabDisplayAs(tab_id, displayAs){\n const key = `tab_${tab_id}_display`;\n localStorage.setItem(key, displayAs)\n },\n getAppPath({formFactor, appId}){\n return `/app/${appId}`;\n },\n getPagePath(){\n //TODO\n },\n getObjectListViewPath({formFactor, appId, objectName, listViewName}){\n return `/app/${appId}/${objectName}/grid/${listViewName}`;\n },\n getObjectDetailPath(props){\n const {formFactor, appId, objectName, recordId, listViewName, _templateType} = props;\n if(_templateType === 'JavaScript'){\n return `/app/${appId}/${objectName}/view/${recordId}?side_object=<%=item.objectName%>&side_listview_id=<%=item.listName%>`;\n }\n return `/app/${appId}/${objectName}/view/${recordId}?side_object=\\${objectName}&side_listview_id=\\${listName}`;\n },\n getObjectRelatedViewPath({formFactor, appId, masterObjectName, masterRecordId, objectName, foreignKey}){\n return `/app/${appId}/${masterObjectName}/${masterRecordId}/${objectName}/grid?related_field_name=${foreignKey}`;\n },\n\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-20 16:29:22\n * @LastEditors: liaodaxue\n * @LastEditTime: 2023-09-11 17:19:53\n * @Description: \n */\nimport { getRootUrl } from \"../../steedos.client\";\n\nexport function getSvgUrl(source, name) {\n var foo, url;\n foo = name != null ? name.split(\".\") : void 0;\n if (foo && foo.length > 1) {\n source = foo[0];\n if (!(source != null ? source.endsWith(\"-sprite\") : void 0)) {\n source += \"-sprite\";\n }\n name = foo[1];\n }\n url = \"/assets/icons/\" + source + \"/svg/symbols.svg#\" + name;\n return `${getRootUrl()}${url}`;\n}\n\nexport function getImageFieldUrl(url) {\n if (window.Meteor && window.Meteor.isCordova != true) {\n // '//'的位置\n const doubleSlashIndex = url.indexOf('//');\n const urlIndex = url.indexOf('/', doubleSlashIndex + 2);\n const rootUrl = url.substring(urlIndex);\n return rootUrl;\n }\n return url;\n}\n\nif(typeof window != 'undefined'){\n window.getImageFieldUrl = getImageFieldUrl;\n}\n\nexport function getContrastColor(bgColor) {\n var backgroundColor = (bgColor.charAt(0) === '#') ? bgColor.substring(1, 7) : bgColor;\n var r = parseInt(backgroundColor.substr(0, 2), 16);\n var g = parseInt(backgroundColor.substr(2, 2), 16);\n var b = parseInt(backgroundColor.substr(4, 2), 16);\n var brightness = (r * 299 + g * 587 + b * 114) / 1000;\n return brightness < 128 ? \"#ffffff\" : \"#000000\";\n}\n\nexport function getLookupListView(refObjectConfig) {\n if(!refObjectConfig){\n return null;\n }\n const listNameAll = \"all\";\n const listNameLookup = \"lookup\";\n let listViewAll, listViewLookup;\n\n _.each(\n refObjectConfig.list_views,\n (view, name) => {\n if (name === listNameAll) {\n listViewAll = view;\n if(!listViewAll.name){\n listViewAll.name = name;\n }\n }\n else if (name === listNameLookup) {\n listViewLookup = view;\n if(!listViewLookup.name){\n listViewLookup.name = name;\n }\n }\n }\n );\n let listView = listViewLookup || listViewAll;\n return listView;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-05-23 09:53:08\n * @LastEditors: liaodaxue\n * @LastEditTime: 2023-10-11 17:32:17\n * @Description: \n */\nimport { Router } from '../../router'\n import { getUISchema } from '../../objects'\nimport { forEach } from 'lodash';\nimport { getContrastColor } from './util'\n\nexport function getCreatedInfoTpl(formFactor){\n const href = Router.getObjectDetailPath({\n formFactor, appId: \"admin\", objectName: 'users', recordId: '${created_by._id}'\n })\n return `<span><a href='${href}'>\\${_display.created_by.label}</a>\\${_display.created}</span>`\n}\n\nexport function getModifiedInfoTpl(formFactor){\n const href = Router.getObjectDetailPath({\n formFactor, appId: \"admin\", objectName: 'users', recordId: '${modified_by._id}'\n })\n return `<span><a href='${href}'>\\${_display.modified_by.label}</a>\\${_display.modified}</span>`\n}\n\nexport function getNumberTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\n\nexport function getTimeTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\n\nexport function getDateTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\n\n\nexport function getDateTimeTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\n\nexport function getUiFieldTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\n\nexport function getUiFileSizeTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\n\n//TODO 处理name字段\nexport async function getRefObjectNameFieldName(field){\n const refUiSchema = await getUISchema(field.reference_to)\n const NAME_FIELD_KEY = refUiSchema.NAME_FIELD_KEY || 'name';\n return NAME_FIELD_KEY;\n}\n\nexport function getSelectTpl(field){\n return `<span>\\${_display.${field.name}}</span>`\n}\nexport function getSelectMap(selectOptions){\n let map = {};\n forEach(selectOptions,(option)=>{\n const optionValue = option.value + '';\n const optionColor = option.color + '';\n if(optionColor){\n const background = optionColor.charAt(0) === '#' ? optionColor : '#'+optionColor;\n const color = getContrastColor(background);\n const optionColorStyle = 'background:'+background+';color:'+color+';line-height:1.5rem';\n map[optionValue] = `<span class=\"rounded-xl px-2 py-1\" style='${optionColorStyle}'>${option.label}</span>`\n }else{\n map[optionValue] = option.label;\n }\n })\n return map;\n}\n\nexport function getNameTplUrl(field, ctx){\n if(ctx.objectName === 'cms_files'){\n return `\\${context.rootUrl}/api/files/files/\\${versions[0]}?download=true`\n }\n const href = Router.getObjectDetailPath({\n ...ctx, formFactor: ctx.formFactor, appId: \"${appId}\", objectName: ctx.objectName || \"${objectName}\", recordId: `\\${${ctx.idFieldName}}`\n })\n return href;\n}\n\nexport function getNameTpl(field, ctx){\n const href = getNameTplUrl(field, ctx);\n let linkTarget = \"\";\n if(ctx && ctx.isLookup){\n linkTarget = \"target='_blank'\"\n }\n return `<a href=\"${href}\" ${linkTarget}>\\${${field.name}}</a>`\n}\n\nexport function getRelatedFieldTpl(field, ctx){\n let tpl = '';\n if(!field.reference_to && (field.optionsFunction || field._optionsFunction || field.options)){\n if(field.isTableField){\n return `\\${${field.name}}`\n }else{\n return `\\${${field.name}__label}`\n }\n }\n\n let linkTarget = \"\";\n if(ctx && ctx.isLookup){\n linkTarget = \"target='_blank'\"\n }\n\n const onlyDisplayLookLabel = ctx.onlyDisplayLookLabel;\n\n let fieldDataStrTpl = `data._display.${field.name}`;\n\n if(field.isTableField){\n fieldDataStrTpl = `data.${field.name}`;\n }\n\n if(_.isString(field.reference_to) || !field.reference_to){\n if(field.multiple){\n let labelTpl = `<%=item.label%>`;\n if(!onlyDisplayLookLabel){\n const href = Router.getObjectDetailPath({\n formFactor: ctx.formFactor, appId: \"<%=data.appId%>\", objectName: `<%=item.objectName%>`, recordId: `<%=item.value%>`, _templateType: \"JavaScript\"\n })\n labelTpl = `<a href=\"${href}\" ${linkTarget}><%=item.label%></a>`;\n }\n tpl = `\n <% if (${fieldDataStrTpl} && ${fieldDataStrTpl}.length) { %><% ${fieldDataStrTpl}.forEach(function(item,index) { %> <% if(index>0 && index<${fieldDataStrTpl}.length){ %> , <% } %> ${labelTpl} <% }); %><% } %>\n `\n }else{\n let labelTpl = `\\${_display.${field.name}.label}`;\n let objectNameTpl = `\\${_display.${field.name}.objectName}`;\n let recordIdTpl = `\\${_display.${field.name}.value}`;\n if(field.isTableField){\n labelTpl = `\\${${field.name}.label}`;\n objectNameTpl = `\\${${field.name}.objectName}`;\n recordIdTpl = `\\${${field.name}.value}`;\n }\n if(!onlyDisplayLookLabel){\n const href = Router.getObjectDetailPath({\n formFactor: ctx.formFactor, appId: \"${appId}\", objectName: `${objectNameTpl}`, recordId: `${recordIdTpl}`\n })\n labelTpl = `<a href=\"${href}\" ${linkTarget}>${labelTpl}</a>`;\n }\n tpl = labelTpl;\n }\n\n \n }else{\n let labelTpl = `<%=item.label%>`;\n if(!onlyDisplayLookLabel){\n const href = Router.getObjectDetailPath({\n formFactor: ctx.formFactor, appId: \"<%=data.appId%>\", objectName: `<%=item.objectName%>`, recordId: `<%=item.value%>`, _templateType: \"JavaScript\"\n })\n labelTpl = `<a href=\"${href}\" ${linkTarget}><%=item.label%></a>`;\n }\n tpl = `\n <% if (${fieldDataStrTpl} && ${fieldDataStrTpl}.length) { %><% ${fieldDataStrTpl}.forEach(function(item) { %> ${labelTpl} <% }); %><% } %>\n `\n }\n return tpl\n}\n\nexport async function getLookupTpl(field, ctx){\n if(!field.reference_to){\n return getSelectTpl(field)\n }\n const NAME_FIELD_KEY = await getRefObjectNameFieldName(field);\n if(field.multiple){\n const href = Router.getObjectDetailPath({\n formFactor: ctx.formFactor, appId: ctx.appId, objectName: field.reference_to, recordId: `<%=item._id%>`, _templateType: \"JavaScript\"\n })\n return `\n <% if (data.${field.name} && data.${field.name}.length) { %><% data.${field.name}.forEach(function(item) { %> <a href=\"${href}\"><%=item.${NAME_FIELD_KEY}%></a> <% }); %><% } %>\n `\n }else{\n const href = Router.getObjectDetailPath({\n formFactor: ctx.formFactor, appId: ctx.appId, objectName: field.reference_to, recordId: `\\${${field.name}._id}`\n })\n return `<a href=\"${href}\">\\${${field.name}.${NAME_FIELD_KEY}}</a>`\n }\n \n}\n\nexport function getSwitchTpl(field){\n let fieldDataStrTpl = `data._display.${field.name}`;\n if(field.isTableField){\n fieldDataStrTpl = `data.${field.name}`;\n }\n return `<% if (data.${field.name}) { %>\n <span class=\"slds-icon_container slds-icon-utility-check slds-current-color\" title=\"<%=${fieldDataStrTpl}%>\">\n <span ><%= ${fieldDataStrTpl} === \"√\" ? \"<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-4 h-4'><path stroke-linecap='round' stroke-linejoin='round' d='M4.5 12.75l6 6 9-13.5' /></svg>\" : ${fieldDataStrTpl} %></span>\n </span>\n <% } %>`\n}\n\nexport function getPasswordTpl(field){\n return `<% if (data.${field.name}) { %>\n <span>······</span>\n <% } %>`\n}\n\nexport function getLocationTpl(field){\n return `\\${${field.name} ? ${field.name}.address : ''}`\n}\n\nexport async function getFieldTpl (field, options){\n if((field.is_name || field.name === options.labelFieldName) && !options.onlyDisplayLookLabel){\n return getNameTpl(field, options)\n }\n switch (field.type) {\n case 'password':\n return getPasswordTpl(field);\n case 'boolean':\n return getSwitchTpl(field);\n case 'toggle':\n return getSwitchTpl(field);\n case 'select':\n return getSelectTpl(field);\n case 'time':\n return getTimeTpl(field);\n case 'date':\n return getDateTpl(field);\n case 'datetime':\n return getDateTimeTpl(field);\n case 'lookup':\n return await getRelatedFieldTpl(field, options);\n case 'master_detail':\n return await getRelatedFieldTpl(field, options);\n case 'location':\n return await getLocationTpl(field);\n case 'number':\n case 'currency':\n return await getNumberTpl(field);\n case 'percent':\n case 'formula':\n case 'summary':\n return getUiFieldTpl(field)\n case 'filesize':\n return getUiFileSizeTpl(field)\n default:\n break;\n }\n};","import * as _ from 'lodash';\nimport { includes, trimEnd } from 'lodash';\nimport { getUISchema } from '../../objects';\n\nexport async function getFieldsTemplate(fields, display){\n let expandFields = [];\n if(display != false){\n display = true;\n }\n let fieldsName = ['_id'];\n let displayFields = [];\n let fieldsArr = [];\n if(_.isArray(fields)){\n fieldsArr = fields;\n }else{\n fieldsArr = _.values(fields);\n }\n for (const field of fieldsArr) {\n //graphql 的 ui\\display 中使用的字段需要先在query中查询. 否则会返回null\n if(field.expand){\n expandFields.push(field);\n }else{\n if(field.name.indexOf('.') < 0){\n if(display && (field.type == 'lookup' || field.type == 'master_detail')){\n fieldsName.push(`${field.name}`)\n displayFields.push(`${field.name}`)\n }else{\n fieldsName.push( field.alias ? `${field.alias}:${field.name}` : field.name)\n }\n if(includes(['time','date','datetime','boolean','number','currency'], field.type)){\n fieldsName.push(`${field.name}`)\n }\n if(includes(['percent','time','filesize','date','datetime','boolean','number','currency', 'select', 'file', 'image', 'avatar', 'formula', 'summary', 'object', 'grid'], field.type)){\n displayFields.push(`${field.name}`)\n }\n }else{\n objectFieldName = field.name.split('.')[0];\n fieldsName.push(objectFieldName);\n displayFields.push(objectFieldName)\n }\n }\n }\n\n displayFields = _.uniq(displayFields);\n fieldsName = _.uniq(fieldsName);\n let expandFieldsQuery = \"\";\n if(expandFields.length > 0){\n _.each(expandFields, function(field){\n expandFieldsQuery = expandFieldsQuery + `${field.expandInfo.fieldName}__expand{${field.expandInfo.displayName}}`\n })\n }\n\n if(displayFields.length > 0){\n return `${fieldsName.join(',')},${expandFieldsQuery},_display:_ui{${displayFields.join(',')}}`;\n }\n return trimEnd(`${fieldsName.join(' ')},${expandFieldsQuery}`, \",\")\n}\n\nexport function getRecordPermissionsTemplate(){\n return `\n recordPermissions: _permissions{\n allowCreate,\n allowCreateFiles,\n allowDelete,\n allowDeleteFiles,\n allowEdit,\n allowEditFiles,\n allowRead,\n allowReadFiles,\n disabled_actions,\n disabled_list_views,\n field_permissions,\n modifyAllFiles,\n modifyAllRecords,\n modifyAssignCompanysRecords,\n modifyCompanyRecords,\n uneditable_fields,\n unreadable_fields,\n unrelated_objects,\n viewAllFiles,\n viewAllRecords,\n viewAssignCompanysRecords,\n viewCompanyRecords,\n }\n `\n}\n\nexport async function getFindOneQuery(object, recordId, fields, options){\n let queryOptions = `(filters:[\"${object.idFieldName}\", \"=\", \"\\${recordId}\"])`;\n let alias = \"data\";\n if(options){\n if(options.alias){\n alias = options.alias;\n }\n\n if(options.filters){\n queryOptions = `(filters:${options.filters})`;\n }\n if(options.queryOptions){\n queryOptions = `(${options.queryOptions})`;\n }\n }\n return {\n query: `{${alias}:${object.name}${queryOptions}{${await getFieldsTemplate(fields)}, ${getRecordPermissionsTemplate()}}}`\n }\n}\n\nexport function getSaveQuery(object, recordId, fields, options){\n return {\n objectName: object.name,\n $: \"$$\",\n recordId: recordId,\n modalName: \"${modalName}\"\n }\n}\n\n/*\n readonly字段应该移除掉不提交到服务端。\n*/\nexport function getScriptForReadonlyFields(fields){\n var scripts = [];\n fields.forEach((item)=>{\n if(item.readonly && item.name.indexOf(\".\") < 0){\n scripts.push(`delete formData.${item.name};`);\n }\n });\n return scripts.join(\"\\r\\n\");\n}\n\n/*\n img/avatar字段值移除URL前缀使其保存时正常保存id,而不是url。\n*/\nexport function getScriptForRemoveUrlPrefixForImgFields(fields){\n let imgFieldsKeys = [];\n let imgFields = {};\n fields.forEach((item)=>{\n if(includes(['image','avatar'], item.type)){\n imgFieldsKeys.push(item.name);\n imgFields[item.name] = {\n name: item.name,\n multiple: item.multiple\n };\n }\n })\n if(!imgFieldsKeys.length){\n return '';\n }\n return `\n let imgFieldsKeys = ${JSON.stringify(imgFieldsKeys)};\n let imgFields = ${JSON.stringify(imgFields)};\n imgFieldsKeys.forEach((item)=>{\n let imgFieldValue = formData[item];\n if(imgFieldValue && imgFieldValue.length){\n // 因为表单初始化接口的接收适配器中为image字段值添加了url前缀(为了字段编辑时正常显示图片),所以保存时移除(为了字段值保存时正常保存id,而不是url)。\n if(imgFields[item].multiple){\n if(imgFieldValue instanceof Array){\n formData[item] = imgFieldValue.map((value)=>{ \n let itemValue = value && value.split('/');\n return itemValue[itemValue.length - 1];\n });\n }\n }else{\n let imgValue = imgFieldValue.split('/');\n formData[item] = imgValue[imgValue.length - 1];\n }\n }\n })\n `\n}\n\n/*\n file字段值重写使其保存时正常保存id。\n*/\nexport function getScriptForSimplifiedValueForFileFields(fields){\n let fileFieldsKeys = [];\n let fileFields = {};\n fields.forEach((item)=>{\n if(item.type === 'file'){\n fileFieldsKeys.push(item.name);\n fileFields[item.name] = {\n name: item.name,\n multiple: item.multiple\n };\n }\n })\n if(!fileFieldsKeys.length){\n return '';\n }\n return `\n let fileFieldsKeys = ${JSON.stringify(fileFieldsKeys)};\n let fileFields = ${JSON.stringify(fileFields)};\n fileFieldsKeys.forEach((item)=>{\n let fileFieldValue = formData[item];\n if(fileFieldValue){\n // 因为表单初始化接口的接收适配器中为file字段值重写了值及格式(为了字段编辑时正常显示附件名、点击附件名正常下载),所以保存时还原(为了字段值保存时正常保存id)。\n if(fileFields[item].multiple){\n if(fileFieldValue instanceof Array && fileFieldValue.length){\n formData[item] = fileFieldValue.map((value)=>{ \n if(typeof value === 'object'){\n return value.value;\n }else{\n return value;\n }\n });\n }\n }else{\n formData[item] = typeof fileFieldValue === 'object' ? fileFieldValue.value : fileFieldValue;\n }\n }\n })\n `\n}\n\nexport function getSaveDataTpl(fields){\n\n return `\n const formData = api.data.$;\n for (key in formData){\n // image、select等字段清空值后保存的空字符串转换为null。\n if(formData[key] === ''){\n formData[key] = null;\n }\n }\n const objectName = api.data.objectName;\n const fieldsName = Object.keys(formData);\n delete formData.created;\n delete formData.created_by;\n delete formData.modified;\n delete formData.modified_by;\n delete formData._display;\n delete formData.initialValues;\n delete formData.editFormInited;\n delete formData.isLookup;\n delete formData.selectedRowResponseResult;\n delete formData.instance_state;\n delete formData.instances;\n ${getScriptForReadonlyFields(fields)}\n ${getScriptForRemoveUrlPrefixForImgFields(fields)}\n ${getScriptForSimplifiedValueForFileFields(fields)}\n let query = \\`mutation{record: \\${objectName}__insert(doc: {__saveData}){_id}}\\`;\n if(formData.recordId && formData.recordId !='new'){\n query = \\`mutation{record: \\${objectName}__update(id: \"\\${formData.recordId}\", doc: {__saveData}){_id}}\\`;\n };\n delete formData._id;\n let __saveData = JSON.stringify(JSON.stringify(formData));\n `\n}\n\nexport function getSaveRequestAdaptor(fields, options){\n return `\n ${getSaveDataTpl(fields)}\n api.data = {query: query.replace('{__saveData}', __saveData)};\n ${options.apiRequestAdaptor || ''}\n return api;\n `\n}\n\nexport async function getFindQuery(object, recordId, fields, options){\n let limit = options.limit || 10;\n let queryOptions = `(top: ${limit})`;\n if(recordId){\n queryOptions = `(filters:[\"_id\", \"=\", \"${recordId}\"], top: ${limit})`;\n }\n let alias = \"data\";\n if(options){\n if(options.alias){\n alias = options.alias;\n }\n\n if(options.filters){\n queryOptions = `(filters:${options.filters})`;\n }\n if(options.queryOptions){\n queryOptions = `(${options.queryOptions})`;\n }\n }\n var treeFields = '';\n if(object.enable_tree && _.includes(_.keys(object.fields), 'parent') && _.includes(_.keys(object.fields), 'children')){\n treeFields = ',parent,children';\n }\n\n var cfsFields = '';\n if(object.name === 'cms_files'){\n cfsFields = ',versions'\n }\n\n const countQuery = options.count === false ? \"\" : `,count:${object.name}__count(filters:{__filters})`;\n // const moreQuerie = options.moreQueries?.length ? (\",\" + options.moreQueries.map(function(item){\n // // 把最外层的{}去除\n // return item.replace(/^{/,\"\").replace(/}$/,\"\");\n // }).join(\",\")) : \"\";\n\n return {\n orderBy: \"${orderBy}\",\n orderDir: \"${orderDir}\",\n pageNo: \"${page}\",\n pageSize: \"${perPage}\",\n query: `{${alias}:${object.name}${queryOptions}{${await getFieldsTemplate(fields, options.expand)}${treeFields}${cfsFields}}${countQuery}}`\n }\n}\n\nexport function getRecordPermissionsQuery(object, recordId, options){\n let queryOptions = \"\";\n\n if(recordId){\n queryOptions = `(filters:[\"${object.idFieldName}\", \"=\", \"${recordId}\"])`;\n }\n let alias = \"data\";\n if(options){\n if(options.alias){\n alias = options.alias;\n }\n\n if(options.filters){\n queryOptions = `(filters:${options.filters})`;\n }\n if(options.queryOptions){\n queryOptions = `(${options.queryOptions})`;\n }\n }\n\n let recordPermissionsTemplate = getRecordPermissionsTemplate();\n if(options?.fields && options.fields.length){\n recordPermissionsTemplate = `\n recordPermissions: _permissions{\n ${options.fields.join(\",\")}\n }\n `;\n }\n return {\n query: `{${alias}:${object.name}${queryOptions}{${object.idFieldName},${recordPermissionsTemplate}}}`\n }\n}\n\nexport function getApi (isMobile){\n if(isMobile){\n //TODO 返回 绝对路径\n }else{\n // return __meteor_runtime_config__.ROOT_URL_PATH_PREFIX + \"/graphql\"\n return `\\${context.rootUrl}/graphql?reload=\\${additionalFilters}`\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-04 10:42:49\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-08-25 10:28:47\n * @Description: \n */\nexport default {\n listView: {\n newRecordMode: 'modal',\n editRecordMode: 'modal',\n perPage: 20\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-10-28 14:52:55\n * @LastEditors: liaodaxue\n * @LastEditTime: 2023-07-28 16:16:29\n * @Description: \n */\nimport * as _ from 'lodash';\n\nconst AmisFormInputs = [\n 'text',\n 'date',\n 'file',\n \"avatar\",\n 'image',\n 'datetime',\n 'time',\n 'number',\n 'currency',\n 'percent',\n 'password',\n 'url',\n 'email'\n]\n\nexport function getAmisStaticFieldType(type, readonly, options){\n if(!readonly){\n if(_.includes(AmisFormInputs, type)){\n return `input-${type}`;\n }else if(type === 'location'){\n return \"location-picker\"\n }\n return type;\n }\n if(_.includes(['text','image'], type)){\n if('text' === type && options && options.amis && options.amis.tpl){\n return 'static';\n }\n if('image' === type && options && options.multiple){\n return `static-images`;\n }\n return `static-${type}`;\n }else if(type === 'url'){\n return \"input-url\"\n }else{\n return 'static';\n }\n};","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-10-28 14:15:09\n * @LastEditors: liaodaxue\n * @LastEditTime: 2023-10-30 17:51:54\n * @Description: \n */\nimport { getAmisStaticFieldType } from './type';\n\nconst getFileTableName = (steedosField)=>{\n switch (steedosField.type ) {\n case 'avatar':\n return 'avatars'\n case 'image':\n return 'images'\n case 'file':\n return 'files'\n default:\n break;\n }\n};\n\nconst getAmisFieldType = (steedosField, readonly)=>{\n return getAmisStaticFieldType(steedosField.type === 'avatar' ? 'image' : steedosField.type, readonly, {multiple: steedosField.multiple});\n}\n\nexport const getAmisFileReadonlySchema = (steedosField)=>{\n const type = steedosField.type;\n const amisFieldType = getAmisFieldType(steedosField, true)\n if(_.includes(['avatar','image'], type)){\n return {\n type: amisFieldType,\n defaultImage: '',\n enlargeAble: true,\n showToolbar: true,\n }\n }\n if(type === 'file'){\n return {\n type: amisFieldType,\n tpl: `\n <% let fileData = data._display.${steedosField.name}; if (fileData) { %>\n <% if(!Array.isArray(fileData)){ fileData = [fileData]} %>\n <% fileData.forEach(function(item) { %> \n <a href='<%= item.url %>' target='_self' class='block'><%= item.name %></a> \n <% });} %>`\n }\n }\n}\n\nexport const getAmisFileEditSchema = (steedosField)=>{\n const tableName = getFileTableName(steedosField);\n const amisFieldType = getAmisFieldType(steedosField, false)\n let convertData = {\n type: amisFieldType,\n useChunk: false, // 关闭分块上传\n receiver: {\n method: \"post\",\n dataType: \"form-data\",\n url: `\\${context.rootUrl}/s3/${tableName}`,\n requestAdaptor: `\n const { _master, global,context } = api.body;\n // const { recordId, objectName } = _master;\n const { spaceId, userId, user } = global;\n /*\n record_id: recordId,\n parent: recordId,\n object_name: objectName,\n owner_name: user.name,\n space: spaceId,\n owner: userId\n */\n // 参考platform 2.2版本,附件字段保存时cfs.files.filerecord、cfs.images.filerecord表中的metadata下只保存space、owner两个属性值。\n api.data.append('space', spaceId);\n api.data.append('owner', userId);\n\n return api;\n `,\n adaptor: `\n const { context } = api.body; \n var rootUrl = context.rootUrl + \"/api/files/${tableName}/\";\n payload = {\n status: response.status == 200 ? 0 : response.status,\n msg: response.statusText,\n data: {\n value: payload._id,\n name: payload.original.name,\n url: rootUrl + payload._id,\n }\n }\n return payload;\n `,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n if(steedosField.multiple){\n convertData.multiple = true;\n convertData.joinValues = false;\n convertData.extractValue = true;\n }\n return convertData;\n}\n\nexport const getAmisFileSchema = (steedosField, readonly)=>{\n return readonly ? getAmisFileReadonlySchema(steedosField) : getAmisFileEditSchema(steedosField);\n}","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport en_us from \"./locales/en-US.json\"\nimport zh_cn from \"./locales/zh-CN.json\"\n\nconst resources = {\n \"en-US\": {\n translation: en_us\n },\n \"zh-CN\": {\n translation: zh_cn\n }\n};\nvar locale = \"zh-CN\";\nif (typeof window != 'undefined') {\n if (window.Builder?.settings.locale == \"en-us\") {\n locale = \"en-US\";\n } else if (window.Builder?.settings.locale == \"zh-cn\") {\n locale = \"zh-CN\";\n }\n}\n\n\ni18n\n .use(initReactI18next)\n .init({\n resources,\n lng: locale,\n interpolation: {\n escapeValue: false\n }\n });\nexport { i18n as i18next };","import * as _ from 'lodash'\nimport * as Tpl from '../tpl';\nimport * as Fields from '../fields/index';\nimport * as graphql from '../graphql';\nimport config from '../../../../config'\nimport { each, forEach, isBoolean, isEmpty } from 'lodash';\nimport { getAmisFileReadonlySchema } from './file'\nimport { Router } from '../../../router'\nimport { i18next } from '../../../../i18n'\n\nfunction getOperation(fields){\n const controls = [];\n _.each(fields, function(field){\n controls.push(Fields.convertSFieldToAmisField(field, true));\n })\n return {\n \"type\": \"operation\",\n \"label\": \"操作\",\n \"width\": 100,\n fixed: \"right\",\n \"buttons\": [\n {\n \"type\": \"button\",\n \"icon\": \"fa fa-eye\",\n \"actionType\": \"dialog\",\n \"tooltip\": \"查看\",\n \"dialog\": {\n \"title\": \"查看\",\n \"body\": {\n \"type\": \"form\",\n \"controls\": controls\n }\n }\n }]\n }\n}\n\n//获取name字段,如果没有,则_index字段添加链接\nfunction getDetailColumn(){}\n\nasync function getQuickEditSchema(field, options){\n //判断在amis3.2以上环境下,放开批量编辑与lookup的单元格编辑\n let isAmisVersionforBatchEdit = false;\n if(window.amisRequire && window.amisRequire('amis')){\n isAmisVersionforBatchEdit = window.amisRequire('amis').version[0] >= 3 && window.amisRequire('amis').version[2] >= 2;\n }else if(window.Amis){\n isAmisVersionforBatchEdit = window.Amis.version[0] >= 3 && window.Amis.version[2] >= 2;\n }\n const quickEditId = options.objectName + \"_\" + field.name + \"_quickEdit\";//定义快速编辑的表单id,用于setvalue传值\n var quickEditSchema = { body: [], id: quickEditId };\n //select,avatar,image,file等组件无法行记录字段赋值,暂不支持批量编辑;\n if(field.type != 'avatar' && field.type != 'image' && field.type != 'file' && isAmisVersionforBatchEdit){\n const submitEvent = {\n submit: {\n actions: [\n {\n actionType: \"custom\",\n script: `\n let items = _.cloneDeep(event.data.items);\n let selectedItems = _.cloneDeep(event.data.selectedItems);\n if(event.data.isBatchEdit){\n selectedItems.forEach(function(selectedItem){\n selectedItem._display.${field.name} = event.data._display.${field.name};\n doAction({actionType: 'setValue', \"args\": {\"value\": selectedItem._display},componentId: \"_display_\" + selectedItem._index});\n doAction({actionType: 'setValue', \"args\": {\"value\": event.data.${field.name}},componentId: \"${options.objectName + \"_\" + field.name + \"_\"}\" + selectedItem._index});\n })\n }else{\n doAction({actionType: 'setValue', \"args\": {\"value\": event.data._display},componentId: \"_display_\" + event.data._index});\n doAction({actionType: 'setValue', \"args\": {\"value\": event.data.${field.name}},componentId: \"${options.objectName + \"_\" + field.name + \"_\"}\" + event.data._index});\n }\n `\n },\n {\n \"actionType\": \"closeDialog\"\n }\n ]\n }\n }\n quickEditSchema.onEvent = submitEvent;\n }\n \n if (field.disabled) {\n quickEditSchema = false;\n } else {\n var fieldSchema = await Fields.convertSFieldToAmisField(field, false, _.omit(options, 'buttons'));\n //存在属性上可编辑,实际不可编辑的字段,convertSFieldToAmisField函数可能会返回undefined,如summary\n if (!!fieldSchema) {\n quickEditSchema.body.push(fieldSchema);\n //以下字段使用_display的数据,因此在触发change等事件时对数据_display进行修改,以实现保存前的回显\n var TempDisplayField = ``;\n quickEditSchema.body[0].onEvent = {};\n const quickEditOnEvent = function (displayField) {\n const EventType = {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": `\n var _display = _.cloneDeep(event.data._display);\n ${displayField}\n doAction({actionType: 'setValue', \"args\": {\"value\": {_display}},componentId: \"${quickEditId}\"});\n `\n }\n ]\n };\n return EventType;\n }\n switch (field.type) {\n //TODO: amis的picker组件直接点击选项x时不会触发change事件,待处理\n case \"lookup\":\n case \"master_detail\":\n let labelField = quickEditSchema.body[0].labelField || \"label\";\n let valueField = quickEditSchema.body[0].valueField || \"value\";\n if (field.multiple) {\n /*\n 多选分两种情况。\n 第一种是减少选项时(判断新的数据是否比老的数据短),按照index删除_display中对应选项,保证回显没问题;\n 第二种是增加选项时,按照value的值,找到对应选项,并按照_display的规则为其赋值\n */\n TempDisplayField = `\n const preData = _.cloneDeep(event.data.__super.${field.name});\n if(preData && event.data.${field.name}.length < preData.length){\n let deletedIndex;\n preData.forEach(function(item,index){\n if(_.indexOf(event.data.${field.name}, item) == -1) _display[\"${field.name}\"].splice(index, 1);\n })\n }else{\n _display[\"${field.name}\"] = [];\n event.data.value.forEach(function(val,index){\n const item = _.find(event.data.selectedItems, { ${valueField}: val });\n _display[\"${field.name}\"].push(\n {\n \"label\": item.${labelField},\n \"value\": item[event.data.uiSchema.idFieldName],\n \"objectName\": \"${field.reference_to}\"\n }\n )\n })\n }\n \n `\n } else {\n TempDisplayField = `\n if(event.data.value){\n _display[\"${field.name}\"] = {\n \"label\": event.data.selectedItems.${labelField},\n \"value\": event.data.selectedItems[event.data.uiSchema.idFieldName],\n \"objectName\": \"${field.reference_to}\"\n }\n }else{\n _display[\"${field.name}\"] = {}\n }\n `\n }\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"select\":\n TempDisplayField = `\n _display[\"${field.name}\"] = event.data.selectedItems.label;\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"percent\":\n TempDisplayField = `\n _display[\"${field.name}\"] = event.data.value.toFixed(${field.scale}) + '%';\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"time\":\n TempDisplayField = `\n _display[\"${field.name}\"] = moment(event.data.value).utc().format('HH:mm');\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"date\":\n TempDisplayField = `\n _display[\"${field.name}\"] = moment(event.data.value).utc().format('YYYY-MM-DD');\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"datetime\":\n TempDisplayField = `\n _display[\"${field.name}\"] = moment(event.data.value).format('YYYY-MM-DD HH:mm');\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"boolean\":\n TempDisplayField = `\n _display[\"${field.name}\"] = event.data.value?\"√\":\"\";\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n break;\n case \"number\":\n case \"currency\":\n TempDisplayField = `\n _display[\"${field.name}\"] = event.data.value && event.data.value.toFixed(${field.scale});\n `\n quickEditSchema.body[0].onEvent[\"change\"] = quickEditOnEvent(TempDisplayField)\n\n break;\n case \"file\":\n var removeDisplayField = ``;\n if (field.multiple) {\n TempDisplayField = `\n _display[\"${field.name}\"].push({\n \"name\": event.data.result.name,\n \"url\": event.data.result.url,\n \"type\": event.data.item.type,\n \"size\": event.data.item.size\n });\n `\n removeDisplayField = `\n _.remove(_display[\"${field.name}\"], function(file){return file.url == event.data.item.url});\n `\n } else {\n TempDisplayField = ` \n _display[\"${field.name}\"] = {\n \"name\": event.data.result.name,\n \"url\": event.data.result.url,\n \"type\": event.data.item.type,\n \"size\": event.data.item.size\n };\n `\n removeDisplayField = `\n if(_display[\"${field.name}\"].url == event.data.item.url){\n _display[\"${field.name}\"] = {};\n }\n `\n }\n quickEditSchema.body[0].onEvent[\"success\"] = quickEditOnEvent(TempDisplayField)\n quickEditSchema.body[0].onEvent[\"remove\"] = quickEditOnEvent(removeDisplayField)\n break;\n case \"avatar\":\n case \"image\":\n quickEditSchema.body[0].receiver.adaptor = `\n const { context } = api.body; \n var rootUrl = context.rootUrl + \"/api/files/${field.type}s/\";\n payload = {\n status: response.status == 200 ? 0 : response.status,\n msg: response.statusText,\n data: {\n value: rootUrl + payload._id,//为了实现图片crud的回显,需要将value从id改为url,当保存数据数据时,再在发送适配器内重新将id提取出来\n name: payload.original.name,\n url: rootUrl + payload._id,\n }\n }\n return payload;\n `\n break;\n default:\n break;\n }\n quickEditSchema.body[0].visibleOn = \"${quickedit_record_permissions.allowEdit && quickedit_record_permissions_loading == false}\"\n quickEditSchema.body.push({\n \"type\":\"service\",\n \"body\":[\n {\n \"type\": \"tpl\",\n \"tpl\": i18next.t('frontend_records_no_allowedit'),\n \"visibleOn\": \"${!quickedit_record_permissions.allowEdit && quickedit_record_permissions_loading == false}\"\n },\n {\n \"type\": \"spinner\",\n \"showOn\": \"${quickedit_record_permissions_loading}\"\n }\n ],\n \"onEvent\":{\n \"init\":{\n \"actions\":[\n {\n \"actionType\": \"setValue\",\n \"componentId\": `service_listview_${options.objectName}`,\n \"args\": {\n \"value\":{\n \"quickedit_record_permissions_loading\": true\n }\n }\n },\n {\n \"actionType\": \"ajax\",\n \"args\": {\n \"api\": {\n \"url\": \"${context.rootUrl}/service/api/@\\${objectName}/recordPermissions/${_id}\",\n \"method\": \"get\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"cache\": 30000,\n \"messages\": {\n \"failed\": \"失败了呢。。\"\n }\n }\n }\n },\n {\n \"actionType\": \"setValue\",\n \"componentId\": `service_listview_${options.objectName}`,\n \"args\": {\n \"value\":{\n \"quickedit_record_permissions_loading\": false\n }\n }\n },\n {\n \"actionType\": \"setValue\",\n \"componentId\": `service_listview_${options.objectName}`,\n \"args\": {\n \"value\":{\n \"quickedit_record_permissions\": \"${event.data}\"\n }\n }\n }\n ]\n }\n }\n \n })\n if(field.type != 'avatar' && field.type != 'image' && field.type != 'file' && isAmisVersionforBatchEdit){\n quickEditSchema.body.push({\n \"name\": \"isBatchEdit\",\n \"type\": \"checkbox\",\n \"option\": [\n {\n \"type\": \"tpl\",\n \"tpl\": \"更新${COUNT(selectedItems)}个选定记录\"\n },\n {\n \"type\": \"spinner\",\n \"showOn\": \"${batchPermissionLoading}\",\n \"size\": \"sm\",\n \"className\": \"mr-4\"\n }\n ],\n \"visibleOn\": \"${ARRAYSOME(selectedItems, item => item._id === _id) && COUNT(selectedItems)>1 && quickedit_record_permissions.allowEdit && quickedit_record_permissions_loading == false}\",\n \"disabledOn\": \"${batchPermissionLoading}\",\n \"onEvent\":{\n \"change\":{\n \"actions\":[\n {\n \"actionType\": \"setValue\",\n \"componentId\": quickEditId,\n \"args\": {\n \"value\":{\n \"batchPermissionLoading\": true\n }\n },\n \"expression\":\"${event.data.value}\"\n },\n {\n \"actionType\": \"ajax\",\n \"args\": {\n \"api\": {\n \"url\": \"${context.rootUrl}/graphql\",\n \"method\": \"post\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"data\": {\n \"query\": \"{rows:${objectName}(filters:[\\\"_id\\\",\\\"in\\\",${selectedItems | pick:_id | split | json}]){_id,_permissions{allowEdit}}}\"\n },\n \"adaptor\": `\n const noPermission = [];\n payload.data.rows.forEach(function (row) {\n if(!row._permissions.allowEdit){\n noPermission.push(row._id);\n }\n })\n payload.data.noPermission = noPermission;\n return payload;\n `\n }\n },\n \"expression\":\"${event.data.value}\"\n },\n {\n \"actionType\": \"setValue\",\n \"componentId\": quickEditId,\n \"args\": {\n \"value\":{\n \"batchPermissionLoading\": false\n }\n },\n \"expression\":\"${event.data.value}\"\n },\n {\n \"actionType\": \"dialog\",\n \"dialog\":{\n \"title\": \"记录权限\",\n \"showCloseButton\": false,\n \"body\":[\n {\n \"type\": \"tpl\",\n \"tpl\": \"当前选中记录中,有${COUNT(noPermission)}条记录无编辑权限,是否需要批量编辑其他记录?\"\n }\n ],\n \"onEvent\":{\n \"confirm\":{\n \"actions\":[\n {\n \"actionType\": \"custom\",\n \"script\": `\n const noPermission = event.data.noPermission;\n const crudComponent = event.context.scoped.getComponentById(\"${options.crudId}\");\n const selectedItems = crudComponent && crudComponent.props.store.selectedItems.concat();\n noPermission.forEach(function (item) {\n crudComponent && crudComponent.unSelectItem(_.find(selectedItems,{_id:item}));\n })\n `\n },\n {\n \"actionType\": \"setValue\",\n \"componentId\": quickEditId,\n \"args\": {\n \"value\":{\n \"isBatchEdit\": true\n }\n },\n }\n ]\n },\n \"cancel\":{\n \"actions\":[\n {\n \"actionType\": \"setValue\",\n \"componentId\": quickEditId,\n \"args\": {\n \"value\":{\n \"isBatchEdit\": false\n }\n },\n }\n ]\n }\n }\n },\n \"expression\":\"${COUNT(event.data.noPermission)>0}\"\n }\n ]\n }\n }\n })\n }\n } else {\n quickEditSchema = false;\n }\n //amis3.2以下禁用lookup的单元格编辑\n if(field.type == \"lookup\" && !isAmisVersionforBatchEdit){\n quickEditSchema = false;\n }\n //TODO:附件多选时会覆盖老数据,暂时禁用\n if(field.type == \"file\" && field.multiple){\n quickEditSchema = false;\n }\n //TODO:location字段在列表中快速编辑后存在bug,保存时可能会丢失部分数据,暂时禁用\n if(field.type == \"location\"){\n quickEditSchema = false;\n }\n }\n return quickEditSchema;\n}\n\nfunction getFieldWidth(width){\n const defaultWidth = \"unset\";//用于使table内的td标签下生成div,实现将快速编辑按钮固定在右侧的效果,并不是为了unset效果\n if(typeof width == 'string'){\n if(isNaN(width)){\n return width || defaultWidth;\n }else{\n return Number(width) || defaultWidth;\n }\n }else if(typeof width == 'number'){\n return width;\n }else{\n return defaultWidth;\n }\n}\n\nexport async function getTableColumns(fields, options){\n const columns = [];\n if(!options.isLookup && !options.isInputTable){\n //将_display放入crud的columns中,可以通过setvalue修改行内数据域的_display,而不影响上层items的_display,用于批量编辑\n columns.push({name: '_display',type: 'static', width: 32, placeholder: \"\",id: \"_display_${_index}\", className: \"hidden\"});\n columns.push({name: '_index',type: 'text', width: 32, placeholder: \"\"});\n }\n const allowEdit = options.permissions?.allowEdit && !options.isLookup && options.enable_inline_edit != false;\n \n for (const field of fields) {\n //增加quickEdit属性,实现快速编辑\n const quickEditSchema = allowEdit ? await getQuickEditSchema(field, options) : allowEdit;\n let className = \"\";\n if(field.wrap != true){\n className += \" whitespace-nowrap \"\n }else{\n className += \" break-all \"\n }\n let columnItem;\n if((field.is_name || field.name === options.labelFieldName) && options.objectName === 'cms_files'){\n const previewFileScript = `\n var data = event.data;\n var file_name = data.versions ? data.name : \"${field.label}\";\n var file_id = data._id;\n SteedosUI.previewFile && SteedosUI.previewFile({file_name, file_id});\n `;\n columnItem = {\n \"type\": \"button\",\n \"label\": `<%=data.versions ? data.name : \"${field.label}\"%>`,\n className,\n \"level\": \"link\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"args\": {\n \"api\": {\n \"url\": \"${(versions[0] && versions[0].url) ? versions[0].url+'?download=true' : context.rootUrl+'/api/files/files/'+versions[0]+'?download=true'}\",\n \"method\": \"get\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n },\n \"actionType\": \"download\",\n // \"expression\": \"!!!window?.nw?.require\"//浏览器上直接下载\n \"expression\": \"!!!(window && window.nw && window.nw.require)\"//浏览器上直接下载\n },\n {\n \"args\": {},\n \"actionType\": \"custom\",\n \"script\": previewFileScript,\n // \"expression\": \"!!window?.nw?.require\" //PC客户端预览附件\n \"expression\": \"!!!(window && window.nw && window.nw.require)\"//PC客户端预览附件\n }\n ]\n }\n }\n };\n }else if(field.type === 'toggle'){\n columnItem = Object.assign({}, {\n type: \"switch\",\n name: field.name,\n label: field.label,\n width: getFieldWidth(field.width),\n toggled: field.toggled,\n static: true,\n className,\n }, field.amis, {name: field.name});\n }else if(field.type === 'avatar' || field.type === 'image' || field.type === 'file'){\n columnItem = Object.assign({}, {\n type: \"switch\",\n name: field.name,\n label: field.label,\n width: getFieldWidth(field.width),\n toggled: field.toggled,\n static: true,\n className,\n ...getAmisFileReadonlySchema(field)\n }, field.amis, {name: field.name});\n }\n else if(field.type === 'select'){\n const map = Tpl.getSelectMap(field.options);\n columnItem = Object.assign({}, {\n type: \"static-mapping\",\n name: field.name,\n label: field.label,\n map: map,\n sortable: field.sortable,\n width: getFieldWidth(field.width),\n toggled: field.toggled,\n className,\n inputClassName: \"inline\",\n static: true,\n }, field.amis, {name: field.name});\n }\n else{\n const tpl = await Tpl.getFieldTpl(field, options);\n let type = 'static-text';\n if(tpl){\n type = 'static';\n }else if(field.type === 'html'){\n type = 'static-markdown';\n }else if(field.type === 'url'){\n if(field.show_as_qr){\n type = 'static-qr-code';\n }else{\n type = 'input-url'\n }\n }\n if(field.type === 'textarea'){\n className += 'min-w-56';\n }\n if(field.type === 'date'){\n className += 'date-min-w';\n }\n if(field.type === 'datetime'){\n className += 'datetime-min-w';\n }\n if(!field.hidden && !field.extra){\n columnItem = Object.assign({}, {\n name: field.name,\n label: field.label,\n sortable: field.sortable,\n // searchable: field.searchable,\n width: getFieldWidth(field.width),\n type: type,\n tpl: tpl,\n toggled: field.toggled,\n className,\n inputClassName: \"inline\",\n static: true,\n options: field.type === 'html' ? {html: true} : null\n // toggled: true \n }, field.amis, {name: field.name});\n }\n }\n if(columnItem){\n if(quickEditSchema){\n columnItem.quickEdit = quickEditSchema;\n columnItem.quickEditEnabledOn = \"${is_system !== true}\";\n }\n columnItem.id = `${options.objectName}_${field.name}_\\${_index}`\n columns.push(columnItem);\n }\n };\n\n // columns.push(getOperation(fields));\n if(!options.isLookup && !options.isInputTable && !_.some(columns, { name: options.labelFieldName })){\n // 没有名称字段时显示序号字段为链接,lookup弹出的picker不需要此功能\n const href = Router.getObjectDetailPath({\n ...options, formFactor: options.formFactor, appId: \"${appId}\", objectName: options.objectName || \"${objectName}\", recordId: `\\${${options.idFieldName}}`\n })\n columns[1].type = \"tpl\";\n columns[1].tpl = `<a href=\"${href}\">\\${${columns[1].name}}</a>`\n }\n return columns;\n}\n\n/**\n * 生成移动端列表每行显示的amis行\n * @param {*} tpls 要显示的每个字段的tpl\n * @returns {\n \"type\": \"wrapper\",\n \"body\": [{\n \"type\": \"tpl\",\n \"tpl\": tpls[index].tpl,\n \"className\": \"truncate\"//左侧样式类\n },{\n \"type\": \"tpl\",\n \"tpl\": tpls[index + 1].tpl,\n \"className\": \"truncate ml-2 flex flex-shrink-0\"//右侧样式类\n }],\n \"size\": \"none\",\n \"className\": \"flex items-center justify-between\"//每行样式类\n }\n */\nfunction getMobileLines(tpls){\n let lines = [];\n let maxLineCount = 3;\n let lineChildren = [];\n let isNewLine = false;\n let isLeft = true;\n let lineChildrenClassName = \"\";\n let lineClassName = \"flex items-center justify-between\";\n tpls.forEach(function(item){\n if(isNewLine && lines.length < maxLineCount){\n lines.push({\n \"type\": \"wrapper\",\n \"body\": lineChildren,\n \"size\": \"none\",\n \"className\": lineClassName\n });\n lineChildren = [];\n }\n if(isLeft){\n // 左侧半行\n lineChildrenClassName = \"steedos-listview-item-left truncate\";\n if(item.field.is_wide){\n // 左侧全行样式可以单独写,如果需要配置两行省略号效果,可以加样式类 two-lines-truncate\n lineChildrenClassName = \"steedos-listview-item-wide\";\n }\n if(lines.length === 0){\n // 第一个字段加粗黑色显示\n lineChildrenClassName += \" font-bold text-gray-800\";\n }\n }\n else{\n // 右侧半行,这里加样式类 flex flex-shrink-0,是为了省略号只显示在左半行,右半行文字一般比较短,如果也加省略号效果的话,左侧文字多的话,右侧没几个字就显示省略号了\n lineChildrenClassName = \"steedos-listview-item-right truncate ml-2 flex flex-shrink-0\";\n }\n lineChildren.push({\n \"type\": \"tpl\",\n \"tpl\": item.tpl,\n \"className\": lineChildrenClassName\n });\n\n if(item.field.is_wide){\n // 宽字段占整行\n isLeft = true;\n isNewLine = true;\n }\n else{\n isLeft = !isLeft;\n isNewLine = isLeft;\n }\n });\n \n if(lineChildren.length && lines.length < maxLineCount){\n lines.push({\n \"type\": \"wrapper\",\n \"body\": lineChildren,\n \"size\": \"none\",\n \"className\": lineClassName\n });\n }\n \n return lines;\n}\n\nasync function getMobileTableColumns(fields, options){\n const columns = [];\n let nameField = {};\n let tpls = [];\n for (const field of fields) {\n let tpl = \"\";\n if(field.is_name || field.name === options.labelFieldName){\n nameField = field;\n options = Object.assign({}, options, {\n onlyDisplayLookLabel: true\n });\n tpl = await Tpl.getFieldTpl(field, options);\n }\n else if(field.type === 'avatar' || field.type === 'image' || field.type === 'file'){\n // 图片和附件类型字段暂时显示为附件名称,后续需要再优化\n tpl = `\\${_display.${field.name}.name}`;\n }\n else{\n if(field.type === 'lookup' || field.type === 'master_detail'){\n options = Object.assign({}, options, {\n onlyDisplayLookLabel: true\n });\n }\n tpl = await Tpl.getFieldTpl(field, options);\n }\n if(!tpl){\n //qhd需求简易处理,加上raw以支持审批王名称字段通过颜色区分缓急,若之后手机端列表支持配置amis,则可以去掉\n tpl = `\\${${field.name} | raw}`;\n }\n if(!field.hidden && !field.extra){\n tpls.push({ field, tpl });\n }\n };\n\n const url = Tpl.getNameTplUrl(nameField, options)\n\n const columnLines = getMobileLines(tpls);\n\n\n let column = {\n name: nameField.name,\n label: nameField.label,\n sortable: nameField.sortable,\n type: \"button\",\n level: \"link\",\n actionType: \"link\",\n link: url,\n innerClassName: {\n \"steedos-listview-item block text-gray-500\":\"true\",\n \"max-w-[360px]\": \"${display == 'split'}\",\n },\n body: {\n \"type\": \"wrapper\",\n \"body\": columnLines,\n \"size\": \"none\",\n \"className\": \"p-1\"\n }\n }\n \n if(options.objectName === 'cms_files'){\n if(window.Meteor?.isCordova){\n column = {\n ...column,\n actionType: \"\",\n link: \"\",\n onEvent: {\n \"click\": {\n \"actions\": [\n {\n \"script\": `\n let cms_url = \"/api/files/files/\"+event.data.versions[0]+\"?download=true\"\n Steedos.cordovaDownload(encodeURI(Steedos.absoluteUrl(cms_url)), event.data.name);\n `,\n \"actionType\": \"custom\"\n }\n ],\n \"weight\": 0\n }\n }\n }\n }else{\n column = {\n ...column,\n actionType: \"\",\n link: \"\",\n onEvent: {\n \"click\": {\n \"actions\": [\n {\n \"args\": {\n \"api\": {\n \"url\": url,\n \"method\": \"get\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n },\n \"actionType\": \"download\"\n }\n ],\n \"weight\": 0\n }\n }\n }\n }\n \n }\n\n columns.push(column);\n \n\n return columns;\n}\n\nfunction getDefaultParams(options){\n return {\n perPage: options.top || options.perPage || config.listView.perPage\n }\n}\n\nfunction getButtonVisibleOn(button){\n let visible= button.visible;\n\n if(button._visible){\n visible = button._visible;\n }\n\n if(isBoolean(visible)){\n visible = visible.toString();\n }\n\n if(visible){\n // if(visible.indexOf(\"Meteor.\") > 0 || visible.indexOf(\"Creator.\") > 0 || visible.indexOf(\"Session.\") > 0){\n // console.warn('无效的visible', visible)\n // return 'false';\n // }\n if(visible.trim().startsWith('function')){\n return `${visible}(objectName, typeof _id === 'undefined' ? null: _id, typeof record === 'undefined' ? (typeof recordPermissions === 'undefined' ? {} : recordPermissions) : record.recordPermissions, data)`\n }\n return visible;\n }\n\n if(button.type === 'amis_button'){\n const amisSchema = button.amis_schema;\n if(amisSchema && amisSchema.body && amisSchema.body.length > 0){\n const btn1 = amisSchema.body[0];\n return btn1.visibleOn\n }\n }\n}\n\nasync function getTableOperation(ctx){\n const buttons = ctx.buttons;\n const operationButtons = [];\n each(buttons, (button)=>{\n if(isBoolean(button.visible)){\n button.visible = button.visible.toString();\n }\n // operationButtons.push({\n // type: 'button',\n // label: button.label,\n // visibleOn: button.visible ? `${button.visible}` : (button._visible ? `${button._visible}` : null),\n // onEvent: {\n // click: {\n // actions: []\n // }\n // }\n // })\n\n operationButtons.push({\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n className: 'antd-Button--default'\n })\n })\n if(operationButtons.length < 1){\n return ;\n }\n return {\n type: 'operation',\n label: \" \",\n fixed: 'right',\n labelClassName: 'text-center',\n className: 'text-center steedos-listview-operation w-10',\n buttons: [\n {\n \"type\": \"steedos-dropdown-button\",\n \"label\": \"xxx\",\n \"buttons\": operationButtons,\n \"placement\": \"bottomRight\",\n \"overlayClassName\": \"shadow !min-w-[160px]\",\n \"trigger\": [\"click\"],\n \"id\": \"u:c2140a365019\",\n onOpenApi: {\n url: `\\${context.rootUrl}/service/api/@\\${objectName}/recordPermissions/\\${_id}`,\n method: \"get\",\n requestAdaptor: \"api.data={}; return api;\",\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n },\n adaptor: `\n payload = {\n record: {\n recordPermissions: payload\n }\n };\n return payload;\n `,\n }\n }\n ]\n }\n}\n\nasync function getDefaultCrudCard(columns, options) {\n let labelFieldName = options?.labelFieldName || \"name\";\n let titleColumn, bodyColumns = [];\n columns.forEach(function (item) {\n delete item.quickEdit;\n delete item.width;\n if (item.name === labelFieldName) {\n titleColumn = item;\n }\n else {\n if (item.name !== \"_index\") {\n bodyColumns.push(item);\n }\n }\n });\n let card = {\n \"header\": {\n \"title\": titleColumn.tpl\n },\n body: bodyColumns,\n // useCardLabel: false,\n toolbar: []\n };\n let hideToolbarOperation = options.formFactor === 'SMALL' || [\"split\"].indexOf(options.displayAs) > -1;\n if(!hideToolbarOperation){\n let toolbarOperation = await getTableOperation(options);\n if (toolbarOperation) {\n toolbarOperation.className += \" inline-block w-auto\";\n }\n card.toolbar.push(toolbarOperation);\n }\n return card;\n}\n\nexport async function getTableSchema(fields, options){\n if(!options){\n options = {};\n }\n let { isLookup, hiddenColumnOperation } = options;\n const defaults = options.defaults;\n const listSchema = (defaults && defaults.listSchema) || {};\n\n let columns = [];\n let useMobileColumns = options.formFactor === 'SMALL' || [\"split\"].indexOf(options.displayAs) > -1;\n if(isLookup){\n // 在lookup手机端列表模式调式好之前不使用getMobileTableColumns\n useMobileColumns = false;\n }\n if(listSchema.mode && listSchema.mode !== \"table\"){\n // 如果指定的mode,则不走我们内置的手机端列表效果,使用steedos组件内部开发的默认card/list效果,或者由用户自己实现card/list模式的crud列表\n useMobileColumns = false;\n }\n if(useMobileColumns){\n columns = await getMobileTableColumns(fields, options);\n }\n else{\n columns = await getTableColumns(fields, options);\n\n if(listSchema.mode === \"cards\"){\n let card = listSchema.card;\n if(!card){\n card = await getDefaultCrudCard(columns, options);\n }\n return {\n mode: \"cards\",\n perPageAvailable: [5, 10, 20, 50, 100, 500],\n name: \"thelist\",\n headerToolbarClassName: \"py-2 px-2 border-gray-300 border-solid border-b\",\n className: \"\",\n draggable: false,\n defaultParams: getDefaultParams(options),\n card: card,\n syncLocation: false,\n keepItemSelectionOnPageChange: true,\n checkOnItemClick: isLookup ? true : false,\n labelTpl: `\\${${options.labelFieldName}}`,\n autoFillHeight: false, // 自动高度效果不理想,先关闭\n columnsTogglable: false\n }\n }\n\n if(!isLookup && !hiddenColumnOperation){\n columns.push(await getTableOperation(options));\n }\n }\n\n return {\n mode: \"table\",\n perPageAvailable: [5, 10, 20, 50, 100, 500],\n name: \"thelist\",\n headerToolbarClassName: \"py-2 px-2 border-gray-300 border-solid border-b\",\n className: \"\",\n draggable: false,\n defaultParams: getDefaultParams(options),\n columns: columns,\n syncLocation: false,\n keepItemSelectionOnPageChange: true,\n checkOnItemClick: isLookup ? true : false,\n labelTpl: `\\${${options.labelFieldName}}`,\n autoFillHeight: false, // 自动高度效果不理想,先关闭\n columnsTogglable: false,\n }\n}\n\n\n\n/**\n * \n * @param {*} mainObject \n * @param {*} fields \n * @param {*} options = {filter: listview 过滤条件, ...}\n * @returns \n */\nexport async function getTableApi(mainObject, fields, options){\n const searchableFields = [];\n let { filter, filtersFunction, sort, top, setDataToComponentId = '' } = options;\n\n if(_.isArray(filter)){\n filter = _.map(filter, function(item){\n if(item.operation){\n return [item.field, item.operation, item.value];\n }else{\n return item\n }\n })\n }\n if(!filter){\n filter = [];\n }\n let baseFilters = null;\n if(filter){\n baseFilters = filter;\n }\n\n _.each(mainObject.fields, function (field) {\n if (Fields.isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {\n searchableFields.push(field.name);\n }\n })\n\n const fileFields = {};\n const fileFieldsKeys = [];\n // 含有optionsFunction属性, 无reference_to属性的lookup字段\n const lookupFields = {};\n fields.forEach((item)=>{\n if(_.includes(['image','avatar','file'], item.type)){\n fileFieldsKeys.push(item.name);\n fileFields[item.name] = {\n name: item.name,\n type: item.type,\n multiple: item.multiple\n };\n }\n if(_.includes(['lookup'], item.type) && !item.reference_to ){\n lookupFields[item.name] = item;\n }\n })\n\n let valueField = mainObject.key_field || '_id';\n const api = await getApi(mainObject, null, fields, {count: options.queryCount, alias: 'rows', limit: top, queryOptions: `filters: {__filters}, top: {__top}, skip: {__skip}, sort: \"{__sort}\"`});\n\n api.url += \"&objectName=${objectName}\";//设计器上对象表格组件需要切换对象重新请求列表数据\n if(options.isRelated){\n api.url += \"&recordId=${_master.recordId}\";\n }\n api.cache = 3000; \n api.data.$term = \"$term\";\n api.data.term = \"$term\";\n api.data.$self = \"$$\";\n api.data.self = \"$$\";\n api.data.filter = \"$filter\";\n api.data.loaded = \"${loaded}\";\n api.data.listViewId = \"${listViewId}\";\n api.data.listName = \"${listName}\";\n api.requestAdaptor = `\n let __changedFilterFormValues = api.data.$self.__changedFilterFormValues || {};\n let __changedSearchBoxValues = api.data.$self.__changedSearchBoxValues || {};\n // 把表单搜索和快速搜索中的change事件中记录的过滤条件也拼到$self中,是为解决触发搜索请求时,两边输入的过滤条件都带上,即:\n // 有时在搜索表单中输入过滤条件事,忘记点击回车键或搜索按钮,而是进一步修改快速搜索框中的关键字点击其中回车键触发搜索\n // 这种情况下,触发的搜索请求中没有带上搜索表单中输入的过滤条件。\n // 反过来先在快速搜索框中输入过滤条件却不点击其中回车键触发搜索,而是到搜索表单中触发搜索请求也是一样的。\n // 这里直接合并到api.data.$self,而不是后面定义的selfData变量,是因为可以省去在接收适配器中写一样的合并逻辑\n // 如果有问题可以改为合并到selfData变量中,但是要在接收适配器中写上一样的合并逻辑,否则里面的过滤条件不会存入本地存储中\n Object.assign(api.data.$self, __changedSearchBoxValues, __changedFilterFormValues);\n // selfData 中的数据由 CRUD 控制. selfData中,只能获取到 CRUD 给定的data. 无法从数据链中获取数据.\n let selfData = JSON.parse(JSON.stringify(api.data.$self));\n // 保留一份初始data,以供自定义发送适配器中获取原始数据。\n const data = _.cloneDeep(api.data);\n try{\n // TODO: 不应该直接在这里取localStorage,应该从外面传入\n const listName = api.data.listName;\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n if(localListViewProps){\n localListViewProps = JSON.parse(localListViewProps);\n selfData = Object.assign({}, localListViewProps, selfData);\n if(!api.data.filter){\n api.data.filter = localListViewProps.filter;\n }\n if(!api.data.loaded){\n // 第一次加载组件,比如刷新浏览器时因为api.data.pageNo有默认值1\n // 所以会把localSearchableFilter中已经存过的页码覆盖\n // 如果是第一次加载组件始终让翻页页码从本地存储中取值\n let formFactor = \"${options.formFactor}\";\n // 移动端不识别本地存储中的翻页页码,否则点击加载更多按钮后无法刷新回第一页\n // api.data.pageNo = formFactor === \"SMALL\" ? 1 : (localListViewProps.page || 1);\n // 移动端暂时去除加载更多,放开翻页\n api.data.pageNo = localListViewProps.page || 1;\n }\n }\n }\n catch(ex){\n console.error(\"本地存储中crud参数解析异常:\", ex);\n }\n ${baseFilters ? `var systemFilters = ${JSON.stringify(baseFilters)};` : 'var systemFilters = [];'}\n var _ids = []\n const filtersFunction = ${filtersFunction};\n if(filtersFunction){\n const _filters = filtersFunction(systemFilters, api.data.$self);\n if(api.data.listName == \"recent\"){\n _ids = _filters[2]\n }\n if(_filters && _filters.length > 0){\n if(_.isEmpty(systemFilters)){\n systemFilters = _filters || [];\n }else{\n systemFilters = [systemFilters, 'and', _filters];\n }\n }\n }\n let userFilters =[];\n \n if(_.isEmpty(systemFilters)){\n systemFilters = api.data.filter || [];\n }else{\n if(!_.isEmpty(api.data.filter)){\n systemFilters = [systemFilters, 'and', api.data.filter];\n }\n }\n var pageSize = api.data.pageSize || 10;\n var pageNo = api.data.pageNo || 1;\n var skip = (pageNo - 1) * pageSize;\n var orderBy = api.data.orderBy || '';\n var orderDir = api.data.orderDir || '';\n var sort = orderBy + ' ' + orderDir;\n sort = orderBy ? sort : \"${sort || ''}\";\n var allowSearchFields = ${JSON.stringify(searchableFields)};\n if(api.data.$term){\n userFilters = [[\"name\", \"contains\", \"'+ api.data.$term +'\"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n userFilters = [[\"${valueField.name}\", \"=\", selfData.value]];\n }\n\n var searchableFilter = SteedosUI.getSearchFilter(selfData) || [];\n if(searchableFilter.length > 0){\n if(userFilters.length > 0 ){\n userFilters = [userFilters, 'and', searchableFilter];\n }else{\n userFilters = searchableFilter;\n }\n }\n\n // \"搜索此列表\"搜索框\n if(allowSearchFields){\n allowSearchFields.forEach(function(key){\n const keyValue = selfData[key];\n if(_.isString(keyValue)){\n userFilters.push([key, \"contains\", keyValue]);\n }else if(_.isArray(keyValue) || _.isBoolean(keyValue) || keyValue){\n userFilters.push([key, \"=\", keyValue]);\n }\n })\n }\n\n var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.__keywords, allowSearchFields);\n if(keywordsFilters && keywordsFilters.length > 0){\n userFilters.push(keywordsFilters);\n }\n\n let filters = [];\n\n if(!_.isEmpty(systemFilters)){\n filters = systemFilters;\n };\n if(api.data.$self.additionalFilters){\n if(_.isString(api.data.$self.additionalFilters)){\n userFilters.push(eval(api.data.$self.additionalFilters))\n }else{\n userFilters.push(api.data.$self.additionalFilters)\n }\n }\n\n if(api.data.$self._isRelated){\n const self = api.data.$self;\n const relatedKey = self.relatedKey;\n const refField = self.uiSchema.fields[relatedKey];\n const masterRecord = self._master.record;\n const masterObjectName = self._master.objectName;\n let relatedValue = self._master.recordId;\n if(refField && refField.reference_to_field && refField.reference_to_field != '_id'){\n relatedValue = masterRecord[refField.reference_to_field]\n }\n let relatedFilters;\n if (\n refField && (refField._reference_to ||\n (refField.reference_to && !_.isString(refField.reference_to)))\n ) {\n relatedFilters = [\n [relatedKey + \"/o\", \"=\", masterObjectName],\n [relatedKey + \"/ids\", \"=\", relatedValue],\n ];\n } else {\n relatedFilters = [relatedKey, \"=\", relatedValue];\n }\n userFilters.push(relatedFilters)\n }\n\n if(!_.isEmpty(userFilters)){\n if(_.isEmpty(filters)){\n filters = userFilters;\n }else{\n filters = [filters, 'and', userFilters]\n }\n }\n api.data._ids = _ids;\n api.data = {\n query: api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim())\n }\n ${options.requestAdaptor || ''};\n\n //写入本次存储filters、sort\n const listViewPropsStoreKey = location.pathname + \"/crud/query\";\n sessionStorage.setItem(listViewPropsStoreKey, JSON.stringify({\n filters: filters,\n sort: sort.trim(),\n pageSize: pageSize,\n skip: skip,\n fields: ${JSON.stringify(_.map(fields, 'name'))}\n }));\n return api;\n `\n api.adaptor = `\n if(api.body.listName == \"recent\"){\n payload.data.rows = _.sortBy(payload.data.rows, function(item){\n return _.indexOf(api.body._ids, item._id)\n });\n }\n const enable_tree = ${mainObject.enable_tree};\n if(!enable_tree){\n _.each(payload.data.rows, function(item, index){\n const {pageNo, pageSize} = api.body;\n const skip = (pageNo - 1) * pageSize;\n item._index = skip + index + 1;\n })\n }\n window.postMessage(Object.assign({type: \"listview.loaded\"}), \"*\");\n let fileFields = ${JSON.stringify(fileFields)};\n let lookupFields = ${JSON.stringify(lookupFields)};\n _.each(payload.data.rows, function(item, index){\n _.each(fileFields , (field, key)=>{\n if(item[key] && item._display && item._display[key]){\n let value = item._display[key];\n if(!_.isArray(value)){\n value = [value]\n };\n if(field.type === 'file'){\n item[key] = value\n }else{\n item[key] = _.map(value, (item)=>{\n if(field.type === 'image'){\n const url = window.getImageFieldUrl(item.url);\n return url;\n }\n return item.url;\n })\n }\n }\n })\n _.each(lookupFields , (field, key)=>{\n if(item[key]){\n if(field._optionsFunction){\n const optionsFunction = eval(\"(\" + field._optionsFunction+ \")\")(item);\n item[key + '__label'] = _.map(_.filter(optionsFunction, function(option){return item[key] == option.value}), 'label').join(' ');\n }else if(field.options){\n const options = field.options;\n item[key + '__label'] = _.map(_.filter(options, function(option){return item[key] == option.value}), 'label').join(' ');\n }\n }\n })\n })\n \n if(enable_tree){\n const records = payload.data.rows || [];\n const getTreeOptions = SteedosUI.getTreeOptions\n let isTreeOptionsComputed = false;\n if(records.length === 1 && records[0].children){\n isTreeOptionsComputed = true;\n }\n if(!isTreeOptionsComputed){\n // 如果api接口设置在缓存,缓存期间并不会重新请求接口,payload.data.rows是上次计算后的结果\n payload.data.rows = getTreeOptions(records,{\"valueField\":\"_id\"});\n }\n try{\n setTimeout(() => {\n let expandBtn = $('.steedos-object-listview-content .antd-Table-content .antd-Table-table thead .antd-Table-expandBtn');\n if(expandBtn && expandBtn.length > 0 && !expandBtn.hasClass(\"is-active\")){\n expandBtn[0].click();\n }\n }, 600);\n }\n catch(ex){\n console.error(\"tree数据格式展开异常:\", ex);\n }\n }\n\n\n try{\n // TODO: 不应该直接在这里取localStorage,应该从外面传入\n const listName = api.body.listName;\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n /**\n * localListViewProps规范来自crud请求api中api.data.$self参数值的。\n * 比如:{\"perPage\":20,\"page\":1,\"__searchable__name\":\"7\",\"__searchable__between__n1__c\":[null,null],\"filter\":[[\"name\",\"contains\",\"a\"]]}\n * __searchable__...:顶部放大镜搜索条件\n * filter:右侧过滤器\n * perPage:每页条数\n * page:当前页码\n * orderBy:排序字段\n * orderDir:排序方向\n */\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n let selfData = JSON.parse(JSON.stringify(api.body.$self));\n if(localListViewProps){\n localListViewProps = JSON.parse(localListViewProps);\n selfData = Object.assign({}, localListViewProps, selfData, { filter: api.body.filter });\n if(!api.body.loaded){\n // 第一次加载组件,比如刷新浏览器时因为api.data.pageNo有默认值1\n // 所以会把localSearchableFilter中已经存过的页码覆盖\n // 如果是第一次加载组件始终让翻页页码从本地存储中取值\n let formFactor = \"${options.formFactor}\";\n // 移动端不识别本地存储中的翻页页码,否则点击加载更多按钮后无法刷新回第一页\n // selfData.page = formFactor === \"SMALL\" ? 1 : (localListViewProps.page || 1);\n selfData.page = localListViewProps.page || 1;\n }\n }\n \n delete selfData.context;\n delete selfData.global;\n sessionStorage.setItem(listViewPropsStoreKey, JSON.stringify(selfData));\n // 返回页码到UI界面\n payload.data.page= selfData.page;\n }\n catch(ex){\n console.error(\"本地存储中crud参数解析异常:\", ex);\n }\n // 标记加载过,后续优先从本地存储中加载相关参数\n payload.data.loaded= true;\n\n const setDataToComponentId = \"${setDataToComponentId}\";\n if(setDataToComponentId){\n //https://github.com/baidu/amis/pull/6807 .parent的改动是为适应3.2getComponentById的规则改动,不影响2.9\n var scope = SteedosUI.getRef(api.body.$self.$scopeId);\n var scopeParent = scope && scope.parent;\n var setDataToComponent = scopeParent && scopeParent.getComponentById(setDataToComponentId);\n if(setDataToComponent){\n setDataToComponent.setData({$count: payload.data.count});\n }\n // SteedosUI.getRef(api.body.$self.$scopeId)?.parent?.getComponentById(setDataToComponentId)?.setData({$count: payload.data.count})\n };\n ${options.adaptor || ''}\n return payload;\n `;\n return api;\n}\n\nexport async function getApi(object, recordId, fields, options){\n const data = await graphql.getFindQuery(object, recordId, fields, options);\n return {\n method: \"post\",\n url: graphql.getApi(), // + \"&recordId=${recordId}\"\n data: data,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nexport function getRecordPermissionsApi(object, recordId, options){\n const data = graphql.getRecordPermissionsQuery(object, recordId, options);\n return {\n method: \"post\",\n url: graphql.getApi(),\n data: data,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}","import { OMIT_FIELDS } from './fields';\nimport { absoluteUrl } from '../../steedos.client'\nimport * as graphql from './graphql'\nimport * as _ from 'lodash';\nimport { i18next } from \"../../../i18n\"\nconst API_CACHE = 100;\n\nfunction getReadonlyFormAdaptor(object, fields, options){\n let scriptStr = '';\n const selectFields = _.filter(fields, function(field){return field.name.indexOf('.') < 0 && ((field.type == 'select' && field.options) || ((field.type == 'lookup' || field.type == 'master_detail') && !field.reference_to))});\n const gridAndObjectFieldsName = _.map(_.filter(fields, function(field){return field.name.indexOf('.') < 0 && (field.type === 'object' || field.type === 'grid')}), 'name');\n _.each(selectFields, function(field){\n if(!_.includes(OMIT_FIELDS, field.name)){\n const valueField = field.name;\n if(field.options){\n const options = JSON.stringify({options: field.options});\n scriptStr = scriptStr + `var ${field.name}Options= (${options}).options;`;\n }else if(field.optionsFunction){\n scriptStr = scriptStr + `var ${field.name}Options = eval(${field.optionsFunction.toString()})(api.data);`\n }else if(field._optionsFunction){\n scriptStr = scriptStr + `var ${field.name}Options = eval(${field._optionsFunction})(api.data);`\n }\n if(field.multiple){\n scriptStr = scriptStr + `data.${field.name}__label = _.map(_.filter(${field.name}Options, function(option){return _.includes(data.${field.name}, option.value)}), 'label');`\n }else{\n scriptStr = scriptStr + `var ${field.name}Selected = _.find(${field.name}Options, function(option){return data.${field.name} == option.value});`\n scriptStr = scriptStr + `data.${field.name}__label = ${field.name}Selected ? ${field.name}Selected.label:null;`\n }\n }\n });\n\n // const refFields = _.filter(fields, function(field){return field.name.indexOf('.') < 0 && (field.type == 'lookup' || field.type == 'master_detail') && !field.reference_to});\n // _.each(refFields, function(field){\n // if(!_.includes(OMIT_FIELDS, field.name)){\n // const valueField = field.reference_to_field || '_id';\n // scriptStr = scriptStr + `var ${field.name}Options = eval(${field.optionsFunction.toString()})(api.data);`\n // if(field.multiple){\n // scriptStr = scriptStr + `data.${field.name}__label = _.map(_.filter(${field.name}Options, function(option){return _.includes(data.${field.name}, option.value)}), 'label');`\n // }else{\n // scriptStr = scriptStr + `var ${field.name}Selected = _.find(${field.name}Options, function(option){return data.${field.name} == option.value});`\n // scriptStr = scriptStr + `data.${field.name}__label = ${field.name}Selected ? ${field.name}Selected.label:null;`\n // }\n // }\n // })\n\n var fieldNames = _.map(fields, function(n){return n.name});\n return `\n if(payload.data.data.length === 0){\n var isEditor = !!${options && options.isEditor};\n if(isEditor){\n var fieldNames = ${JSON.stringify(fieldNames)};\n var emptyDoc = {};//这里如果不把每个字段值设置为空的话,表单上会显示上一次表单上的字段值\n fieldNames.forEach(function(n){\n emptyDoc[n] = null;\n });\n // 设计器中始终显示表单,有记录则显示第一条记录,没记录时显示为空表单\n payload.data.data = [emptyDoc];\n }\n else{\n return {\n status: 2,\n msg: \"${i18next.t('frontend_no_records_found')}\"\n }\n }\n }\n if(payload.data.data){\n var data = payload.data.data[0];\n var gridAndObjectFieldsName = ${JSON.stringify(gridAndObjectFieldsName)};\n try{\n ${scriptStr}\n ${getScriptForAddUrlPrefixForImgFields(fields)}\n ${getScriptForRewriteValueForFileFields(fields)}\n }catch(e){\n console.error(e)\n }\n // 原始记录\n var record = _.cloneDeep(data);\n try{\n _.each(gridAndObjectFieldsName, function(name){\n data[name] = data._display && data._display[name];\n })\n }catch(e){\n console.error(e)\n }\n payload.data = data;\n payload.data.__objectName = \"${object.name}\";\n payload.data.__record = record;\n window.postMessage(Object.assign({type: \"record.loaded\"}, {record: record}), \"*\")\n }\n if(payload.errors){\n payload.status = 2;\n payload.msg = payload.errors[0].message;\n }\n ${options && options.initApiAdaptor || ''}\n return payload;\n`\n}\n\nexport async function getReadonlyFormInitApi(object, recordId, fields, options){\n let findOneOptions;\n if (!recordId && options && options.isEditor) {\n // 设计器中只读表单返回第一条记录\n findOneOptions = {\n filters: [],\n queryOptions: \"top: 1\"\n };\n }\n return {\n method: \"post\",\n url: graphql.getApi() + '&objectName=${objectName}' + \"&recordId=${recordId}\",\n cache: API_CACHE,\n requestAdaptor: `\n ${options && options.initApiRequestAdaptor || ''}\n return api;\n `,\n adaptor: getReadonlyFormAdaptor(object, fields, options),\n data: await graphql.getFindOneQuery(object, recordId, fields, findOneOptions),\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nfunction getConvertDataScriptStr(fields){\n const refFields = _.filter(fields, function(field){return field.name.indexOf('.') < 0 && (field.type == 'lookup' || field.type == 'master_detail') && field.reference_to});\n let scriptStr = '';\n _.each(refFields, function(field){\n if(!_.includes(OMIT_FIELDS, field.name)){\n const valueField = field.reference_to_field || '_id';\n if(field.multiple){\n scriptStr = scriptStr + `data.${field.name} = _.map(data.${field.name}, '${valueField}');`\n }else{\n scriptStr = scriptStr + `data.${field.name} = data.${field.name} ? data.${field.name}.${valueField}:null;`\n }\n }\n })\n return scriptStr;\n}\n\n/*\n img/avatar字段值添加URL前缀使其在amis中正常显示图片。\n*/\nfunction getScriptForAddUrlPrefixForImgFields(fields){\n let imgFieldsKeys = [];\n let imgFields = {};\n fields.forEach((item)=>{\n if(_.includes(['image','avatar'], item.type)){\n imgFieldsKeys.push(item.name);\n imgFields[item.name] = {\n name: item.name,\n type: item.type,\n multiple: item.multiple\n };\n }\n })\n if(!imgFieldsKeys.length){\n return '';\n }\n return `\n // image字段值添加URL前缀\n let imgFieldsKeys = ${JSON.stringify(imgFieldsKeys)};\n let imgFields = ${JSON.stringify(imgFields)};\n imgFieldsKeys.forEach((item)=>{\n let imgFieldValue = data[item];\n let imgFieldDisplayValue = data._display && data._display[item];\n if(imgFieldValue && imgFieldValue.length){\n let fieldProps = imgFields[item];\n if(fieldProps.multiple){\n if(imgFieldDisplayValue instanceof Array){\n data[item] = imgFieldDisplayValue.map((i)=>{ \n const url = window.getImageFieldUrl(i.url);\n return url;\n });\n }\n }else{\n const url = imgFieldDisplayValue && window.getImageFieldUrl(imgFieldDisplayValue.url);\n data[item] = url;\n }\n }\n })\n `\n}\n\n/*\n file字段值重写使其在amis中正常显示附件名、点击附件名下载文件。\n*/\nfunction getScriptForRewriteValueForFileFields(fields){\n let fileFieldsKeys = [];\n let fileFields = {};\n fields.forEach((item)=>{\n if(item.type === 'file'){\n fileFieldsKeys.push(item.name);\n fileFields[item.name] = {\n name: item.name,\n multiple: item.multiple\n };\n }\n })\n if(!fileFieldsKeys.length){\n return '';\n }\n return `\n // file字段值重写以便编辑时正常显示附件名、点击附件名正常下载附件\n let fileFieldsKeys = ${JSON.stringify(fileFieldsKeys)};\n let fileFields = ${JSON.stringify(fileFields)};\n fileFieldsKeys.forEach((item)=>{\n let fileFieldValue = data[item];\n let fileFieldDisplayValue = data._display && data._display[item];\n if(fileFieldValue && fileFieldValue.length){\n if(fileFields[item].multiple){\n if(fileFieldDisplayValue instanceof Array){\n data[item] = fileFieldDisplayValue.map((item, index)=>{ \n return {\n value: fileFieldValue[index],\n name: item.name,\n url: item.url + \"?download=true\",\n state: \"uploaded\"\n }\n });\n }\n }else{\n data[item] = [{\n value: fileFieldValue,\n name: fileFieldDisplayValue.name,\n url: fileFieldDisplayValue.url + \"?download=true\",\n state: \"uploaded\"\n }];\n }\n }\n })\n `\n}\n\nexport async function getEditFormInitApi(object, recordId, fields, options){\n const data = await graphql.getFindOneQuery(object, recordId, fields);\n data.recordId = \"${recordId}\";\n data.objectName = \"${objectName}\";\n data.uiSchema = \"${uiSchema}\";\n data.global = \"${global}\";\n data.context = \"${context}\";\n data.defaultData = \"${defaultData}\";\n data._master = \"${_master}\";\n \n return {\n method: \"post\",\n url: graphql.getApi() + '&objectName=${objectName}' ,\n // sendOn: \"!!this.recordId\",\n cache: API_CACHE,\n requestAdaptor: `\n // 所有不想在network请求中发送的数据都应该从data中分离出来,data变量只需要留下query才需要发送出去\n var { recordId, objectName, uiSchema, global, context, ...data} = api.data;\n if(!recordId){\n // 新建则不请求任何数据\n data.query = \"{data:\" + objectName + \"(filters: \" + JSON.stringify([\"_id\", \"=\", null]) + \", top: 1){_id}}\";\n }\n api.data = data;\n ${options.initApiRequestAdaptor || ''}\n return api;\n `,\n adaptor: `\n const recordId = api.body.recordId;\n let initialValues={};\n if(recordId && payload.data.data){\n var data = payload.data.data[0];\n const dataKeys = _.keys(data);\n const uiSchema = api.body.uiSchema;\n const fieldKeys = uiSchema && _.keys(uiSchema.fields);\n\n if(data){\n ${getScriptForAddUrlPrefixForImgFields(fields)}\n ${getScriptForRewriteValueForFileFields(fields)}\n\n _.each(dataKeys, function(key){\n if(fieldKeys.indexOf(key)<0 && key !== \"_display\"){\n delete data[key];\n }\n })\n \n //初始化接口返回的字段移除字段值为null的字段\n for (key in data){\n if(data[key] === null){\n delete data[key];\n }\n }\n };\n initialValues = data;\n }\n else{\n var uiSchema = api.body.uiSchema;\n var defaultData = api.body.defaultData;\n var defaultValues = {};\n _.each(uiSchema && uiSchema.fields, function(field){\n var value = SteedosUI.getFieldDefaultValue(field, api.body.global);\n if(!_.isNil(value)){\n defaultValues[field.name] = value;\n }\n });\n if(defaultData && _.isObject(defaultData) && !_.isArray(defaultData)){\n defaultValues = Object.assign({}, defaultValues, defaultData)\n }\n if(uiSchema.form){\n try{\n var objectFormConfig = JSON.parse(uiSchema.form);\n var formInitialValuesFun = objectFormConfig.initialValues;\n if(formInitialValuesFun){\n formInitialValuesFun = new Function(\"return \" + formInitialValuesFun)();\n }\n if(typeof formInitialValuesFun === \"function\"){\n initialValues = formInitialValuesFun.apply({doc: defaultValues || {} , global: api.body.global, master: api.body._master })\n }\n }\n catch(ex){\n console.warn(ex);\n }\n }\n if(_.isObject(initialValues)){\n // uiSchema.form.initialValues为函数且执行后为json,则优先取initialValues中的默认值\n initialValues = Object.assign({}, defaultValues, initialValues);\n }\n else{\n initialValues = defaultValues;\n }\n }\n // data下的变量需要在保存接口(getSaveApi)中被删除。\n payload.data = {\n ...initialValues\n }\n ${options.initApiAdaptor || ''}\n return payload;\n `,\n responseData: {\n initialValues: \"$$\",\n editFormInited: true\n },\n data: data,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\n\nexport function getSaveApi(object, recordId, fields, options){\n return {\n method: 'post',\n url: graphql.getApi(),\n data: graphql.getSaveQuery(object, recordId, fields, options),\n requestAdaptor: graphql.getSaveRequestAdaptor(fields, options),\n responseData: {\n \"recordId\": \"${record._id}\"\n },\n adaptor: `\n if(payload.errors){\n delete payload.data;\n payload.status = 2;\n payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;\n }\n ${options.apiAdaptor || ''}\n return payload;\n `,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nexport function getBatchDelete(objectName){\n return {\n method: 'post',\n url: graphql.getApi(),\n requestAdaptor: `\n var ids = api.data.ids.split(\",\");\n var deleteArray = [];\n ids.forEach((id,index)=>{\n deleteArray.push(\\`delete__\\${index}:${objectName}__delete(id: \"\\${id}\")\\`);\n })\n api.data = {query: \\`mutation{\\${deleteArray.join(',')}}\\`};\n return api;\n `,\n data: {\n ids: `\\${ids}`\n },\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}","import { getApi, getRecordPermissionsApi } from './fields/table';\nimport { getSaveApi } from './api';\nimport { each, values } from 'lodash';\nimport * as graphql from './graphql'\nimport _, { isEmpty, omitBy, isNil } from 'lodash';\nimport { i18next } from \"../../../i18n\"\n\nexport const DEFAULT_CALENDAR_OPTIONS = {\n startDateExpr: \"start\",\n endDateExpr: \"end\",\n allDayExpr: \"is_all_day\",\n textExpr: \"name\"\n};\n\nexport async function getCalendarApi(mainObject, fields, options) {\n if (!options) {\n options = {};\n }\n const calendarOptions = options.calendarOptions;\n const searchableFields = [];\n let { filter, sort, top, setDataToComponentId = '' } = options;\n\n if (!top) {\n // 日历请求不翻页\n top = 200;\n }\n\n if (_.isArray(filter)) {\n filter = _.map(filter, function (item) {\n if (item.operation) {\n return [item.field, item.operation, item.value];\n } else {\n return item\n }\n })\n }\n if (!filter) {\n filter = [];\n }\n\n _.each(fields, function (field) {\n if (field.searchable) {\n searchableFields.push(field.name);\n }\n })\n\n const idFieldName = mainObject.idFieldName || \"_id\";\n let valueField = mainObject.key_field || '_id';\n const api = await getApi(mainObject, null, fields, { alias: 'rows', limit: top, queryOptions: `filters: {__filters}, top: {__top}, skip: {__skip}, sort: \"{__sort}\"` });\n api.data.$term = \"$term\";\n api.data.$self = \"$$\";\n api.data.filter = \"$filter\";\n api.data.pageSize = top || 10;\n api.requestAdaptor = `\n let selfData = JSON.parse(JSON.stringify(api.data.$self));\n var filters = api.data.filter || ${JSON.stringify(filter)} || [];\n const eventFetchInfo = selfData.fetchInfo;\n const startDateExpr = \"${calendarOptions.startDateExpr}\";\n const endDateExpr = \"${calendarOptions.endDateExpr}\";\n const eventDurationFilters = [[endDateExpr, \">=\", eventFetchInfo.start], [startDateExpr, \"<=\", eventFetchInfo.end]];\n if(_.isEmpty(filters)){\n filters = eventDurationFilters;\n }else{\n filters = [filters, 'and', eventDurationFilters]\n }\n\n if(api.data.$self.additionalFilters){\n filters.push(api.data.$self.additionalFilters)\n }else if(api.data.$self.event.data.additionalFilters){\n filters.push(api.data.$self.event.data.additionalFilters)\n }\n\n var pageSize = api.data.pageSize || 10;\n var pageNo = api.data.pageNo || 1;\n var skip = (pageNo - 1) * pageSize;\n var orderBy = api.data.orderBy || '';\n var orderDir = api.data.orderDir || '';\n var sort = orderBy + ' ' + orderDir;\n sort = orderBy ? sort : \"${sort}\";\n var allowSearchFields = ${JSON.stringify(searchableFields)};\n if(api.data.$term){\n filters = [[\"name\", \"contains\", \"'+ api.data.$term +'\"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n filters = [[\"${valueField.name}\", \"=\", selfData.value]];\n }\n var searchableFilter = SteedosUI.getSearchFilter(selfData) || [];\n\n if(searchableFilter.length > 0){\n if(filters.length > 0 ){\n filters = [filters, 'and', searchableFilter];\n }else{\n filters = searchableFilter;\n }\n }\n\n if(allowSearchFields){\n allowSearchFields.forEach(function(key){\n const keyValue = selfData[key];\n if(_.isString(keyValue)){\n filters.push([key, \"contains\", keyValue]);\n }else if(_.isArray(keyValue) || _.isBoolean(keyValue) || keyValue){\n filters.push([key, \"=\", keyValue]);\n }\n })\n }\n\n if(selfData.__keywords && allowSearchFields){\n const keywordsFilters = [];\n allowSearchFields.forEach(function(key, index){\n const keyValue = selfData.__keywords;\n if(keyValue){\n keywordsFilters.push([key, \"contains\", keyValue]);\n if(index < allowSearchFields.length - 1){\n keywordsFilters.push('or');\n }\n }\n })\n filters.push(keywordsFilters);\n }\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim());\n delete api.data.$term;\n delete api.data.filter;\n delete api.data.pageSize;\n delete api.data.pageNo;\n delete api.data.orderBy;\n delete api.data.orderDir;\n return api;\n `\n api.adaptor = `\n window.postMessage(Object.assign({type: \"listview.loaded\"}), \"*\");\n const setDataToComponentId = \"${setDataToComponentId}\";\n if(setDataToComponentId){\n var scope = SteedosUI.getRef(api.body.$self.scopeId);\n var setDataToComponent = scope && scope.getComponentById(setDataToComponentId);\n if(setDataToComponent){\n setDataToComponent.setData({$count: payload.data.count});\n }\n // SteedosUI.getRef(api.body.$self.scopeId)?.getComponentById(setDataToComponentId)?.setData({$count: payload.data.count})\n }\n const rows = payload.data.rows || [];\n const selfData = api.data.$self;\n const events = rows.map(function(n){\n return {\n id: n[\"${idFieldName}\"],\n title: n[\"${calendarOptions.textExpr}\"],\n start: n[\"${calendarOptions.startDateExpr}\"],\n end: n[\"${calendarOptions.endDateExpr}\"],\n allDay: n[\"${calendarOptions.allDayExpr}\"],\n extendedProps: n\n }\n });\n const successCallback = selfData.successCallback;\n const failureCallback = selfData.failureCallback;\n successCallback(events);\n return payload;\n `;\n return api;\n}\n\nexport function getCalendarRecordPermissionsApi(mainObject, recordId) {\n const api = getRecordPermissionsApi(mainObject, recordId, { alias: 'rows', limit: 1, fields: [\"allowEdit\"] });\n api.data.$self = \"$$\";\n api.adaptor = `\n const rows = payload.data.rows || [];\n const selfData = api.data.$self;\n const revert = selfData.revert;\n const recordPermissions = rows[0] && rows[0].recordPermissions;\n const editable = !!(recordPermissions && recordPermissions.allowEdit);\n if(!editable){\n // 没有权限时还原\n revert && revert();\n }\n payload.data.editable = editable;\n return payload;\n `;\n return api;\n}\n\nexport function getCalendarRecordSaveApi(object, calendarOptions) {\n const formData = {};\n const idFieldName = object.idFieldName || \"_id\";\n formData[idFieldName] = \"${event.data.event.id}\";\n const nameFieldKey = object.NAME_FIELD_KEY || \"name\";\n formData[nameFieldKey] = \"${event.data.event.title}\";\n formData[calendarOptions.startDateExpr] = \"${event.data.event.start}\";\n formData[calendarOptions.endDateExpr] = \"${event.data.event.end}\";\n formData[calendarOptions.allDayExpr] = \"${event.data.event.allDay}\";\n // formData[calendarOptions.textExpr] = \"${event.data.event.title}\";\n const apiData = {\n objectName: \"${objectName}\",\n $: formData,\n $self: \"$$\"\n };\n const saveDataTpl = `\n const formData = api.data.$;\n const objectName = api.data.objectName;\n let query = \\`mutation{record: \\${objectName}__update(id: \"\\${formData.${idFieldName}}\", doc: {__saveData}){${idFieldName}}}\\`;\n delete formData.${idFieldName};\n let __saveData = JSON.stringify(JSON.stringify(formData));\n `;\n const requestAdaptor = `\n ${saveDataTpl}\n api.data.query = query.replace('{__saveData}', __saveData);\n return api;\n `;\n\n return {\n method: 'post',\n url: graphql.getApi(),\n data: apiData,\n requestAdaptor: requestAdaptor,\n adaptor: `\n if(payload.errors){\n payload.status = 2;\n payload.msg = payload.errors[0].message;\n const revert = api.data.$self.event.data.revert;\n revert && revert();\n }\n return payload;\n `,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n };\n}\n\n/**\n * 列表视图Calendar amisSchema\n * @param {*} objectSchema 对象UISchema\n * @returns amisSchema\n */\nexport async function getObjectCalendar(objectSchema, calendarOptions, options) {\n const permissions = objectSchema.permissions;\n if (!options) {\n options = {};\n }\n\n calendarOptions = Object.assign({}, DEFAULT_CALENDAR_OPTIONS, omitBy(calendarOptions, isNil));\n\n const titleFields = calendarOptions.title || [\n calendarOptions.startDateExpr,\n calendarOptions.endDateExpr,\n calendarOptions.allDayExpr,\n calendarOptions.textExpr\n ];\n let fields = [];\n each(titleFields, function (n) {\n if (objectSchema.fields[n]) {\n fields.push(objectSchema.fields[n]);\n }\n });\n\n if (objectSchema.fields[calendarOptions.allDayExpr]) {\n fields.push(objectSchema.fields[calendarOptions.allDayExpr]);\n }\n\n let sort = options.sort;\n if (!sort) {\n const sortField = options.sortField;\n const sortOrder = options.sortOrder;\n if (sortField) {\n let sortStr = sortField + ' ' + sortOrder || 'asc';\n sort = sortStr;\n }\n }\n let initialView = calendarOptions.currentView;\n if (initialView) {\n // day, week, month, agenda\n switch (initialView) {\n case \"day\":\n initialView = \"timeGridDay\"\n break;\n case \"week\":\n initialView = \"timeGridWeek\"\n break;\n case \"month\":\n initialView = \"dayGridMonth\"\n break;\n case \"agenda\":\n initialView = \"listWeek\"\n break;\n }\n }\n else {\n initialView = \"timeGridWeek\";\n }\n\n options.calendarOptions = calendarOptions;\n const api = await getCalendarApi(objectSchema, fields, options);\n\n const onGetEventsScript = `\n const api = ${JSON.stringify(api)};\n event.data.calendarOptions = ${JSON.stringify(calendarOptions)};\n doAction({\n \"actionType\": 'ajax',\n \"args\": {\n \"api\": api\n },\n });\n `;\n\n const onSelectScript = `\n const data = event.data;\n const doc = {};\n doc[\"${calendarOptions.startDateExpr}\"] = data.start;\n doc[\"${calendarOptions.endDateExpr}\"] = data.end;\n doc[\"${calendarOptions.allDayExpr}\"] = data.allDay;\n doc[\"${calendarOptions.textExpr}\"] = data.title;\n // ObjectForm会认作用域下的变量值\n // TODO: 待组件支持initValues属性后应该改掉,不应该通过data直接传值\n // TODO: 全天事件属性传入doc了但是没有生效,需要手动在ObjectForm中勾选全天事件\n const title = \"${i18next.t('frontend_form_new')} ${objectSchema.label}\";\n doAction(\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": title,\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"objectApiName\": \"\\${objectName}\",\n \"mode\": \"edit\",\n \"defaultData\": doc,\n //改回为通用的提交事件\n // \"onEvent\": {\n // \"submitSucc\": {\n // \"weight\": 0,\n // \"actions\": [\n // {\n // \"actionType\": \"custom\",\n // \"script\": \"event.data.view?.calendar.refetchEvents();\"\n // }\n // ]\n // }\n // }\n }\n ],\n \"closeOnEsc\": false,\n \"closeOnOutside\": false,\n \"showCloseButton\": true,\n \"size\": \"lg\"\n }\n });\n `;\n\n const onEventClickScript = `\n const data = event.data;\n const eventData = data.event;\n const appId = data.appId;\n const objectName = data.objectName;\n const eventId = data.event && data.event.id;\n doAction({\n \"actionType\": \"link\",\n \"args\": {\n \"link\": \"/app/\" + appId + \"/\" + objectName + \"/view/\" + eventId\n }\n });\n // doAction({\n // \"actionType\": \"dialog\",\n // \"dialog\": {\n // \"type\": \"dialog\",\n // \"title\": \"\",\n // \"body\": [\n // {\n // \"type\": \"steedos-record-detail\",\n // \"objectApiName\": \"\\${objectName}\",\n // \"recordId\": data.event && data.event.id\n // }\n // ],\n // \"closeOnEsc\": false,\n // \"closeOnOutside\": false,\n // \"showCloseButton\": true,\n // \"size\": \"lg\",\n // \"actions\": []\n // }\n // });\n `;\n\n const recordId = \"${event.id}\";\n const recordPermissionsApi = getCalendarRecordPermissionsApi(objectSchema, recordId);\n const recordSaveApi = getCalendarRecordSaveApi(objectSchema, calendarOptions);\n\n const businessHours = {\n daysOfWeek: [1, 2, 3, 4, 5],\n startTime: '08:00',\n endTime: '18:00',\n };\n if (!isEmpty(calendarOptions.startDayHour)) {\n businessHours.startTime = `${calendarOptions.startDayHour}:00`;\n }\n if (!isEmpty(calendarOptions.endDayHour)) {\n businessHours.endTime = `${calendarOptions.endDayHour}:00`;\n }\n\n // api.trackExpression=\"\\\\\\${additionalFilters}\";\n const onEvent = {\n \"getEvents\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {\n },\n \"actionType\": \"custom\",\n \"script\": onGetEventsScript\n }\n // {\n // \"actionType\": \"ajax\",\n // \"outputVar\": \"responseResult\",\n // \"args\": {\n // \"options\": {\n // },\n // \"api\": api\n // // {\n // // \"url\": \"111\",\n // // \"method\": \"post\",\n // // \"data\": {\n // // \"calendarOptions\": JSON.stringify(calendarOptions);\n // // }\n // // }\n // }\n // }\n ]\n },\n \"select\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {\n },\n \"actionType\": \"custom\",\n \"script\": onSelectScript\n }\n ]\n },\n \"eventClick\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onEventClickScript\n },\n // amis 升级到 3.2后,以下的\"actionType\": \"link\"方式拿不到appId和objectName了\n // {\n // \"actionType\": \"link\",\n // \"args\": {\n // \"link\": \"/app/${appId}/${objectName}/view/${event.id}\"\n // }\n // }\n ]\n },\n \"eventAdd\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {\n },\n \"actionType\": \"custom\",\n \"script\": \"console.log('eventAdd'); console.log(event);\"\n }\n ]\n },\n \"eventChange\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"actionType\": 'ajax',\n \"args\": {\n \"api\": recordPermissionsApi\n }\n },\n {\n \"actionType\": \"toast\",\n \"expression\": \"!event.data.editable\",\n \"args\": {\n \"msgType\": \"error\",\n \"msg\": i18next.t('frontend_message_no_permission_to_edit'),\n \"position\": \"top-center\"\n }\n },\n {\n \"actionType\": 'ajax',\n \"expression\": \"event.data.editable\",\n \"args\": {\n \"api\": recordSaveApi,\n \"messages\": {\n \"success\": objectSchema.label + i18next.t('frontend_message_modification_successful'),\n \"failed\": objectSchema.label + i18next.t('frontend_message_modification_successful')\n }\n }\n }\n ]\n },\n \"eventRemove\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {\n },\n \"actionType\": \"custom\",\n \"script\": \"console.log('eventRemove'); console.log(event);\"\n }\n ]\n },\n \"eventsSet\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {\n },\n \"actionType\": \"custom\",\n \"script\": \"console.log('eventsSet'); console.log(event);\"\n }\n ]\n },\n \"getRef\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": `service_${options.id}`,\n \"args\": {\n \"value\":{\n \"calendarRef\": \"${event.data.calendarRef}\"\n }\n },\n \"actionType\": \"setValue\",\n }\n ]\n }\n };\n\n Object.assign(onEvent, options.onEvent);\n\n const config = options.config || {};\n if(config.eventContent && typeof config.eventContent === \"string\"){\n const hasReturn = /\\breturn\\b/.test(config.eventContent);\n if(hasReturn){\n try {\n // 如果是包括return语句的字符串,则按函数解析,见 https://fullcalendar.io/docs/content-injection\n let fn = new Function(\"arg\", config.eventContent);\n config.eventContent = fn;\n } catch (e) {\n console.warn(e);\n }\n }\n }\n\n if(config.noEventsContent && typeof config.noEventsContent === \"string\"){\n const hasReturn = /\\breturn\\b/.test(config.noEventsContent);\n if(hasReturn){\n try {\n // 如果是包括return语句的字符串,则按函数解析,见 https://fullcalendar.io/docs/content-injection\n let fn = new Function(\"arg\", config.noEventsContent);\n config.noEventsContent = fn;\n } catch (e) {\n console.warn(e);\n }\n }\n }\n\n const amisSchema = {\n \"type\": \"steedos-fullcalendar\",\n \"label\": \"\",\n \"id\": options.id,\n \"name\": \"fullcalendar\",\n \"placeholder\":\"${additionalFilters}\",//用于触发reload\n \"editable\": permissions.allowEdit,\n \"selectable\": permissions.allowCreate,\n \"selectMirror\": permissions.allowCreate,\n \"initialView\": initialView,\n \"businessHours\": businessHours,\n \"views\":{\n listWeek: {\n buttonText: i18next.t('frontend_calendar_listWeek')\n }\n },\n ...config,\n \"onEvent\": onEvent\n };\n return amisSchema;\n}","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\n * 将例如像 a.b.c 或 a[1].b 的字符串转换为路径数组\n *\n * @param string 要转换的字符串\n */\n export const keyToPath = (string: string) => {\n const result = [];\n \n if (string.charCodeAt(0) === '.'.charCodeAt(0)) {\n result.push('');\n }\n \n string.replace(\n new RegExp(\n '[^.[\\\\]]+|\\\\[(?:([^\"\\'][^[]*)|([\"\\'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]|(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|$))',\n 'g'\n ),\n (match, expression, quote, subString) => {\n let key = match;\n if (quote) {\n key = subString.replace(/\\\\(\\\\)?/g, '$1');\n } else if (expression) {\n key = expression.trim();\n }\n result.push(key);\n return '';\n }\n );\n \n return result;\n };\n ","import isPlainObject from 'lodash/isPlainObject';\nimport {keyToPath} from './keyToPath';\n\n// 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。\nexport function createObject(\n superProps?: {[propName: string]: any},\n props?: {[propName: string]: any},\n properties?: any\n): object {\n if (superProps && Object.isFrozen(superProps)) {\n superProps = cloneObject(superProps);\n }\n\n const obj = superProps\n ? Object.create(superProps, {\n ...properties,\n __super: {\n value: superProps,\n writable: false,\n enumerable: false\n }\n })\n : Object.create(Object.prototype, properties);\n\n props &&\n isObject(props) &&\n Object.keys(props).forEach(key => (obj[key] = props[key]));\n\n return obj;\n}\n\nexport function cloneObject(target: any, persistOwnProps: boolean = true) {\n const obj =\n target && target.__super\n ? Object.create(target.__super, {\n __super: {\n value: target.__super,\n writable: false,\n enumerable: false\n }\n })\n : Object.create(Object.prototype);\n persistOwnProps &&\n target &&\n Object.keys(target).forEach(key => (obj[key] = target[key]));\n return obj;\n}\n\nexport function extendObject(\n target: any,\n src?: any,\n persistOwnProps: boolean = true\n) {\n const obj = cloneObject(target, persistOwnProps);\n src && Object.keys(src).forEach(key => (obj[key] = src[key]));\n return obj;\n}\n\nexport function isObject(obj: any) {\n const typename = typeof obj;\n return (\n obj &&\n typename !== 'string' &&\n typename !== 'number' &&\n typename !== 'boolean' &&\n typename !== 'function' &&\n !Array.isArray(obj)\n );\n}\n\nexport function setVariable(\n data: {[propName: string]: any},\n key: string,\n value: any,\n convertKeyToPath?: boolean\n) {\n data = data || {};\n\n if (key in data) {\n data[key] = value;\n return;\n }\n\n const parts = convertKeyToPath !== false ? keyToPath(key) : [key];\n const last = parts.pop() as string;\n\n while (parts.length) {\n let key = parts.shift() as string;\n if (isPlainObject(data[key])) {\n data = data[key] = {\n ...data[key]\n };\n } else if (Array.isArray(data[key])) {\n data[key] = data[key].concat();\n data = data[key];\n } else if (data[key]) {\n // throw new Error(`目标路径不是纯对象,不能覆盖`);\n // 强行转成对象\n data[key] = {};\n data = data[key];\n } else {\n data[key] = {};\n data = data[key];\n }\n }\n\n data[last] = value;\n}\n\nexport function deleteVariable(data: {[propName: string]: any}, key: string) {\n if (!data) {\n return;\n } else if (data.hasOwnProperty(key)) {\n delete data[key];\n return;\n }\n\n const parts = keyToPath(key);\n const last = parts.pop() as string;\n\n while (parts.length) {\n let key = parts.shift() as string;\n if (isPlainObject(data[key])) {\n data = data[key] = {\n ...data[key]\n };\n } else if (data[key]) {\n throw new Error(`目标路径不是纯对象,不能修改`);\n } else {\n break;\n }\n }\n\n if (data && data.hasOwnProperty && data.hasOwnProperty(last)) {\n delete data[last];\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-23 09:12:14\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-11-25 13:28:35\n * @Description: \n */\n\nimport * as Tpl from '../tpl';\nimport { Router } from '../../../router'\nimport { i18next } from '../../../../i18n'\n\nasync function getListBody(fields, options){\n const columns = [];\n for (const field of fields) {\n\n const tpl = await Tpl.getFieldTpl(field, options);\n\n let type = 'text';\n if(tpl){\n type = 'tpl';\n }\n if(!field.hidden && !field.extra){\n columns.push({\n name: field.name,\n label: field.label,\n sortable: field.sortable,\n // searchable: field.searchable,\n width: field.width,\n type: type,\n tpl: tpl,\n toggled: field.toggled\n // toggled: true \n })\n }\n };\n\n return {\n \"type\": \"hbox\",\n \"columns\": columns\n };\n}\n\nfunction getDefaultParams(options){\n return {\n perPage: options.top || options.perPage || 10\n }\n}\n\nexport async function getListSchema(fields, options){\n const listBody = await getListBody(fields, options);\n const columns = listBody.columns;\n return {\n mode: \"list\",\n name: \"thelist\",\n draggable: false,\n headerToolbar: ['reload'],\n defaultParams: getDefaultParams(options),\n syncLocation: false,\n keepItemSelectionOnPageChange: true,\n checkOnItemClick: false,\n labelTpl: `\\${name}`, //TODO 获取name字段\n listItem: {\n body: [...columns],\n actions: options.actions === false ? null : [\n {\n icon: \"fa fa-eye\",\n label: i18next.t('frontend_form_view'),\n type: \"button\",\n actionType: \"link\",\n link: Router.getObjectDetailPath({\n formFactor: options.formFactor, \n appId: options.appId, \n objectName: options.tabId, \n listView: options.listView,\n recordId: `\\${_id}`\n })\n }\n ]\n }\n }\n}\n\n\nexport async function getCardSchema(fields, options){\n let title = null;\n const titleField = _.find(fields, (f)=>{\n return f.name === options.labelFieldName;\n });\n if(titleField){\n title = await Tpl.getFieldTpl(titleField, options)\n }\n const listBody = await getListBody(_.filter(fields, (f)=>{\n return f.name != options.labelFieldName\n }), options);\n return {\n mode: \"cards\",\n name: \"cards\",\n draggable: false,\n headerToolbar: ['statistics', 'pagination'],\n defaultParams: getDefaultParams(options),\n syncLocation: false,\n keepItemSelectionOnPageChange: false,\n checkOnItemClick: false,\n labelTpl: `\\${${options.labelFieldName}}`,\n card: {\n \"type\": \"card\",\n \"header\": {\n \"title\": title\n },\n \"body\": [...listBody.columns]\n }\n }\n}","\nimport { toArray, mergeWith, isArray } from 'lodash';\n\n// lodash的defaultsDeep函数有bug,无法正确合并值为数值的节点,重写修正该函数\n// 源码出处:https://github.com/nodeutils/defaults-deep\nexport const defaultsDeep = (...args)=>{\n let output = {};\n toArray(args).reverse().forEach(item=> {\n mergeWith(output, item, (objectValue, sourceValue) => {\n return isArray(sourceValue) ? sourceValue : undefined;\n });\n });\n return output;\n};","/*\n * @Author: 殷亮辉 yinlianghui@hotoa.com\n * @Date: 2023-03-22 09:31:21\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-11-05 16:31:38\n */\nimport { get } from 'lodash'\n\nconst globalTag = '__G_L_O_B_A_L__';\n\nconst getParentPath = function (path) {\n var pathArr;\n if (typeof path === 'string') {\n pathArr = path.split('.');\n if (pathArr.length === 1) {\n return '#';\n }\n pathArr.pop();\n return pathArr.join('.');\n }\n return '#';\n}\n\nconst getValueByPath = function (formData, path) {\n if (path === '#' || !path) {\n return formData || {};\n } else if (typeof path === 'string') {\n return get(formData, path);\n } else {\n console.error('path has to be a string');\n }\n};\n\nexport const isExpression = function (func) {\n var pattern, reg1, reg2;\n if (typeof func !== 'string') {\n return false;\n }\n pattern = /^{{(.+)}}$/;\n reg1 = /^{{(function.+)}}$/;\n reg2 = /^{{(.+=>.+)}}$/;\n if (typeof func === 'string' && func.match(pattern) && !func.match(reg1) && !func.match(reg2)) {\n return true;\n }\n return false;\n};\n\nconst getMoment = () => {\n if (window.amisRequire) {\n return window.amisRequire(\"moment\");\n } else if (window.moment) {\n return window.moment;\n }\n}\n\nexport const getGlobalNowData = () => {\n let now = new Date();\n let moment = getMoment();\n let today = moment().utc();\n today.set(\"hours\", 0);\n today.set(\"minutes\", 0);\n today.set(\"seconds\", 0);\n today.set(\"milliseconds\", 0);\n today = today.toDate();\n let timeNow = moment();\n timeNow.set(\"year\", 1970);\n timeNow.set(\"month\", 0);\n timeNow.set(\"date\", 1);\n timeNow.set(\"hours\", timeNow.hours() + timeNow.utcOffset() / 60)\n timeNow.set(\"seconds\", 0);\n timeNow.set(\"milliseconds\", 0);\n timeNow = timeNow.toDate();\n return {\n now,\n today,\n timeNow\n };\n}\n\nexport const parseSingleExpression = function (func, formData, dataPath, global, userSession = {}) {\n if (global) {\n Object.assign(global, getGlobalNowData());\n }\n\n var error, funcBody, parent, parentPath, str;\n\n if (formData === void 0) {\n formData = {};\n }\n parentPath = getParentPath(dataPath);\n parent = getValueByPath(formData, parentPath) || {};\n if (typeof func === 'string') {\n funcBody = func.substring(2, func.length - 2);\n str = `\\n var $user=${JSON.stringify(userSession)}; return ` + funcBody.replace(/\\bformData\\b/g, JSON.stringify(formData).replace(/\\bglobal\\b/g, globalTag)).replace(/\\bglobal\\b/g, JSON.stringify(global)).replace(new RegExp('\\\\b' + globalTag + '\\\\b', 'g'), 'global').replace(/rootValue/g, JSON.stringify(parent));\n try {\n return Function(str)();\n } catch (_error) {\n error = _error;\n console.log(error, func, dataPath);\n return func;\n }\n } else {\n return func;\n }\n};","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-11-01 15:51:00\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-09-25 14:53:05\n * @Description: \n */\nimport { i18next } from \"../i18n\";\n\nexport const getSchema = async (uiSchema, ctx) => {\n const schemaApiAdaptor = `\n let formSchema = {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"\\${objectName}\",\n \"recordId\": \"\",\n \"mode\": \"edit\",\n \"layout\": \"normal\"\n };\n\n if (payload && payload.schema) {\n formSchema = _.isString(payload.schema) ? JSON.parse(payload.schema) : payload.schema;\n }\n\n const fields = ${JSON.stringify(uiSchema.fields)};\n const selectedRowResponseResult = api.body.selectedRowResponseResult;\n let defaultData = {}; \n\n if(!_.isEmpty(selectedRowResponseResult)){\n const fieldsKeys = _.keys(fields);\n // 如果新建记录时复制的数据中有omit或其他不相关字段数据时不应该一起保存到数据库,\n // 原规则见:https://github.com/steedos/steedos-frontend/issues/297\n _.forEach(selectedRowResponseResult, (val, key) => {\n if (fieldsKeys.indexOf(key) > -1 && fields[key].omit !== true) {\n defaultData[key] = val;\n }\n })\n }\n\n const _master = api.body._master;\n if(_master && _master._isRelated){\n const relatedKey = _master.relatedKey;\n const masterObjectName = _master.objectName;\n const recordId = _master.recordId;\n let relatedKeySaveValue = recordId;\n const relatedField = fields[relatedKey];\n if(relatedField.reference_to_field && relatedField.reference_to_field !== '_id'){\n relatedKeySaveValue = _master.record[relatedField.reference_to_field];\n }\n let relatedKeyValue; \n if(!_.isString(relatedField.reference_to)){\n relatedKeyValue = { o: masterObjectName, ids: [relatedKeySaveValue] };\n }else if (relatedField.multiple) {\n relatedKeyValue = [relatedKeySaveValue];\n } else {\n relatedKeyValue = relatedKeySaveValue;\n }\n defaultData[relatedKey]=relatedKeyValue;\n }\n\n if(!_.isEmpty(defaultData)){\n if(payload.schema){\n // 表单微页面第一层要求是page\n formSchema.data.defaultData = defaultData;\n }else{\n formSchema.defaultData = defaultData;\n }\n }\n\n return {\n data: formSchema\n };\n `;\n const onDialogCancelScript = `\n // 这里加setTimeout是因为amis的Bug,它会先触发cancel事件执行此脚本关闭父窗口然后再关闭子窗口\n // 正确的顺序应该是先关闭子窗口再关闭父窗口,顺序错了会造成第二次点击新建按钮的时候异常\n setTimeout(function(){\n doAction({\n \"actionType\": \"cancel\",\n \"componentId\": \"object_actions_drawer_${uiSchema.name}\"\n });\n }, 200);\n `;\n const getSelectedRowsScript = `\n const isLookup = event.data.isLookup;\n if(isLookup){\n // lookup弹出窗口的新建功能不需要支持复制新建\n return;\n }\n const uiSchema = event.data.uiSchema;\n const objectName = event.data.objectName;\n const listViewRef = event.context.scoped.getComponentById(\"listview_\" + objectName);\n const selectedItems = listViewRef && listViewRef.props.store.toJSON().selectedItems || [];\n event.data.selectedIds = _.map(selectedItems, uiSchema.idFieldName || '_id');\n `;\n return {\n \"type\": \"service\",\n \"body\": [\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_form_new'),\n \"id\": \"u:standard_new\",\n \"level\": \"default\",\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": getSelectedRowsScript\n },\n {\n \"actionType\": \"ajax\",\n \"outputVar\": \"selectedRowResponseResult\",\n \"args\": {\n \"api\": {\n \"url\": \"${context.rootUrl}/api/v1/${uiSchema.name}/${selectedIds|first}\",\n \"method\": \"get\"\n }\n },\n \"expression\": \"${selectedIds.length > 0}\"\n },\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"data\": {\n \"$master\": \"$$\",\n \"_master\": \"${_master}\",\n \"_master._isRelated\": \"${_isRelated}\",\n \"_master.relatedKey\": \"${relatedKey}\",\n \"appId\": \"${appId}\",\n \"objectName\": \"${objectName}\",\n \"context\": \"${context}\",\n \"global\": \"${global}\",\n \"listViewId\": \"${listViewId}\",\n \"displayAs\": \"${displayAs}\",\n \"uiSchema\": \"${uiSchema}\",\n \"isLookup\": \"${isLookup}\",\n \"listName\": \"${listName}\",\n \"selectedRowResponseResult\": \"${selectedRowResponseResult}\",\n },\n \"title\":i18next.t('frontend_form_new') + \" ${uiSchema.label | raw}\",\n \"body\": [\n {\n \"type\": \"service\",\n \"id\": \"u:1678e148c4d2\",\n \"messages\": {},\n \"schemaApi\": {\n \"data\": {\n \"isLookup\": \"${isLookup}\",\n \"_master\": \"${_master}\",\n \"url\": \"${context.rootUrl}/api/pageSchema/form?app=${appId}&objectApiName=${objectName}&formFactor=${formFactor}\",\n \"selectedRowResponseResult\": \"${selectedRowResponseResult}\"\n },\n \"url\": \"${context.rootUrl}/api/pageSchema/form?app=${appId}&objectApiName=${objectName}&formFactor=${formFactor}\",\n \"method\": \"get\",\n \"messages\": {\n },\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"requestAdaptor\": \"return { ...api, url: api.body.url }\",\n \"adaptor\": schemaApiAdaptor\n }\n }\n ],\n \"showCloseButton\": true,\n \"id\": \"u:e11347411d2d\",\n \"closeOnEsc\": false,\n \"closeOnOutside\": false,\n \"size\": \"lg\",\n \"onEvent\": {\n \"cancel\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onDialogCancelScript,\n \"expression\": \"${window:innerWidth < 768}\",\n }\n ]\n }\n },\n \"actions\": [\n {\n type: 'button',\n actionType: 'cancel',\n label: i18next.t('frontend_form_cancel')\n },\n {\n type: 'button',\n label: i18next.t('frontend_form_save_and_new'),\n actionType: 'confirm',\n close: false,\n id: \"confirmAndNew\"\n },\n {\n type: 'button',\n actionType: 'confirm',\n label: i18next.t('frontend_form_save'),\n primary: true\n },\n ]\n }\n }\n ]\n }\n }\n }\n ],\n \"regions\": [\n \"body\"\n ],\n \"className\": \"p-0 border-0\",\n \"id\": \"u:aef99d937b10\"\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-13 15:18:03\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-04-11 10:34:26\n * @Description: \n */\nimport { fetchAPI } from './steedos.client';\n\nexport async function getPage({type, pageId = '', appId, objectName = '', recordId = '', formFactor = 'LARGE'}){\n const api = `/api/pageSchema/${type}?app=${appId}&objectApiName=${objectName}&recordId=${recordId}&pageId=${pageId}&formFactor=${formFactor}`;\n const page = await fetchAPI(api);\n if (page && page.schema) {\n page.schema = JSON.parse(page.schema)\n if(page.schema.data){\n delete page.schema.data.recordId;\n delete page.schema.data.objectName;\n delete page.schema.data.context;\n delete page.schema.data.global\n }\n return page;\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-11-01 15:49:58\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-06-28 23:22:31\n * @Description:\n */\nimport { i18next } from \"../i18n\";\nimport { getPage } from '../lib/page'\n\nexport const getSchema = async (uiSchema, ctx) => {\n const title = i18next.t('frontend_form_edit') + \" \" + uiSchema.label;\n\n const defaultFormSchema = {\n type: \"steedos-object-form\",\n label: \"对象表单\",\n objectApiName: \"${objectName}\",\n recordId: \"${recordId}\",\n id: \"u:d2b0c083c38f\",\n mode: \"edit\",\n };\n\n let formSchema = defaultFormSchema;\n const page = await getPage({\n type: \"form\",\n appId: ctx.appId,\n objectName: ctx.objectName,\n formFactor: ctx.formFactor,\n });\n\n if (page) {\n formSchema = _.isString(page.schema)\n ? JSON.parse(page.schema)\n : page.schema;\n }\n \n const onDialogCancelScript = `\n // 这里加setTimeout是因为amis的Bug,它会先触发cancel事件执行此脚本关闭父窗口然后再关闭子窗口\n // 正确的顺序应该是先关闭子窗口再关闭父窗口,顺序错了会造成第二次点击编辑按钮的时候异常\n setTimeout(function(){\n doAction({\n \"actionType\": \"cancel\",\n \"componentId\": \"object_actions_drawer_${uiSchema.name}\"\n });\n }, 200);\n `;\n\n return {\n type: \"service\",\n body: [\n {\n type: \"button\",\n label: i18next.t('frontend_form_edit'),\n id: \"u:standard_edit\",\n onEvent: {\n click: {\n actions: [\n {\n actionType: \"dialog\",\n dialog: {\n type: \"dialog\",\n title: title,\n bodyClassName: \"\",\n body: [formSchema],\n id: \"u:ee95697baa4f\",\n closeOnEsc: false,\n closeOnOutside: false,\n showCloseButton: true,\n size: \"lg\",\n \"onEvent\": {\n \"cancel\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onDialogCancelScript,\n \"expression\": \"${window:innerWidth < 768}\",\n }\n ]\n }\n },\n },\n },\n ],\n weight: 0,\n },\n },\n },\n ],\n regions: [\"body\"],\n className: \"\",\n id: \"u:3c5cbc0429bb\",\n };\n};\n","/*\n * @Author: 殷亮辉 yinlianghui@hotoa.com\n * @Date: 2023-03-22 09:31:21\n * @LastEditors: Please set LastEditors\n * @LastEditTime: 2023-04-12 10:35:36\n */\nimport { i18next } from \"../i18n\";\nexport const getSchema = (uiSchema)=>{\n return {\n \"type\": \"service\",\n \"className\": \"p-0\",\n \"body\": [\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_form_delete'),\n \"confirmText\": i18next.t('frontend_delete_many_confirm_text'),\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"args\": {\n \"api\": {\n \"method\": \"post\",\n \"url\": \"${context.rootUrl}/graphql\",\n \"data\": {\n \"&\": \"$$\",\n \"recordId\": \"${recordId}\",\n \"objectName\": \"${objectName}\"\n },\n \"requestAdaptor\": \"const {recordId, objectName} = api.body; var deleteArray = []; deleteArray.push(`delete:${objectName}__delete(id: \\\"${recordId}\\\")`); api.data = {query: `mutation{${deleteArray.join(',')}}`}; return api;\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"adaptor\": `\n if(payload.errors){\n payload.status = 2;\n payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;\n }\n return payload;\n `,\n }\n },\n \"actionType\": \"ajax\"\n },\n {\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": `@data.changed.${uiSchema.name}`\n },\n \"data\": {\n \"objectName\": `${uiSchema.name}`,\n \"__deletedRecord\": true\n }\n },\n {\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": \"@data.changed.${_master.objectName}\"\n },\n \"data\": {\n \"objectName\": \"${_master.objectName}\",\n \"_isRelated\": \"${_isRelated}\"\n },\n \"expression\": `\\${_master.objectName != '${uiSchema.name}' && _master.objectName}`\n }\n ]\n }\n }\n }\n ],\n \"regions\": [\n \"body\"\n ]\n }\n}","import { i18next } from \"../i18n\";\n\nexport const getSchema = (uiSchema) => {\n return {\n type: \"service\",\n body: [\n {\n type: \"button\",\n label: i18next.t('frontend_import_data'),\n id: \"u:import_data\",\n onEvent: {\n click: {\n actions: [\n {\n actionType: \"dialog\",\n dialog: {\n data: {\n \"&\": \"$$\",\n \"object_name\": \"${objectName}\"\n },\n type: \"dialog\",\n title: i18next.t('frontend_import_data'),\n body: [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"queue_import_history\",\n \"recordId\": \"\",\n \"mode\": \"edit\",\n \"layout\": \"normal\",\n \"defaultData\":{\n \"object_name\": \"${objectName}\"\n },\n \"fieldsExtend\":{\n \"object_name\": {\n \"amis\": {\n \"hidden\": true\n }\n }\n },\n \"form\": {\n debug: false,\n resetAfterSubmit: false,\n initApi: {\n url: '/api/v1/queue_import_history/${recordId}?fields=[\"state\"]',\n sendOn: 'this.recordId',\n responseData: {\n importState: \"${state}\"\n }\n },\n interval: 3000,\n stopAutoRefreshWhen: \"this.importState === 'finished'\",\n initFetch: false,\n onEvent: {\n inited: {\n weight: 0,\n actions: [\n {\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": `@data.changed.${uiSchema.name}`\n },\n \"data\": {\n \"objectName\": `${uiSchema.name}`,\n \"displayAs\": \"${displayAs}\",\n \"recordId\": \"xxxx\" //不可以省略,否则会进入进入记录详细页面\n },\n \"expression\": \"this.importState === 'finished'\"\n },\n {\n \"actionType\": \"closeDialog\",\n \"expression\": \"this.importState === 'finished'\"\n }\n ]\n },\n submitSucc: {\n weight: 0,\n actions: [\n {\n args: {\n api: {\n url: \"${context.rootUrl}/api/data/initiateImport\",\n method: \"post\",\n data: {\n eventData: \"${event.data}\",\n },\n dataType: \"json\",\n requestAdaptor:\n \"\\napi.data = {\\n importObjectHistoryId: api.body.eventData.result.data.recordId\\n}\\nreturn api;\",\n adaptor:\n \"payload.status = payload.status === 'success' ? 0 : payload.status;\\nconsole.log(\\\"payload ssss==>\\\", payload)\\nreturn payload;\",\n headers: {\n Authorization:\n \"Bearer ${context.tenantId},${context.authToken}\",\n },\n },\n messages: {\n success: i18next.t('frontend_import_data_message_success'),\n failed: i18next.t('frontend_import_data_message_failed'),\n },\n },\n actionType: \"ajax\",\n expression: \"event.data.result\",\n },\n ],\n },\n },\n closeDialogOnSubmit: false,\n }\n }\n ],\n id: \"u:dc05498d3bd4\",\n closeOnEsc: false,\n closeOnOutside: false,\n showCloseButton: true,\n size: \"lg\",\n },\n },\n ],\n weight: 0,\n },\n },\n level: \"default\",\n },\n ],\n regions: [\"body\"],\n className: \"p-0\",\n id: \"u:bd2f9c4e986f\",\n };\n};\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-11-07 17:00:38\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-08-24 16:44:42\n * @Description: \n */\nimport { i18next } from \"../i18n\";\n\nexport const getSchema = (uiSchema)=>{\n return {\n \"type\": \"service\",\n \"className\": \"p-0\",\n \"body\": [\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_form_view'),\n \"className\": \"border-none\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {\n \"blank\": false,\n \"url\": \"/app/${app_id}/${objectName}/view/${_id}?side_object=${objectName}&side_listview_id=${listName}\"\n },\n \"actionType\": \"link\"\n }\n ]\n }\n },\n \"id\": \"u:ef35c9ae1d19\"\n }\n ],\n \"regions\": [\n \"body\"\n ]\n }\n}","import { i18next } from \"../i18n\";\n\nexport const getSchema = async (uiSchema, ctx) => {\n const requestAdaptor = function () {\n let uiSchema = api.body.uiSchema;\n let list_views_name = api.body.listName;\n let list_views = uiSchema.list_views;\n const listViewPropsStoreKey = location.pathname + \"/crud/query\";\n const query = JSON.parse(sessionStorage.getItem(listViewPropsStoreKey));\n const { filters, sort, fields: select } = query;\n let filename = uiSchema.label + \"-\" + list_views[list_views_name].label;\n\n var url_tmp = api.url.split('?')[0];\n api.url = url_tmp + \"?$select=\" + encodeURIComponent(select.toString()) + \"&filename=\" + encodeURIComponent(filename);\n // 判断sort 和 filters\n if (sort.length > 0) {\n api.url += \"&$orderby=\" + encodeURIComponent(sort);\n }\n if (filters && filters.length > 0) {\n api.url = api.url + \"&filters=\" + encodeURIComponent(JSON.stringify(filters));\n }\n return api;\n }\n return {\n \"type\": \"service\",\n \"body\": [\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_export_excel'),\n \"id\": \"u:standard_export_excel\",\n \"level\": \"default\",\n \"disabledTip\": i18next.t('frontend_export_excel_toast'),\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [{\n \"componentId\": \"u:standard_export_excel\",\n \"actionType\": \"disabled\"\n },\n {\n \"args\": {\n \"api\": {\n \"url\": \"${context.rootUrl}/api/record/export/${objectName}\",\n \"method\": \"get\",\n \"messages\": {},\n \"requestAdaptor\": requestAdaptor.toString().match(/function[^{]+\\{([\\s\\S]*)\\}$/)[1],\n \"data\": {\n \"uiSchema\": \"${uiSchema}\",\n \"listName\": \"${listName}\"\n },\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n },\n \"actionType\": \"download\"\n },\n {\n \"componentId\": \"u:standard_export_excel\",\n \"actionType\": \"enabled\"\n }\n ]\n }\n }\n }\n ]\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-11-01 15:53:07\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-02-28 17:06:22\n * @Description: \n */\nimport { i18next } from \"../i18n\";\nimport * as standardNew from '../schema/standard_new.amis.js'\nimport * as standardEdit from '../schema/standard_edit.amis.js'\nimport * as standardDelete from '../schema/standard_delete.amis.js'\nimport * as standardImportData from '../schema/standard_import_data.amis.js'\nimport * as standardOpenView from '../schema/standard_open_view.amis.js'\nimport * as standardExportExcel from '../schema/standard_export_excel.amis.js'\n\nexport const StandardButtons = {\n getStandardNew: async (uiSchema, ctx)=>{\n return {\n type: 'amis_button',\n amis_schema: await standardNew.getSchema(uiSchema, ctx)\n }\n },\n getStandardEdit: async (uiSchema, ctx)=>{\n return {\n type: 'amis_button',\n amis_schema: await standardEdit.getSchema(uiSchema, ctx)\n }\n },\n getStandardDelete: async (uiSchema, ctx)=>{\n return {\n type: 'amis_button',\n amis_schema: await standardDelete.getSchema(uiSchema, ctx)\n }\n },\n getStandardDeleteMany: async (uiSchema, ctx)=>{\n return {\n type: 'script',\n todo: function(){\n const {\n appId,\n objectName,\n uiSchema\n } = this;\n const scopeId = this.scopeId || `amis-${appId}-${objectName}-listview`;\n const scope = this.scope || SteedosUI?.getRef(scopeId);\n //https://github.com/baidu/amis/pull/6807 .parent的改动是为适应3.2getComponentById的规则改动,不影响2.9\n const listViewRef = scope.parent?.getComponentById(`listview_${uiSchema.name}`);\n if(_.isEmpty(listViewRef.props.store.toJSON().selectedItems)){\n listViewRef.handleAction({}, {\n \"actionType\": \"toast\",\n \"toast\": {\n \"items\": [\n {\n \"position\": \"top-right\",\n \"body\": i18next.t('frontend_delete_many_selected_required')\n }\n ]\n }\n })\n }else{\n listViewRef.handleBulkAction(listViewRef.props.store.toJSON().selectedItems,[],{},listViewRef.props.bulkActions[0]);\n }\n }\n }\n },\n getStandardImportData: async (uiSchema, ctx)=>{\n return {\n type: 'amis_button',\n amis_schema: await standardImportData.getSchema(uiSchema, ctx)\n }\n },\n getStandardOpenView: async (uiSchema, ctx)=>{\n return {\n type: 'amis_button',\n amis_schema: await standardOpenView.getSchema(uiSchema, ctx)\n }\n },\n getStandardExportExcel: async (uiSchema, ctx)=>{\n return {\n type: 'amis_button',\n amis_schema: await standardExportExcel.getSchema(uiSchema, ctx)\n }\n }\n}","import * as _ from 'lodash';\nimport { isExpression, parseSingleExpression } from \"./expression\";\nimport { getUISchema } from \"./objects\";\nimport { i18next } from '../i18n'\n\nimport { StandardButtons } from '../standard/button'\n\nconst getGlobalData = () => {\n return {\n now: new Date(),\n };\n};\n\nexport function getButtonVisibleOn(button){\n let visible= button.visible;\n\n if(button._visible){\n visible = button._visible;\n }\n\n if(_.isBoolean(visible)){\n visible = visible.toString();\n }\n\n if(visible){\n // if(visible.indexOf(\"Meteor.\") > 0 || visible.indexOf(\"Creator.\") > 0 || visible.indexOf(\"Session.\") > 0){\n // console.warn('无效的visible', visible)\n // return 'false';\n // }\n if(visible.trim().startsWith('function')){\n visible = `${visible}.apply({\n object: uiSchema\n }, [objectName, typeof _id === 'undefined' ? null: _id, typeof record === 'undefined' ? (typeof recordPermissions === 'undefined' ? {} : recordPermissions) : record.recordPermissions, data])`\n }\n }\n\n if(button.type === 'amis_button'){\n let amisSchema = button.amis_schema;\n if(_.isString(amisSchema)){\n amisSchema = JSON.parse(amisSchema);\n }\n if(amisSchema && amisSchema.body && amisSchema.body.length > 0){\n const btn1 = amisSchema.body[0];\n if(_.hasIn(btn1, 'visibleOn')){\n /* 当含有“更多”按钮或者“下拉”箭头按钮时,单个按钮的visibleOn需要合并到 “更多”按钮或者“下拉”箭头按钮的 visibleOn 中,用||隔开。\n visibleOn的格式需要保持一致; 不能是 js 和 ${xxx} 混合的表达式;\n visibleOn的值需要是js格式,因为默认的编辑、删除等系统按钮的visibleOn的格式就是js格式(function(){}); \n */\n return btn1.visibleOn\n } \n }\n }\n return visible;\n}\n\nexport const getButtonVisible = (button, ctx) => {\n if (button._visible) {\n if (_.startsWith(_.trim(button._visible), \"function\")) {\n window.eval(\"var fun = \" + button._visible);\n button.visible = fun;\n } else if (isExpression(button._visible)) {\n button.visible = (props) => {\n parseSingleExpression(\n button._visible,\n props.record,\n \"#\",\n getGlobalData(),\n props.userSession\n );\n };\n }\n }\n if (_.isFunction(button.visible)) {\n try {\n return button.visible(ctx);\n } catch (error) {\n // console.error(`${button.name} visible error: ${error}`);\n }\n } else {\n return button.visible;\n }\n};\n\n\nexport const standardButtonsTodo = {\n // 批量删除比较特殊, CRUD组件在外部无法触发批量操作action.\n standard_delete_many: function(){\n const {\n listViewId,\n uiSchema,\n scopeId\n } = this;\n const listViewRef = SteedosUI?.getRef(scopeId || listViewId).getComponentById(`listview_${uiSchema.name}`)\n \n if(_.isEmpty(listViewRef.props.store.toJSON().selectedItems)){\n listViewRef.handleAction({}, {\n \"actionType\": \"toast\",\n \"toast\": {\n \"items\": [\n {\n \"position\": \"top-right\",\n \"body\": \"请选择要删除的项\"\n }\n ]\n }\n })\n }else{\n listViewRef.handleBulkAction(listViewRef.props.store.toJSON().selectedItems,[],{},listViewRef.props.bulkActions[0]);\n }\n }\n};\n\n\n/**\n * 按钮显隐规则: 优先使用页面布局上的配置.\n * @param {*} uiSchema \n * @param {*} ctx \n * @returns \n */\nexport const getButtons = (uiSchema, ctx) => {\n const disabledButtons = uiSchema.permissions && uiSchema.permissions.disabled_actions;\n let buttons = _.sortBy(_.values(uiSchema.actions), \"sort\");\n if (_.has(uiSchema, \"allow_customActions\")) {\n buttons = _.filter(buttons, (button) => {\n return _.include(uiSchema.allow_customActions, button.name); // || _.include(_.keys(Creator.getObject('base').actions) || {}, button.name)\n });\n }\n if (_.has(uiSchema, \"exclude_actions\")) {\n buttons = _.filter(buttons, (button) => {\n return !_.include(uiSchema.exclude_actions, button.name);\n });\n }\n\n _.each(buttons, (button) => {\n button.objectName = uiSchema.name;\n if (\n ctx.isMobile &&\n [\"record\", \"record_only\"].indexOf(button.on) > -1 &&\n button.name != \"standard_edit\"\n ) {\n if (button.on == \"record_only\") {\n button.on = \"record_only_more\";\n } else {\n button.on = \"record_more\";\n }\n }\n });\n\n if (\n ctx.isMobile &&\n [\"cms_files\", \"cfs.files.filerecord\"].indexOf(uiSchema.name) > -1\n ) {\n _.map(buttons, (button) => {\n if (button.name === \"standard_edit\") {\n button.on = \"record_more\";\n }\n if (button.name === \"download\") {\n button.on = \"record\";\n }\n });\n }\n\n return _.filter(buttons, (button) => {\n return _.indexOf(disabledButtons, button.name) < 0 && button.name != 'standard_query';\n });\n};\n\nexport const getListViewButtons = (uiSchema, ctx) => {\n const buttons = getButtons(uiSchema, ctx);\n const listButtons = _.filter(buttons, (button) => {\n return button.on == \"list\";\n });\n return listButtons;\n};\n\nexport const getObjectDetailButtons = (uiSchema, ctx) => {\n const buttons = getButtons(uiSchema, ctx);\n const detailButtons = _.filter(buttons, (button) => {\n return button.on == \"record\" || button.on == \"record_only\";\n });\n return _.sortBy(detailButtons, \"sort\");\n};\n\nexport const getObjectDetailMoreButtons = (uiSchema, ctx) => {\n const buttons = getButtons(uiSchema, ctx);\n const moreButtons = _.filter(buttons, (button) => {\n return button.on == \"record_more\" || button.on == \"record_only_more\";\n });\n return _.sortBy(moreButtons, \"sort\");\n};\n\nexport const getListViewItemButtons = async (uiSchema, ctx)=>{\n const buttons = getButtons(uiSchema, ctx);\n const listButtons = _.filter(buttons, (button) => {\n return button.on == \"record\" || button.on == \"list_item\" || button.on === 'record_more';\n });\n return listButtons;\n}\n\nexport const getObjectRelatedListButtons = (uiSchema, ctx)=>{\n // const buttons = getButtons(uiSchema, ctx);\n // const relatedListButtons = _.filter(buttons, (button) => {\n // if(button.objectName === 'cms_files'){\n // // TODO:附件对象本身没有上传按钮,需要自定义\n // }else{\n // return button.name == \"standard_new\";\n // }\n // });\n // return relatedListButtons;\n const buttons = getButtons(uiSchema, ctx);\n const listButtons = _.filter(buttons, (button) => {\n return button.on == \"list\";\n });\n return listButtons;\n}\n\n/**\n * 由此函数负责内置按钮的转换\n * @param {*} objectName \n * @param {*} buttonName \n * @param {*} ctx \n * @returns \n */\nexport const getButton = async (objectName, buttonName, ctx)=>{\n const uiSchema = await getUISchema(objectName);\n const { props } = ctx;\n if(uiSchema){\n const buttons = await getButtons(uiSchema, ctx);\n const button = _.find(buttons, (button)=>{\n return button.name === buttonName\n });\n\n if(!button){\n return ;\n }\n\n if(button.name == 'standard_edit' && (button.todo === 'standard_edit' && button.type != \"amis_button\")){ // && button._visible.indexOf('Steedos.StandardObjects.Base.Actions.standard_edit.visible.apply') > 0\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n ...await StandardButtons.getStandardEdit(uiSchema, ctx)\n };\n }\n if(objectName != 'cms_files' && button.name == 'standard_new' && (button.todo === 'standard_new' && button.type != \"amis_button\")){ //&& button._visible.indexOf('Steedos.StandardObjects.Base.Actions.standard_new.visible.apply') > 0\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n ...await StandardButtons.getStandardNew(uiSchema, ctx)\n }\n }\n\n // 如果是standard_delete 且 _visible 中调用了 Steedos 函数, 则自动添加标准的删除功能\n if(button.name == 'standard_delete' && (button.todo === 'standard_delete' && button.type != \"amis_button\")){ // && button._visible.indexOf('Steedos.StandardObjects.Base.Actions.standard_delete.visible.apply') > 0\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n sort: button.sort,\n ...await StandardButtons.getStandardDelete(uiSchema, ctx)\n }\n }\n\n if(uiSchema.hasImportTemplates && button.name === 'standard_import_data'){\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n sort: button.sort,\n ...await StandardButtons.getStandardImportData(uiSchema, ctx)\n }\n }\n\n if(button.name === 'standard_export_excel'){\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n sort: button.sort,\n ...await StandardButtons.getStandardExportExcel(uiSchema, ctx)\n }\n }\n\n if(button.name === 'standard_open_view'){\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n sort: button.sort,\n ...await StandardButtons.getStandardOpenView(uiSchema, ctx)\n }\n }\n\n if(button.name === 'standard_delete_many'){\n return {\n label: button.label,\n name: button.name,\n on: button.on,\n sort: button.sort,\n ...await StandardButtons.getStandardDeleteMany(uiSchema, ctx)\n }\n }\n\n return button;\n\n }\n}\n\nexport const execute = (button, props) => {\n if (!button.todo) {\n return; //TODO 弹出提示未配置todo\n }\n\n if (_.isString(button.todo)) {\n if (_.startsWith(_.trim(button.todo), \"function\")) {\n window.eval(\"var fun = \" + button.todo);\n button.todo = fun;\n }\n }\n if (_.isFunction(button.todo)) {\n const todoThis = {\n objectName: props.objectName, \n object_name: props.objectName, \n object: props.uiSchema, \n record: props.record,\n recordId: props.recordId,\n record_id: props.recordId,\n ...props,\n action: button\n }\n return button.todo.apply(todoThis, [todoThis.objectName, todoThis.recordId]);\n }\n};\n\nexport const executeButton = execute;\n\n\nconst getObjectDetailHeaderButtons = (objectSchema, recordId)=>{\n const { name } = objectSchema;\n const buttons = getObjectDetailButtons(objectSchema, {});\n const moreButtons = getObjectDetailMoreButtons(objectSchema, {\n recordId: recordId,\n objectName: name\n })\n let amisButtonsSchema = _.map(buttons, (button) => {\n return {\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n className: `button_${button.name}`\n }\n })\n let moreButtonsVisibleOn = '';\n let dropdownButtons = _.map(moreButtons, (button, index) => {\n if(index === 0){\n moreButtonsVisibleOn = getButtonVisibleOn(button);\n }else{\n moreButtonsVisibleOn = moreButtonsVisibleOn + ' || ' +getButtonVisibleOn(button);\n }\n \n return {\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n }\n })\n return {\n buttons: amisButtonsSchema,\n moreButtons: dropdownButtons,\n moreButtonsVisibleOn\n };\n}\n\nexport const getObjectDetailButtonsSchemas = (objectSchema, recordId, ctx)=>{\n const { buttons, moreButtons, moreButtonsVisibleOn } = getObjectDetailHeaderButtons(objectSchema, recordId);\n if(ctx.formFactor === 'SMALL'){\n const dropdownButtons = [\n ..._.map(buttons, (button) => {\n button.className += ' w-full';\n return button;\n }),\n ..._.map(moreButtons, (button) => {\n button.className += ' w-full';\n return button;\n })\n ];\n\n let phoneMoreButtonsVisibleOn = '';\n _.forEach(dropdownButtons, (button, index) => {\n if(index === 0){\n phoneMoreButtonsVisibleOn = button.visibleOn;\n }else{\n phoneMoreButtonsVisibleOn = phoneMoreButtonsVisibleOn + ' || ' + button.visibleOn;\n }\n })\n\n return {\n \"type\": \"button\",\n \"icon\": \"fa fa-angle-down\",\n \"visibleOn\": phoneMoreButtonsVisibleOn,\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"drawer\",\n \"drawer\": {\n \"type\": \"drawer\",\n \"title\": i18next.t('frontend_operation'),\n \"id\": \"object_actions_drawer_\" + objectSchema.name,\n \"body\": [\n {\n \"type\": \"button-group\",\n \"id\": \"u:fd837823be5b\",\n \"vertical\": true,\n \"tiled\": true,\n \"buttons\": dropdownButtons,\n \"btnLevel\": \"enhance\",\n \"className\": \"w-full\",\n \"btnClassName\": \"w-full\",\n \"size\": \"lg\"\n }\n ],\n \"position\": \"bottom\",\n \"closeOnOutside\": true,\n \"resizable\": false,\n \"className\": \"buttons-drawer\",\n \"bodyClassName\": \"m-none p-none\",\n \"actions\": []\n }\n }\n ]\n }\n }\n }\n }else{\n if(moreButtons.length > 0){\n const dropdownButtonsSchema = {\n type: \"steedos-dropdown-button\",\n label: \"\",\n buttons: moreButtons,\n className: 'slds-icon ml-1',\n visibleOn: moreButtonsVisibleOn\n }\n buttons.push(dropdownButtonsSchema);\n }\n return buttons;\n }\n}\n\n\nexport const getObjectListViewButtonsSchemas = (objectSchema, ctx)=>{\n const buttons = getListViewButtons(objectSchema, ctx);\n if(ctx.formFactor === 'SMALL'){\n return {\n \"type\": \"button\",\n \"icon\": \"fa fa-angle-down\",\n \"className\": \"mr-0\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"drawer\",\n \"drawer\": {\n \"type\": \"drawer\",\n \"title\": i18next.t('frontend_operation'),\n \"id\": \"object_actions_drawer_\" + objectSchema.name,\n \"body\": [\n {\n \"type\": \"button-group\",\n \"id\": \"u:fd837823be5b\",\n \"vertical\": true,\n \"tiled\": true,\n \"buttons\": [\n ..._.map(buttons, (button)=>{\n return {\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n className: `button_${button.name} w-full`\n }\n })\n ],\n \"btnLevel\": \"enhance\",\n \"className\": \"w-full\",\n \"btnClassName\": \"w-full\",\n \"size\": \"lg\"\n }\n ],\n \"position\": \"bottom\",\n \"closeOnOutside\": true,\n \"resizable\": false,\n \"className\": \"buttons-drawer\",\n \"bodyClassName\": \"m-none p-none\",\n \"actions\": []\n }\n }\n ]\n }\n }\n }\n }else{\n return _.map(buttons, (button) => {\n return {\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n className: `button_${button.name}`\n }\n });\n }\n}\n\nexport const getObjectRecordDetailRelatedListButtonsSchemas = (objectSchema, ctx)=>{\n const buttons = getObjectRelatedListButtons(objectSchema, ctx);\n if(ctx.formFactor === 'SMALL'){\n return {\n \"type\": \"button\",\n \"icon\": \"fa fa-angle-down\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"drawer\",\n \"drawer\": {\n \"type\": \"drawer\",\n \"title\": i18next.t('frontend_operation'),\n \"id\": \"object_actions_drawer_\" + objectSchema.name,\n \"body\": [\n {\n \"type\": \"button-group\",\n \"vertical\": true,\n \"tiled\": true,\n \"buttons\": [\n ..._.map(buttons, (button)=>{\n return {\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n className: `button_${button.name} w-full`\n }\n })\n ],\n \"btnLevel\": \"enhance\",\n \"className\": \"w-full\",\n \"btnClassName\": \"w-full\",\n \"size\": \"lg\"\n }\n ],\n \"position\": \"bottom\",\n \"closeOnOutside\": true,\n \"resizable\": false,\n \"className\": \"buttons-drawer\",\n \"bodyClassName\": \"m-none p-none\",\n \"actions\": []\n }\n }\n ]\n }\n }\n }\n }else{\n return _.map(buttons, (button) => {\n return {\n type: 'steedos-object-button',\n name: button.name,\n objectName: button.objectName,\n visibleOn: getButtonVisibleOn(button),\n className: `button_${button.name}`\n }\n });\n }\n}","import { getFieldSearchable } from \"./fields/index\";\nimport { includes, map } from \"lodash\";\nimport { i18next } from \"../../../i18n\"\nexport async function getObjectFieldsFilterButtonSchema(objectSchema) {\n // const amisListViewId = `listview_${objectSchema.name}`;\n return {\n \"type\": \"button\",\n \"label\": \"\",\n \"icon\": \"fa fa-search\",\n \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": \"broadcast_toggle_fields_filter\"\n }\n }\n ]\n }\n }\n }\n}\n\nexport async function getObjectFieldsFilterFormSchema(ctx) {\n\n if (!ctx) {\n ctx = {};\n }\n const formSchema = {\n \"type\": \"service\",\n \"visibleOn\": \"this.filterFormSearchableFields && this.filterFormSearchableFields.length\",\n \"className\": ctx.formFactor === 'SMALL' ? \"slds-filters__body p-0 mb-2 overflow-y-auto overflow-x-hidden\" : \"slds-filters__body p-0 sm:grid sm:gap-2 sm:grid-cols-4 mb-2\",\n \"style\":{\n \"max-height\":ctx.formFactor === 'SMALL'?\"30vh\":\"unset\"\n },\n \"schemaApi\": {\n method: 'post',\n url: `\\${context.rootUrl}/graphql?reload=\\${filterFormSearchableFields|join}`,\n data: {\n $self: \"$$\",\n query: \"{\\n data: objects(filters: [[\\\"_id\\\",\\\"=\\\",null]],top: 1, skip: 0){_id}\\n }\"\n },\n requestAdaptor: `\n return {\n ...api,\n data: {\n query: api.data.query\n }\n };\n `,\n adaptor: `\n if(payload.errors){\n payload.status = 2;\n payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;\n }\n const selfData = api.body.$self;\n const uiSchema = selfData.uiSchema;\n const fields = uiSchema.fields;\n const filterFormSearchableFields = (selfData.filterFormSearchableFields || []).filter(function(item){\n return !!fields[item]\n });\n const resolveAll = function(values){\n payload.data = {\n \"body\": values\n };\n return payload;\n }\n\n const rejectAll = function(){\n console.warn(\"run function getFieldSearchable failed.\");\n }\n\n return Promise.all(filterFormSearchableFields.map(function (item) {\n const field = _.clone(fields[item]);\n if (\n field && window.isFieldTypeSearchable(field.type)\n ) {\n var ctx = ${JSON.stringify(ctx)};\n const amisField = window.getFieldSearchable(field, fields, ctx);\n return amisField;\n }\n })).then(resolveAll, rejectAll);\n `,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n };\n\n return formSchema;\n}\n\nexport async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {\n if (!ctx) {\n ctx = {};\n }\n const btnSearchId = \"btn_filter_form_search_\" + new Date().getTime();\n const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);\n const keywordsSearchBoxName = ctx.keywordsSearchBoxName || \"__keywords\";\n const onSearchScript = `\n // console.log(\"===onSearchScript=form==\");\n const scope = event.context.scoped;\n var filterForm = scope.parent.parent.getComponents().find(function(n){\n return n.props.type === \"form\";\n });\n filterForm.handleFormSubmit(event);\n // var filterFormValues = filterForm.getValues();\n // var listView = scope.parent.parent.parent.getComponents().find(function(n){\n // return n.props.type === \"crud\";\n // });\n // const removedValues = {};\n // // 设置搜索项中移除搜索项后,filterFormValues未把其字段的空值保存为own property,即hasOwnProperty属性中\n // // 这会造成handleFilterSubmit时把移除掉的搜索项字段之前的值加到过滤条件中\n // for(var k in filterFormValues){\n // if(filterFormValues[k] === \"\" && !filterFormValues.hasOwnProperty(k)){\n // removedValues[k] = null;\n // }\n // }\n // listView.handleFilterSubmit(Object.assign({}, removedValues, filterFormValues));\n // 点击搜索的时候自动收起搜索栏\n let resizeWindow = function(){\n //触发amis crud 高度重算\n setTimeout(()=>{\n window.dispatchEvent(new Event(\"resize\"))\n }, 500);\n }\n const filterService = filterForm.context.getComponents().find(function(n){\n return n.props.type === \"service\";\n });\n let showFieldsFilter = false;\n const isMobile = window.innerWidth < 768;\n if(event.data.__from_fields_filter_settings_confirm){\n // 如果是从设置搜索项点击确认按钮触发的搜索事件不应该自动关闭搜索栏\n showFieldsFilter = true;\n }\n else if(isMobile){\n // 如果是手机端,点击搜索后自动关闭搜索栏\n showFieldsFilter = false;\n }\n else if(event.data.displayAs === \"split\") {\n // PC上分栏模式下的列表,始终按手机上效果处理,即自动关闭搜索栏\n showFieldsFilter = false;\n }\n else if(window.innerHeight >= 1200){\n // 高分辨率屏幕(2k+),列表高度比较高,没必要自动关闭搜索栏\n showFieldsFilter = true;\n }\n filterService.setData({showFieldsFilter});\n // resizeWindow();//已迁移到搜索栏表单提交事件中执行,因为表单项change后也会触发表单提交了\n // 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取。\n let filterFormValues = event.data;\n let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n crudService && crudService.setData({isFieldsFilterEmpty, showFieldsFilter});\n `;\n const onCancelScript = `\n // console.log(\"===onCancelScript=form==\");\n const scope = event.context.scoped;\n var filterForm = scope.parent.parent.getComponents().find(function(n){\n return n.props.type === \"form\";\n });\n var filterFormValues = filterForm.getValues();\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n const removedValues = {};\n for(var k in filterFormValues){\n if(/^__searchable__/.test(k)){\n removedValues[k] = null;\n }\n }\n if(!event.data.isLookup){\n // 刷新浏览器后,filterFormValues值是空的,只能从本地存储中取出并重置为空值\n const listName = event.data.listName;\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n if(localListViewProps){\n localListViewProps = JSON.parse(localListViewProps);\n for(var k in localListViewProps){\n if(/^__searchable__/.test(k)){\n removedValues[k] = null;\n }\n }\n }\n }\n else{\n const keywordsSearchBoxName = \"${keywordsSearchBoxName}\";\n //lookup字段保留快速搜索条件\n removedValues[keywordsSearchBoxName] = filterFormValues[keywordsSearchBoxName];\n }\n filterForm.setValues(removedValues);//会把表单提交到toolbar的快速搜索区域,造成在快速搜索框中触发搜索时再次把搜索表单中的字段值清除掉的bug,已单独在快速搜索框那边添加搜索事件代码处理过了\n // 以下方法都无法实现清除表单值\n // filterForm.setValues({}, true)\n // filterForm.reset();\n // filterForm.handleAction({},{\n // \"actionType\": \"setValue\",\n // \"args\": {\n // \"value\": removedValues\n // }\n // });\n // 下面触发clear动作可以清除表单值,且不会把表单提交到toolbar的快速搜索区域,但是会把金额等范围字段清空成非范围字段\n // filterForm.handleAction({},{\n // \"actionType\": \"clear\"\n // });\n\n // 清除__changedFilterFormValues中的值\n crud && crud.setData({__changedFilterFormValues: {}});\n filterForm.handleFormSubmit(event);\n // crud.handleFilterSubmit(removedValues);\n\n let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, \"service\");\n filterFormService.setData({showFieldsFilter: !!!filterFormService.props.data.showFieldsFilter});\n //触发amis crud 高度重算\n setTimeout(()=>{\n window.dispatchEvent(new Event(\"resize\"))\n }, 100);\n // 移除搜索按钮上的红点\n // let crudService = scope.getComponentById(\"service_listview_\" + event.data.objectName);\n let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});\n `;\n const dataProviderInited = `\n const objectName = data.objectName;\n const isLookup = data.isLookup;\n const listName = data.listName;\n let searchableFieldsStoreKey = location.pathname + \"/searchable_fields\";\n if(isLookup){\n searchableFieldsStoreKey += \"/lookup/\" + objectName;\n }\n searchableFieldsStoreKey = searchableFieldsStoreKey + \"/\" + (data.context && data.context.userId);\n let defaultSearchableFields = localStorage.getItem(searchableFieldsStoreKey);\n if(defaultSearchableFields){\n defaultSearchableFields = defaultSearchableFields.split(\",\");\n }\n if(_.isEmpty(defaultSearchableFields) && data.uiSchema){\n let listView = data.uiSchema.list_views[data.listName];\n const sFields = listView && listView.searchable_fields;\n if(sFields && sFields.length){\n defaultSearchableFields = _.map(sFields, 'field');\n }\n }\n if(_.isEmpty(defaultSearchableFields) && data.uiSchema){\n defaultSearchableFields = _.map(\n _.sortBy(_.filter(_.values(data.uiSchema.fields), (field) => {\n return field.filterable;\n }), \"sort_no\"),\n \"name\"\n );\n }\n setData({ filterFormSearchableFields: defaultSearchableFields });\n if(isLookup){\n // looup字段过滤器不在本地缓存记住过滤条件,所以初始始终隐藏过滤器\n setData({ showFieldsFilter: false });\n }\n else{\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n if(localListViewProps){\n localListViewProps = JSON.parse(localListViewProps);\n let filterFormValues = _.pickBy(localListViewProps, function(n,k){\n return /^__searchable__/g.test(k);\n });\n if(!_.isEmpty(filterFormValues)){\n setData({ ...filterFormValues });\n const omitedEmptyFormValue = _.omitBy(filterFormValues, function(n){\n return _.isNil(n) \n || (_.isObject(n) && _.isEmpty(n)) \n || (_.isArray(n) && _.isEmpty(n.filter(function(item){return !_.isNil(item)})))\n || (_.isString(n) && n.length === 0);\n });\n // 有过滤条件时只显示搜索按钮上的红点,不自动展开搜索栏\n if(!_.isEmpty(omitedEmptyFormValue)){\n let crudService = SteedosUI.getRef(data.$scopeId).parent.getComponentById(\"service_listview_\" + data.objectName)\n crudService && crudService.setData({isFieldsFilterEmpty: false});\n // setData({ showFieldsFilter: true });//自动展开搜索栏\n }\n }\n }\n }\n `;\n const onSearchableFieldsChangeScript = `\n const data = context.props.data;\n const listName = data.listName;\n const objectName = data.objectName;\n const isLookup = data.isLookup;\n const value = data.fields;\n const scope = event.context.scoped;\n // 这里的filterForm不是name为\"listview-filter-form\"的内部form,而是crud自带的filter form\n const filterForm = scope.parent.parent.getComponents().find(function(n){\n return n.props.type === \"form\";\n });\n const filterService = filterForm.context.getComponents().find(function(n){\n return n.props.type === \"service\";\n });\n filterService.setData({ filterFormSearchableFields: value });\n let searchableFieldsStoreKey = location.pathname + \"/searchable_fields\";\n if(isLookup){\n searchableFieldsStoreKey += \"/lookup/\" + objectName;\n }\n searchableFieldsStoreKey = searchableFieldsStoreKey + \"/\" + (data.context && data.context.userId);\n localStorage.setItem(searchableFieldsStoreKey, value);\n\n // ===START===:当变更可搜索字段时,如果被移除的可搜索字段在本地存储中已经存入过滤条件中则应该清除本地存储中相关字段的过滤条件。\n const searchableFields = data.fields;\n let preSearchableFields = data.__super.fields;\n if(typeof preSearchableFields === \"string\"){\n preSearchableFields = preSearchableFields.split(\",\");\n }\n const removedFields = _.difference(preSearchableFields, searchableFields);\n\n // const getClosestAmisComponentByType = function (scope, type, name) {\n // // 递归children找到listview-filter-form\n // let re = scope.getComponents().find(function (n) {\n // return n.props.type === type && n.props.name === name;\n // });\n // if (re) {\n // return re;\n // }\n // else {\n // if (scope.children && scope.children.length) {\n // for (let i = 0; i < scope.children.length; i++) {\n // re = getClosestAmisComponentByType(scope.children[i], type, name);\n // if (re) {\n // break;\n // }\n // }\n // return re;\n // }\n \n // }\n // }\n // // 这里第二层form才是真正要提交到crud过滤条件的form\n // filterInnerForm = getClosestAmisComponentByType(filterForm.context, \"form\", \"listview-filter-form\");\n\n const filterFormValues = filterForm.getValues();\n let removedKeys = [];\n _.each(filterFormValues, function(n,k){\n // __searchable__开头的不在searchableFields范围则清除其值\n let isRemoved = !!removedFields.find(function(fieldName){\n return new RegExp(\"__searchable__\\.*\" + fieldName + \"$\").test(k);\n });\n if(isRemoved){\n removedKeys.push(k);\n }\n });\n const removedValues = {};\n removedKeys.forEach(function(key){\n removedValues[key] = null;\n });\n filterForm.setValues(removedValues);//这里使用filterInnerForm也可以\n\n if(isLookup){\n return;\n }\n \n // 列表视图crud支持本地缓存,所以需要进一步清除浏览器本地缓存里面用户在可搜索项中移除的字段值\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n if(localListViewProps){\n localListViewProps = JSON.parse(localListViewProps);\n _.each(localListViewProps, function(n,k){\n // __searchable__开头的不在searchableFields范围则清除其值\n let isRemoved = !!removedFields.find(function(fieldName){\n return new RegExp(\"__searchable__\\.*\" + fieldName + \"$\").test(k);\n });\n if(isRemoved){\n delete localListViewProps[k];\n }\n });\n sessionStorage.setItem(listViewPropsStoreKey, JSON.stringify(localListViewProps));\n }\n //触发amis crud 高度重算\n setTimeout(()=>{\n window.dispatchEvent(new Event(\"resize\"))\n }, 100)\n // ===END===\n `;\n return {\n \"type\": \"service\",\n \"name\": \"service_listview_filter_form\",\n \"data\": {\n // \"showFieldsFilter\": false\n // \"filterFormSearchableFields\": [\"name\"],//默认可搜索项\n // \"filterFormValues\": {\"__searchable__name\": \"xxx\"},//搜索项表单值\n // \"listViewId\": \"${listViewId}\"\n },\n // \"id\": `service_listview_filter_form_${objectSchema.name}`,\n \"dataProvider\": {\n \"inited\": dataProviderInited\n },\n \"body\": {\n \"type\": \"wrapper\",\n \"body\": {\n \"type\": \"wrapper\",\n \"body\": [filterFormSchema, {\n \"type\": \"wrapper\",\n \"body\": {\n \"type\": \"wrapper\",\n \"body\": [\n {\n \"type\": \"button\",\n \"id\": btnSearchId,\n \"label\": i18next.t('frontend_fields_filter_button_search'),\n \"icon\": \"fa fa-search\",\n // \"visibleOn\": \"this.filterFormSearchableFields && this.filterFormSearchableFields.length\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onSearchScript\n }\n ]\n }\n }\n },\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_form_cancel'),\n \"name\": \"btn_filter_form_cancel\",\n // \"visibleOn\": \"this.filterFormSearchableFields && this.filterFormSearchableFields.length\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onCancelScript\n }\n ]\n }\n }\n },\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_fields_filter_button_settings'),\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"size\": \"md\",\n \"title\": i18next.t('frontend_fields_filter_button_settings'),\n \"body\": [\n {\n \"type\": \"form\",\n \"title\": \"\",\n \"body\": [\n {\n \"label\": \"\",\n \"type\": \"transfer\",\n \"name\": \"fields\",\n \"id\": \"u:92c0b3cccca0\",\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${objectName}/fields/options\",\n \"dataType\": \"json\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"data\": {\n \"$self\": \"$$\"\n },\n \"requestAdaptor\": \"\",\n \"adaptor\": `\n if(payload.errors){\n payload.status = 2;\n payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;\n }\n const selfData = api.body.$self;\n const uiSchema = selfData.uiSchema;\n const fields = uiSchema.fields;\n const options = ((payload.data && payload.data.options) || []).filter(function(item){\n let field = fields[item.value];\n // TODO: 暂时禁用location类型字段的列表搜索\n return !!field && window.isFieldTypeSearchable(field.type) && field.type !== 'location'\n });\n payload.data = {\n \"options\": options\n };\n return payload;\n `\n },\n \"options\": [],\n \"required\": true,\n \"placeholder\": \"-\",\n \"className\": \"col-span-2 m-0\",\n \"checkAll\": false,\n \"searchable\": true,\n \"sortable\": true,\n \"joinValues\": false,\n \"extractValue\": true,\n \"multiple\": true\n }\n ],\n \"id\": \"u:e5ac506d5683\",\n \"mode\": \"normal\",\n \"persistData\": false,\n \"promptPageLeave\": true,\n \"name\": \"form\",\n \"debug\": false,\n \"actions\": [],\n \"panelClassName\": \"m-0\",\n \"bodyClassName\": \"p-4\",\n \"className\": \"steedos-amis-form\"\n }\n ],\n \"id\": \"u:ca99fa9fe1b1\",\n \"actions\": [\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_form_cancel'),\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {},\n \"actionType\": \"closeDialog\"\n }\n ]\n }\n },\n \"id\": \"u:4e447b5ca72a\"\n },\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_form_confirm'),\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onSearchableFieldsChangeScript\n },\n {\n \"actionType\": \"click\",\n \"componentId\": btnSearchId,\n \"args\": {\n \"__from_fields_filter_settings_confirm\": true\n }\n },\n {\n \"componentId\": \"\",\n \"args\": {},\n \"actionType\": \"closeDrawer\"\n }\n ]\n }\n },\n \"id\": \"u:14e7388fecd3\",\n \"level\": \"primary\"\n }\n ],\n \"closeOnEsc\": false,\n \"closeOnOutside\": false,\n \"showCloseButton\": true,\n \"data\": {\n \"&\": \"$$\",\n \"objectName\": \"${objectName}\",\n \"listName\": \"${listName}\",\n \"listViewId\": \"${listViewId}\",\n \"uiSchema\": \"${uiSchema}\",\n \"isLookup\": \"${isLookup}\",\n \"context\": \"${context}\",\n \"fields\": \"${filterFormSearchableFields}\"\n }\n }\n }\n ]\n }\n },\n \"id\": \"u:b96d84868a5a\",\n \"level\": \"link\"\n }\n ],\n \"size\": \"xs\",\n \"className\": \"space-x-4\"\n },\n \"size\": \"xs\",\n \"className\": \"slds-filters__footer slds-grid slds-shrink-none flex justify-between p-0\"\n }],\n \"size\": \"xs\",\n \"className\": \"slds-filters\"\n },\n \"size\": \"xs\",\n \"className\": `border-gray-300 border-y slds-grid slds-grid_vertical slds-nowrap ${!ctx.isLookup && \"mt-2\"}`,\n \"visibleOn\": \"this.showFieldsFilter\",\n },\n \"className\": \"bg-white\"\n };\n}\n\n","import { getObjectRelatedListButtons, getButtonVisibleOn } from '../../buttons'\nimport { getObjectFieldsFilterButtonSchema, getObjectFieldsFilterBarSchema } from './fields_filter';\nimport { map, each, sortBy, compact, keys } from 'lodash';\n\nimport { getObjectDetailButtonsSchemas, getObjectListViewButtonsSchemas, getObjectRecordDetailRelatedListButtonsSchemas } from '../../buttons'\n\n/**\n * 列表视图顶部第一行amisSchema\n * @param {*} objectSchema 对象UISchema\n * @returns amisSchema\n */\nexport function getObjectListHeaderFirstLine(objectSchema, listViewName, ctx) {\n const { icon, label } = objectSchema;\n const disabled_list_views = objectSchema.permissions.disabled_list_views;\n const listViewButtonOptions = [];\n each(\n objectSchema.list_views,\n (listView, name) => {\n if(name === \"lookup\" || (disabled_list_views && disabled_list_views.indexOf(listView._id)>-1)){\n // 内置lookup为弹出选择专用视图,根据用户权限被禁用的视图,不显示在列表切换区域\n return;\n }\n listViewButtonOptions.push({\n type: \"button\",\n label: listView.label,\n actionType: \"link\",\n link: `/app/\\${appId}/${objectSchema.name}/grid/${name}`\n });\n }\n );\n\n let amisButtonsSchema = getObjectListViewButtonsSchemas(objectSchema, {formFactor: ctx.formFactor})\n const reg = new RegExp('_', 'g');\n const standardIcon = icon && icon.replace(reg, '-');\n const standardNewButton = _.find(amisButtonsSchema, { name: \"standard_new\" });\n const buttonSchema = [{\n \"type\": \"flex\",\n \"items\": amisButtonsSchema,\n \"visibleOn\": \"${display == 'split'?false:true}\"\n }]\n if(ctx.formFactor !== 'SMALL'){\n const restButtons = Array.isArray(amisButtonsSchema) ? amisButtonsSchema.filter(obj => obj.name !== \"standard_new\"):[]\n buttonSchema.push({\n \"type\": \"flex\",\n \"items\":[\n standardNewButton,\n (restButtons.length > 0) && {\n \"type\": \"dropdown-button\",\n \"buttons\": restButtons,\n \"className\": \" ml-1\",\n \"menuClassName\": \"p-none split-dropdown-buttons\",\n \"align\": \"right\",\n \"size\": \"sm\"\n }\n ],\n \"visibleOn\": \"${display == 'split'?true:false}\"\n })\n }\n return {\n \"type\": \"grid\",\n \"columns\": [\n {\n \"body\": [\n {\n \"type\": \"grid\",\n \"columns\": [\n {\n \"body\": {\n \"type\": \"tpl\",\n \"className\": \"block\",\n \"tpl\":`<svg class=\"slds-icon slds-icon_container slds-icon-standard-${standardIcon} slds-page-header__icon\" aria-hidden=\"true\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${icon}\"></use></svg>`\n },\n \"md\": \"auto\",\n \"className\": \"\",\n \"columnClassName\": \"flex justify-center items-center\",\n \"valign\": \"middle\",\n },\n {\n \"body\": [\n {\n \"type\": \"tpl\",\n \"tpl\": `${label}`,\n \"inline\": false,\n \"wrapperComponent\": \"\",\n \"className\": \"text-md leading-none text-black\",\n },\n {\n \"type\": \"dropdown-button\",\n \"className\": \"\", \n \"label\": \"\\${listName ? uiSchema.list_views[listName].label : uiSchema.list_views[defaultListName].label}\",\n \"rightIcon\": \"fa fa-caret-down\",\n \"size\": \"sm\",\n \"hideCaret\": true,\n \"closeOnClick\": true,\n \"btnClassName\": \"!bg-transparent !border-none !hover:border-none text-lg h-5 font-bold p-0 text-black leading-none\",\n \"buttons\": listViewButtonOptions\n }\n ],\n \"md\": \"\",\n \"columnClassName\": \"p-l-xs\"\n }\n ],\n \"className\": \"flex justify-between\"\n }\n ],\n \"md\": \"auto\"\n },\n {\n \"body\": buttonSchema,\n \"md\": \"auto\",\n \"valign\": \"middle\",\n }\n ],\n \"className\": \"flex justify-between\"\n }\n}\n\n/**\n * 列表视图顶部第二行amisSchema\n * @param {*} objectSchema 对象UISchema\n * @returns amisSchema\n */\nexport async function getObjectListHeaderSecordLine(objectSchema, listViewName, ctx) {\n const amisListViewId = `listview_${objectSchema.name}`;\n const fieldsFilterButtonSchema = await getObjectFieldsFilterButtonSchema(objectSchema);\n // const onFilterChangeScript = `\n // const eventData = event.data;\n // const uiSchema = eventData.uiSchema;\n // const listName = eventData.listName;\n // const listViewId = eventData.listViewId;\n // var selectedListView = uiSchema.list_views[listName]\n // var filter = eventData.filter;\n // SteedosUI.ListView.showFilter(uiSchema.name, {\n // listView: selectedListView,\n // data: {\n // filters: SteedosUI.ListView.getVisibleFilter(selectedListView, filter, { listViewId }),\n // },\n // onFilterChange: (filter) => {\n // doAction({\n // componentId: \\`service_listview_\\${uiSchema.name}\\`,\n // actionType: 'setValue',\n // \"args\": {\n // \"value\": {\n // filter: filter\n // }\n // }\n // });\n // doAction({\n // componentId: \\`listview_\\${uiSchema.name}\\`,\n // actionType: 'reload',\n // \"args\": {\n // filter: filter\n // }\n // });\n // }\n // });\n // `;\n let secordLineSchema = {\n \"type\": \"grid\",\n \"columns\": [\n {\n \"body\": [\n {\n \"type\": \"tpl\",\n \"tpl\": \"${$count} 个项目\",\n \"visibleOn\": \"this.$count >= 0\",\n \"inline\": false,\n \"wrapperComponent\": \"\",\n \"className\": \"leading-none\",\n \"style\": {\n \"fontFamily\": \"\",\n \"fontSize\": 14\n },\n \"id\": \"u:1661f8471235\"\n }\n ],\n \"md\": \"auto\",\n \"columnClassName\": \"flex items-center\"\n },\n {\n \"body\": [\n {\n \"type\": \"button\",\n \"label\": \"\",\n \"icon\": \"fa fa-refresh\",\n \"actionType\": \"reload\",\n \"target\": amisListViewId,\n \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\"\n },\n fieldsFilterButtonSchema,\n // {\n // \"type\": \"button\",\n // \"label\": \"\",\n // \"icon\": \"fa fa-filter\",\n // \"actionType\": \"custom\",\n // \"className\": \"bg-transparent p-2 rounded border-gray-300 text-gray-500\",\n // \"id\": \"u:c20cb87d96c9\",\n // \"onEvent\": {\n // \"click\": {\n // \"actions\": [\n // {\n // \"actionType\": \"custom\",\n // \"script\": onFilterChangeScript\n // }\n // ],\n // \"weight\": 0\n // }\n // }\n // }\n ],\n \"md\": \"auto\"\n }\n ],\n \"className\": \"flex justify-between\"\n };\n return secordLineSchema;\n}\n\n\n/**\n * 列表视图顶部放大镜过滤条件栏amisSchema\n * @param {*} objectSchema 对象UISchema\n * @returns amisSchema\n */\nexport async function getObjectListHeaderFieldsFilterBar(objectSchema, listViewName, ctx) {\n const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, ctx);\n return fieldsFilterBarSchema;\n}\n\n/**\n * 列表视图顶部amisSchema\n * @param {*} objectSchema 对象UISchema\n * @returns amisSchema\n */\nexport function getObjectListHeader(objectSchema, listViewName, ctx) {\n if (!ctx) {\n ctx = {};\n }\n let firstLineSchema = getObjectListHeaderFirstLine(objectSchema, listViewName, ctx);\n let body = [firstLineSchema];\n let headerSchema = [{\n \"type\": \"wrapper\",\n \"body\": body,\n \"className\": `bg-gray-100 sm:rounded-tl sm:rounded-tr p-4 -mb-4`\n }];\n return headerSchema;\n}\n\n/**\n * 记录详细界面顶部头amisSchema,也是标题面板组件的amisSchema\n * @param {*} objectSchema 对象UISchema\n * @param {*} recordId 记录id\n * @param {*} optioins: {showRecordTitle: true}\n * @returns amisSchema\n */\nexport async function getObjectRecordDetailHeader(objectSchema, recordId, options) {\n const { showRecordTitle = true } = options || {}\n // console.log('getObjectRecordDetailHeader==>', objectSchema, recordId)\n const { name, label, icon, NAME_FIELD_KEY } = objectSchema;\n \n let amisButtonsSchema = getObjectDetailButtonsSchemas(objectSchema, recordId, options);\n\n // console.log(`getObjectRecordDetailHeader==>`, amisButtonsSchema)\n \n const reg = new RegExp('_', 'g');\n const standardIcon = icon && icon.replace(reg, '-');\n\n const gridBody = [];\n if(showRecordTitle){\n gridBody.push({\n \"body\": [\n {\n \"type\": \"grid\",\n \"columns\": [\n {\n \"body\": [{\n \"type\": \"service\",\n \"onEvent\": {\n \"@history_paths.changed\": {\n \"actions\": [\n {\n \"actionType\": \"reload\"\n }\n ]\n }\n },\n \"body\":[{\n \"type\": \"button\",\n \"visibleOn\": \"${window:innerWidth > 768 && (window:historyPaths.length > 1 || window:historyPaths[0].params.record_id) && display !== 'split'}\",\n \"className\":\"flex mr-4\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": \"window.goBack()\"\n }\n ]\n }\n },\n \"body\": [\n {\n \"type\": \"steedos-icon\",\n \"category\": \"utility\",\n \"name\": \"back\",\n \"colorVariant\": \"default\",\n \"className\": \"slds-button_icon slds-global-header__icon w-4\"\n }\n ]\n }]\n },{\n \"type\": \"tpl\",\n \"className\": \"block\",\n // \"tpl\": `<img class='slds-icon slds-icon_container slds-icon-standard-${standardIcon}' src='\\${context.rootUrl}/unpkg.com/@salesforce-ux/design-system/assets/icons/standard/${icon}.svg'>`\n \"tpl\":`<svg class=\"slds-icon slds-icon_container slds-icon-standard-${standardIcon} slds-page-header__icon\" aria-hidden=\"true\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${icon}\"></use></svg>`\n }],\n \"md\": \"auto\",\n \"className\": \"\",\n \"columnClassName\": \"flex justify-center items-center\"\n },\n {\n \"body\": [\n {\n \"type\": \"tpl\",\n \"tpl\": `${label}`,\n \"inline\": false,\n \"wrapperComponent\": \"\",\n \"className\": \"leading-4 text-md\"\n },\n {\n \"type\": \"tpl\",\n \"tpl\": \"${name}\",\n // \"tpl\": \"${(record && uiSchema && record[uiSchema.NAME_FIELD_KEY]) || name}\",\n \"inline\": false,\n \"wrapperComponent\": \"\",\n \"className\": \"record-detail-header-name leading-5 text-xl font-bold\"\n }\n ],\n \"columnClassName\": \"p-l-xs\"\n }\n ],\n \"className\": \"flex justify-between\"\n }\n ],\n \"columnClassName\": \"flex-initial\",\n \"md\": \"auto\",\n })\n };\n\n gridBody.push({\n \"body\": {\n \"type\": \"flex\",\n \"items\": amisButtonsSchema,\n },\n \"md\": \"auto\",\n // \"hiddenOn\": \"${recordLoaded != true}\"\n })\n\n let body = [\n {\n \"type\": \"wrapper\",\n \"className\": \"p-0\",\n \"body\": [\n {\n \"type\": \"grid\",\n \"columns\": gridBody,\n \"className\": \"flex justify-between flex-nowrap\"\n }\n ],\n \"hiddenOn\": \"${recordLoaded != true}\"\n }\n ];\n\n if(showRecordTitle){\n body.push({\n \"type\": \"wrapper\",\n \"className\": \"p-0\",\n \"body\": [\n {\n \"type\": \"grid\",\n \"columns\": [gridBody[0]],\n \"className\": \"flex justify-between\"\n }\n ],\n \"hiddenOn\": \"${recordLoaded == true}\"\n })\n }\n\n return {\n type: 'service',\n id: `page_readonly_${name}_header`,\n name: `page`,\n data: { objectName: name, _id: recordId, recordPermissions: objectSchema.permissions, uiSchema: objectSchema, record: \"${record}\" },\n body: body, \n className: ''\n }\n\n}\n\n/**\n * 记录详细界面中相关表顶部头amisSchema\n * @param {*} relatedObjectSchema 相关对象UISchema\n * @returns amisSchema\n */\nexport async function getObjectRecordDetailRelatedListHeader(relatedObjectSchema, relatedLabel, ctx) {\n const { icon, label } = relatedObjectSchema;\n let amisButtonsSchema = getObjectRecordDetailRelatedListButtonsSchemas(relatedObjectSchema, {formFactor: ctx.formFactor});\n const reg = new RegExp('_', 'g');\n const standardIcon = icon && icon.replace(reg, '-');\n const recordRelatedListHeader = {\n \"type\": \"wrapper\",\n \"body\": [\n {\n \"type\": \"grid\",\n \"valign\": \"middle\",\n \"columns\": [\n {\n \"body\": [\n {\n \"type\": \"grid\",\n \"valign\": \"middle\",\n \"className\": \"flex justify-between\",\n \"columns\": [\n {\n \"body\": {\n \"type\": \"tpl\",\n \"className\": \"block\",\n // \"tpl\": `<img class=\\\"slds-icon_small slds-icon_container slds-icon-standard-${standardIcon}\\\" src=\\\"\\${context.rootUrl}/unpkg.com/@salesforce-ux/design-system/assets/icons/standard/${icon}.svg\\\" />`\n \"tpl\":`<svg class=\"w-6 h-6 slds-icon slds-icon_container slds-icon-standard-${standardIcon}\" aria-hidden=\"true\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${icon}\"></use></svg>`\n },\n \"md\": \"auto\",\n \"className\": \"\",\n \"columnClassName\": \"flex justify-center items-center\"\n },\n {\n \"body\": [\n {\n \"type\": \"tpl\",\n \"tpl\": `<a class=\"text-black text-base font-bold hover:font-bold\" href=\"/app/\\${appId}/\\${_master.objectName}/\\${_master.recordId}/\\${objectName}/grid?related_field_name=\\${relatedKey}\">${relatedLabel}(\\${$count})</a>`,\n \"inline\": false,\n \"wrapperComponent\": \"\",\n \"className\": \"\",\n }\n ],\n \"md\": \"\",\n \"valign\": \"middle\",\n \"columnClassName\": \"p-l-xs\"\n }\n ]\n }\n ],\n \"md\": \"auto\"\n },\n {\n \"body\": {\n \"type\": \"flex\",\n \"items\": amisButtonsSchema,\n },\n \"md\": \"auto\"\n }\n ],\n \"className\": \"flex justify-between\"\n }\n ],\n \"className\": \"p-3\"\n };\n return recordRelatedListHeader;\n}\n\n/**\n * 点击记录详细界面相关表顶部标题进入的相关表页面的顶部amisSchema\n * @param {*} objectSchema \n * @param {*} recordId \n * @param {*} relatedObjectName \n * @returns amisSchema\n */\nexport async function getObjectRelatedListHeader(objectSchema, recordId, relatedObjectName) {\n}","import { i18next } from \"../../../../../i18n\"\nexport const getNewListviewButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_new_label'),\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_new_title'),\n \"data\": {\n //\"&\":\"$$\",2.7、2.9、3.0在此处失效\n \"all\": \"${uiSchema.list_views.all}\",\n \"list_view\": \"${uiSchema.list_views[listName]}\",\n \"appId\": \"${appId}\",\n \"global\": \"${global}\",\n \"targetObjectName\": \"${objectName}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"\",\n \"mode\": \"edit\",\n \"defaultData\": {\n \"&\": \"${list_view}\",\n \"name\":\"\",\n \"label\":\"\",\n \"filters\":\"\",\n \"shared\":false,\n \"object_name\": \"${targetObjectName}\",\n },\n \"fieldsExtend\": fieldsExtend(),\n \"fields\": fields(),\n \"onEvent\": {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {\n // 直接使用recordId不能拿到数据,只能通过result里面拿数据\n \"url\": \"${context.rootUrl}/app/${appId}/${targetObjectName}/grid/listview_${result.data.recordId|lowerCase}\",\n \"blank\": false\n },\n \"actionType\": \"url\",\n }\n ]\n }\n },\n \"messages\": {\n \"success\": i18next.t('frontend_listview_control_new_message_success'),\n \"failed\": i18next.t('frontend_listview_control_new_message_failed')\n },\n }\n ],\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"closeOnEsc\": false,\n \"dataMapSwitch\": false,\n \"size\": \"lg\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}\n\nfunction fields(){\n return [\n \"label\",\n \"name\",\n \"object_name\",\n \"filter_scope\",\n \"show_count\",\n \"columns\",\n \"sort\",\n \"filters\",\n \"mobile_columns\",\n \"searchable_fields\",\n \"is_system\",\n \"shared\"\n ]\n}\n\nfunction fieldsExtend(){\n return {\n \"group\": \"\",\n \"label\": {\n \"is_wide\": true\n },\n \"name\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"object_name\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true\n }\n },\n \"filter_scope\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"columns\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"mobile_columns\":{\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"searchable_fields\":{\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"filter_fields\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"scrolling_mode\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"sort\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"show_count\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"type\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true,\n \"required\": false\n }\n },\n \"shared\": {\n \"group\": \"\",\n \"amis\": {\n \"visibleOn\": \"${global.user.is_space_admin}\"\n }\n },\n \"filters\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true\n }\n }\n }\n}","import { i18next } from \"../../../../../i18n\"\nexport const getCopyListviewButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_clone_label'),\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_clone_title'),\n \"data\": {\n //\"&\":\"$$\",2.7、2.9、3.0在此处失效\n \"listName\": \"${listName}\",\n \"targetObjectName\": \"${objectName}\",\n \"list_view\": \"${uiSchema.list_views[listName]}\",\n \"appId\": \"${appId}\",\n \"global\": \"${global}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"\",\n \"mode\": \"edit\",\n \"defaultData\": {\n \"&\": \"${list_view}\",\n \"name\":\"\",\n \"label\": i18next.t('frontend_listview_control_clone_defaultData_label_start') + \" ${list_view.label} \" + i18next.t('frontend_listview_control_clone_defaultData_label_end'),\n \"shared\":false,\n \"object_name\": \"${targetObjectName}\",\n },\n \"fieldsExtend\": fieldsExtend(),\n \"fields\": fields(),\n \"onEvent\": {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {\n \"url\": \"${context.rootUrl}/app/${appId}/${targetObjectName}/grid/listview_${result.data.recordId|lowerCase}\",\n \"blank\": false\n },\n \"actionType\": \"url\",\n }\n ]\n }\n }\n }\n ],\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"closeOnEsc\": false,\n \"dataMapSwitch\": false,\n \"size\": \"lg\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}\n\nfunction fields(){\n return [\n \"label\",\n \"name\",\n \"object_name\",\n \"filter_scope\",\n \"show_count\",\n \"columns.$.field\",\n \"columns.$.width\",\n \"sort.$.field_name\",\n \"sort.$.order\",\n \"filters\",\n \"mobile_columns.$.field\",\n \"searchable_fields.$.field\",\n \"is_system\",\n \"shared\"\n ]\n}\n\nfunction fieldsExtend(){\n return {\n \"label\": {\n \"is_wide\": true\n },\n \"name\": {\n \"is_wide\": true,\n \"amis\": {\n \"hidden\": true\n }\n },\n \"object_name\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"filter_scope\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"columns\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"filter_fields\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"scrolling_mode\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"sort\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"show_count\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"type\": {\n \"amis\": {\n \"hidden\": true\n }\n },\n \"shared\": {\n \"amis\": {\n \"visibleOn\": \"${global.user.is_space_admin}\"\n }\n },\n \"filters\": {\n \"group\": \"\",\n \"amis\": {\n \"hidden\": true\n }\n }\n }\n}","import { i18next } from \"../../../../../i18n\"\nexport const getRenameListviewButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_rename_label'),\n \"disabledOn\": \"!((global.user.is_space_admin || global.userId == uiSchema.list_views[listName].owner) && !!uiSchema.list_views[listName].owner)\",\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_rename_title'),\n \"data\": {\n \"targetObjectName\": \"${objectName}\",\n \"recordId\": \"${uiSchema.list_views[listName]._id}\",\n \"appId\": \"${appId}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"${recordId}\",\n \"mode\": \"edit\",\n \"fields\": [\n \"label\"\n ],\n \"fieldsExtend\": \"{\\n \\\"label\\\":{\\n \\\"is_wide\\\": true\\n }\\n}\",\n \"onEvent\": {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {\n \"url\": \"${context.rootUrl}/app/${appId}/${targetObjectName}/grid/${name}\",\n \"blank\": false\n },\n \"actionType\": \"url\",\n },\n ]\n }\n }\n }\n ],\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"size\": \"lg\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}","import { i18next } from \"../../../../../i18n\"\nexport const getSetListviewShareButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_share'),\n \"disabledOn\": \"!(global.user.is_space_admin && !!uiSchema.list_views[listName].owner)\",\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_share'),\n \"data\": {\n \"recordId\": \"${uiSchema.list_views[listName]._id}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"${recordId}\",\n \"mode\": \"edit\",\n \"fields\": [\n \"shared\"\n ]\n }\n ],\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"closeOnEsc\": false,\n \"dataMapSwitch\": false,\n \"size\": \"md\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}","import { i18next } from \"../../../../../i18n\"\nexport const getSetListviewFiltersButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_filters'),\n \"disabledOn\": \"!((global.user.is_space_admin || global.userId == uiSchema.list_views[listName].owner) && !!uiSchema.list_views[listName].owner)\",\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_filters'),\n \"data\": {\n \"targetObjectName\": \"${objectName}\",\n \"recordId\": \"${uiSchema.list_views[listName]._id}\",\n \"listName\": \"${listName}\",\n \"appId\": \"${appId}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"${recordId}\",\n \"mode\": \"edit\",\n \"fields\": [\n \"filters\"\n ],\n \"initApiAdaptor\": initApiAdaptor(),\n \"apiRequestAdaptor\": apiRequestAdaptor(),\n \"fieldsExtend\": fieldsExtend(),\n \"onEvent\": {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {\n \"url\": \"${context.rootUrl}/app/${appId}/${targetObjectName}/grid/${listName}\",\n \"blank\": false\n },\n \"actionType\": \"url\",\n }\n ]\n }\n }\n }\n ],\n \"className\": \"steedos-overflow-visible-dialog\",\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"closeOnEsc\": false,\n \"dataMapSwitch\": false,\n \"size\": \"lg\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}\n\n\nfunction initApiAdaptor(){\n return `\n const recordId_tmp = api.body.recordId;\n let data_tmp;\n if (recordId_tmp) {\n data_tmp = payload.data;\n // 数据格式转换\n if (data_tmp) {\n if (data_tmp.filters && lodash.isString(data_tmp.filters)) {\n try {\n data_tmp.filters = JSON.parse(data_tmp.filters);\n } catch (e) { }\n }\n \n if (data_tmp.filters && lodash.isString(data_tmp.filters)) {\n data_tmp._filters_type_controller = 'function';\n } else {\n data_tmp._filters_type_controller = 'conditions'\n }\n \n if (data_tmp._filters_type_controller === 'conditions') {\n data_tmp._filters_conditions = window.amisConvert.filtersToConditions(data_tmp.filters || []);\n data_tmp.filters = data_tmp._filters_conditions;\n } else {\n data_tmp._filters_function = data_tmp.filters;\n }\n }\n }\n for (key in data_tmp) {\n if (data_tmp[key] === null) {\n delete data_tmp[key];\n }\n }\n payload.data = Object.assign(payload.data, data_tmp);\n delete payload.extensions;\n return payload;\n `\n}\n\nfunction apiRequestAdaptor(){\n return `\n const recordId = api.body.recordId;\n if (formData._filters_type_controller === 'conditions' && formData._filters_conditions) {\n formData.filters = window.amisConvert.conditionsToFilters(formData.filters);\n } else {\n formData.filters = formData._filters_function || null;\n }\n \n delete formData._filters_type_controller;\n delete formData._filters_conditions;\n delete formData._filters_function;\n \n query = 'mutation{record: ' + objectName + '__insert(doc: {__saveData}){_id}}';\n if (api.body.recordId) {\n query = 'mutation{record: ' + objectName + '__update(id: \"' + recordId + '\", doc: {__saveData}){_id}}';\n };\n __saveData = JSON.stringify(JSON.stringify(formData));\n api.data = { query: query.replace('{__saveData}', __saveData) };\n return api;\n `\n}\n\nfunction fieldsExtend(){\n return {\n \"filters\": {\n \"visible_on\": \"true\",\n \"amis\": {\n \"type\": \"condition-builder\",\n \"label\": i18next.t('frontend_listview_control_filters_fields_extend'),\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-listviews/getFilterFields?objectName=${targetObjectName}\",\n \"dataType\": \"json\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n }\n }\n}","import { i18next } from \"../../../../../i18n\"\n\nexport const getSetListviewColumnsButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_columns'),\n \"disabledOn\": \"!((global.user.is_space_admin || global.userId == uiSchema.list_views[listName].owner) && !!uiSchema.list_views[listName].owner)\",\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {},\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_columns'),\n \"data\": {\n //\"&\":\"$$\",2.7、2.9、3.0在此处失效\n \"targetObjectName\": \"${objectName}\",\n \"recordId\": \"${uiSchema.list_views[listName]._id}\",\n \"listName\": \"${listName}\",\n \"appId\": \"${appId}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"${recordId}\",\n \"mode\": \"edit\",\n \"fieldsExtend\": fieldsExtend(),\n \"initApiAdaptor\": initApiAdaptor(),\n \"apiRequestAdaptor\": apiRequestAdaptor(),\n \"fields\": [\n \"columns\",\n \"mobile_columns\"\n ],\n \"onEvent\": {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {\n \"url\": \"${context.rootUrl}/app/${appId}/${targetObjectName}/grid/${listName}\",\n \"blank\": false\n },\n \"actionType\": \"url\"\n }\n ]\n }\n }\n }\n ],\n \"searchable\": true,\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"size\": \"lg\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}\n\nfunction fieldsExtend(){\n return {\n \"columns\": {\n \"amis\": {\n \"type\": \"transfer\",\n \"sortable\": true,\n \"searchable\": true,\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${targetObjectName}/fields/options\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n },\n \"mobile_columns\": {\n \"amis\": {\n \"type\": \"transfer\",\n \"sortable\": true,\n \"searchable\": true,\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${targetObjectName}/fields/options\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n }\n }\n}\n\nfunction initApiAdaptor(){\n return `\n const recordId_tmp = api.body.recordId;\n let columns_tmp = {}, mobile_columns_tmp = {};\n if (recordId_tmp) {\n columns_tmp = payload.data.columns;\n mobile_columns_tmp = payload.data.mobile_columns;\n if (columns_tmp) {\n columns_tmp = lodash.map(columns_tmp, 'field');\n }\n if (mobile_columns_tmp) {\n mobile_columns_tmp = lodash.map(mobile_columns_tmp, 'field');\n }\n }\n payload.data.columns = columns_tmp;\n payload.data.mobile_columns = mobile_columns_tmp;\n \n delete payload.extensions;\n return payload;\n `\n}\n\nfunction apiRequestAdaptor(){\n return `\n const formData_tmp = api.body.$;\n const objectName_tmp = api.body.objectName;\n const recordId_tmp = api.body.recordId;\n \n if (typeof formData_tmp.columns == 'string') {\n formData_tmp.columns = formData_tmp.columns && formData_tmp.columns.split(',');\n }\n if (typeof formData_tmp.mobile_columns == 'string') {\n formData_tmp.mobile_columns = formData_tmp.mobile_columns && formData_tmp.mobile_columns.split(',');\n }\n \n // 数据格式转换\n formData_tmp.columns = lodash.map(formData_tmp.columns, (item) => {\n return { field: item };\n });\n formData.mobile_columns = lodash.map(formData.mobile_columns, (item) => {\n return { field: item };\n });\n \n let query_tmp = 'mutation{record: ' + objectName_tmp + '__insert(doc: {__saveData}){_id}}';\n if (api.body.recordId) {\n query_tmp = 'mutation{record: ' + objectName_tmp + '__update(id: \"' + recordId_tmp +'\", doc: {__saveData}){_id}}';\n };\n delete formData_tmp._id;\n let __saveData_tmp = JSON.stringify(JSON.stringify(formData_tmp));\n api.data = { query: query_tmp.replace('{__saveData}', __saveData_tmp) };\n \n return api;\n `\n}","import { i18next } from \"../../../../../i18n\"\nexport const getSetListviewSortButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_sort'),\n \"disabledOn\": \"!((global.user.is_space_admin || global.userId == uiSchema.list_views[listName].owner) && !!uiSchema.list_views[listName].owner)\",\n \"onEvent\": {\n \"click\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": i18next.t('frontend_listview_control_sort'),\n \"data\": {\n //\"&\":\"$$\",2.7、2.9、3.0在此处失效\n \"targetObjectName\": \"${objectName}\",\n \"recordId\": \"${uiSchema.list_views[listName]._id}\",\n \"listName\": \"${listName}\",\n \"appId\": \"${appId}\",\n \"context\": \"${context}\"\n },\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"object_listviews\",\n \"recordId\": \"${recordId}\",\n \"className\": \"\",\n \"id\": \"u:061f158b4c5a\",\n \"mode\": \"edit\",\n \"fields\": [\n \"sort\",\n \"sort.$.field_name\",\n \"sort.$.order\"\n ],\n \"onEvent\": {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"args\": {\n \"url\": \"${context.rootUrl}/app/${appId}/${targetObjectName}/grid/${listName}\",\n \"blank\": false\n },\n \"actionType\": \"url\"\n }\n ]\n }\n },\n \"fieldsExtend\": fieldsExtend(),\n \"initApiAdaptor\": initApiAdaptor(),\n \"apiRequestAdaptor\": apiRequestAdaptor()\n }\n ],\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"id\": \"u:d3f6947b6acf\",\n \"size\": \"lg\"\n },\n \"actionType\": \"dialog\"\n }\n ]\n }\n }\n }\n}\n\nfunction fieldsExtend(){\n return {\n \"sort\": {\n \"amis\": {\n \"type\": \"tabs-transfer\",\n \"sortable\": true,\n \"searchable\": true,\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${targetObjectName}/sortFields/options\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n }\n }\n}\n\nfunction initApiAdaptor(){\n return `\n let sort;\n if (recordId) {\n sort = payload.data.sort;\n //数据格式转换\n if (sort instanceof Array) {\n sort = lodash.map(sort, (item) => {\n return item.field_name + ':' + (item.order || 'asc')\n });\n }\n }\n payload.data.sort = sort;\n delete payload.extensions;\n return payload;\n `\n}\n\nfunction apiRequestAdaptor(){\n return `\n const recordId = api.body.recordId;\n //数据格式转换\n if (typeof formData.sort == 'string') {\n formData.sort = formData.sort && formData.sort.split(',');\n }\n formData.sort = lodash.map(formData.sort, (item) => {\n const arr = item.split(':');\n return { field_name: arr[0], order: arr[1] };\n });\n if (recordId) {\n query = 'mutation{record: ' + objectName + '__update(id: \"' + recordId + '\", doc: {__saveData}){_id}}';\n }\n __saveData = JSON.stringify(JSON.stringify(formData));\n api.data = { query: query.replace('{__saveData}', __saveData) };\n return api;\n `\n}","import { i18next } from \"../../../../../i18n\"\nexport const getDeleteListviewButtonSchema = ()=>{\n return {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_listview_control_delete_label'),\n \"disabledOn\": \"!((global.user.is_space_admin || global.userId == uiSchema.list_views[listName].owner) && !!uiSchema.list_views[listName].owner)\",\n \"confirmText\": i18next.t('frontend_listview_control_delete_confirm_text'),\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"ajax\",\n \"args\": {\n \"api\": {\n \"url\": \"${context.rootUrl}/graphql\",\n \"method\": \"post\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"data\": {\n \"&\": \"$$\",\n \"uiSchema\": \"${uiSchema}\",\n \"recordId\": \"${uiSchema.list_views[listName]._id}\"\n },\n \"messages\": {\n \"success\": i18next.t('frontend_listview_control_delete_message_success')\n },\n \"requestAdaptor\": requestAdaptor(),\n \"adaptor\": adaptor(),\n }\n }\n },\n {\n \"actionType\": \"url\",\n \"args\": {\n \"url\": \"${context.rootUrl}/app/${appId}/${objectName}/grid/all\",\n \"blank\": false\n },\n \"expression\": \"data.delete == 1\"\n }\n ]\n }\n }\n }\n}\n\n\nfunction requestAdaptor(){\n return `\n const { recordId } = api.body;\n var deleteArray = [];\n if (recordId) { deleteArray.push(\\`delete:object_listviews__delete(id: \"\\${recordId}\")\\`); }\n api.data = { query: \\`mutation{\\${deleteArray.join(',')}}\\` };\n return api;\n `\n}\n\nfunction adaptor(){\n return `\n if (payload.errors) {\n payload.status = 2;\n payload.msg = payload.errors[0].message;\n }\n return payload;\n `\n}","import { getNewListviewButtonSchema } from \"./setting_listview/new\"\nimport { getCopyListviewButtonSchema } from \"./setting_listview/copy\"\nimport { getRenameListviewButtonSchema } from \"./setting_listview/rename\"\nimport { getSetListviewShareButtonSchema } from \"./setting_listview/share\"\nimport { getSetListviewFiltersButtonSchema } from \"./setting_listview/filters\"\nimport { getSetListviewColumnsButtonSchema } from \"./setting_listview/columns\"\nimport { getSetListviewSortButtonSchema } from \"./setting_listview/sort\"\nimport { getDeleteListviewButtonSchema } from \"./setting_listview/delete\"\nimport { i18next } from \"../../../../i18n\"\n\nexport const getSettingListviewToolbarButtonSchema = ()=>{\n return {\n \"type\": \"dropdown-button\",\n \"trigger\": \"click\",\n \"icon\": \"fa fa-cog\",\n //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330\n // \"tooltip\": i18next.t('frontend_button_listview_control_tooltip'),\n \"btnClassName\": \"antd-Button--iconOnly bg-white !p-2 rounded border-gray-300 text-gray-500\",\n \"align\": \"right\",\n \"visibleOn\": \"${!isLookup}\",\n \"buttons\": [\n {\n \"label\": i18next.t('frontend_button_listview_control_label'),\n \"children\": [\n getNewListviewButtonSchema(),\n getCopyListviewButtonSchema(),\n getRenameListviewButtonSchema(),\n getSetListviewShareButtonSchema(),\n getSetListviewFiltersButtonSchema(),\n getSetListviewColumnsButtonSchema(),\n getSetListviewSortButtonSchema(),\n getDeleteListviewButtonSchema()\n ]\n }\n ]\n }\n}","import { getObjectListHeaderFieldsFilterBar } from './header';\nimport { Router } from \"@steedos-widgets/amis-lib\";\nimport { getExportExcelToolbarButtonSchema } from './toolbars/export_excel';\nimport { getSettingListviewToolbarButtonSchema } from './toolbars/setting_listview'; \nimport { i18next } from \"../../../i18n\"\nimport * as Fields from './fields/index';\n\nconst getDisplayAsButton = function(objectName, showDisplayAs){\n let displayAs = Router.getTabDisplayAs(objectName);\n let buttons = [\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_display_type_is_table'),\n \"onClick\": \"const key = 'tab_\"+objectName+\"_display';localStorage.setItem(key, 'grid');let url = document.location.pathname; var urlSearch = new URLSearchParams(document.location.search); if(urlSearch.get(\\\"side_object\\\") && urlSearch.get(\\\"side_listview_id\\\")){url=`/app/${props.data.appId}/${urlSearch.get(\\\"side_object\\\")}/grid/${urlSearch.get(\\\"side_listview_id\\\")}`;}; props.env.jumpTo(url + '?display=grid');\",\n \"rightIcon\": displayAs != 'split' ? \"fa fa-check\" : null,\n \"rightIconClassName\": \"m-l-sm\"\n },\n {\n \"type\": \"button\",\n \"label\": i18next.t('frontend_display_type_is_split'),\n \"onClick\": \"const key = 'tab_\"+objectName+\"_display';localStorage.setItem(key, 'split');const url = document.location.pathname + '?display=split'; props.env.jumpTo(url);\",\n \"rightIcon\": displayAs === 'split' ? \"fa fa-check\" : null,\n \"rightIconClassName\": \"m-l-sm\"\n }\n ];\n const displayAsLabel = displayAs === 'split'? i18next.t('frontend_display_type_is_split') : i18next.t('frontend_display_type_is_table');\n return {\n \"type\": \"dropdown-button\",\n \"icon\": \"fa fa-table-columns\",\n //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330\n // \"tooltip\": `${i18next.t('frontend_display_as')} ${displayAsLabel}`,\n \"btnClassName\": \"antd-Button--iconOnly bg-white !p-2 rounded border-gray-300 text-gray-500\",\n \"align\": \"right\",\n \"visibleOn\": \"${window:innerWidth > 768 && !!!isLookup}\",\n \"buttons\": [ \n {\n \"label\": i18next.t('frontend_display_as'),\n \"children\": buttons\n }\n ]\n };\n}\n\n\nconst onFieldsFilterToggleScript = `\nconst scope = event.context.scoped;\nconst filterForm = scope.getComponents().find(function(n){\n return n.props.type === \"form\";\n});\nconst filterService = filterForm.context.getComponents().find(function(n){\n return n.props.type === \"service\";\n});\nlet toShowFieldsFilter = !!!filterService.props.data.showFieldsFilter;\nfilterService.setData({showFieldsFilter: toShowFieldsFilter});\nlet resizeWindow = function(){\n //触发amis crud 高度重算\n setTimeout(()=>{\n window.dispatchEvent(new Event(\"resize\"))\n }, 1000);\n}\nresizeWindow();\n// 手机端在显示搜索栏时隐藏crud上的刷新按钮,因为点击后crud高度显示有问题\nlet crudService = scope.getComponentById(\"service_listview_\" + event.data.objectName);\ncrudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});\n// if(filterService.props.data.showFieldsFilter){\n// if(isMobile){\n// // 手机上只能通过取消按钮来关闭搜索栏\n// return;\n// }\n// let buttonCancel = SteedosUI.getClosestAmisComponentByType(filterForm.context, \"button\", { \n// direction: \"down\", \n// name: \"btn_filter_form_cancel\" \n// });\n// buttonCancel.props.dispatchEvent('click', {}).then(function(){\n// resizeWindow();\n// });\n// }\n// else{\n// if(isMobile){\n// // 手机端在显示搜索栏时隐藏crud上的刷新按钮,因为点击后crud高度显示有问题\n// let crudService = scope.getComponentById(\"service_listview_\" + event.data.objectName);\n// crudService && crudService.setData({showFieldsFilter: true});\n// }\n// }\n`;\n\n// function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = \"__keywords\", crudId } = {}){\nfunction getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = \"__keywords\" } = {}){\n const searchableFieldsLabel = [];\n _.each(mainObject.fields, function (field) {\n if (Fields.isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {\n searchableFieldsLabel.push(field.label);\n }\n });\n\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n let crudKeywords = \"\";\n if(localListViewProps && !isLookup){\n localListViewProps = JSON.parse(localListViewProps);\n crudKeywords = (localListViewProps && localListViewProps.__keywords) || \"\";\n }\n\n const onChangeScript = `\n const scope = event.context.scoped;\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n // let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n let __changedSearchBoxValues = {};\n __changedSearchBoxValues[\"${keywordsSearchBoxName}\"] = event.data[\"${keywordsSearchBoxName}\"];\n // crudService && crudService.setData({__changedSearchBoxValues: __changedSearchBoxValues});\n // 这里不用crudService而用crud是因为lookup字段弹出的列表中的crudService中的变量无法传入crud的发送适配器中\n crud && crud.setData({__changedSearchBoxValues: __changedSearchBoxValues});\n `;\n\n // onSearchScript中加上了onChangeScript中的脚本,是因为amis 3.2不能用change事件执行onChangeScript\n // 而点击回车按键又不会触发blur事件,所以只能每次回车事件中额外再执行一次onChangeScript\n // 等升级到amis 3.4+,blur事件换成change事件执行onChangeScript,就可以不用在onSearchScript中执行onChangeScript了\n const onSearchScript = `\n ${onChangeScript}\n\n // 下面的脚本只为解决点击搜索表单取消按钮,再重新在其中输入过滤条件但是不点击搜索按钮或回车按键触发搜索,此时在快速搜索框输入过滤条件按回车按键会把搜索表单中的过滤条件清空的问题\n // const scope = event.context.scoped;\n // 如果点击过顶部搜索栏表单的取消按钮,会把此处event.data.__super.__super.__super中的搜索表单项的所有字段设置为null\n // 点击取消按钮后继续在表单项中输入过滤条件且最后没有点击回车按键或点击表单项搜索按钮的话,在快速搜索中点击回车按钮提交搜索会所顶部搜索表单中的字段值清空\n let filterForm = SteedosUI.getClosestAmisComponentByType(scope, \"form\");\n setTimeout(function(){\n filterForm.setValues(event.data.__changedFilterFormValues);\n }, 500);\n `;\n\n return {\n \"type\": \"tooltip-wrapper\",\n \"id\": \"steedos_crud_toolbar_quick_search\",\n \"align\": \"right\",\n \"title\": \"\",\n \"content\": \"可搜索字段:\" + searchableFieldsLabel.join(\",\"),\n \"placement\": \"bottom\",\n \"tooltipTheme\": \"dark\",\n \"trigger\": \"click\",\n \"className\": formFactor !== 'SMALL' ? \"mr-1\" : '',\n \"visible\": !!searchableFieldsLabel.length,\n \"body\": [\n {\n \"type\": \"search-box\",\n \"name\": keywordsSearchBoxName,\n \"placeholder\": \"搜索此列表\",\n \"value\": crudKeywords,\n \"clearable\": true,\n // \"clearAndSubmit\": true,//因为清除并不会触发失去焦点事件,只有禁用,但是它会触发change事件,所以等升级到amis 3.4+后可以重新放开\n \"searchImediately\": false,\n \"onEvent\": {\n \"search\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onSearchScript\n }\n ]\n },\n \"blur\": { //这里把change事件换成blur是因为amis 3.2change事件中setData会卡,升级到3.4+后就可以换回change事件\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onChangeScript\n },\n ]\n }\n }\n }\n ]\n }\n}\n\nexport function getObjectHeaderToolbar(mainObject, fields, formFactor, { \n showDisplayAs = false, hiddenCount = false, headerToolbarItems,\n filterVisible = true, isLookup = false, keywordsSearchBoxName } = {}){\n // console.log(`getObjectHeaderToolbar====>`, filterVisible)\n // console.log(`getObjectHeaderToolbar`, mainObject)\n\n const isMobile = window.innerWidth < 768;\n if(isMobile){\n showDisplayAs = false;\n }\n let toolbarCount;\n if(!hiddenCount){\n toolbarCount = {\n \"type\": \"tpl\",\n \"tpl\": \"${count} \" + i18next.t('frontend_record_sum')\n };\n }\n let toolbarReloadButton;\n if(formFactor === 'SMALL'){\n // const onReloadScript = `\n // const scope = event.context.scoped;\n // var listView = scope.parent.getComponents().find(function(n){\n // return n.props.type === \"crud\";\n // });\n // listView.handleChangePage(1);\n // `;\n // toolbarReloadButton = {\n // // \"type\": \"reload\",//不可以直接使用reload,因为它不会设置页码到第一页,这在加载更多按钮的翻页模式下会有问题\n // \"type\": \"button\",\n // \"align\": \"right\",\n // //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330\n // // \"tooltip\": i18next.t('frontend_button_reload_tooltip'),\n // \"tooltipPlacement\": \"top\",\n // \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\",\n // \"label\": \"\",\n // \"icon\": \"fa fa-sync\",\n // \"visibleOn\": \"${!showFieldsFilter}\",\n // \"onEvent\": {\n // \"click\": {\n // \"actions\": [\n // {\n // \"actionType\": \"custom\",\n // \"script\": onReloadScript\n // }\n // ]\n // }\n // },\n // };\n\n // 后续如果换成加载更多按钮的翻页模式的话,不可以直接使用下面的reload,需要换成上面的自定义脚本模式\n toolbarReloadButton = {\n \"type\": \"reload\",\n \"align\": \"right\",\n //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330\n // \"tooltip\": i18next.t('frontend_button_reload_tooltip'),\n \"tooltip\":\"\",\n \"tooltipPlacement\": \"top\",\n \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\"\n };\n }\n else{\n toolbarReloadButton = {\n \"type\": \"reload\",\n \"align\": \"right\",\n //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330\n // \"tooltip\": i18next.t('frontend_button_reload_tooltip'),\n \"tooltip\":\"\",\n \"tooltipPlacement\": \"top\",\n \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\"\n };\n }\n let toolbarFilter;\n if(filterVisible){\n toolbarFilter ={\n \"label\": i18next.t('frontend_button_search_tooltip'),\n \"icon\": \"fa fa-filter\",\n //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330\n // \"tooltip\": i18next.t('frontend_button_search_tooltip'),\n // \"tooltipPlacement\": \"top\",\n \"type\": \"button\",\n \"badge\": {\n \"offset\": [\n -5,\n 1\n ],\n \"size\":8,\n \"animation\": true,\n \"visibleOn\": \"${isFieldsFilterEmpty == false && isLookup != true}\"\n },\n \"align\": \"right\",\n \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onFieldsFilterToggleScript\n }\n ]\n }\n },\n \"id\": \"steedos_crud_toolbar_filter\"\n };\n }\n let toolbarDisplayAsButton = getDisplayAsButton(mainObject?.name, showDisplayAs);\n let toolbarDQuickSearchBox = getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName });\n\n // toolbars返回的数组元素不可以是空对象{},比如hiddenCount ? {} : {\"type\": \"tpl\",...},因为空对象最终还是会生成一个空的.antd-Crud-toolbar-item dom\n // 当出现空的.antd-Crud-toolbar-item dom时会影响toolbar元素的maring-right css样式计算,如果有动态需要应该加到动态数组变量toolbars中\n let toolbars = [];\n if(formFactor === 'SMALL'){\n if(toolbarCount){\n toolbars.push(toolbarCount);\n }\n if(toolbarFilter){\n toolbars.push(toolbarFilter);\n }\n toolbars.push(toolbarReloadButton);\n toolbars.push(toolbarDisplayAsButton);\n toolbars.push(toolbarDQuickSearchBox);\n return [\n // \"bulkActions\",\n ...(headerToolbarItems || []),\n ...toolbars,\n ]\n }else{\n if(toolbarCount){\n toolbars.push(toolbarCount);\n }\n if(toolbarFilter){\n toolbars.push(toolbarFilter);\n }\n toolbars.push(toolbarReloadButton);\n toolbars.push(toolbarDisplayAsButton);\n if(mainObject?.permissions?.allowCreateListViews){\n toolbars.push(getSettingListviewToolbarButtonSchema());\n }\n toolbars.push(toolbarDQuickSearchBox);\n return [\n // \"filter-toggler\",\n ...(headerToolbarItems || []),\n \"bulkActions\",\n // 不能放开crud columns-toggler否则crud card模式会报错\n // {\n // \"type\": \"columns-toggler\",\n // \"className\": \"hidden\"\n // },\n ...toolbars,\n // {\n // \"type\": \"columns-toggler\",\n // \"className\": \"mr-2\"\n // },\n // getExportExcelToolbarButtonSchema(),\n // {\n // \"type\": \"drag-toggler\",\n // \"align\": \"right\"\n // },\n // {\n // \"type\": \"pagination\",\n // \"align\": \"right\"\n // }\n ]\n }\n\n\n \n}\n\nexport function getObjectFooterToolbar(mainObject, formFactor, options) {\n // crud card模式与table模式两种情况下showPageInput默认值不一样,所以需要显式设置为false\n if (formFactor === 'SMALL') {\n // return [\n // \"load-more\",\n // ]\n if(options.displayAs === 'split'){\n return [\n \"switch-per-page\",\n {\n \"type\": \"pagination\",\n \"maxButtons\": 5,\n \"showPageInput\": false\n }\n ]\n }else{\n return [\n // \"statistics\",\n {\n \"type\": \"pagination\",\n \"maxButtons\": 5,\n \"showPageInput\": false\n }\n ]\n }\n }\n else {\n if(options && options.isRelated){\n return [\n \"statistics\",\n {\n \"type\": \"pagination\",\n \"maxButtons\": 10,\n \"showPageInput\": false\n }\n ]\n\n }\n else{\n const no_pagination = mainObject.paging && (mainObject.paging.enabled === false);\n const is_lookup = options.isLookup;\n const commonConfig = [\n \"statistics\",\n {\n \"type\": \"pagination\",\n \"maxButtons\": 10,\n \"showPageInput\": false\n }\n ];\n\n if (no_pagination && is_lookup) {\n return commonConfig;\n } else {\n return [\"switch-per-page\", ...commonConfig];\n }\n }\n }\n}\n\nexport async function getObjectFilter(objectSchema, fields, options) {\n const fieldsFilterBarSchema = await getObjectListHeaderFieldsFilterBar(objectSchema, null, options);\n let onSubmitSuccScript = `\n let isLookup = event.data.isLookup;\n if(isLookup){\n return;\n }\n // 列表搜索栏字段值变更后立刻触发提交表单执行crud搜索,所以这里需要额外重算crud高度及筛选按钮红色星号图标显示隐藏\n let resizeWindow = function(){\n //触发amis crud 高度重算\n setTimeout(()=>{\n window.dispatchEvent(new Event(\"resize\"))\n }, 1000);\n }\n resizeWindow();\n const scope = event.context.scoped;\n // let filterFormValues = event.data;\n let filterForm = SteedosUI.getClosestAmisComponentByType(scope, \"form\");\n let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, \"service\");\n // 使用event.data的话,并不能拿到本地存储中的过滤条件,所以需要从filterFormService中取。\n let filterFormValues = filterFormService.getData()\n let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n crudService && crudService.setData({isFieldsFilterEmpty});\n `;\n let onChangeScript = `\n const scope = event.context.scoped;\n // let filterFormValues = event.data;\n let filterForm = SteedosUI.getClosestAmisComponentByType(scope, \"form\");\n let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, \"service\");\n // 使用event.data的话,并不能拿到本地存储中的过滤条件,所以需要从filterFormService中取。\n let filterFormValues = filterFormService.getData();\n let crud = SteedosUI.getClosestAmisComponentByType(scope, \"crud\");\n const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});;\n // let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, \"service\");\n // crudService && crudService.setData({__changedFilterFormValues: changedFilterFormValues});\n // 这里不用crudService而用crud是因为lookup字段弹出的列表中的crudService中的变量无法传入crud的发送适配器中\n crud && crud.setData({__changedFilterFormValues: changedFilterFormValues});\n `;\n return {\n \"title\": \"\",\n \"submitText\": \"\",\n \"className\": \"\",\n \"debug\": false,\n \"mode\": \"normal\",\n \"wrapWithPanel\": false,\n \"body\": [\n fieldsFilterBarSchema\n ],\n \"onEvent\": {\n \"submitSucc\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onSubmitSuccScript\n }\n ]\n },\n \"change\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onChangeScript\n }\n ]\n }\n }\n }\n}\n","import { getAuthToken , getTenantId, getRootUrl, getSteedosAuth } from '../../steedos.client.js';\nimport { getReadonlyFormInitApi, getSaveApi, getEditFormInitApi, getBatchDelete } from './api';\nimport { getTableSchema, getTableApi } from './fields/table';\nimport { getFormBody } from './form';\nimport { getListSchema, getCardSchema } from './fields/list';\nimport _, { map } from 'lodash';\nimport { defaultsDeep } from '../../defaultsDeep';\nimport { getObjectHeaderToolbar, getObjectFooterToolbar, getObjectFilter } from './toolbar';\nimport { i18next } from \"../../../i18n\"\nimport { createObject } from '../../../utils/object';\n\nfunction getBulkActions(objectSchema){\n return [\n {\n \"type\": \"button\",\n \"level\": \"danger\",\n \"label\": \"批量删除\",\n \"actionType\": \"ajax\",\n \"confirmText\": i18next.t('frontend_delete_many_confirm_text'),\n \"className\": \"hidden\",\n \"id\": \"batchDelete\",\n \"api\": getBatchDelete(objectSchema.name),\n }\n // {\n // \"label\": \"批量修改\",\n // \"actionType\": \"dialog\",\n // \"dialog\": {\n // \"title\": \"批量编辑\",\n // \"name\": \"sample-bulk-edit\",\n // \"body\": {\n // \"type\": \"form\",\n // \"api\": \"https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample/bulkUpdate2\",\n // \"controls\": [\n // {\n // \"type\": \"hidden\",\n // \"name\": \"ids\"\n // },\n // {\n // \"type\": \"text\",\n // \"name\": \"name\",\n // \"label\": \"Name\"\n // }\n // ]\n // }\n // }\n // }\n ]\n}\n\nfunction getHeaderToolbar(mainObject, formFactor){\n\n if(formFactor === 'SMALL'){\n return [\n \"bulkActions\",\n {\n \"type\": \"reload\",\n \"align\": \"right\"\n },\n {\n \"type\": \"search-box\",\n \"align\": \"right\",\n \"name\": \"__keywords\",\n \"placeholder\": \"请输入关键字\",\n \"mini\": true\n }\n ]\n }else{\n return [\n \"filter-toggler\",\n \"bulkActions\",\n // {\n // \"type\": \"export-excel\",\n // \"align\": \"right\"\n // },\n // {\n // \"type\": \"reload\",\n // \"align\": \"right\"\n // },\n // {\n // \"type\": \"columns-toggler\",\n // \"align\": \"right\"\n // },\n {\n \"type\": \"search-box\",\n \"align\": \"right\",\n \"name\": \"__keywords\",\n \"placeholder\": \"请输入关键字\",\n \"mini\": true\n },\n // {\n // \"type\": \"drag-toggler\",\n // \"align\": \"right\"\n // },\n // {\n // \"type\": \"pagination\",\n // \"align\": \"right\"\n // }\n ]\n }\n\n\n \n}\n\n\nfunction footerToolbar(){\n return [\n \"statistics\",\n // \"switch-per-page\",\n \"pagination\"\n ]\n}\n\nfunction getFilter(){\n return {\n \"title\": \"条件搜索\",\n \"submitText\": \"\",\n \"body\": [\n {\n \"type\": \"input-text\",\n \"name\": \"name\",\n \"placeholder\": \"合同名称\",\n \"addOn\": {\n \"label\": \"搜索\",\n \"type\": \"submit\"\n }\n }\n ]\n }\n}\n\nasync function getCrudSchemaWithDataFilter(crud, options = {}){\n const { crudDataFilter, amisData, env } = options;\n let onCrudDataFilter = options.onCrudDataFilter;\n if (!onCrudDataFilter && typeof crudDataFilter === 'string') {\n onCrudDataFilter = new Function(\n 'crud',\n 'env',\n 'data',\n crudDataFilter\n );\n }\n\n try {\n onCrudDataFilter && (crud = await onCrudDataFilter(crud, env, amisData) || crud);\n } catch (e) {\n console.warn(e);\n }\n return crud;\n}\n\nexport async function getObjectCRUD(objectSchema, fields, options){\n // console.time('getObjectCRUD');\n const { top, perPage, showDisplayAs = false, displayAs, crudClassName = \"\",\n crudDataFilter, onCrudDataFilter, amisData, env } = options;\n const nonpaged = objectSchema.paging && objectSchema.paging.enabled === false;\n const isTreeObject = objectSchema.enable_tree;\n const bulkActions = getBulkActions(objectSchema);\n const defaults = options.defaults;\n const listSchema = (defaults && defaults.listSchema) || {};\n\n const bodyProps = {\n // toolbar: getToolbar(),\n // headerToolbar: getObjectHeaderToolbar(objectSchema, options.formFactor, {showDisplayAs}),\n headerToolbarClassName: \"px-4 py-2 border-gray-300 bg-gray-100 border-solid border-b\",\n footerToolbar: getObjectFooterToolbar(objectSchema, options.formFactor, {\n ...options,\n disableStatistics: options.queryCount === false\n }), \n filter: options.filterVisible !== false && await getObjectFilter(objectSchema, fields, options),\n };\n if(options.formFactor !== 'SMALL' || [\"split\"].indexOf(options.displayAs) == -1){\n if(listSchema.mode !== \"cards\"){\n // card模式时默认不显示勾选框\n Object.assign(bodyProps, {\n bulkActions: options.bulkActions != false ? bulkActions : false\n });\n }\n }\n // yml里配置的 不分页和enable_tree:true 优先级最高,组件中输入的top次之。\n options.queryCount = true;\n if(nonpaged || isTreeObject){\n options.top = 5000;\n bodyProps.footerToolbar = [];\n options.queryCount = true; // 禁止翻页的时候, 需要查找总数\n }else if(top){\n bodyProps.footerToolbar = [];\n if(options.isRelated){\n options.queryCount = true;\n }else{\n options.queryCount = false;\n }\n }\n // console.log(`getObjectHeaderToolbar====2===>`, options.filterVisible)\n bodyProps.headerToolbar = getObjectHeaderToolbar(objectSchema, fields, options.formFactor, {\n showDisplayAs, \n hiddenCount: options.queryCount === false, \n headerToolbarItems: options.headerToolbarItems,\n filterVisible: options.filterVisible\n });\n\n options.amisData = createObject(options.amisData, {\n objectName: objectSchema.name,\n // _id: null,\n recordPermissions: objectSchema.permissions,\n uiSchema: objectSchema,\n // loaded: false //crud接收适配器中设置为true,否则就是刷新浏览器第一次加载\n });\n\n\n let body = null;\n const id = `listview_${objectSchema.name}`;\n if(options.formFactor === 'SMALL' && false){\n delete bodyProps.bulkActions;\n delete bodyProps.headerToolbar;\n delete bodyProps.footerToolbar;\n const card = await getCardSchema(fields, Object.assign({idFieldName: objectSchema.idFieldName, labelFieldName: objectSchema.NAME_FIELD_KEY || 'name'}, options, {actions: false}));\n body = Object.assign({}, card , {\n type: 'crud', \n primaryField: '_id', \n id: id,\n name: id,\n keepItemSelectionOnPageChange: false, \n api: await getTableApi(objectSchema, fields, options),\n hiddenOn: options.tableHiddenOn,\n }, \n bodyProps\n );\n }else{\n let labelFieldName = objectSchema.NAME_FIELD_KEY || 'name';\n // organizations 对象的历史遗留问题, fullname 被标记为了 名称字段. 在此处特殊处理.\n if(objectSchema.name === 'organizations'){\n labelFieldName = 'name';\n }\n let tableOptions = Object.assign({\n idFieldName: objectSchema.idFieldName, labelFieldName: labelFieldName, \n permissions:objectSchema.permissions,enable_inline_edit:objectSchema.enable_inline_edit,\n crudId: listSchema.id || id\n }, options);\n tableOptions.amisData = createObject(options.amisData || {}, {});\n const table = await getTableSchema(fields, tableOptions);\n // delete table.mode;\n //image与avatar需要在提交修改时特别处理\n const imageNames = _.compact(_.map(_.filter(fields, (field) => [\"image\",\"avatar\"].includes(field.type)), 'name'));\n const quickSaveApiRequestAdaptor = `\n var graphqlOrder = \"\";\n var imageNames = ${JSON.stringify(imageNames)};\n const rowsDiff = _.cloneDeep(api.data.rowsDiff);\n rowsDiff.forEach(function (item, index) {\n for(key in item){\n if(_.includes(imageNames, key)){\n if(typeof item[key] == \"string\"){\n const match = item[key].match(/\\\\/([^\\\\/]+)$/);\n item[key] = match && match.length > 1?match[1]:\"\";\n }else{\n item[key] = _.map(item[key], function(ele){\n const match = ele.match(/\\\\/([^\\\\/]+)$/);\n return match && match.length > 1?match[1]:\"\";\n })\n }\n }\n }\n item = _.omit(item, '_display');\n const itemOrder = 'update' + index + ':' + api.data.objectName + '__update(id:\"' + item._id + '\", doc:' + JSON.stringify(JSON.stringify(_.omit(item, '_id'))) + ') {_id}';\n graphqlOrder += itemOrder;\n })\n graphqlOrder = 'mutation {' + graphqlOrder + '}';\n return {\n ...api,\n data: {\n query: graphqlOrder\n }\n }\n `\n let autoFillHeight = true\n if(options.isRelated || window.innerWidth < 768){\n autoFillHeight = false\n }\n\n body = Object.assign({}, table, {\n type: 'crud', \n primaryField: '_id', \n affixHeader: false,\n id: id,\n name: id,\n keepItemSelectionOnPageChange: true, \n api: await getTableApi(objectSchema, fields, options),\n hiddenOn: options.tableHiddenOn,\n autoFillHeight,\n className: `flex-auto ${crudClassName || \"\"}`,\n // 这里不可以用动态className,因为它会把样式类加到.antd-Crud和.antd-Table.antd-Crud-body这两层div中,而子表列表中crudClassName中有hidden样式类会造成所有子表都不显示的bug\n // className: {\n // [`flex-auto ${crudClassName || \"\"}`]: \"true\",\n // \"is-steedos-crud-data-empty\": \"${!items || COUNT(items) == 0}\"\n // },\n bodyClassName: {\n \"bg-white\": \"true\",\n \"is-steedos-crud-data-empty\": \"${!items || COUNT(items) == 0}\"\n },\n crudClassName: crudClassName,\n quickSaveApi: {\n url: `\\${context.rootUrl}/graphql`,\n method: \"post\",\n dataType: \"json\",\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\",\n },\n requestAdaptor: quickSaveApiRequestAdaptor,\n adaptor: `\n if(payload.errors){\n payload.status = 2;\n payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;\n }\n return payload;\n `\n },\n rowClassNameExpr: options.rowClassNameExpr\n }, bodyProps);\n\n }\n\n body = defaultsDeep({}, listSchema, body);\n body = await getCrudSchemaWithDataFilter(body, { crudDataFilter, onCrudDataFilter, amisData, env });\n\n let crudModeClassName = \"\";\n if(body.mode){\n crudModeClassName = `steedos-crud-mode-${body.mode}`;\n }\n\n if (defaults) {\n const headerSchema = defaults.headerSchema;\n const footerSchema = defaults.footerSchema;\n if (headerSchema || footerSchema) {\n let wrappedBody = [body];\n if (headerSchema) {\n if(_.isArray(headerSchema)){\n wrappedBody = _.union(headerSchema,wrappedBody);\n }\n else{\n wrappedBody.unshift(headerSchema);\n }\n }\n if (footerSchema) {\n if(_.isArray(footerSchema)){\n wrappedBody = _.union(wrappedBody,footerSchema);\n }\n else{\n wrappedBody.push(footerSchema);\n }\n }\n body = wrappedBody;\n }\n }\n // console.timeEnd('getObjectCRUD');\n // TODO: data应该只留loaded,其他属性都改为从上层传递下来\n return {\n type: 'service',\n className: crudModeClassName,\n //目前crud的service层id不认用户自定义id,只支持默认规则id,许多地方的格式都写死了service_listview_${objectname}\n id: `service_${id}`,\n name: `page`,\n data: options.amisData,\n body: body\n }\n}\n\nconst getGlobalData = (mode)=>{\n const user = getSteedosAuth();\n return {mode: mode, user: user, spaceId: user.spaceId, userId: user.userId}\n}\n\nconst getFormFields = (objectSchema, formProps)=>{\n // console.log(`getFormFields`, objectSchema, formProps)\n const { fields: objectFields } = objectSchema;\n /**\n * fieldsExtend: 重写字段定义\n * fields: 包含的字段\n * excludedFields: 排除的字段\n */\n const { fieldsExtend, fields: includedFields, excludedFields } = formProps;\n \n let fields = {};\n // 以uiSchema fields 为基础, 遍历字段, 并更新字段定义\n _.forEach(objectSchema.fields, (field, fieldName)=>{\n if(!lodash.has(field, \"name\")){\n field.name = fieldName\n }\n if(fieldsExtend && fieldsExtend[fieldName]){\n fields[field.name] = Object.assign({}, field, fieldsExtend[fieldName], {name: field.name})\n }else{\n fields[field.name] = field\n }\n });\n\n if(!_.isEmpty(includedFields) && _.isArray(includedFields)){\n const includedFieldsMap = {}\n _.each(includedFields, (fName, index)=>{\n if(fields[fName]){\n includedFieldsMap[fName] = Object.assign({}, fields[fName], {sort_no: index})\n }\n })\n fields = includedFieldsMap\n }\n\n if(!_.isEmpty(excludedFields) && _.isArray(excludedFields)){\n _.each(excludedFields, (fName)=>{\n delete fields[fName]\n })\n }\n\n return lodash.sortBy(_.values(fields), \"sort_no\");\n}\n\nasync function getFormSchemaWithDataFilter(form, options = {}){\n const { formDataFilter, amisData, env } = options;\n let onFormDataFilter = options.onFormDataFilter;\n if (!onFormDataFilter && typeof formDataFilter === 'string') {\n onFormDataFilter = new Function(\n 'form',\n 'env',\n 'data',\n formDataFilter\n );\n }\n\n try {\n onFormDataFilter && (form = await onFormDataFilter(form, env, amisData) || form);\n } catch (e) {\n console.warn(e);\n }\n return form;\n}\n\nexport async function getObjectForm(objectSchema, ctx){\n const { recordId, formFactor, layout = formFactor === 'SMALL' ? 'normal' : \"normal\", labelAlign, tabId, appId, defaults, submitSuccActions = [], \n formDataFilter, onFormDataFilter, amisData, env } = ctx;\n const fields = _.values(objectSchema.fields);\n const formFields = getFormFields(objectSchema, ctx);\n const formSchema = defaults && defaults.formSchema || {};\n if(_.has(formSchema, 'className')){\n formSchema.className = 'steedos-amis-form'\n }\n if(!formSchema.id){\n formSchema.id = 'form_' + objectSchema.name;\n }\n const amisSchema = {\n type: 'service',\n id: `service_${formSchema.id}`,\n className: 'p-0',\n name: `page_edit_${recordId}`,\n api: await getEditFormInitApi(objectSchema, recordId, fields, ctx),\n data:{\n editFormInited: false,\n ...amisData\n },\n // data: {global: getGlobalData('edit'), recordId: recordId, objectName: objectSchema.name, context: {rootUrl: getRootUrl(), tenantId: getTenantId(), authToken: getAuthToken()}},\n initApi: null,\n initFetch: null ,\n body: [defaultsDeep({}, formSchema, {\n type: \"form\",\n mode: layout,\n data: {\n \"&\": \"${initialValues}\"\n },\n labelAlign,\n persistData: false,\n resetAfterSubmit: true,\n preventEnterSubmit: true,\n promptPageLeave: true,\n canAccessSuperData: false,\n name: `form_edit_${recordId}`,\n debug: false,\n title: \"\",\n submitText: \"\", // amis 表单不显示提交按钮, 表单提交由项目代码接管\n api: await getSaveApi(objectSchema, recordId, fields, ctx),\n initFetch: recordId != 'new',\n body: await getFormBody(fields, formFields, Object.assign({}, ctx, {fieldGroups: objectSchema.field_groups})),\n panelClassName:'m-0 sm:rounded-lg shadow-none border-none',\n bodyClassName: 'p-0',\n className: 'steedos-amis-form',\n hiddenOn: \"${editFormInited != true}\",\n onEvent: {\n \"submitSucc\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": `@data.changed.${objectSchema.name}`\n },\n \"data\": {\n \"objectName\": `${objectSchema.name}`,\n \"displayAs\": \"${displayAs}\"\n }\n },\n {\n \"actionType\": \"broadcast\",\n \"args\": {\n \"eventName\": \"@data.changed.${_master.objectName}\"\n },\n \"data\": {\n \"objectName\": \"${_master.objectName}\",\n \"_isRelated\": \"${_isRelated || _master._isRelated}\"\n },\n \"expression\": `\\${_master.objectName != '${objectSchema.name}' && _master.objectName}`\n },\n ...submitSuccActions,\n // {\n // \"actionType\": \"custom\",\n // \"script\": `setTimeout(function(){doAction({'actionType': 'setValue','componentId': '${formSchema.id}','args': {'value': {'sort_no': 879}}})}, 300)`\n // },\n // {\n // \"args\": {},\n // \"actionType\": \"closeDialog\"\n // }\n ]\n }\n }\n })]\n };\n amisSchema.body[0] = await getFormSchemaWithDataFilter(amisSchema.body[0], { formDataFilter, onFormDataFilter, amisData, env });\n return amisSchema;\n}\n\nexport async function getObjectDetail(objectSchema, recordId, ctx){\n const { formFactor, layout = formFactor === 'SMALL' ? 'normal' : \"normal\", labelAlign, \n formDataFilter, onFormDataFilter, amisData, env } = ctx;\n const fields = _.values(objectSchema.fields);\n const formFields = getFormFields(objectSchema, ctx);\n const serviceId = `service_detail_page`;\n const amisSchema = {\n type: 'service',\n name: `page_readonly_${recordId}`,\n id: serviceId,\n data: {global: getGlobalData('read'), context: {rootUrl: getRootUrl(), tenantId: getTenantId(), authToken: getAuthToken()}},\n api: await getReadonlyFormInitApi(objectSchema, recordId, fields, ctx),\n body: [\n {\n \"type\": \"wrapper\", //form 的 hiddenOn 会导致 form onEvent 异常, 使用wrapper包裹一次form,并在wrapper上控制显隐\n hiddenOn: \"${recordLoaded != true}\",\n \"className\": \"p-0 m-0\",\n \"body\": {\n type: \"form\",\n mode: layout,\n labelAlign,\n persistData: false,\n promptPageLeave: false,\n name: `form_readonly_${recordId}`,\n debug: false,\n title: \"\",\n data: {\n \"formData\": \"$$\"\n },\n wrapWithPanel: false, \n body: await getFormBody(\n map(fields, (field) => { field.readonly = true; return field; }),\n map(formFields, (field) => { field.readonly = true; return field; }),\n Object.assign({}, ctx, { showSystemFields: true, fieldGroups: objectSchema.field_groups })\n ),\n className: 'steedos-amis-form bg-white',\n actions: [], // 不显示表单默认的提交按钮\n onEvent: {\n [`@data.changed.${objectSchema.name}`]: { // 由于amis service 组件的 onEvent 存在bug ,此处借助form来刷新 上层 service https://github.com/baidu/amis/issues/6294\n \"actions\": [\n {\n \"actionType\": \"reload\",\n \"componentId\": serviceId,\n \"expression\": \"this.__deletedRecord != true\"\n },\n {\n // \"args\": {\n // \"url\": \"/app/${appId}/${objectName}/grid/${side_listview_id}\",\n // \"blank\": false\n // },\n \"actionType\": \"custom\",\n \"script\": \"window.goBack()\",\n \"expression\": \"this.__deletedRecord === true\"\n }\n ]\n }\n }\n },\n }\n ],\n onEvent: {\n \"fetchInited\": {\n \"weight\": 0,\n \"actions\": [\n {\n actionType: 'broadcast',\n eventName: \"recordLoaded\",\n args: {\n eventName: \"recordLoaded\"\n },\n data: {\n objectName: \"${event.data.__objectName}\",\n record: \"${event.data.__record}\"\n },\n expression: \"${event.data.__response.error != true}\"\n },\n {\n \"actionType\": \"setValue\",\n \"args\": {\n value: {\n \"recordLoaded\": true,\n }\n },\n expression: \"${event.data.__response.error != true}\"\n }\n ]\n }\n }\n }\n\n amisSchema.body[0].body = await getFormSchemaWithDataFilter(amisSchema.body[0].body, { formDataFilter, onFormDataFilter, amisData, env });\n return amisSchema;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-01 09:00:26\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-09-03 13:21:38\n * @Description: \n */\nimport { fetchAPI, getSteedosAuth } from \"./steedos.client\"\nimport { each } from \"lodash\";\n\nconst getGraphqlFieldsQuery = (fields)=>{\n const fieldsName = ['_id'];\n fields.push('record_permissions');\n //TODO 此处需要考虑相关对象查询\n each(fields, (fieldName)=>{\n if(fieldName.indexOf('.') > -1){\n fieldName = fieldName.split('.')[0]\n }\n fieldsName.push(`${fieldName}`)\n })\n return `${fieldsName.join(' ')}`;\n}\n\nconst getFindOneQuery = (objectName, id, fields)=>{\n objectName = objectName.replace(/\\./g, '_');\n const queryFields = getGraphqlFieldsQuery(fields);\n let queryOptions = ''\n let alias = \"record\";\n \n const queryOptionsArray = [`id: \"${id}\"`];\n \n if(queryOptionsArray.length > 0){\n queryOptions = `(${queryOptionsArray.join(',')})`\n }\n\n return `{${alias}:${objectName}__findOne${queryOptions}{${queryFields}}}`\n}\n\nexport const getRecord = async (objectName, recordId, fields)=>{\n const result = await fetchAPI('/graphql', {\n method: 'post',\n body: JSON.stringify({\n query: getFindOneQuery(objectName, recordId, fields)\n })\n })\n return result.data.record;\n}\n\nexport const getRelatedsCount = async (masterRecordId, relateds) => {\n const relatedQuery = [];\n\n each(relateds, (relate)=>{\n relatedQuery.push(`${relate.object_name}: ${relate.object_name}__count(filters: [[\"${relate.foreign_key}\",\"=\",\"${masterRecordId}\"]])`);\n })\n\n const query = `\n {\n ${relatedQuery.join(',')}\n }\n `;\n const result = await fetchAPI('/graphql', {\n method: 'POST',\n body: JSON.stringify({ query })\n })\n\n return result.data\n}\n\nexport const getRecordPermissions = async (objectName, recordId)=>{\n const result = await fetchAPI(`/service/api/@${objectName}/recordPermissions/${recordId}`, {\n method: 'GET'\n })\n return result;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-05 15:55:39\n * @LastEditors: liaodaxue\n * @LastEditTime: 2023-11-14 15:55:32\n * @Description:\n */\n\n\nimport { getObjectRecordDetailRelatedListHeader } from './converter/amis/header';\nimport { isEmpty, find, isString, forEach, keys, findKey, isArray, union, has, map } from \"lodash\";\nimport { getUISchema, getField, getListViewColumns, getListViewSort, getListViewFilter } from './objects'\nimport { getRecord } from './record';\nimport { i18next } from '../i18n'\n\nfunction str2function(\n contents,\n ...args\n ) {\n try {\n let fn = new Function(...args, contents);\n return fn;\n } catch (e) {\n console.warn(e);\n return null;\n }\n}\n\nexport const getRelatedFieldValue = (masterObjectName, record_id, uiSchema, foreign_key) => {\n const relatedField = find(uiSchema.fields, (field) => {\n return foreign_key === field?.name\n });\n // console.log(`getRelatedFieldValue`, relatedField, uiSchema, foreign_key)\n if (!isString(relatedField.reference_to)) {\n return { o: masterObjectName, ids: [record_id] }\n } else if (relatedField.multiple) {\n return [record_id]\n } else {\n return record_id\n }\n}\n\n// 获取所有相关表\nexport async function getObjectRelatedList(\n objectName,\n recordId,\n formFactor\n) {\n const uiSchema = await getUISchema(objectName);\n const related = [];\n const relatedLists = [].concat(uiSchema.related_lists || []);\n if(!isEmpty(relatedLists)){\n for (const relatedList of relatedLists) {\n const arr = relatedList.related_field_fullname.split(\".\");\n const foreign_key = arr[2] ? arr[1]+'.'+arr[2] : arr[1];\n related.push({\n masterObjectName: objectName,\n object_name: arr[0],\n foreign_key,\n label: relatedList.label,\n columns: relatedList.field_names,\n sort: relatedList.sort,\n filters: relatedList.filters,\n visible_on: relatedList.visible_on,\n page_size: relatedList.page_size\n }); \n }\n }else{\n const details = [].concat(uiSchema.details || []);\n for (const detail of details) {\n const arr = detail.split(\".\");\n const foreign_key = arr[2] ? arr[1]+'.'+arr[2] : arr[1];\n related.push({\n masterObjectName: objectName,\n object_name: arr[0],\n foreign_key\n });\n }\n }\n\n return related;\n}\n\n// 获取单个相关表\nexport async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObjectName, relatedKey, ctx){\n let { top, perPage, appId, relatedLabel, className, columns, sort, filters, visible_on } = ctx;\n // console.log('getRecordDetailRelatedListSchema==>',objectName,recordId,relatedObjectName)\n const relatedObjectUiSchema = await getUISchema(relatedObjectName);\n if(!relatedObjectUiSchema){\n // 子表对象不存在时直接返回空值.\n return {\n uiSchema: {},\n amisSchema: {}\n }\n }\n const { label , fields } = relatedObjectUiSchema;\n if(!relatedLabel){\n relatedLabel = label;\n }\n if(!relatedKey){\n let mainRelated = {};\n const mainObjectUiSchema = await getUISchema(objectName);\n if(mainObjectUiSchema){\n const mainRelatedLists = mainObjectUiSchema.related_lists || [];\n if(!isEmpty(mainRelatedLists)){\n for (const relatedList of mainRelatedLists) {\n const arr = relatedList.related_field_fullname.split(\".\");\n const foreign_key_value = arr[2] ? arr[1]+'.'+arr[2] : arr[1];\n mainRelated[arr[0]] = foreign_key_value;\n }\n }else{\n const details = union(mainObjectUiSchema.details,mainObjectUiSchema.lookup_details) || [];\n for (const detail of details) {\n const arr = detail.split(\".\");\n const foreign_key_value = arr[2] ? arr[1]+'.'+arr[2] : arr[1];\n if(!has(mainRelated,arr[0])){\n mainRelated[arr[0]] = foreign_key_value;\n }\n }\n }\n }\n relatedKey = mainRelated[relatedObjectName];\n }\n let globalFilter = null;\n // TODO: refField变量去掉,写到amis运行时脚本中,uiSchema.fields[relatedKey];可以取到\n const refField = await getField(relatedObjectName, relatedKey);\n\n if(!refField){\n return {\n uiSchema: relatedObjectUiSchema,\n amisSchema: {\n \"type\": \"alert\",\n \"body\": `${i18next.t('frontend_objects_related_alert_start')} ${relatedObjectName} ${i18next.t('frontend_objects_related_alert_end')}`,\n \"level\": \"warning\",\n \"showIcon\": true,\n \"className\": \"mb-3\"\n }\n }\n }\n\n let relatedValue = \"${recordId}\";\n // if(refField.reference_to_field && refField.reference_to_field != '_id'){\n // const masterRecord = await getRecord(objectName, recordId, [refField.reference_to_field]);\n // relatedValue = masterRecord[refField.reference_to_field]\n // }\n \n // if (\n // refField._reference_to ||\n // (refField.reference_to && !isString(refField.reference_to))\n // ) {\n // globalFilter = [\n // [`${relatedKey}/o`, \"=\", objectName],\n // [`${relatedKey}/ids`, \"=\", relatedValue],\n // ];\n // } else {\n // globalFilter = [`${relatedKey}`, \"=\", relatedValue];\n // }\n const recordRelatedListHeader = await getObjectRecordDetailRelatedListHeader(relatedObjectUiSchema, relatedLabel, ctx);\n const componentId = `steedos-record-related-list-${relatedObjectName}`;\n const isMobile = window.innerWidth < 768;\n let headerToolbar = [];\n if(!isMobile){\n headerToolbar.push(\"bulkActions\");\n }\n const options = {\n globalFilter,\n defaults: {\n listSchema: { \n headerToolbar,\n columnsTogglable: false,\n onEvent: {\n [`@data.changed.${relatedObjectName}`]: {\n \"actions\": [\n {\n \"actionType\": \"reload\"\n }\n ]\n }\n }\n },\n headerSchema: recordRelatedListHeader\n },\n showHeader: true,\n top: top,\n perPage: perPage,\n setDataToComponentId: componentId,\n // tableHiddenOn: hiddenEmptyTable ? \"this.$count === 0\" : null,\n appId: appId,\n crudClassName: 'border-t border-gray-300 hidden',\n refField,\n ...ctx\n }\n const amisSchema= (await getRelatedListSchema(relatedObjectName, 'all', options)).amisSchema;\n if(!amisSchema){\n return;\n }\n return {\n uiSchema: relatedObjectUiSchema,\n amisSchema: {\n type: \"service\",\n id: componentId,\n className: `steedos-record-related-list ${componentId} rounded border border-gray-300 bg-gray-100 mb-4 ${className}`,\n data: {\n relatedKey: relatedKey, \n listViewId: `amis-\\${appId}-${relatedObjectName}-listview`,\n _isRelated: true\n },\n body:[\n amisSchema\n ]\n }\n };\n}\n\n/**\n* \n* @param {*} uiSchema \n* @param {*} ctx \n* @returns \n* 1 对象uiSchema\n* 2 列表视图名称: (排除日历视图)当无视图传入,取is_name为true的字段显示。\n* 3 options\n*/\nfunction getDefaultRelatedListProps(uiSchema, listName, ctx) {\n // console.log('getDefaultRelatedListProps==>', uiSchema, listName, ctx)\n const listView = find(\n uiSchema.list_views,\n (listView, name) => {\n // 日历视图不在相关子表中出现\n if(listView.type === 'calendar'){\n return false;\n }\n // 传入listViewName空值则取第一个\n if (!listName) {\n listName = name;\n }\n return name === listName;\n }\n );\n let columns = [];\n let sort = '';\n let filter = null;\n let filtersFunction = null;\n if(listView){\n columns = getListViewColumns(listView, ctx.formFactor);\n sort = getListViewSort(listView);\n filter = getListViewFilter(listView);\n // if(isArray(ctx.globalFilter) && ctx.globalFilter.length && isArray(filter) && filter.length){\n // // 都有值\n // filter = [ctx.globalFilter, 'and', filter]\n // }else if(ctx.globalFilter && (!filter || !filter.length)){\n // // globalFilter有值,filter无值\n // filter = ctx.globalFilter;\n // }\n filtersFunction = listView && listView._filters;\n }else{\n const isNameField = find(\n uiSchema.fields,\n (field,name)=>{\n return field.is_name;\n }\n )\n columns = isNameField ? [isNameField.name] : ['name'];\n // if(ctx.globalFilter){\n // filter = ctx.globalFilter;\n // }\n }\n\n return {\n columns,\n sort,\n filter,\n filtersFunction\n }\n};\n \nfunction getRelatedListProps(uiSchema, listViewName, ctx) {\n if (ctx.columns) {\n const sort = getListViewSort({sort: ctx.sort});\n let { filters , filtersFunction} = ctx;\n if(!filtersFunction && filters){\n filtersFunction = str2function(\n filters,\n 'filters',\n 'data'\n ) \n }\n return {\n columns: ctx.columns,\n sort,\n // filter: ctx.globalFilter,\n filtersFunction: filtersFunction\n }\n } else {\n return getDefaultRelatedListProps(uiSchema, listViewName, ctx);\n }\n}\n\n// 仅提供给单个相关子表内部使用\nexport async function getRelatedListSchema(\n objectName,\n listViewName,\n ctx\n ) {\n const uiSchema = await getUISchema(objectName);\n if(!uiSchema){\n return {}\n }\n const listViewNames = map(uiSchema.list_views, 'name');\n const listView = find(\n uiSchema.list_views,\n (listView, name) => {\n // 传入listViewName空值 或者 不存在 则取第一个\n if(!listViewName || listViewNames.indexOf(listViewName)<0){\n listViewName = name;\n }\n return name === listViewName || listView._id === listViewName;\n }\n );\n const listViewProps = getRelatedListProps(uiSchema,listViewName, ctx);\n // console.log('listViewProps==>', listViewProps)\n const {columns: listViewColumns, sort: listViewSort, filter: listviewFilter, filtersFunction } = listViewProps;\n\n const refFieldName = ctx.refField && ctx.refField.name;\n\n let relatedListColumns = listViewColumns;\n if(refFieldName){\n relatedListColumns = listViewColumns.filter(function(columnItem){\n if(typeof columnItem === \"string\"){\n return columnItem !== refFieldName;\n }\n else{\n return columnItem.field !== refFieldName;\n }\n });\n }\n \n const defaults = ctx.defaults || {};\n \n if(!defaults.headerSchema && ctx.showHeader){\n defaults.headerSchema = await getObjectListHeader(uiSchema, listViewName);\n }\n \n if(!ctx.showHeader){\n defaults.headerSchema = null;\n }\n \n ctx.defaults = defaults;\n\n // 由于steedos-object-table组件的上下文覆盖规则异常,此处手动删除无需的ctx参数\n delete ctx.filtersFunction;\n delete ctx.sort;\n delete ctx.extraColumns;\n delete ctx.filters;\n\n delete ctx.globalFilter;\n\n const adaptor = `\n try{\n if(setDataToComponentId){\n if(payload.data.count){\n setTimeout(function(){\n // 设计器中获取不到window.$从而导致报错, 所以用纯js替换下。\n // window.$(\".\" + setDataToComponentId + \" .antd-Crud\").removeClass(\"hidden\");\t\t\n document.querySelectorAll(\".\" + setDataToComponentId + \" .antd-Crud\").forEach(function(element) {\n element.classList.remove(\"hidden\");\n });\n }, 10);\n }\n };\n }catch(e){\n console.log(e);\n }\n `;\n const amisSchema = {\n \"type\": \"steedos-object-table\",\n \"objectApiName\": objectName,\n \"columns\": relatedListColumns,\n \"extraColumns\": listView.extra_columns,\n \"filters\": listviewFilter,\n \"filtersFunction\": filtersFunction,\n \"sort\": listViewSort,\n \"filterVisible\": false,\n \"requestAdaptor\": ctx.requestAdaptor, \n \"adaptor\": adaptor + ctx.adaptor || '',\n \"ctx\": ctx\n };\n // console.log(`getRelatedListSchema amisSchema`, amisSchema);\n return {\n uiSchema,\n amisSchema,\n };\n }","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-05 15:55:39\n * @LastEditors: liaodaxue\n * @LastEditTime: 2023-10-20 11:38:25\n * @Description:\n */\nimport { fetchAPI, getUserId } from \"./steedos.client\";\nimport { getObjectCalendar } from './converter/amis/calendar';\nimport { i18next } from '../i18n'\nimport { createObject } from '../utils/object'\n\nimport {\n getObjectCRUD,\n getObjectDetail,\n getObjectForm,\n} from \"./converter/amis/index\";\nimport { getObjectListHeader, getObjectListHeaderFirstLine, getObjectRecordDetailHeader, getObjectRecordDetailRelatedListHeader } from './converter/amis/header';\nimport _, { cloneDeep, slice, isEmpty, each, has, findKey, find, isString, isObject, keys, includes, isArray, isFunction, map, forEach, defaultsDeep } from \"lodash\";\nimport { getRecord } from './record';\nimport { getListViewItemButtons } from './buttons'\nimport { getObjectRelatedList } from './objectsRelated';\n\nlet UI_SCHEMA_CACHE = {};\n\nlet UISchemaFunction;\nexport const setUISchemaFunction = function(fun){\n UISchemaFunction = fun;\n};\n\nif('undefined' != typeof window){\n if(!window.UI_SCHEMA_CACHE){\n window.UI_SCHEMA_CACHE = UI_SCHEMA_CACHE;\n }\n UI_SCHEMA_CACHE = window.UI_SCHEMA_CACHE;\n}\n\nconst setUISchemaCache = (key, value) => {\n UI_SCHEMA_CACHE[key] = value;\n};\n\nconst getUISchemaCache = (key) => {\n return cloneDeep(UI_SCHEMA_CACHE[key]);\n};\n\nconst hasUISchemaCache = (key) => {\n return has(UI_SCHEMA_CACHE, key);\n};\n\nexport function getListViewColumns(listView, formFactor) {\n let listViewColumns = [];\n if (formFactor === \"SMALL\") {\n listViewColumns = !isEmpty(listView.mobile_columns)\n ? listView.mobile_columns\n : slice(listView.columns, 0, 4);\n } else {\n listViewColumns = listView.columns;\n }\n return listViewColumns;\n};\n\nexport function getListViewSort(listView) {\n let sort = '';\n if(listView && listView.sort && listView.sort.length){\n each(listView.sort,function(item,index){\n if(isArray(item)){\n const field_name = item[0];\n const order = item[1] || '';\n let sortStr = field_name + ' ' + order;\n sortStr = index > 0 ? ','+sortStr : sortStr\n sort += sortStr;\n }else{\n let sortStr = item.field_name + ' ' + item.order;\n sortStr = index > 0 ? ','+sortStr : sortStr\n sort += sortStr;\n }\n })\n }\n return sort;\n};\n\nexport function getListViewFilter(listView){\n if(!listView){\n return ;\n }\n try {\n const userId = getUserId();\n let filters = listView.filters;\n if(listView.filter_scope === 'mine'){\n if(_.isEmpty(filters)){\n filters = [[\"owner\", \"=\", userId]]\n }else{\n if(_.isString(filters) && _.startsWith(_.trim(filters), \"function\")){\n filters = new Function(`return ${filters}`);\n filters = filters();\n }\n if(_.isArray(filters)){\n filters.push([\"owner\", \"=\", userId])\n }else{\n console.debug(`listView filters is not array`, listView)\n throw new Error('filters is not array')\n }\n }\n };\n return filters;\n } catch (error) {\n console.error(error)\n }\n}\n\nfunction formatUISchemaCache(objectName, uiSchema){\n setUISchemaCache(objectName, uiSchema);\n each(uiSchema.fields, (field)=>{\n try {\n if(field.type === \"lookup\" && field._reference_to && _.isString(field._reference_to)){\n field.reference_to = eval(`(${field._reference_to})`)();\n }\n } catch (exception) {\n field.reference_to = undefined;\n console.error(exception)\n }\n })\n each(uiSchema.list_views, (v, k)=>{\n v.name = k;\n if(!has(v, 'columns')){\n v.columns = uiSchema.list_views.all.columns;\n }\n })\n}\n\nexport async function getUISchema(objectName, force) {\n if (!objectName) {\n return;\n }\n if (hasUISchemaCache(objectName) && !force) {\n return getUISchemaCache(objectName);\n }\n let uiSchema = null;\n try {\n if(UISchemaFunction){\n uiSchema = await UISchemaFunction(objectName, force);\n }\n else {\n const url = `/service/api/@${objectName.replace(/\\./g, \"_\")}/uiSchema`;\n uiSchema = await fetchAPI(url, { method: \"get\" });\n }\n if(!uiSchema){\n return ;\n }\n formatUISchemaCache(objectName, uiSchema);\n } catch (error) {\n console.error(`getUISchema`, objectName, error);\n setUISchemaCache(objectName, null);\n }\n return getUISchemaCache(objectName);\n}\n\nexport function getUISchemaSync(objectName, force) {\n if (!objectName) {\n return;\n }\n if (hasUISchemaCache(objectName) && !force) {\n return getUISchemaCache(objectName);\n }\n let uiSchema = null;\n try {\n \n const url = `/service/api/@${objectName.replace(/\\./g, \"_\")}/uiSchema`;\n uiSchema = Steedos.authRequest(url, {\n type: 'GET',\n async: false,\n });\n\n if(!uiSchema){\n return ;\n }\n formatUISchemaCache(objectName, uiSchema);\n } catch (error) {\n console.error(`getUISchema`, objectName, error);\n setUISchemaCache(objectName, null);\n }\n return getUISchemaCache(objectName);\n}\n\nexport async function getField(objectName, fieldName) {\n const uiSchema = await getUISchema(objectName);\n return uiSchema?.fields[fieldName];\n}\n\n// 获取表单页面\nexport async function getFormSchema(objectName, ctx) {\n const uiSchema = await getUISchema(objectName);\n const amisSchema = await getObjectForm(uiSchema, ctx);\n console.log(`getFormSchema====>`, amisSchema)\n return {\n uiSchema,\n amisSchema,\n };\n}\n\n// 获取只读页面 recordId 已废弃, 函数签名保持不变, 但recordId变量不可再使用, 请使用运行时的${recordId}\nexport async function getViewSchema(objectName, recordId, ctx) {\n const uiSchema = await getUISchema(objectName);\n const amisSchema = await getObjectDetail(uiSchema, recordId, ctx);\n // console.log(`getViewSchema amisSchema`, amisSchema)\n return {\n uiSchema,\n amisSchema\n };\n}\n\n// 获取列表视图\nexport async function getListSchema(\n appName,\n objectName,\n listViewName,\n ctx = {}\n) {\n const uiSchema = await getUISchema(objectName);\n if(!uiSchema){\n return {}\n }\n const listView = find(\n uiSchema.list_views,\n (listView, name) => {\n // 传入listViewName空值则取第一个\n if(!listViewName){\n listViewName = name;\n }\n return name === listViewName || listView._id === listViewName;\n }\n );\n\n if (!listView) {\n return { uiSchema };\n }\n\n // 直接返回自定义的列表视图schema\n if(listView.enable_amis_schema && listView.amis_schema){\n const amisSchema = isString(listView.amis_schema) ? JSON.parse(listView.amis_schema) : listView.amis_schema;\n return {\n uiSchema,\n isCustomAmisSchema: true,\n amisSchema\n };\n }\n\n let listViewColumns = getListViewColumns(listView, ctx.formFactor);\n let sort = getListViewSort(listView);\n let listviewFilter = getListViewFilter(listView, ctx);\n let listview_filters = listView && listView._filters;\n // 返回 calendar 组件\n if(listView.type === \"calendar\"){\n const amisSchema = {\n \"type\": \"steedos-object-calendar\",\n \"objectApiName\": objectName,\n \"filters\": listviewFilter,\n \"filtersFunction\": listview_filters,\n \"sort\": sort,\n ...listView.options\n };\n return {\n uiSchema,\n isCalendar: true,\n amisSchema\n };\n }\n\n const defaults = ctx.defaults || {};\n\n // // 未自定义header 且显示header的时候, 使用系统header\n // if(!defaults.headerSchema && ctx.showHeader){\n // defaults.headerSchema = getObjectListHeader(uiSchema, listViewName);\n // }\n \n // // 如果不显示header,则清理掉\n // if(!ctx.showHeader){\n // defaults.headerSchema = null;\n // }\n\n defaults.headerSchema = null;\n\n /**\n * 本次存储代码段\n */\n try {\n const listViewPropsStoreKey = location.pathname + \"/crud\";\n let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);\n /**\n * localListViewProps规范来自crud请求api中api.data.$self参数值的。\n * 比如:{\"perPage\":20,\"page\":1,\"__searchable__name\":\"7\",\"__searchable__between__n1__c\":[null,null],\"filter\":[[\"name\",\"contains\",\"a\"]]}\n * __searchable__...:顶部放大镜搜索条件\n * filter:右侧过滤器\n * perPage:每页条数\n * page:当前页码\n * orderBy:排序字段\n * orderDir:排序方向\n */\n if (localListViewProps) {\n localListViewProps = JSON.parse(localListViewProps);\n // localListViewProps.perPage = 3;\n let listSchema = {};\n if(localListViewProps.orderBy){\n listSchema.orderBy = localListViewProps.orderBy;\n }\n if(localListViewProps.orderDir){\n listSchema.orderDir = localListViewProps.orderDir;\n }\n\n if(localListViewProps.perPage){\n listSchema.defaultParams = {\n perPage: localListViewProps.perPage\n }\n }\n defaults.listSchema = defaultsDeep({}, listSchema, defaults.listSchema || {});\n }\n }\n catch (ex) {\n console.error(\"本地存储中crud参数解析异常:\", ex);\n }\n\n ctx.defaults = defaults;\n\n if (listViewName == \"recent\") {\n listview_filters = `\n function(filters, data) {\n var result = Steedos.authRequest('/graphql', {\n type: 'POST',\n async: false,\n data: JSON.stringify({\n query: '{object_recent_viewed(filters: [[\"record.o\",\"=\",\"' + data.objectName + '\"],[\"space\",\"=\",\"' + data.context.tenantId + '\"],[\"owner\",\"=\",\"' + data.context.userId + '\"]],sort:\"modified desc\",top:50){ _id,record} }'\n }),\n });\n var _ids = []\n result.data.object_recent_viewed.forEach(function (item) {\n _ids = _ids.concat(item.record.ids)\n })\n return [\"_id\", \"=\", _ids];\n }\n `\n }\n const amisSchema = {\n \"type\": \"steedos-object-table\",\n \"objectApiName\": objectName,\n \"columns\": listViewColumns,\n \"extraColumns\": listView.extra_columns,\n \"filters\": listviewFilter,\n \"filtersFunction\": listview_filters,\n \"sort\": sort,\n \"ctx\": ctx,\n \"requestAdaptor\": listView.requestAdaptor || ctx.requestAdaptor, \n \"adaptor\": listView.adaptor || ctx.adaptor,\n \"headerToolbarItems\": ctx.headerToolbarItems,\n \"filterVisible\": ctx.filterVisible,\n \"rowClassNameExpr\": ctx.rowClassNameExpr,\n \"crudDataFilter\": ctx.crudDataFilter,\n \"onCrudDataFilter\": ctx.onCrudDataFilter\n };\n // console.log(`getListSchema===>`,amisSchema)\n return {\n uiSchema,\n amisSchema,\n };\n}\n\nasync function convertColumnsToTableFields(columns, uiSchema, ctx = {}) {\n let fields = [];\n for (const column of columns) {\n if (isString(column)) {\n if (column.indexOf('.') > 0) {\n const fieldName = column.split('.')[0];\n const displayName = column.split('.')[1];\n const filedInfo = uiSchema.fields[fieldName];\n if (filedInfo && (filedInfo.type === 'lookup' || filedInfo.type === 'master_detail') && isString(filedInfo.reference_to)) {\n const rfUiSchema = await getUISchema(filedInfo.reference_to);\n const rfFieldInfo = rfUiSchema.fields[displayName];\n fields.push(Object.assign({}, rfFieldInfo, { name: `${fieldName}__expand.${displayName}`, expand: true, expandInfo: { fieldName, displayName } }, ctx));\n }\n } else {\n if (uiSchema.fields[column]) {\n fields.push(Object.assign({}, uiSchema.fields[column], ctx));\n }\n else if(ctx.extra){\n // 配置列表视图extra_columns时允许字段是hidden的,hidden的字段在uiSchema.fields中不存在\n fields.push({\n extra: true,\n name: column\n });\n }\n }\n } else if (isObject(column)) {\n if (column.field.indexOf('.') > 0) {\n const fieldName = column.field.split('.')[0];\n const displayName = column.field.split('.')[1];\n const filedInfo = uiSchema.fields[fieldName];\n if (filedInfo && (filedInfo.type === 'lookup' || filedInfo.type === 'master_detail') && isString(filedInfo.reference_to)) {\n const rfUiSchema = await getUISchema(filedInfo.reference_to);\n const rfFieldInfo = rfUiSchema.fields[displayName];\n fields.push(Object.assign({}, rfFieldInfo, ctx,\n { name: `${fieldName}__expand.${displayName}`, expand: true, expandInfo: { fieldName, displayName } },\n {\n width: column.width,\n wrap: column.wrap, // wrap = true 是没效果的\n amis: column.amis\n }\n ));\n }\n } else {\n if (uiSchema.fields[column.field]) {\n fields.push(\n Object.assign({}, uiSchema.fields[column.field], ctx, {\n width: column.width,\n wrap: column.wrap, // wrap = true 是没效果的\n amis: column.amis\n })\n );\n }\n else if(ctx.extra){\n // 配置列表视图extra_columns时允许字段是hidden的,hidden的字段在uiSchema.fields中不存在\n fields.push({\n extra: true,\n name: column.field\n });\n }\n }\n }\n }\n return fields;\n}\n\n// 获取对象表格\nexport async function getTableSchema(\n appName,\n objectName,\n columns,\n ctx = {}\n) {\n // console.time('getTableSchema', columns);\n const uiSchema = await getUISchema(objectName);\n\n let sort = ctx.sort;\n if(!sort){\n const sortField = ctx.sortField;\n const sortOrder = ctx.sortOrder;\n if(sortField){\n let sortStr = sortField + ' ' + sortOrder || 'asc';\n sort = sortStr;\n }\n }\n\n let fields = await convertColumnsToTableFields(columns, uiSchema);\n\n const extraColumns = ctx.extraColumns;\n\n if (extraColumns) {\n let extraFields = await convertColumnsToTableFields(extraColumns, uiSchema, {extra: true});\n fields = fields.concat(extraFields);\n }\n \n let crudOptions = {\n tabId: objectName,\n appId: appName,\n objectName: objectName,\n ...ctx,\n filter: ctx.filters,\n sort,\n headerToolbarItems: ctx.headerToolbarItems,\n buttons: await getListViewItemButtons(uiSchema, ctx)\n };\n crudOptions.amisData = createObject(ctx.amisData || {}, {});\n const amisSchema = await getObjectCRUD(uiSchema, fields, crudOptions);\n // console.timeEnd('getTableSchema');\n return {\n uiSchema,\n amisSchema,\n };\n}\n\n// 获取对象日历\nexport async function getCalendarSchema(\n appName,\n objectName,\n calendarOptions,\n ctx = {}\n) {\n const uiSchema = await getUISchema(objectName);\n const amisSchema = await getObjectCalendar(uiSchema, calendarOptions, {\n tabId: objectName,\n appId: appName,\n objectName: objectName,\n ...ctx\n });\n return {\n uiSchema,\n amisSchema\n };\n}\n\nexport async function getRecordDetailHeaderSchema(objectName,recordId, options){\n const uiSchema = await getUISchema(objectName);\n const amisSchema = await getObjectRecordDetailHeader(uiSchema, recordId, options);\n return {\n uiSchema,\n amisSchema,\n };\n}\n\nexport async function getRecordDetailSchema(objectName, appId, props = {}){\n const uiSchema = await getUISchema(objectName);\n const relatedLists = await getObjectRelatedList(objectName, null, null);\n const detailed = {\n \"title\": i18next.t('frontend_record_detail_tab_detailed'),\n \"className\": \"px-0 py-4\",\n \"body\": [\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"objectApiName\": \"${objectName}\",\n \"recordId\": \"${recordId}\",\n \"id\": \"u:d4a495811d57\",\n appId: appId\n }\n ],\n \"id\": \"u:5d4e7e3f6ecc\"\n };\n const related = {\n \"title\": i18next.t('frontend_record_detail_tab_related'),\n \"className\": \"px-0 pt-4\",\n \"body\": [\n {\n \"type\": \"steedos-object-related-lists\",\n \"label\": \"相关列表\",\n \"objectApiName\": \"${objectName}\",\n \"recordId\": \"${recordId}\",\n \"id\": \"u:3b85b7b7a7f6\",\n appId: appId\n }\n ],\n \"id\": \"u:1a0326aeec2b\"\n }\n const content = {\n \"type\": \"tabs\",\n \"className\": \"sm:mt-3 bg-white sm:rounded sm:border border-gray-300 p-4\",\n \"tabs\": [\n detailed\n ],\n \"id\": \"u:a649e4094a12\"\n };\n if(relatedLists.length){\n content.tabs.push(related)\n }\n return {\n uiSchema,\n amisSchema: {\n \"type\": \"service\",\n \"body\": [\n {\n \"type\": \"steedos-record-detail-header\",\n \"label\": \"标题面板\",\n \"objectApiName\": \"${objectName}\",\n \"recordId\": \"${recordId}\",\n \"id\": \"u:48d2c28eb755\"\n },\n content\n ],\n data: {\n \"_master.objectName\": \"${objectName}\", \n \"_master.recordId\": \"${recordId}\"\n },\n onEvent: {\n \"recordLoaded\": {\n \"actions\": [\n {\n \"actionType\": \"reload\",\n \"data\": {\n \"name\": `\\${record.${uiSchema.NAME_FIELD_KEY || 'name'}}`,\n \"_master.record\": `\\${record}`, \n // 不清楚reload 如何给对象下的某个key复制, 所以此处重复设置_master的objectName、recordId\n \"_master.objectName\": \"${objectName}\", \n \"_master.recordId\": \"${recordId}\"\n }\n }\n ]\n },\n ...props.onEvent\n },\n }\n }\n}\n\nexport async function getRecordServiceSchema(objectName, appId, props = {}) {\n const uiSchema = await getUISchema(objectName);\n return {\n uiSchema,\n amisSchema: {\n \"type\": \"service\",\n \"body\": [],\n data: {\n \"_master.objectName\": \"${objectName}\",\n \"_master.recordId\": \"${recordId}\"\n },\n \"style\": {\n \"padding\": \"var(--Page-body-padding)\",\n ...props.style\n },\n onEvent: {\n \"recordLoaded\": {\n \"actions\": [\n {\n \"actionType\": \"reload\",\n \"data\": {\n \"name\": `\\${record.${uiSchema.NAME_FIELD_KEY || 'name'}}`,\n \"_master.record\": `\\${record}`,\n // 不清楚reload 如何给对象下的某个key复制, 所以此处重复设置_master的objectName、recordId\n \"_master.objectName\": \"${objectName}\",\n \"_master.recordId\": \"${recordId}\"\n }\n }\n ]\n },\n ...props.onEvent\n }\n }\n }\n}\n\n// 获取单个相关表\nexport async function getObjectRelated(\n {appName,\n masterObjectName,\n objectName,\n relatedFieldName,\n recordId,\n formFactor}\n) {\n let filter = null;\n const refField = await getField(objectName, relatedFieldName);\n if (\n refField._reference_to ||\n (refField.reference_to && !isString(refField.reference_to))\n ) {\n filter = [\n [`${relatedFieldName}/o`, \"=\", masterObjectName],\n [`${relatedFieldName}/ids`, \"=\", recordId],\n ];\n } else {\n filter = [`${relatedFieldName}`, \"=\", recordId];\n }\n const masterObjectUISchema = await getUISchema(masterObjectName);\n return {\n masterObjectName: masterObjectName,\n object_name: objectName,\n foreign_key: relatedFieldName,\n schema: await getListSchema(appName, objectName, \"all\", {\n globalFilter: filter,\n formFactor: formFactor,\n }),\n record: await getRecord(masterObjectName, recordId, [\n masterObjectUISchema.NAME_FIELD_KEY,\n ]),\n masterObjectUISchema: masterObjectUISchema,\n };\n}\n\n\nif(typeof window != 'undefined'){\n window.getUISchema = getUISchema;\n window.getUISchemaSync = getUISchemaSync;\n window.getListSchema = getListSchema;\n}","import * as graphql from '../graphql';\nimport * as Field from './index';\nimport * as Tpl from '../tpl';\nimport * as _ from 'lodash';\nimport { getUISchema, getListViewSort } from '../../../objects';\nimport { getLookupListView } from '../util';\n\nconst refUsersObjectName = \"space_users\";\nconst refOrgsObjectName = \"organizations\";\n\nasync function getSource(field, ctx) {\n // data.query 最终格式 \"{ \\tleftOptions:organizations(filters: {__filters}){value:_id,label:name,children}, children:organizations(filters: {__filters}){ref:_id,children}, defaultValueOptions:space_users(filters: {__options_filters}){user,name} }\"\n const data = await graphql.getFindQuery({ name: refOrgsObjectName }, null, [{ name: \"_id\", alias: \"value\" },{name: \"parent\"}, { name: \"name\", alias: \"label\" }, { name: \"children\" }], {\n alias: \"leftOptions\",\n filters: \"{__filters}\"\n });\n data.query = data.query.replace(/,count\\:.+/, \"}\");\n const childrenData = await graphql.getFindQuery({ name: refOrgsObjectName }, null, [{ name: \"_id\", alias: \"ref\" }], {\n alias: \"children\",\n filters: \"{__filters}\"\n });\n childrenData.query = childrenData.query.replace(/,count\\:.+/, \"}\");\n data.query = data.query.replace(/}$/, \",\" + childrenData.query.replace(/{(.+)}/, \"$1}\"));\n const defaultValueOptionsData = await graphql.getFindQuery({ name: refUsersObjectName }, null, [{ name: \"user\", alias: \"value\" }, { name: \"name\", alias: \"label\" }], {\n alias: \"defaultValueOptions\",\n filters: \"{__options_filters}\"\n });\n defaultValueOptionsData.query = defaultValueOptionsData.query.replace(/,count\\:.+/, \"}\");\n data.query = data.query.replace(/}$/, \",\" + defaultValueOptionsData.query.replace(/{(.+)}/, \"$1}\"))\n let valueField = `${field.name}`;\n if(field._prefix){\n // field._prefix一般来object类型字段的子字段的父字段api名称,比如流程对象的字段perms.users_can_add前缀为perms.\n valueField = `${field._prefix}${field.name}`;\n }\n if(ctx.fieldNamePrefix){\n // ctx.fieldNamePrefix一般来自列表搜索,值为__searchable__\n valueField = `${ctx.fieldNamePrefix}${valueField}`;\n }\n data.$value = `$${valueField}`;\n // data[\"&\"] = \"$$\";\n\n const requestAdaptor = `\n var filters = [];\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters));\n var defaultValue = api.data.$value;\n var optionsFiltersOp = \"${field.multiple ? \"in\" : \"=\"}\";\n var optionsFilters = [[\"user\", optionsFiltersOp, []]];\n if (defaultValue) { \n optionsFilters = [[\"user\", optionsFiltersOp, defaultValue]];\n }\n api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters));\n return api;\n `;\n const adaptor = `\n const data = payload.data;\n const rows = data.leftOptions\n data.children = data.children.map(function (child) { \n // child.defer = !!(child.children && child.children.length);\n child.defer = true;\n delete child.children;\n return child;\n });\n\n var getTreeOptions = SteedosUI.getTreeOptions\n data.leftOptions = getTreeOptions(rows);\n\n \n var defaultValueOptions = data.defaultValueOptions;\n data.children = _.union(data.children, defaultValueOptions);\n delete data.defaultValueOptions;\n payload.data = { options: [data] };\n return payload;\n `;\n return {\n \"method\": \"post\",\n // 这里需要ObjectForm在api请求成功后才显示其中的amis form,否则就会有bug\n // 见issue: https://github.com/baidu/amis/issues/6065\n // \"url\": graphql.getApi() + `?value=\\${${field.multiple ? valueField + \"|join\" : valueField}}`,\n // \"url\": graphql.getApi() + `?value=\\${editFormInited}`,\n \"url\": graphql.getApi(),\n \"requestAdaptor\": requestAdaptor,\n \"adaptor\": adaptor,\n \"data\": data,\n // \"sendOn\": `this.editFormInited`,\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n }\n}\n\nasync function getDeferApi(field, ctx) {\n // data.query 最终格式 \"{ \\toptions:{__object_name}(filters:{__filters}){{__fields}} }\"\n const data = await graphql.getFindQuery({ name: \"{__object_name}\" }, null, [], {\n alias: \"options\",\n // filters: \"{__filters}\",\n queryOptions: `filters: {__filters}, sort: \"{__sort}\"`\n });\n // 传入的默认过滤条件,比如[[\"name\", \"contains\", \"三\"]],将会作为基本过滤条件\n let filters = field.filters;\n if(typeof filters === \"string\"){\n filters = new Function(`return ${filters}`);\n filters = filters();\n }\n if(typeof filters === \"function\"){\n filters = filters(field);\n }\n data.query = data.query.replace(/,count\\:.+/, \"}\");\n // 字段要根据请求参数动态生成,写死为__fields后续在发送适配器中替换\n data.query = data.query.replace(\"{_id}\", \"{{__fields}}\");\n const requestAdaptor = `\n var dep = api.query.dep;\n var ref = api.query.ref;\n var term = api.query.term;\n var filters;\n var objectName;\n var fields;\n var sort = \"\";\n if (dep) {\n objectName = \"${refOrgsObjectName}\";\n fields = \"value:_id,label:name,children\";\n filters = [['parent', '=', dep]];\n sort = \"${ctx.orgsSort}\";\n }\n else if (ref) { \n objectName = \"${refUsersObjectName}\";\n // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次\n fields = \"_id,value:user,label:name\";\n // fields = \"user,name,value:user,label:name\";\n filters = [['user_accepted', '=', true]];\n var defaultFilters = ${filters && JSON.stringify(filters)};\n if(defaultFilters){\n filters.push(defaultFilters);\n }\n filters.push(['organizations_parents', '=', ref]);\n sort = \"${ctx.usersSort}\";\n }\n api.data.query = api.data.query.replace(/{__object_name}/g, objectName).replace(/{__fields}/g, fields).replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());\n return api;\n `;\n const adaptor = `\n if (api.query.dep) {\n // 展开组织时才需要根据children值设置defer属性\n const data = payload.data;\n data.options = data.options.map(function (option) {\n option.defer = !!(option.children && option.children.length);\n delete option.children;\n return option;\n });\n payload.data = data;\n }\n return payload;\n `;\n return {\n \"method\": \"post\",\n \"url\": graphql.getApi() + \"&ref=${ref}&dep=${value}\",\n \"requestAdaptor\": requestAdaptor,\n \"adaptor\": adaptor,\n \"data\": data,\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nasync function getSearchApi(field, ctx) {\n // data.query 最终格式 \"{ \\toptions:space_users(filters: {__filters}){user,name,value:user,label:name}}\"\n // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次\n const data = await graphql.getFindQuery({ name: refUsersObjectName }, null, [{ name: \"user\", alias: \"value\" }, { name: \"name\", alias: \"label\" }], {\n alias: \"options\",\n // filters: \"{__filters}\",\n queryOptions: `filters: {__filters}, sort: \"{__sort}\"`\n });\n data.query = data.query.replace(/,count\\:.+/, \"}\");\n // 传入的默认过滤条件,比如[[\"name\", \"contains\", \"三\"]],将会作为基本过滤条件\n const filters = field.filters;\n const requestAdaptor = `\n var term = api.query.term;\n var filters;\n var sort = \"\";\n if (term) { \n filters = [['user_accepted', '=', true]];\n var defaultFilters = ${filters && JSON.stringify(filters)};\n if(defaultFilters){\n filters.push(defaultFilters);\n }\n var fieldsForSearch = [\"name\", \"username\", \"email\", \"mobile\"];\n var termFilters = [];\n fieldsForSearch.forEach(function (field) {\n termFilters.push([field, 'contains', term]);\n termFilters.push(\"or\");\n });\n termFilters.pop();\n filters.push(termFilters);\n sort = \"${ctx.usersSort}\";\n }\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());\n return api;\n `;\n return {\n \"method\": \"post\",\n \"url\": graphql.getApi() + \"?term=${term}\",\n \"requestAdaptor\": requestAdaptor,\n \"data\": data,\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nfunction getRefListViewSort(refObject){\n let listView = getLookupListView(refObject);\n let sort = \"\";\n if(listView){\n sort = getListViewSort(listView);\n }\n return sort;\n}\n\nexport async function getSelectUserSchema(field, readonly, ctx) {\n if (!field) {\n return {}\n }\n\n if (!ctx) {\n ctx = {};\n }\n const amisSchema = {\n \"type\": Field.getAmisStaticFieldType('select', readonly)\n };\n\n if (readonly) {\n amisSchema.tpl = await Tpl.getLookupTpl(field, ctx)\n }\n else{\n const refUsersObjectConfig = await getUISchema(refUsersObjectName);\n ctx.usersSort = getRefListViewSort(refUsersObjectConfig);\n const refOrgsObjectConfig = await getUISchema(refOrgsObjectName);\n ctx.orgsSort = getRefListViewSort(refOrgsObjectConfig);\n Object.assign(amisSchema, {\n // \"labelField\": \"name\",\n // \"valueField\": \"user\",\n \"multiple\": field.multiple,\n \"searchable\": field.searchable,\n \"selectMode\": \"associated\",\n \"leftMode\": \"tree\",\n \"extractValue\": true,\n \"clearable\": true,\n \"source\": await getSource(field, ctx),\n \"deferApi\": await getDeferApi(field, ctx),\n \"searchApi\": await getSearchApi(field, ctx)\n });\n if(field.multiple){\n // 单选时如果配置joinValues为false,清空字段值会把字段值设置为空数组,这是amis人员单选功能的bug,普通的select没有这个问题\n Object.assign(amisSchema, {\n \"joinValues\": false,\n });\n }\n if (typeof amisSchema.searchable !== \"boolean\") {\n amisSchema.searchable = true;\n }\n\n if(ctx.value){\n amisSchema.value = ctx.value;\n }\n\n const onEvent = field.onEvent;\n if (onEvent) {\n amisSchema.onEvent = onEvent;\n }\n }\n return amisSchema;\n}\n","import * as graphql from '../graphql';\nimport * as Field from './index';\nimport * as Tpl from '../tpl';\nimport * as _ from 'lodash';\nimport { getUISchema, getListViewSort } from '../../../objects';\nimport { getLookupListView } from '../util';\n\nconst refUsersObjectName = \"space_users\";\nconst refOrgsObjectName = \"organizations\";\n\nasync function getSource(field, ctx) {\n // data.query 最终格式 \"{ \\tleftOptions:organizations(filters: {__filters}){value:_id,label:name,children}, children:organizations(filters: {__filters}){ref:_id,children}, defaultValueOptions:space_users(filters: {__options_filters}){user,name} }\"\n const refObjectName = ctx.objectName;\n const data = await graphql.getFindQuery({ name: refObjectName }, null, [{ name: ctx.valueField, alias: \"value\" }, { name: ctx.labelField, alias: \"label\" }, { name: \"children\" }], {\n alias: \"options\",\n filters: \"{__filters}\"\n });\n data.query = data.query.replace(/,count\\:.+/, \"}\");\n // const childrenData = await graphql.getFindQuery({ name: refObjectName }, null, [{ name: ctx.valueField, alias: \"ref\" }], {\n // alias: \"children\",\n // filters: \"{__filters}\"\n // });\n // childrenData.query = childrenData.query.replace(/,count\\:.+/, \"}\");\n // data.query = data.query.replace(/}$/, \",\" + childrenData.query.replace(/{(.+)}/, \"$1}\"));\n const defaultValueOptionsData = await graphql.getFindQuery({ name: refObjectName }, null, [{ name: ctx.valueField, alias: \"value\" }, { name: ctx.labelField, alias: \"label\" }], {\n alias: \"defaultValueOptions\",\n filters: \"{__options_filters}\"\n });\n defaultValueOptionsData.query = defaultValueOptionsData.query.replace(/,count\\:.+/, \"}\");\n data.query = data.query.replace(/}$/, \",\" + defaultValueOptionsData.query.replace(/{(.+)}/, \"$1}\"))\n let valueField = `${field.name}`;\n if(field._prefix){\n // field._prefix一般来object类型字段的子字段的父字段api名称,比如流程对象的字段perms.users_can_add前缀为perms.\n valueField = `${field._prefix}${field.name}`;\n }\n if(ctx.fieldNamePrefix){\n // ctx.fieldNamePrefix一般来自列表搜索,值为__searchable__\n valueField = `${ctx.fieldNamePrefix}${valueField}`;\n }\n data.$value = `$${valueField}`;\n data['$'] = `$$`;\n const requestAdaptor = `\n var filters = [['parent', '=', null]];\n const filtersFunction = ${field.filtersFunction || field._filtersFunction};\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data.$);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\n }\n }\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters));\n var defaultValue = api.data.$value;\n var optionsFiltersOp = \"${field.multiple ? \"in\" : \"=\"}\";\n var optionsFilters = [[\"${ctx.valueField}\", optionsFiltersOp, []]];\n if (defaultValue) { \n optionsFilters = [[\"${ctx.valueField}\", optionsFiltersOp, defaultValue]];\n }\n api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters));\n return api;\n `;\n const adaptor = `\n const data = payload.data;\n data.options = data.options.map(function (optionItem) {\n optionItem.defer = !!(optionItem.children && optionItem.children.length);\n delete optionItem.children;\n return optionItem;\n });\n var defaultValueOptions = data.defaultValueOptions;\n // 字段值下拉选项合并到options中\n data.options = _.unionWith(data.options, defaultValueOptions, function(a,b){\n return a[\"value\"]=== b[\"value\"];\n });\n delete data.defaultValueOptions;\n payload.data = data;\n return payload;\n `;\n return {\n \"method\": \"post\",\n \"url\": graphql.getApi(),\n \"requestAdaptor\": requestAdaptor,\n \"adaptor\": adaptor,\n \"data\": data,\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n }\n}\n\nasync function getDeferApi(field, ctx) {\n // data.query 最终格式 \"{ \\toptions:{__object_name}(filters:{__filters}){{__fields}} }\"\n const refObjectName = ctx.objectName;\n const data = await graphql.getFindQuery({ name: \"{__object_name}\" }, null, [], {\n alias: \"options\",\n // filters: \"{__filters}\",\n queryOptions: `filters: {__filters}, sort: \"{__sort}\"`\n });\n // 传入的默认过滤条件,比如[[\"name\", \"contains\", \"三\"]],将会作为基本过滤条件\n let filters = field.filters;\n if(typeof filters === \"string\"){\n filters = new Function(`return ${filters}`);\n filters = filters();\n }\n if(typeof filters === \"function\"){\n filters = filters(field);\n }\n data.query = data.query.replace(/,count\\:.+/, \"}\");\n // 字段要根据请求参数动态生成,写死为__fields后续在发送适配器中替换\n data.query = data.query.replace(\"{_id}\", \"{{__fields}}\");\n const requestAdaptor = `\n var dep = api.query.dep;\n var term = api.query.term;\n var filters;\n var objectName;\n var fields;\n var sort = \"\";\n if (dep) {\n objectName = \"${refObjectName}\";\n fields = \"_id,value:${ctx.valueField},label:${ctx.labelField},children\";\n filters = [['parent', '=', dep]];\n sort = \"${ctx.sort}\";\n }\n api.data.query = api.data.query.replace(/{__object_name}/g, objectName).replace(/{__fields}/g, fields).replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());\n return api;\n `;\n const adaptor = `\n if (api.query.dep) {\n // 展开组织时才需要根据children值设置defer属性\n const data = payload.data;\n data.options = data.options.map(function (option) {\n option.defer = !!(option.children && option.children.length);\n delete option.children;\n return option;\n });\n payload.data = data;\n }\n return payload;\n `;\n return {\n \"method\": \"post\",\n \"url\": graphql.getApi() + \"&dep=${value}\",\n \"requestAdaptor\": requestAdaptor,\n \"adaptor\": adaptor,\n \"data\": data,\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nasync function getSearchApi(field, ctx) {\n // data.query 最终格式 \"{ \\toptions:space_users(filters: {__filters}){user,name,value:user,label:name}}\"\n // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次\n const data = await graphql.getFindQuery({ name: refUsersObjectName }, null, [{ name: \"user\" }, { name: \"name\" }, { name: \"user\", alias: \"value\" }, { name: \"name\", alias: \"label\" }], {\n alias: \"options\",\n // filters: \"{__filters}\",\n queryOptions: `filters: {__filters}, sort: \"{__sort}\"`\n });\n data.query = data.query.replace(/,count\\:.+/, \"}\");\n // 传入的默认过滤条件,比如[[\"name\", \"contains\", \"三\"]],将会作为基本过滤条件\n const filters = field.filters;\n const requestAdaptor = `\n var term = api.query.term;\n var filters;\n var sort = \"\";\n if (term) { \n filters = [['user_accepted', '=', true]];\n var defaultFilters = ${filters && JSON.stringify(filters)};\n if(defaultFilters){\n filters.push(defaultFilters);\n }\n var fieldsForSearch = [\"name\", \"username\", \"email\", \"mobile\"];\n var termFilters = [];\n fieldsForSearch.forEach(function (field) {\n termFilters.push([field, 'contains', term]);\n termFilters.push(\"or\");\n });\n termFilters.pop();\n filters.push(termFilters);\n sort = \"${ctx.usersSort}\";\n }\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());\n return api;\n `;\n return {\n \"method\": \"post\",\n \"url\": graphql.getApi() + \"&term=${term}\",\n \"requestAdaptor\": requestAdaptor,\n \"data\": data,\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nfunction getRefListViewSort(refObject){\n let listView = getLookupListView(refObject);\n \n let sort = \"\";\n if(listView){\n sort = getListViewSort(listView);\n }\n return sort;\n}\n\nexport async function lookupToAmisTreeSelect(field, readonly, ctx) {\n if (!field) {\n return {}\n }\n\n if (!ctx) {\n ctx = {};\n }\n const amisSchema = {\n \"type\": Field.getAmisStaticFieldType('tree-select', readonly)\n };\n\n if (readonly) {\n amisSchema.tpl = await Tpl.getLookupTpl(field, ctx)\n }\n else{\n const refObjectConfig = await getUISchema(ctx.objectName);\n ctx.sort = getRefListViewSort(refObjectConfig);\n Object.assign(amisSchema, {\n // \"labelField\": ctx.labelField,\n // \"valueField\": ctx.valueField,\n \"multiple\": field.multiple,\n \"searchable\": field.searchable,\n \"extractValue\": true,\n \"hideNodePathLabel\": true,\n \"clearable\": true,\n \"source\": await getSource(field, ctx),\n \"deferApi\": await getDeferApi(field, ctx),\n // \"searchApi\": await getSearchApi(field, ctx)\n });\n if(field.multiple){\n // 单选时如果配置joinValues为false,清空字段值会把字段值设置为空数组,这是amis人员单选功能的bug,普通的select没有这个问题\n Object.assign(amisSchema, {\n \"joinValues\": false,\n });\n }\n if (typeof amisSchema.searchable !== \"boolean\") {\n amisSchema.searchable = true;\n }\n const onEvent = field.onEvent;\n if (onEvent) {\n amisSchema.onEvent = onEvent;\n }\n }\n return amisSchema;\n}\n","import { getUISchema } from '../../../objects';\nimport * as _ from 'lodash'\nimport * as graphql from '../graphql'\nimport * as Tpl from '../tpl';\nimport * as Field from './index';\nimport * as Table from './table';\nimport * as List from './list';\nimport { getLookupListView } from '../util';\nimport { getSelectUserSchema } from './user';\nimport { getObjectHeaderToolbar, getObjectFooterToolbar, getObjectFilter } from './../toolbar';\nimport { getListViewSort } from './../../../objects';\nimport { lookupToAmisTreeSelect } from './tree_select';\nimport * as standardNew from '../../../../schema/standard_new.amis'\nimport { i18next } from \"../../../../i18n\";\n\nexport const getReferenceToFieldSchema = (field, refObjectConfig)=>{\n let referenceTo = field.reference_to;\n if(!referenceTo){\n return;\n }\n\n // 如果lookup 引用的对象未定义\n if (!refObjectConfig)\n return null;\n\n let valueField = null;\n let valueFieldName = field.reference_to_field;\n if(!valueFieldName){\n valueFieldName = refObjectConfig.idFieldName || '_id';\n }\n if(valueFieldName === '_id'){\n valueField = {name: '_id', label: 'ID', type: 'text', toggled: false};\n }else{\n valueField = refObjectConfig.fields[valueFieldName] || {name: valueFieldName};\n }\n return {\n objectName: referenceTo,\n valueField: valueField,\n labelField: refObjectConfig.fields[refObjectConfig.NAME_FIELD_KEY || 'name'],\n NAME_FIELD_KEY: refObjectConfig.NAME_FIELD_KEY || 'name'\n }\n}\n\nexport const getReferenceTo = async (field)=>{\n let referenceTo = field.reference_to;\n if(referenceTo === 'users'){\n field.reference_to = 'space_users';\n field.reference_to_field = 'user'\n }\n\n const refObjectConfig = await getUISchema(field.reference_to);\n return getReferenceToFieldSchema(field, refObjectConfig);\n}\n\nexport function getReferenceToSync(field) {\n let referenceTo = field.reference_to;\n if(referenceTo === 'users'){\n field.reference_to = 'space_users';\n field.reference_to_field = 'user'\n }\n\n const refObjectConfig = getUISchemaSync(field.reference_to);\n return getReferenceToFieldSchema(field, refObjectConfig);\n}\n\nexport function getLookupSapceUserTreeSchema(isMobile){\n const treeSchema = {\n \"type\": \"input-tree\",\n \"className\":\"steedos-select-user-tree\",\n \"inputClassName\": \"p-0\",\n \"source\": {\n \"method\": \"post\",\n \"url\": \"${context.rootUrl}/graphql\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"adaptor\": \"if (payload.data.treeCache == true) {\\n return payload;\\n }\\n const records = payload.data.options;\\n const treeRecords = [];\\n const getChildren = (records, childrenIds) => {\\n if (!childrenIds) {\\n return;\\n }\\n const children = _.filter(records, (record) => {\\n return _.includes(childrenIds, record.value)\\n });\\n _.each(children, (item) => {\\n if (item.children) {\\n item.children = getChildren(records, item.children)\\n }\\n })\\n return children;\\n }\\n\\n const getRoot = (records) => {\\n for (var i = 0; i < records.length; i++){\\n records[i].noParent = 0;\\n if (!!records[i].parent) {\\n biaozhi = 1\\n for (var j = 0; j < records.length; j++){\\n if (records[i].parent == records[j].value)\\n biaozhi = 0;\\n }\\n if (biaozhi == 1) records[i].noParent = 1;\\n } else records[i].noParent = 1;\\n }\\n }\\n getRoot(records);\\n console.log(records)\\n\\n _.each(records, (record) => {\\n if (record.noParent ==1) {\\n treeRecords.push(Object.assign({}, record, { children: getChildren(records, record.children) }));\\n }\\n });\\n console.log(treeRecords)\\n\\n payload.data.options = treeRecords;\\n payload.data.treeCache = true;\\n return payload;\\n \",\n \"requestAdaptor\": \"\\n \",\n \"data\": {\n \"query\": \"{options:organizations(filters:[\\\"hidden\\\", \\\"!=\\\", true],sort:\\\"sort_no desc\\\"){value:_id label:name,parent,children}}\"\n },\n \"messages\": {\n },\n \"cache\": 300000\n },\n \"onEvent\": {\n \"change\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": `\n const scope = event.context.scoped;\n var filterFormValues={\n \"__searchable__organizations_parents\":event.data.value.value\n }\n var listView = scope.parent.getComponents().find(function(n){\n return n.props.type === \"crud\";\n });\n listView.handleFilterSubmit(Object.assign({}, filterFormValues));\n `\n },\n {\n \"actionType\": \"custom\",\n \"script\": \" if(window.innerWidth < 768){ document.querySelector('.steedos-select-user-sidebar').classList.remove('steedos-select-user-sidebar-open'); }\"\n }\n ]\n }\n },\n \"label\": \"\",\n \"name\": \"organizations\",\n \"multiple\": false,\n \"joinValues\": false,\n \"clearValueOnHidden\": false,\n \"fieldName\": \"organizations\",\n \"hideRoot\": true,\n \"initiallyOpen\": false,\n \"extractValue\": true,\n \"onlyChildren\": true,\n \"treeContainerClassName\": \"no-border\",\n \"showIcon\": false,\n \"enableNodePath\": false,\n \"autoCheckChildren\": false,\n \"searchable\": true,\n \"searchConfig\": {\n \"sticky\": true,\n \"placeholder\": \"查找部门\"\n },\n \"unfoldedLevel\": 2,\n \"originPosition\": \"left-top\"\n }\n const tree = []\n if(isMobile){\n tree.push({\n type: \"action\",\n body:[\n {\n type: \"action\",\n body:[\n treeSchema\n ],\n className:\"h-full w-[240px]\"\n }\n ],\n className: \"absolute inset-0 steedos-select-user-sidebar\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": \"document.querySelector('.steedos-select-user-sidebar').classList.remove('steedos-select-user-sidebar-open')\"\n }\n ]\n }\n },\n id: \"steedos_crud_toolbar_select_user_tree\"\n })\n tree.push({\n \"type\": \"button\",\n \"label\": \"组织\",\n \"icon\": \"fa fa-sitemap\",\n \"className\": \"bg-white p-2 rounded border-gray-300 text-gray-500\",\n \"align\": \"left\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": \"document.querySelector('.steedos-select-user-sidebar').classList.toggle('steedos-select-user-sidebar-open')\"\n }\n ]\n }\n },\n \"id\": \"steedos_crud_toolbar_organization_button\"\n })\n }else{\n tree.push(treeSchema)\n }\n \n return tree;\n}\n\nexport async function lookupToAmisPicker(field, readonly, ctx){\n let referenceTo = await getReferenceTo(field);\n if(!referenceTo){\n return ;\n }\n const refObjectConfig = await getUISchema(referenceTo.objectName);\n\n ctx.idFieldName = refObjectConfig.idFieldName\n ctx.objectName = refObjectConfig.name\n\n let tableFields = [];\n const searchableFields = [];\n\n let fieldsArr = [];\n \n const isMobile = window.innerWidth < 768;\n\n let listView = getLookupListView(refObjectConfig);\n let listName = listView && listView.name;\n if (listView && listView.columns) {\n _.each(listView.columns, function (column) {\n if (_.isString(column) && refObjectConfig.fields[column]) {\n fieldsArr.push(refObjectConfig.fields[column]);\n } else if (_.isObject(column) && refObjectConfig.fields[column.field]) {\n fieldsArr.push(\n Object.assign({}, refObjectConfig.fields[column.field], {\n width: column.width,\n wrap: column.wrap,\n })\n );\n }\n });\n }else{\n _.each(refObjectConfig.fields, (field, field_name)=>{\n if(field_name != '_id' && !field.hidden){\n if(!_.has(field, \"name\")){\n field.name = field_name\n }\n fieldsArr.push(field)\n }\n });\n // 没有视图权限时,取对象上前5个字段,按sort_no排序\n fieldsArr = _.sortBy(fieldsArr, \"sort_no\").slice(0,5);\n }\n\n _.each(fieldsArr,function(field){\n if(!_.find(tableFields, function(f){\n return f.name === field.name\n })){\n tableFields.push(field)\n }\n });\n\n _.each(refObjectConfig.fields, function (field) {\n if(Field.isFieldQuickSearchable(field, refObjectConfig.NAME_FIELD_KEY)){\n searchableFields.push(field.name);\n }\n });\n\n const fields = {\n [referenceTo.labelField.name]: referenceTo.labelField,\n [referenceTo.valueField.name]: referenceTo.valueField\n };\n\n _.each(tableFields, (tableField)=>{\n if(!tableField.hidden){\n fields[tableField.name] = tableField;\n }\n });\n\n let sort = \"\";\n if(listView){\n sort = getListViewSort(listView);\n }\n\n const source = await getApi(refObjectConfig, null, fields, {expand: true, alias: 'rows', queryOptions: `filters: {__filters}, top: {__top}, skip: {__skip}, sort: \"{__sort}\"`});\n \n if(source.url && !ctx.inFilterForm){\n const depend_on = [];\n const sendOn = [];\n _.each(field.depend_on, (fName)=>{\n depend_on.push(`depend_on_${fName}=\\${${fName}}`)\n sendOn.push(`this.${fName}`)\n })\n if(depend_on.length > 0){\n source.url = `${source.url}?${depend_on.join('&')}`;\n source.sendOn = `${sendOn.join(' && ')}`\n }\n }\n \n source.data.$term = \"$term\";\n source.data.$self = \"$$\";\n\n // field.name可能是带点的名称,比如审批王中子表字段'instances.instances_submitter',如果不替换掉点,会造成审批王表单中新建子表行时报错\n let keywordsSearchBoxName = `__keywords_lookup__${field.name.replace(/\\./g, \"_\")}__to__${refObjectConfig.name}`;\n\n source.requestAdaptor = `\n let __changedFilterFormValues = api.data.$self.__changedFilterFormValues || {};\n let __changedSearchBoxValues = api.data.$self.__changedSearchBoxValues || {};\n // 把表单搜索和快速搜索中的change事件中记录的过滤条件也拼到$self中,是为解决触发搜索请求时,两边输入的过滤条件都带上,即:\n // 有时在搜索表单中输入过滤条件事,忘记点击回车键或搜索按钮,而是进一步修改快速搜索框中的关键字点击其中回车键触发搜索\n // 这种情况下,触发的搜索请求中没有带上搜索表单中输入的过滤条件。\n // 反过来先在快速搜索框中输入过滤条件却不点击其中回车键触发搜索,而是到搜索表单中触发搜索请求也是一样的。\n Object.assign(api.data.$self, __changedSearchBoxValues, __changedFilterFormValues);\n const selfData = JSON.parse(JSON.stringify(api.data.$self));\n var filters = [];\n var pageSize = api.data.pageSize || 10;\n var pageNo = api.data.pageNo || 1;\n var skip = (pageNo - 1) * pageSize;\n var orderBy = api.data.orderBy || '';\n var orderDir = api.data.orderDir || '';\n var sort = orderBy + ' ' + orderDir;\n sort = orderBy ? sort : \"${sort}\";\n var allowSearchFields = ${JSON.stringify(searchableFields)};\n let fieldValue;\n if(api.data.$term){\n filters = [[\"name\", \"contains\", \"'+ api.data.$term +'\"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n if(selfData.value && selfData.value.indexOf(',') > 0){\n fieldValue = selfData.value.split(',');\n filters = [[\"${referenceTo.valueField.name}\", \"=\", fieldValue]];\n }else{\n fieldValue = selfData.value;\n filters = [[\"${referenceTo.valueField.name}\", \"=\", fieldValue]];\n }\n }\n\n var searchableFilter = SteedosUI.getSearchFilter(selfData) || [];\n\n if(searchableFilter.length > 0){\n if(filters.length > 0 ){\n filters = [filters, 'and', searchableFilter];\n }else{\n filters = searchableFilter;\n }\n }\n\n if(${referenceTo?.objectName === \"space_users\"} && ${field.reference_to_field === \"user\"}){\n if(filters.length > 0){\n filters = [ [\"user_accepted\", \"=\", true], \"and\", filters ]\n }else{\n filters = [[\"user_accepted\", \"=\", true]];\n }\n }\n\n if(allowSearchFields){\n allowSearchFields.forEach(function(key){\n const keyValue = selfData[key];\n if(_.isString(keyValue)){\n filters.push([key, \"contains\", keyValue]);\n }else if(_.isArray(keyValue) || _.isBoolean(keyValue) || keyValue){\n filters.push([key, \"=\", keyValue]);\n }\n })\n }\n\n var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.${keywordsSearchBoxName}, allowSearchFields);\n if(keywordsFilters && keywordsFilters.length > 0){\n filters.push(keywordsFilters);\n }\n\n var fieldFilters = ${JSON.stringify(field.filters)};\n if(fieldFilters && fieldFilters.length){\n filters.push(fieldFilters);\n }\n \n const inFilterForm = ${ctx.inFilterForm};\n const filtersFunction = ${field.filtersFunction || field._filtersFunction};\n\n if(filtersFunction && !inFilterForm){\n const _filters = filtersFunction(filters, api.data.$self.__super);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\n }\n }\n\n const enable_tree = ${refObjectConfig.enable_tree};\n if(enable_tree){\n pageSize = 10000;\n }\n if(fieldValue && _.isArray(fieldValue) && fieldValue.length > pageSize){\n pageSize = fieldValue.length;\n }\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim());\n return api;\n `\n source.adaptor = `\n const enable_tree = ${refObjectConfig.enable_tree};\n const op = api.data.$self.op;\n if(!_.isEmpty(op)){\n // op不为空,表示处于字段初始编辑状态,不是点击后出现弹窗状态。\n // 这里不可以用_.pick函数让payload只返回labelField和valueField,因为字段上配置的amis autoFill功能可能依赖了其他字段\n /*\n const rows = _.map(payload.data.rows, (item)=>{\n return _.pick(item, [\"${referenceTo.labelField.name}\", \"${referenceTo.valueField.name}\"]);\n })\n payload.data.rows = rows;\n */\n return payload;\n }\n if(enable_tree){\n const records = payload.data.rows;\n const treeRecords = [];\n\n const getParentIds = (records)=>{\n const ids = _.map(records, (item)=>{\n return item._id;\n });\n const parents = _.filter(records,(record)=>{\n return !record.parent || !_.includes(ids,record.parent);\n })\n const parentsIds = _.map(parents,(item)=>{\n return item._id;\n })\n return parentsIds;\n }\n const getChildren = (records, childrenIds)=>{\n if(!childrenIds){\n return;\n }\n const children = _.filter(records, (record)=>{\n return _.includes(childrenIds, record._id)\n });\n _.each(children, (item)=>{\n if(item.children){\n item.children = getChildren(records, item.children)\n }\n })\n return children;\n }\n\n const parentIds = getParentIds(records);\n _.each(records, (record)=>{\n if(!record.parent || _.includes(parentIds, record._id)){\n treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));\n }\n });\n payload.data.rows = treeRecords;\n try{\n setTimeout(() => {\n $('.amis-dialog-widget.antd-Modal .antd-Table-content .antd-Table-table thead .antd-Table-expandBtn')[0]?.click();\n }, 600);\n }\n catch(ex){\n console.error(\"tree数据格式展开异常:\", ex);\n }\n }\n return payload;\n `;\n if(field.optionsFunction || field._optionsFunction){\n source.adaptor = `\n payload.data.rows = eval(${field.optionsFunction || field._optionsFunction})(api.data.$self);\n return payload;\n `\n }\n let top = 20;\n\n if(refObjectConfig.paging && refObjectConfig.paging.enabled === false){\n top = 1000;\n };\n\n\n let pickerSchema = null;\n if(false){\n // if(ctx.formFactor === 'SMALL'){\n pickerSchema = await List.getListSchema(tableFields, {\n top: top,\n ...ctx,\n actions: false\n })\n }else{\n let labelFieldName = refObjectConfig.NAME_FIELD_KEY || 'name';\n // organizations 对象的历史遗留问题, fullname 被标记为了 名称字段. 在此处特殊处理.\n if(refObjectConfig.name === 'organizations'){\n labelFieldName = 'name';\n }\n pickerSchema = await Table.getTableSchema(tableFields, {\n labelFieldName,\n top: top,\n isLookup: true,\n ...ctx\n })\n\n pickerSchema.affixHeader = false;\n\n var headerToolbarItems = [];\n if(referenceTo.objectName === \"space_users\" && field.reference_to_field === \"user\"){\n headerToolbarItems = getLookupSapceUserTreeSchema(isMobile);\n pickerSchema.className = pickerSchema.className || \"\" + \" steedos-select-user\";\n }\n\n pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true, keywordsSearchBoxName });\n const isAllowCreate = refObjectConfig.permissions.allowCreate;\n const isCreate = _.isBoolean(field.create) ? field.create : true;\n // lookup字段配置过滤条件就强制不显示新建按钮\n let isHasFilters = (field.filters || field._filtersFunction) ? true : false;\n if (isAllowCreate && isCreate && !isHasFilters) {\n const new_button = await standardNew.getSchema(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });\n new_button.align = \"right\";\n // 保持快速搜索放在最左侧,新建按钮往里插,而不是push到最后\n pickerSchema.headerToolbar.splice(pickerSchema.headerToolbar.length - 1, 0, new_button);\n }\n pickerSchema.footerToolbar = refObjectConfig.enable_tree ? [] : getObjectFooterToolbar(refObjectConfig,ctx.formFactor,{isLookup: true});\n if (ctx.filterVisible !== false) {\n pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {\n ...ctx,\n isLookup: true,\n keywordsSearchBoxName\n });\n }\n pickerSchema.data = Object.assign({}, pickerSchema.data, {\n \"&\": \"$$\",\n \"objectName\": refObjectConfig.name,\n \"uiSchema\": refObjectConfig,\n \"listName\": listName,// 需要按视图取可搜索项\n \"isLookup\": true\n });\n\n if(!pickerSchema.onEvent){\n pickerSchema.onEvent = {}\n }\n\n pickerSchema.onEvent[`@data.changed.${refObjectConfig.name}`] = {\n \"actions\": [\n {\n \"actionType\": \"reload\"\n },\n {\n \"actionType\": \"custom\",\n \"script\": `\n const masterRecord = event.data._master && event.data._master.record;\n const fieldConfig = ${JSON.stringify(field)};\n let reference_to = fieldConfig.reference_to;\n let saveValue;\n const newRecord = {\n _id: event.data.result.data.recordId,\n ...event.data.__super.__super\n }\n const saveField = fieldConfig.reference_to_field || '_id';\n const saveFieldValue = newRecord[saveField];\n\n if( fieldConfig._reference_to && (_.isArray(fieldConfig._reference_to) || _.isFunction(fieldConfig._reference_to) || fieldConfig._reference_to.startsWith('function') ) ){\n \n const fieldValue = masterRecord ? masterRecord[fieldConfig.name] : {o: reference_to, ids: []};\n const baseSaveValue = {\n o: reference_to,\n ids: [saveFieldValue]\n };\n if(fieldValue && fieldValue.o){\n if(fieldValue.o === reference_to){\n saveValue = fieldConfig.multiple ? { o: reference_to, ids: fieldValue.ids.concat(saveFieldValue)} : baseSaveValue;\n }else{\n saveValue = baseSaveValue;\n }\n }else{\n saveValue = baseSaveValue;\n }\n\n }else{\n if(fieldConfig.multiple){\n // TODO: 连续新建多个记录时,因为获取的主记录不是实时的,所以只会勾选最后一个新建的记录。\n const fieldValue = (masterRecord && masterRecord[fieldConfig.name]) || [];\n saveValue = fieldValue.concat(saveFieldValue);\n }else{\n saveValue = saveFieldValue;\n }\n }\n \n const ctx = ${JSON.stringify(ctx)};\n const componentId = ctx.defaults.formSchema.id;\n doAction({\n actionType: 'setValue',\n componentId: componentId, \n args: {\n value: { [fieldConfig.name]: saveValue }\n }\n });\n `\n }\n ]\n }\n }\n\n if(field.pickerSchema){\n pickerSchema = Object.assign({}, pickerSchema, field.pickerSchema)\n }\n\n if(referenceTo.objectName === \"space_users\" && field.reference_to_field === \"user\" && isMobile){\n //手机端选人控件只保留部分toolbar\n pickerSchema.headerToolbar = pickerSchema.headerToolbar && pickerSchema.headerToolbar.filter(function(item){\n if([\"steedos_crud_toolbar_quick_search\",\"steedos_crud_toolbar_filter\",\"steedos_crud_toolbar_select_user_tree\",\"steedos_crud_toolbar_organization_button\"].indexOf(item.id) > -1){\n return true;\n }else{\n return false;\n }\n })\n pickerSchema.footerToolbar = [\"pagination\"]\n }\n\n const data = {\n type: Field.getAmisStaticFieldType('picker', readonly),\n modalTitle: i18next.t('frontend_form_please_select') + \" \" + refObjectConfig.label,\n labelField: referenceTo.labelField.name,\n valueField: referenceTo.valueField.name,\n // disabledOn: this._master目的是相关表新建时禁止编辑关联字段; this.relatedKey目的是相关表编辑时禁止编辑关联字段,多选字段可以编辑。\n disabledOn: `${readonly} || ( (this._master && (this._master.relatedKey ==='${field.name}')) || ((this.relatedKey ==='${field.name}') && (${field.multiple} != true)) )`,\n modalMode: 'dialog', //TODO 设置 dialog 或者 drawer,用来配置弹出方式\n source: source,\n size: \"lg\",\n pickerSchema: pickerSchema,\n joinValues: false,\n extractValue: true\n }\n if(field.multiple){\n data.multiple = true\n data.extractValue = true\n }\n\n if(readonly){\n data.tpl = await Tpl.getLookupTpl(field, ctx)\n }\n return data;\n}\n\nexport async function lookupToAmisSelect(field, readonly, ctx){\n let referenceTo = await getReferenceTo(field);\n const isMobile = window.innerWidth <= 768;\n const valueFieldKey = referenceTo && referenceTo.valueField?.name || '_id' ;\n // const labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';\n\n let apiInfo;\n let defaultValueOptionsQueryData;\n if(referenceTo){\n // 字段值单独走一个请求合并到source的同一个GraphQL接口中\n defaultValueOptionsQueryData = await graphql.getFindQuery({ name: referenceTo.objectName }, null, [\n Object.assign({}, referenceTo.labelField, {alias: 'label'}),\n Object.assign({}, referenceTo.valueField, {alias: 'value'})\n ], {\n alias: \"defaultValueOptions\",\n filters: \"{__options_filters}\",\n count: false\n });\n apiInfo = await getApi({\n name: referenceTo.objectName\n }, null, [\n Object.assign({}, referenceTo.labelField, {alias: 'label'}),\n Object.assign({}, referenceTo.valueField, {alias: 'value'})\n ], {expand: false, alias: 'options', queryOptions: `filters: {__filters}, top: {__top}, sort: \"{__sort}\"`});\n\n apiInfo.adaptor = `\n const data = payload.data;\n var defaultValueOptions = data.defaultValueOptions;\n // 字段值下拉选项合并到options中\n data.options = _.unionWith(defaultValueOptions, data.options, function(a,b){\n return a[\"value\"]=== b[\"value\"];\n });\n delete data.defaultValueOptions;\n payload.data.options = data.options;\n return payload;\n `;\n }else{\n apiInfo = {\n method: \"post\",\n url: graphql.getApi(),\n data: {query: '{objects(filters: [\"_id\", \"=\", \"-1\"]){_id}}', $: \"$$\"},\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n\n const refObjectConfig = referenceTo && await getUISchema(referenceTo.objectName);\n let listView = getLookupListView(refObjectConfig);\n\n let sort = \"\";\n if(listView){\n sort = getListViewSort(listView);\n }\n\n // 列表视图搜索栏中,即inFilterForm=true时,不需要执行depend_on\n if(apiInfo.url && !ctx.inFilterForm){\n const depend_on = [];\n const sendOn = [];\n _.each(field.depend_on, (fName)=>{\n depend_on.push(`depend_on_${fName}=\\${${fName}}`)\n sendOn.push(`this.${fName}`)\n })\n if(depend_on.length > 0){\n apiInfo.url = `${apiInfo.url}?${depend_on.join('&')}`;\n apiInfo.sendOn = `${sendOn.join(' && ')}`\n }\n }\n \n apiInfo.data.$term = \"$term\";\n // apiInfo.data.$value = `$${field.name}.${referenceTo ? referenceTo.valueField.name : '_id'}`;\n apiInfo.data.$value = ctx.isRefToMutiple ? `$${field.name}.ids` : `$${field.name}`;\n _.each(field.depend_on, function(fName){\n apiInfo.data[fName] = `$${fName}`;\n })\n apiInfo.data['$'] = `$$`;\n apiInfo.data['rfield'] = `\\${object_name}`;\n // [[\"_id\", \"=\", \"$${field.name}._id\"],\"or\",[\"name\", \"contains\", \"$term\"]]\n apiInfo.requestAdaptor = `\n var filters = [];\n var top = 200;\n if(api.data.$term){\n filters = [[\"${referenceTo?.NAME_FIELD_KEY || 'name'}\", \"contains\", api.data.$term]];\n }\n // else if(api.data.$value){\n // filters = [[\"_id\", \"=\", api.data.$value]];\n // }\n\n var fieldFilters = ${JSON.stringify(field.filters)};\n if(fieldFilters && fieldFilters.length){\n filters.push(fieldFilters);\n }\n\n if(${referenceTo?.objectName === \"space_users\"} && ${field.reference_to_field === \"user\"}){\n if(filters.length > 0){\n filters = [ [\"user_accepted\", \"=\", true], \"and\", filters ]\n }else{\n filters = [[\"user_accepted\", \"=\", true]];\n }\n }\n\n const inFilterForm = ${ctx.inFilterForm};\n const filtersFunction = ${field.filtersFunction || field._filtersFunction};\n\n if(filtersFunction && !inFilterForm){\n const _filters = filtersFunction(filters, api.data.$);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\n }\n }\n var sort = \"${sort}\";\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', top).replace('{__sort}', sort.trim());\n\n var defaultValue = api.data.$value;\n var optionsFiltersOp = \"${field.multiple ? \"in\" : \"=\"}\";\n var optionsFilters = [[\"${valueFieldKey}\", optionsFiltersOp, []]];\n if (defaultValue && !api.data.$term) { \n const defaultValueOptionsQueryData = ${JSON.stringify(defaultValueOptionsQueryData)};\n const defaultValueOptionsQuery = defaultValueOptionsQueryData?.query?.replace(/^{/,\"\").replace(/}$/,\"\");\n // 字段值单独请求,没值的时候在请求中返回空\n optionsFilters = [[\"${valueFieldKey}\", optionsFiltersOp, defaultValue]];\n if(filters.length > 0){\n optionsFilters = [filters, optionsFilters];\n }\n if(defaultValueOptionsQuery){\n api.data.query = \"{\"+api.data.query.replace(/^{/,\"\").replace(/}$/,\"\")+\",\"+defaultValueOptionsQuery+\"}\";\n } \n }\n api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters));\n return api;\n `\n let labelField = referenceTo ? referenceTo.labelField.name : '';\n let valueField = referenceTo ? referenceTo.valueField.name : '';\n if(field.optionsFunction || field._optionsFunction){\n apiInfo.adaptor = `\n var options = eval(${field.optionsFunction || field._optionsFunction})(api.data.$);\n if(api.data.$term){\n options = _.filter(options, function(o) {\n var label = o.label;\n return label.toLowerCase().indexOf(api.data.$term.toLowerCase()) > -1;\n });\n }\n payload.data.options = options;\n return payload;\n `\n labelField = 'label';\n valueField = 'value';\n }else if(field.options){\n apiInfo.adaptor = `\n var options = ${JSON.stringify(field.options)}\n if(api.data.$term){\n options = _.filter(options, function(o) {\n var label = o.label;\n return label.toLowerCase().indexOf(api.data.$term.toLowerCase()) > -1;\n });\n }\n payload.data.options = options;\n return payload;\n `\n labelField = 'label';\n valueField = 'value';\n }\n\n const data = {\n type: Field.getAmisStaticFieldType('select', readonly),\n joinValues: false,\n extractValue: true,\n clearable: true,\n // disabledOn: this._master目的是相关表新建时禁止编辑关联字段; this.relatedKey目的是相关表编辑时禁止编辑关联字段,多选字段可以编辑。\n disabledOn: `${readonly} || ( (this._master && (this._master.relatedKey ==='${field.name}')) || ((this.relatedKey ==='${field.name}') && (${field.multiple} != true)) )`,\n // labelField: labelField,\n // valueField: valueField,\n // source: apiInfo,\n autoComplete: apiInfo,\n searchable: true,\n }\n //删除xlink:href中的rootUrl前缀,解决客户端svg为空的问题\n const select_menuTpl = `<span class='flex items-center mt-0.5'>\n <span role='img' aria-label='smile' class='anticon anticon-smile'>\n <span class='slds-icon_container slds-icon-standard-\\${REPLACE(icon,'_','-')}'>\n <svg class='slds-icon slds-icon_x-small' aria-hidden='true'>\n <use xlink:href='/assets/icons/standard-sprite/svg/symbols.svg#\\${icon}'></use>\n </svg>\n </span> \n </span>\n <span class='pl-1.5'>\\${label}</span>\n </span>`\n const menuTpl = \"${icon ? `\"+select_menuTpl+\"` : label}\"\n // TODO: 待amis修复了此bug, 就可以撤销添加menuTpl的判断。\n if(!(isMobile && field.multiple)){\n data.menuTpl = menuTpl;\n }\n if(field.multiple){\n data.multiple = true\n data.extractValue = true\n }\n\n if(readonly){\n data.tpl = await Tpl.getLookupTpl(field, ctx)\n }\n return data;\n}\n\nasync function getApi(object, recordId, fields, options){\n const data = await graphql.getFindQuery(object, recordId, fields, options);\n return {\n method: \"post\",\n url: graphql.getApi(),\n data: data,\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n}\n\nexport async function lookupToAmis(field, readonly, ctx){\n if(!ctx){\n ctx = {};\n }\n // console.log(`lookupToAmis====`, field, readonly, ctx)\n if(readonly){\n return {\n type: Field.getAmisStaticFieldType('picker', readonly),\n tpl: Tpl.getRelatedFieldTpl(field, ctx)\n }\n }\n if(field.reference_to && !_.isString(field.reference_to) && !readonly){\n return {\n type: 'steedos-field-lookup',\n field,\n readonly,\n ctx,\n }\n // return await lookupToAmisGroup(field, readonly, ctx);\n }\n\n let referenceTo = await getReferenceTo(field);\n if(!referenceTo){\n return await lookupToAmisSelect(field, readonly, ctx);\n }\n\n if(referenceTo.objectName === \"space_users\" && field.reference_to_field === \"user\"){\n ctx = Object.assign({}, ctx, {\n onlyDisplayLookLabel: true\n });\n if(ctx.idsDependOn){\n // ids人员点选模式\n return await lookupToAmisIdsPicker(field, readonly, ctx);\n }\n // 左侧树右侧人员列表的下拉框模式,不再支持,而是执行下面的lookupToAmisPicker函数弹出选人窗口\n // return await lookupToAmisSelectUser(field, readonly, ctx);\n }\n\n const refObject = await getUISchema(referenceTo.objectName);\n\n // 优先取字段中配置的enable_enhanced_lookup,字段上没配置时,才从对象上取enable_enhanced_lookup属性\n let enableEnhancedLookup = _.isBoolean(field.enable_enhanced_lookup) ? field.enable_enhanced_lookup : refObject.enable_enhanced_lookup;\n // 默认使用下拉框模式显示lookup选项,只能配置了enable_enhanced_lookup才使用弹出增强模式\n if(enableEnhancedLookup == true){\n return await lookupToAmisPicker(field, readonly, ctx);\n }else if(refObject.enable_tree) {\n return await lookupToAmisTreeSelect(field, readonly, Object.assign({}, ctx, {\n labelField: referenceTo.labelField?.name || 'name',\n valueField: referenceTo.valueField?.name || '_id',\n objectName: referenceTo.objectName\n }));\n }else{\n return await lookupToAmisSelect(field, readonly, ctx);\n }\n}\n\nexport async function lookupToAmisSelectUser(field, readonly, ctx){\n return getSelectUserSchema(field, readonly, ctx);\n}\n\nexport async function lookupToAmisIdsPicker(field, readonly, ctx){\n return getIdsPickerSchema(field, readonly, ctx);\n}\n\nexport async function getIdsPickerSchema(field, readonly, ctx){\n if(!ctx){\n ctx = {};\n }\n let referenceTo = await getReferenceTo(field);\n if(!referenceTo){\n return ;\n }\n const refObjectConfig = await getUISchema(referenceTo.objectName);\n\n const { idsDependOn } = ctx;\n\n const fields = {\n [referenceTo.labelField.name]: referenceTo.labelField,\n [referenceTo.valueField.name]: referenceTo.valueField\n };\n\n const tableFields = [referenceTo.labelField];\n\n const source = await getApi(refObjectConfig, null, fields, {expand: true, alias: 'rows', queryOptions: `filters: {__filters}, top: {__top}, skip: {__skip}, sort: \"{__sort}\"`});\n \n source.data.$term = \"$term\";\n source.data.$self = \"$$\";\n\n if(idsDependOn && source.url && !ctx.inFilterForm){\n source.sendOn = `\\${${idsDependOn} && ${idsDependOn}.length}`;\n source.url = `${source.url}&depend_on_${idsDependOn}=\\${${idsDependOn}|join}`;\n }\n\n let listView = getLookupListView(refObjectConfig);\n let sort = \"\";\n if(listView){\n sort = getListViewSort(listView);\n }\n \n source.requestAdaptor = `\n const selfData = JSON.parse(JSON.stringify(api.data.$self));\n var filters = [];\n var pageSize = api.data.pageSize || 1000;\n var pageNo = api.data.pageNo || 1;\n var skip = (pageNo - 1) * pageSize;\n var orderBy = api.data.orderBy || '';\n var orderDir = api.data.orderDir || '';\n var sort = orderBy + ' ' + orderDir;\n sort = orderBy ? sort : \"${sort}\";\n if(selfData.op === 'loadOptions' && selfData.value){\n if(selfData.value && selfData.value.indexOf(',') > 0){\n filters = [[\"${referenceTo.valueField.name}\", \"=\", selfData.value.split(',')]];\n }else{\n filters = [[\"${referenceTo.valueField.name}\", \"=\", selfData.value]];\n }\n }\n\n var ids;\n var idsDependOn = \"${idsDependOn}\";\n if(idsDependOn){\n ids = api.data.$self[idsDependOn];\n }\n if(ids && ids.length){\n filters.push([\"${referenceTo.valueField.name}\", \"=\", ids]);\n }\n\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim());\n return api;\n `;\n\n let top = 1000;\n\n let pickerSchema = null;\n if(ctx.formFactor === 'SMALL'){\n pickerSchema = await List.getListSchema(tableFields, {\n top: top,\n ...ctx,\n actions: false\n })\n }else{\n pickerSchema = await Table.getTableSchema(tableFields, {\n labelFieldName: refObjectConfig.NAME_FIELD_KEY,\n top: top,\n isLookup: true,\n ...ctx\n })\n\n pickerSchema.affixHeader = false;\n\n }\n\n const data = {\n type: Field.getAmisStaticFieldType('picker', readonly),\n labelField: referenceTo.labelField.name,\n valueField: referenceTo.valueField.name,\n modalMode: 'dialog', \n source: source,\n // disabledOn: this._master目的是相关表新建时禁止编辑关联字段; this.relatedKey目的是相关表编辑时禁止编辑关联字段,多选字段可以编辑。\n disabledOn: `${readonly} || ( (this._master && (this._master.relatedKey ==='${field.name}')) || ((this.relatedKey ==='${field.name}') && (${field.multiple} != true)) )`,\n size: \"lg\",\n pickerSchema: pickerSchema,\n joinValues: false,\n extractValue: true\n }\n if(field.multiple){\n data.multiple = true\n data.extractValue = true\n }\n\n if(ctx.value){\n data.value = ctx.value;\n }\n\n if(ctx.selectFirst != undefined){\n data.selectFirst = ctx.selectFirst;\n }\n\n if(readonly){\n data.tpl = await Tpl.getLookupTpl(field, ctx)\n }\n return data;\n}\n\n\nif(typeof window != 'undefined'){\n window.getReferenceTo = getReferenceTo;\n window.getReferenceToSync = getReferenceToSync;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2023-01-13 17:27:54\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-08-28 17:45:38\n * @Description: \n */\nimport { i18next } from \"../../../../i18n\"\n\nexport const getMarkdownFieldSchema = (field, readonly, ctx)=>{\n if(readonly){\n return {\n \"type\": \"control\",\n \"label\": field.label,\n \"body\": {\n \"type\": \"markdown\",\n \"name\": field.name,\n \"options\": {\n \"linkify\": true,\n \"html\": true,\n \"breaks\": true\n }\n }\n }\n }else{\n return {\n \"type\": \"control\",\n \"label\": field.label,\n \"body\": [\n {\n \"type\": \"tabs\",\n \"tabsMode\": \"strong\",\n \"className\": \"steedos-markdown\",\n \"tabs\": [\n {\n \"title\": i18next.t('frontend_form_edit'),\n \"tab\": [\n {\n \"type\": \"editor\",\n \"name\": field.name,\n \"language\": \"markdown\",\n }\n ]\n },\n {\n \"title\": i18next.t('frontend_form_preview'),\n \"tab\": [\n {\n \"type\": \"markdown\",\n \"name\": field.name,\n \"options\": {\n \"linkify\": true,\n \"html\": true,\n \"breaks\": true\n }\n }\n ]\n }\n ]\n }\n ]\n }\n }\n}\n\nexport const getHtmlFieldSchema = (field, readonly, ctx)=>{\n if(readonly){\n // return {\n // \"type\": \"control\",\n // \"label\": field.label,\n // \"body\": {\n // \"type\": \"html\",\n // \"name\": field.name\n // }\n // }\n return {\n \"type\": \"input-rich-text\",\n \"receiver\": \"${context.rootUrl}/s3/images\",\n \"name\": field.name,\n \"options\": {\n \"menu\": {\n \"insert\": {\n \"title\": \"Insert\",\n \"items\": \"image link media addcomment pageembed codesample inserttable | charmap emoticons hr | pagebreak nonbreaking anchor tableofcontents | insertdatetime\"\n }\n },\n \"plugins\": [\n \"autoresize\"\n ],\n // \"max_height\": 2000,\n \"statusbar\": false,\n \"readonly\": true,\n \"toolbar\": false,\n \"menubar\": false\n }\n }\n }else{\n return {\n \"type\": \"input-rich-text\",\n \"receiver\": \"${context.rootUrl}/s3/images\",\n \"options\":{\n \"menu\": {\n \"insert\": {\n \"title\": \"Insert\",\n \"items\": \"image link media addcomment pageembed codesample inserttable | charmap emoticons hr | pagebreak nonbreaking anchor tableofcontents | insertdatetime\"\n }\n }\n },\n \"name\": field.name\n }\n // return {\n // \"type\": \"group\",\n // \"body\": [\n // {\n // \"type\": \"editor\",\n // \"name\": field.name,\n // \"language\": \"html\"\n // },\n // {\n // \"type\": \"html\",\n // \"name\": field.name\n // }\n // ]\n // }\n }\n}","import { cloneDeep, includes } from 'lodash';\nimport { lookupToAmis } from './lookup';\nimport { getMarkdownFieldSchema, getHtmlFieldSchema } from './editor';\nimport * as Fields from '../fields';\nimport * as Tpl from '../tpl';\nimport * as File from './file';\nimport { getAmisStaticFieldType } from './type';\nimport * as _ from 'lodash'\n\nexport const QUICK_SEARCHABLE_FIELD_TYPES = [\"text\", \"textarea\", \"autonumber\", \"url\", \"email\"];\nexport const OMIT_FIELDS = ['created', 'created_by', 'modified', 'modified_by'];\nexport { getAmisStaticFieldType } from './type';\n// const Lookup = require('./lookup');\n\nexport function getBaseFields(readonly){\n let calssName = 'm-1';\n if(readonly){\n calssName = `${calssName}`\n }\n return [\n { \n name: \"createdInfo\", \n label: \"创建人\",\n type: \"static\",\n labelClassName: 'text-left',\n className: calssName,\n tpl: Tpl.getCreatedInfoTpl()\n },\n { \n name: \"modifiedInfo\", \n label: \"修改人\",\n type: \"static\",\n labelClassName: 'text-left',\n className: calssName,\n tpl: Tpl.getModifiedInfoTpl()\n }\n ]\n};\n\n\n\nexport function getAmisFieldType(sField){\n switch (sField.type) {\n case 'text':\n return 'text';\n case 'textarea':\n return 'textarea';\n case 'html':\n return 'html';\n case 'markdown':\n return 'markdown';\n case 'select':\n return 'select';\n case 'boolean':\n return 'checkbox';\n case 'date':\n return 'date';\n case 'datetime':\n return 'datetime';\n case 'number':\n return 'number';\n case 'currency':\n return 'number';\n case 'percent':\n return 'number'\n case 'password':\n return 'password';\n case 'lookup':\n // TODO 根据字段配置返回 select || picker\n return 'select';\n case 'master_detail':\n // TODO 根据字段配置返回 select || picker\n return 'picker';\n case 'autonumber':\n return 'text';\n case 'url':\n return 'url'\n case 'email':\n return 'email'\n case 'image':\n return 'image'\n case 'formula':\n //TODO\n break;\n case 'summary':\n //TODO\n break;\n case 'grid':\n return 'table';\n case 'table':\n return 'steedos-input-table';\n default:\n console.log('convertData default', sField.type);\n // convertData.type = field.type\n break;\n }\n\n};\n\nexport function getObjectFieldSubFields(mainField, fields){\n const newMainField = Object.assign({subFields: []}, mainField);\n const subFields = _.filter(fields, function(field){\n let result = field.name.startsWith(`${mainField.name}.`) && _.split(field.name, \".\").length < 3;\n if(result){\n field._prefix = `${mainField.name}.`\n }\n return result;\n });\n newMainField.subFields = subFields;\n return newMainField;\n}\n\nexport function getGridFieldSubFields(mainField, fields){\n const newMainField = Object.assign({subFields: []}, mainField);\n const subFields = _.filter(fields, function(field){\n let result = field.name.startsWith(`${mainField.name}.`)\n if(result){\n field._prefix = `${mainField.name}.`\n }\n return result;\n });\n newMainField.subFields = subFields;\n return newMainField;\n}\n\nexport function getTabledFieldSubFields(mainField, fields){\n const newMainField = Object.assign({subFields: []}, mainField);\n const subFields = _.filter(fields, function(field){\n let result = field.name.startsWith(`${mainField.name}.`)\n if(result){\n field._prefix = `${mainField.name}.`\n }\n return result;\n });\n newMainField.subFields = subFields;\n return newMainField;\n}\n\n/**\n * TODO 处理权限\n * @param {*} object steedos object\n * @param {*} userSession \n */\n export function getPermissionFields(object, userSession){\n const permissionFields = [];\n const fieldsArr = [];\n\t_.each(object.fields , (field, field_name)=>{\n\t\tif(!_.has(field, \"name\")){\n\t\t\tfield.name = field_name\n }\n\t\tfieldsArr.push(field)\n })\n _.each(_.sortBy(fieldsArr, \"sort_no\"), function(field){\n if(!field.hidden){\n permissionFields.push( Object.assign({}, field, {permission: {allowEdit: true}}))\n }\n })\n return permissionFields;\n}\n\n\nexport function getSelectFieldOptions(field){\n const dataType = field.data_type || 'text';\n const options = [];\n _.each(field.options, (item)=>{\n switch (dataType) {\n case 'number':\n options.push({label: item.label, value: Number(item.value), icon: item.icon});\n break;\n case 'text':\n options.push({label: item.label, value: String(item.value), icon: item.icon});\n break;\n case 'boolean':\n options.push({label: item.label, value: item.value === 'false' ? false : true, icon: item.icon});\n break;\n default:\n break;\n }\n });\n return options;\n}\n\nexport async function convertSFieldToAmisField(field, readonly, ctx) {\n // console.log('convertSFieldToAmisField====>', field, readonly, ctx)\n const isMobile = window.innerWidth <= 768;\n let rootUrl = null;\n // 创建人和修改人、创建时间和修改时间不显示\n if(_.includes(OMIT_FIELDS, field.name) && ctx.showSystemFields != true){\n return;\n }\n const baseData = {name: ctx.fieldNamePrefix ? `${ctx.fieldNamePrefix}${field.name}` : field.name, label: field.label, labelRemark: field.inlineHelpText, required: _.has(ctx, 'required') ? ctx.required : field.required};\n let convertData = {\n };\n // if(_.includes(OMIT_FIELDS, field.name)){\n // readonly = true;\n // }\n switch (field.type) {\n case 'text':\n convertData.type = getAmisStaticFieldType('text', readonly, field);\n break;\n case 'textarea':\n convertData.type = getAmisStaticFieldType('textarea', readonly);\n // convertData.tpl = `<b><%=data.${field.name}%></b>`;\n convertData.tpl = `<%=(data.${field.name} || \"\").split(\"\\\\n\").join('<br>')%>`;\n break;\n case 'html':\n convertData = getHtmlFieldSchema(field, readonly)\n break;\n // convertData = {\n // type: getAmisStaticFieldType('html', readonly)\n // }\n // break;\n case 'markdown':\n convertData = getMarkdownFieldSchema(field, readonly)\n break;\n // convertData = {\n // type: getAmisStaticFieldType('html', readonly)\n // }\n // break;\n case 'select':\n if(readonly){\n const map = Tpl.getSelectMap(field.options);\n convertData = {\n type: \"static-mapping\",\n name: field.name,\n label: field.label,\n map: map\n }\n }else{\n convertData = {\n type: getAmisStaticFieldType('select', readonly),\n joinValues: false,\n options: getSelectFieldOptions(field),\n extractValue: true,\n clearable: true,\n labelField: 'label',\n valueField: 'value'\n }\n const select_menuTpl = `<span class='flex items-center mt-0.5'>\n <span role='img' aria-label='smile' class='anticon anticon-smile'>\n <span class='slds-icon_container slds-icon-standard-\\${REPLACE(icon,'_','-')}'>\n <svg class='slds-icon slds-icon_x-small' aria-hidden='true'>\n <use xlink:href='/assets/icons/standard-sprite/svg/symbols.svg#\\${icon}'></use>\n </svg>\n </span> \n </span>\n <span class='pl-1.5'>\\${label}</span>\n </span>`\n const menuTpl = \"${icon ? `\"+select_menuTpl+\"` : label}\"\n // TODO: 待amis修复了此bug, 就可以撤销添加menuTpl的判断。\n if(!(isMobile && field.multiple)){\n convertData.menuTpl = menuTpl;\n }\n if(field.multiple){\n convertData.multiple = true\n convertData.extractValue = true\n }\n }\n\n break;\n case 'boolean':\n convertData = {\n type: getAmisStaticFieldType('checkbox', readonly),\n // option: field.inlineHelpText,\n tpl: readonly ? Tpl.getSwitchTpl(field) : null\n }\n break;\n case 'input-date-range':\n convertData = {\n type: \"input-date-range\",\n inputFormat: \"YYYY-MM-DD\",\n format:'YYYY-MM-DDT00:00:00.000[Z]',\n tpl: readonly ? Tpl.getDateTpl(field) : null,\n // utc: true,\n joinValues: false\n }\n break;\n case 'date':\n // convertData = isMobile && !readonly ? {\n // type: \"native-date\",\n // pipeIn: (value, data) => {\n // if (value) {\n // value = moment(value).utc().format('YYYY-MM-DD');\n // return value;\n // } else {\n // return \"\";\n // }\n\n // },\n // pipeOut: (value, oldValue, data) => {\n // if (value) {\n // value = moment(value).format('YYYY-MM-DDT00:00:00.000[Z]');\n // return value;\n // } else {\n // return \"\";\n // }\n // }\n // } : {\n // type: getAmisStaticFieldType('date', readonly),\n // inputFormat: \"YYYY-MM-DD\",\n // format:'YYYY-MM-DDT00:00:00.000[Z]',\n // tpl: readonly ? Tpl.getDateTpl(field) : null,\n // // utc: true\n // }\n convertData = {\n type: getAmisStaticFieldType('date', readonly),\n inputFormat: \"YYYY-MM-DD\",\n format:'YYYY-MM-DDT00:00:00.000[Z]',\n tpl: readonly ? Tpl.getDateTpl(field) : null,\n // utc: true\n }\n break;\n case 'input-datetime-range':\n convertData = {\n type: \"input-datetime-range\",\n inputFormat: 'YYYY-MM-DD HH:mm',\n format:'YYYY-MM-DDTHH:mm:ss.SSSZ',\n tpl: readonly ? Tpl.getDateTimeTpl(field) : null,\n utc: true,\n joinValues: false\n }\n break;\n case 'datetime':\n // convertData = isMobile && !readonly ? {\n // type: \"combo\",\n // pipeIn: (value, data) => {\n // let revalue = {};\n // if (value && value != \"Invalid date\") {\n // value = moment(value).format('YYYY-MM-DD HH:mm:ss');\n // revalue[field.name + \"-native-date\"] = value.split(' ')[0];\n // revalue[field.name + \"-native-time\"] = value.split(' ')[1];\n // } else {\n // revalue[field.name + \"-native-date\"] = \"\";\n // revalue[field.name + \"-native-time\"] = \"\";\n // }\n // return revalue;\n // },\n // pipeOut: (value, oldValue, data) => {\n // let revalue = \"\";\n // if (value[field.name + \"-native-date\"] && value[field.name + \"-native-time\"]) {\n // revalue = value[field.name + \"-native-date\"] + \" \" + value[field.name + \"-native-time\"];\n // revalue = moment(revalue).utc().format('YYYY-MM-DDTHH:mm:ss.SSS[Z]');\n // }\n // return revalue;\n // },\n // items: [\n // {\n // type: \"native-date\",\n // name: field.name + \"-native-date\",\n // className: \"steedos-native-date\",\n // value: \"\"\n // },\n // {\n // type: \"native-time\",\n // name: field.name + \"-native-time\",\n // className: \"steedos-native-time\",\n // value: \"\"\n // }\n // ]\n // } : {\n // type: getAmisStaticFieldType('datetime', readonly),\n // inputFormat: 'YYYY-MM-DD HH:mm',\n // format: 'YYYY-MM-DDTHH:mm:ss.SSSZ',\n // tpl: readonly ? Tpl.getDateTimeTpl(field) : null,\n // utc: true,\n // }\n\n convertData = {\n type: getAmisStaticFieldType('datetime', readonly),\n inputFormat: 'YYYY-MM-DD HH:mm',\n format: 'YYYY-MM-DDTHH:mm:ss.SSSZ',\n tpl: readonly ? Tpl.getDateTimeTpl(field) : null,\n utc: true,\n }\n break;\n case 'input-time-range':\n convertData = {\n type: 'input-time-range',\n inputFormat: 'HH:mm',\n timeFormat:'HH:mm',\n format:'1970-01-01THH:mm:00.000[Z]',\n tpl: readonly ? Tpl.getDateTimeTpl(field) : null,\n // utc: true,\n joinValues: false\n }\n break;\n case 'time':\n // convertData = isMobile && !readonly ? {\n // type: \"native-time\",\n // pipeIn: (value, data) => {\n // if (value) {\n // value = moment(value).utc().format('HH:mm');\n // return value;\n // } else {\n // return \"\";\n // }\n\n // },\n // pipeOut: (value, oldValue, data) => {\n // if (value) {\n // value = moment('1970-01-01 ' + value).format('1970-01-01THH:mm:00.000[Z]');\n // return value;\n // } else {\n // return \"\";\n // }\n // }\n // } : {\n // type: getAmisStaticFieldType('time', readonly),\n // inputFormat: 'HH:mm',\n // timeFormat:'HH:mm',\n // format:'1970-01-01THH:mm:00.000[Z]',\n // tpl: readonly ? Tpl.getDateTimeTpl(field) : null,\n // // utc: true\n // }\n convertData = {\n type: getAmisStaticFieldType('time', readonly),\n inputFormat: 'HH:mm',\n timeFormat:'HH:mm',\n format:'1970-01-01THH:mm:00.000[Z]',\n tpl: readonly ? Tpl.getDateTimeTpl(field) : null,\n // utc: true\n }\n break;\n case 'currency':\n case 'number':\n if(readonly){\n convertData = {\n type: 'static-tpl',\n tpl: Tpl.getNumberTpl(field)\n }\n }else{\n convertData = {\n type: getAmisStaticFieldType('number', readonly),\n min: field.min,\n max: field.max,\n precision: field.scale\n }\n }\n \n break;\n case 'input-array':\n convertData = Object.assign({}, field, baseData);\n break;\n case 'input-range':\n convertData = {\n type: 'input-range',\n min: field.min,\n max: field.max,\n value: [0, 0],\n multiple: true,\n showInput: true\n }\n break;\n case 'percent':\n if(readonly){\n convertData = {\n type: 'static-tpl',\n tpl: Tpl.getUiFieldTpl(field)\n }\n }else{\n convertData = {\n type: getAmisStaticFieldType('number', readonly),\n min: field.min,\n max: field.max,\n precision: field.scale,\n suffix: \"%\",\n pipeIn: (value, data) => {\n if(value){\n // 因为例如 1.11 * 100 的值不是111,所以调整下。\n const result = value*100;\n return Number(result.toFixed(field.scale));\n }\n return value;\n },\n pipeOut: (value, oldValue, data) => {\n if(value){\n return value/100;\n }\n return value;\n },\n }\n }\n break;\n case 'password':\n convertData = {\n type: getAmisStaticFieldType('password', readonly),\n tpl: readonly ? Tpl.getPasswordTpl(field) : null\n }\n break;\n case 'lookup':\n convertData = await lookupToAmis(field, readonly, ctx) //TODO\n break;\n case 'master_detail':\n convertData = await lookupToAmis(field, readonly, ctx) //TODO\n break;\n case 'autonumber':\n if(readonly){\n convertData = {\n type: 'static-text'\n }\n }\n break;\n case 'url':\n convertData = {\n type: getAmisStaticFieldType('url', readonly, field),\n static: readonly ? true : false\n }\n if(readonly && field.show_as_qr){\n convertData = {\n type: \"control\",\n label: field.label,\n body: {\n type: \"qr-code\",\n codeSize: 128,\n name: field.name\n }\n }\n }\n break;\n case 'email':\n convertData = {\n type: getAmisStaticFieldType('email', readonly)\n }\n break;\n case 'location':\n // 申请ak后需要设置白名单; https://lbsyun.baidu.com/apiconsole/key/create#/home\n // console.log('fie==>', field.name, field);\n let ak = \"LiZT5dVbGTsPI91tFGcOlSpe5FDehpf7\";\n let vendor = \"baidu\"; /* 'baidu' | 'gaode' */\n if(window.Meteor){\n const map_ak = Meteor.settings?.public?.amis?.map_ak;\n if(map_ak){\n ak = map_ak;\n }\n const map_vendor = Meteor.settings?.public?.amis?.map_vendor;\n if(map_vendor){\n vendor = map_vendor;\n }\n }\n \n const coordinatesType = field.coordinatesType || \"bd09\";\n convertData = {\n type: getAmisStaticFieldType('location', readonly),\n tpl: readonly ? Tpl.getLocationTpl(field) : null,\n ak,\n vendor,\n clearable: true,\n coordinatesType,\n label: field.label,\n pipeOut: (value, oldValue, data) => {\n if (value) {\n const lng = value.lng;\n const lat = value.lat;\n let coordinates = [lng,lat];\n if(window.coordtransform){\n if(coordinatesType.toLowerCase() === 'bd09'){\n const bd09togcj02 = window.coordtransform.bd09togcj02(lng,lat);\n coordinates = window.coordtransform.gcj02towgs84(bd09togcj02[0],bd09togcj02[1]);\n }else if(coordinatesType.toLowerCase() === 'gcj02'){\n coordinates = window.coordtransform.gcj02towgs84(lng,lat);\n }\n }\n value.wgs84 = {\n type: \"Point\",\n coordinates\n }\n return value; // 切换到数字之后的默认值\n }\n }\n }\n break;\n case 'avatar':\n convertData = File.getAmisFileSchema(field, readonly);\n break;\n case 'image':\n convertData = File.getAmisFileSchema(field, readonly);\n break;\n case 'file':\n convertData = File.getAmisFileSchema(field, readonly);\n break;\n case 'formula':\n if(readonly){\n convertData = {\n type: 'static-tpl',\n tpl: Tpl.getUiFieldTpl(field)\n }\n }\n break;\n case 'summary':\n if(readonly){\n convertData = {\n type: 'static-tpl',\n tpl: Tpl.getUiFieldTpl(field)\n }\n }\n break;\n case 'code':\n convertData = {\n type: \"editor\",\n disabled: readonly ? true : false,\n language: field.language,\n editorDidMount: new Function('editor', 'monaco', field.editorDidMount)\n }\n break;\n case 'toggle':\n convertData = {\n type: \"switch\",\n name: field.name,\n label: field.label,\n width: field.width,\n toggled: field.toggled,\n disabled: readonly,\n }\n break;\n case 'grid':\n if(field.subFields){\n convertData = {\n type: 'input-table',\n showIndex: true,\n columnsTogglable: false,\n strictMode:false,\n affixHeader: false, // 是否固定表头, 不固定表头, 否则form有y轴滚动条时, 表头会跟随滚动条滚动.\n needConfirm: false,\n editable: !readonly,\n addable: !readonly,\n removable: !readonly,\n draggable: !readonly,\n columns: []\n }\n // console.log(`convertData ==2====>`, field, convertData)\n for (const subField of field.subFields) {\n const subFieldName = subField.name.replace(`${field._prefix || ''}${field.name}.$.`, '').replace(`${field.name}.`, '');\n const gridSub = await convertSFieldToAmisField(Object.assign({}, subField, {name: subFieldName, isTableField: true}), readonly, ctx);\n if(gridSub){\n delete gridSub.name\n delete gridSub.label\n const gridItemSchema = {\n name: subFieldName,\n label: subField.label,\n quickEdit: readonly ? false : gridSub\n };\n if([\"lookup\", \"boolean\", \"toggle\"].indexOf(subField.type) > -1){\n gridItemSchema.type = gridSub.type;\n gridItemSchema.tpl = gridSub.tpl;\n }\n convertData.columns.push(Object.assign({}, gridItemSchema, subField.amis, {name: subFieldName}))\n }\n }\n }\n break;\n case 'table':\n if(field.subFields){\n convertData = {\n type: 'steedos-input-table',\n showIndex: true,\n editable: !readonly,\n addable: !readonly,\n removable: !readonly,\n draggable: !readonly,\n fields: [],\n amis:{\n columnsTogglable: false\n }\n }\n // console.log(`convertData ======>`, field, convertData)\n for (const subField of field.subFields) {\n if(!subField.name.endsWith(\".$\")){\n const subFieldName = subField.name.replace(`${field._prefix || ''}${field.name}.$.`, '').replace(`${field.name}.`, '');\n // const gridSub = await convertSFieldToAmisField(Object.assign({}, subField, {name: subFieldName, isTableField: true}), readonly, ctx);\n convertData.fields.push(Object.assign({}, subField, {name: subFieldName}))\n }\n }\n }\n break;\n case 'object':\n if(field.subFields){\n convertData = {\n type: 'combo',\n items: []\n };\n // console.log(`convertData ======>`, field, convertData)\n for (let subField of field.subFields) {\n let subFieldName = subField.name.replace(`${field.name}.$.`, '').replace(`${field.name}.`, '');\n if(subField.type === 'grid'){\n subField = await Fields.getGridFieldSubFields(subField, ctx.__formFields);\n }else{\n if(readonly){\n subFieldName = `${field.name}.${subFieldName}`\n }\n }\n const gridSub = await convertSFieldToAmisField(Object.assign({}, subField, {name: subFieldName}), readonly, ctx);\n if(gridSub){\n delete gridSub.name\n delete gridSub.label\n convertData.items.push(\n Object.assign({}, gridSub, {label: subField.label}, subField.amis, {\n name: subFieldName\n })\n )\n }\n }\n }\n break;\n default:\n // console.log('convertData default', field.type);\n // convertData.type = field.type\n break;\n }\n if(!_.isEmpty(convertData)){\n if(field.is_wide || convertData.type === 'group'){\n convertData.className = 'col-span-2 m-1';\n }else{\n convertData.className = 'm-1';\n }\n if(readonly){\n convertData.className = `${convertData.className} border-b`\n }\n if(readonly){\n convertData.quickEdit = false;\n }\n\n let fieldTypeClassName = ' steedos-' + convertData.type + (readonly ? '-readonly' : '-edit');\n if (convertData.className) {\n convertData.className = convertData.className + fieldTypeClassName;\n } else {\n convertData.className = fieldTypeClassName;\n }\n\n if(field.visible_on && !ctx.inFilterForm){\n // convertData.visibleOn = `\\$${field.visible_on.substring(1, field.visible_on.length -1).replace(/formData./g, '')}`;\n if(field.visible_on.startsWith(\"{{\")){\n convertData.visibleOn = `${field.visible_on.substring(2, field.visible_on.length -2).replace(/formData./g, 'data.')}`\n }else{\n convertData.visibleOn = `${field.visible_on.replace(/formData./g, 'data.')}`\n }\n }\n\n if(_.isString(baseData.required)){\n if(baseData.required.startsWith(\"{{\")){\n baseData.requiredOn = `${baseData.required.substring(2, baseData.required.length -2).replace(/formData./g, 'data.')}`;\n delete baseData.required;\n }\n }\n\n if(convertData.type === 'group'){\n convertData.body[0] = Object.assign({}, baseData, convertData.body[0], { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name});\n return convertData\n }\n // if(ctx.mode === 'edit'){\n let convertDataResult = Object.assign({}, baseData, convertData, { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name}, field.amis, {name: baseData.name});\n // console.log(\"convertDataResult:\", convertDataResult);\n return convertDataResult;\n // }else{\n // return Object.assign({}, baseData, convertData, { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name});\n // }\n }\n \n}\n\nexport async function getFieldSearchable(perField, permissionFields, ctx){\n if(!ctx){\n ctx = {};\n }\n let field = perField;\n if(field.type === 'grid'){\n field = await Fields.getGridFieldSubFields(perField, permissionFields);\n }else if(perField.type === 'object'){\n field = await Fields.getObjectFieldSubFields(perField, permissionFields);\n }\n\n let fieldNamePrefix = '__searchable__';\n if(field.name.indexOf(\".\") < 0){\n let _field = cloneDeep(field)\n if(includes(['textarea', 'html', 'code', 'autonumber'], field.type)){\n _field.type = 'text'\n }\n\n if(includes(['formula', 'summary'], field.type)){\n _field.type = field.data_type;\n _field.precision = field.precision;\n _field.scale = field.scale;\n }\n else if(field.type === \"select\" && field.data_type && field.data_type != \"text\"){\n _field.type = field.data_type;\n }\n\n if(_field.type === 'number' || _field.type === 'currency'){\n _field.type = 'input-array';\n _field.inline = true;\n _field.addable = false;\n _field.removable = false;\n _field.value = [null,null];\n _field.items = {\n type: \"input-number\"\n }\n _field.is_wide = true;\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n\n if(_field.type ==='date'){\n _field.type = 'input-date-range';\n _field.is_wide = true;\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n if(_field.type === 'datetime'){\n _field.type = 'input-datetime-range'\n _field.is_wide = true;\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n if(_field.type === 'time'){\n _field.type = 'input-time-range'\n _field.is_wide = true;\n fieldNamePrefix = `${fieldNamePrefix}between__`\n }\n if(_field.reference_to === 'users'){\n _field.reference_to = 'space_users';\n _field.reference_to_field = 'user';\n }\n _field.readonly = false;\n _field.disabled = false;\n _field.multiple = true;\n _field.is_wide = false;\n _field.defaultValue = undefined;\n _field.required = false;\n _field.hidden = false;\n _field.omit = false;\n\n if(_field.amis){\n delete _field.amis.static;\n delete _field.amis.staticOn;\n delete _field.amis.disabled;\n delete _field.amis.disabledOn;\n delete _field.amis.required;\n delete _field.amis.requiredOn;\n delete _field.amis.visible;\n delete _field.amis.visibleOn;\n delete _field.amis.hidden;\n delete _field.amis.hiddenOn;\n delete _field.amis.autoFill;\n }\n\n const amisField = await Fields.convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true, inFilterForm: true}));\n if(amisField){\n return amisField;\n }\n }\n}\n\nif(typeof window != 'undefined'){\n window.getFieldSearchable = getFieldSearchable;\n}\n\n\nexport function isFieldTypeSearchable(fieldType) {\n return !_.includes(\n [\n \"grid\",\n \"table\",\n \"avatar\",\n \"image\",\n \"object\",\n \"[object]\",\n \"[Object]\",\n \"[grid]\",\n \"[text]\",\n \"audio\",\n \"file\",\n ],\n fieldType\n )\n}\n\nif (typeof window != 'undefined') {\n window.isFieldTypeSearchable = isFieldTypeSearchable;\n}\n\n\nexport function isFieldQuickSearchable(field, nameFieldKey) {\n let fieldSearchable = field.searchable;\n if(fieldSearchable !== false && field.name === nameFieldKey){\n // 对象上名称字段的searchable默认认为是true\n fieldSearchable = true;\n }\n if (fieldSearchable && QUICK_SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1) {\n return true;\n }\n return false;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-05-26 16:02:08\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-11-29 17:48:27\n * @Description: \n */\nimport * as Fields from '../fields';\nimport * as lodash from 'lodash';\nimport { i18next } from '../../../../i18n'\n\nconst getFieldSchemaArray = (formFields, ctx) => {\n let fieldSchemaArray = [];\n fieldSchemaArray.length = 0\n const recordId = ctx && ctx.recordId;\n\n lodash.forEach(formFields, (field) => {\n if (!field.group || field.group == 'null' || field.group == '-')\n field.group = i18next.t('frontend_field_group_generalization')\n const fieldName = field.name;\n let isObjectField = /\\w+\\.\\w+/.test(fieldName)\n if (field.type == 'grid' || field.type == 'object' || field.type == 'table') {\n // field.group = field.label\n field.is_wide = true;\n }\n\n let forceHidden = false;\n if(!recordId && field.readonly && !ctx.isEditor){\n // 新建记录时,只读字段先隐藏,后续支持显示后,即任务:https://github.com/steedos/steedos-platform/issues/3164 完成后再放开\n // 表单只读时所有字段都是readonly,设计器中如果forceHidden会造成整个表单在只读的时候显示为空白了,所以要排除掉\n forceHidden = true;\n }\n\n if (!isObjectField) {\n if (!field.hidden && !forceHidden) {\n fieldSchemaArray.push(Object.assign({ name: fieldName }, field, { permission: { allowEdit: true } }))\n }\n }\n })\n return fieldSchemaArray;\n}\n\nconst getSection = async (formFields, permissionFields, fieldSchemaArray, sectionName, ctx) => {\n if (!ctx) {\n ctx = {};\n }\n const sectionFields = lodash.filter(fieldSchemaArray, { 'group': sectionName });\n if (sectionFields.length == lodash.filter(sectionFields, ['hidden', true]).length) {\n return;\n }\n\n const fieldSetBody = [];\n\n for (const perField of sectionFields) {\n let field = perField;\n if (perField.type === 'grid') {\n field = await Fields.getGridFieldSubFields(perField, formFields);\n // console.log(`perField.type grid ===> field`, field)\n } else if (perField.type === 'table') {\n field = await Fields.getTabledFieldSubFields(perField, formFields);\n } else if (perField.type === 'object') {\n field = await Fields.getObjectFieldSubFields(perField, formFields);\n // console.log(`perField.type object ===> field`, field)\n }\n if (field.name.indexOf(\".\") < 0) {\n if(field.type === \"steedos-field\"){\n // 如果是steedos-field则不需要通过convertSFieldToAmisField函数转换,因为steedos-field组件会转换\n fieldSetBody.push(field);\n }\n else{\n ctx.__formFields = formFields;\n const amisField = await Fields.convertSFieldToAmisField(field, field.readonly, ctx);\n // 如果steedos-field稳定了,可以放开下面的代码直接用组件统一渲染字段\n // const amisField = {\n // \"type\": \"steedos-field\",\n // \"config\": field,\n // \"readonly\": field.readonly,\n // \"ctx\": ctx\n // };\n // console.log(`${field.name} amisField`, field, amisField)\n if (amisField) {\n fieldSetBody.push(amisField);\n }\n }\n }\n }\n\n // fieldSet 已支持显隐控制\n const sectionFieldsVisibleOn = lodash.map(lodash.compact(lodash.map(fieldSetBody, 'visibleOn')), (visibleOn) => {\n let visible = visibleOn;\n if(visible.indexOf('${')>-1){\n visible = visible.substring(visible.indexOf('{')+1, visible.indexOf('}'))\n }\n return visible ? \"(\"+visible+\")\" : visible;\n });\n\n let section = {\n \"type\": \"fieldSet\",\n \"title\": sectionName,\n \"collapsable\": true,\n \"body\": fieldSetBody,\n }\n\n if (ctx.enableTabs) {\n section = {\n \"title\": sectionName,\n \"body\": fieldSetBody,\n }\n }\n\n if (sectionFieldsVisibleOn.length > 0 && fieldSetBody.length === sectionFieldsVisibleOn.length) {\n section.visibleOn = `${sectionFieldsVisibleOn.join(\" || \")}`\n }\n\n const fieldGroups = ctx.fieldGroups;\n const group = fieldGroups && fieldGroups.find(function(groupItem){\n return groupItem.group_name == sectionName;\n });\n let groupVisibleOn = group && group.visible_on;\n if (groupVisibleOn) {\n if (groupVisibleOn.startsWith(\"{{\")) {\n groupVisibleOn = `${groupVisibleOn.substring(2, groupVisibleOn.length - 2).replace(/formData./g, 'data.')}`\n } else {\n groupVisibleOn = `${groupVisibleOn.replace(/formData./g, 'data.')}`\n }\n if (section.visibleOn) {\n section.visibleOn = `${section.visibleOn + \" && \" + groupVisibleOn}`;\n }\n else {\n section.visibleOn = groupVisibleOn;\n }\n }\n return section\n}\n\nexport const getSections = async (permissionFields, formFields, ctx) => {\n if (!ctx) {\n ctx = {};\n }\n const fieldSchemaArray = getFieldSchemaArray(formFields, ctx)\n const _sections = lodash.groupBy(fieldSchemaArray, 'group');\n const sections = [];\n var sectionVisibleOns = [];\n for (const key in _sections) {\n const section = await getSection(formFields, permissionFields, fieldSchemaArray, key, ctx);\n if (section.body.length > 0) {\n if (section.visibleOn) {\n sectionVisibleOns.push(\"(\"+section.visibleOn+\")\");\n }\n else{\n sectionVisibleOns.push(\"true\");\n }\n sections.push(section)\n }\n }\n /*\n 为了实现只有一个分组时隐藏该分组标题,需要分三种情况(分组如果没有visibleon属性就代表一定显示,有visibleon需要进行判断)\n 1 当前分组为隐藏时,标题就设置为隐藏\n 2 当前分组为显示时,其他分组只要有一个是显示,就显示该分组标题\n 3 当前分组为显示时,其他分组都隐藏,就隐藏该分组标题\n */\n sections.forEach((section, index) => {\n var tempSectionVisibleOns = sectionVisibleOns.slice();\n tempSectionVisibleOns.splice(index, 1);\n section.headingClassName = {\n \"hidden\": `!((${tempSectionVisibleOns.join(\" || \") || 'false'}) && ${sectionVisibleOns[index]})`\n }\n });\n\n if (ctx.enableTabs) {\n // TODO: 以下sectionHeaderVisibleOn代码逻辑是为实现只有一个选项卡时给选项卡添加sectionHeaderVisibleOn样式类来把选项卡顶部卡头隐藏\n // 但是 amis filter过滤器有两个bug造成此功能不好实现:\n // 1.filter过滤器只支持对象数组,并不支持boolean或字符串数组,见: https://github.com/baidu/amis/issues/7078\n // 2.filter过滤器的返回结果无法进一步获取最终过滤后的数组长度,见:https://github.com/baidu/amis/issues/7077\n // let sectionHeaderVisibleOn = \"false\";\n // if(sectionVisibleOns.length){\n // sectionHeaderVisibleOn = \"[\" + sectionVisibleOns.join(\",\") + \"]\" + \"|filter:equals:true.length > 1\";\n // }\n // console.log(\"===sectionHeaderVisibleOn===\", sectionHeaderVisibleOn);\n // sectionHeaderVisibleOn = \"[true]|filter:equals:true.length > 1\";\n // sectionHeaderVisibleOn = \"false\";\n // sectionHeaderVisibleOn = \"[1,1,1]|filter:equals:1.length > 1\";\n return [\n {\n \"type\": \"tabs\",\n // \"className\": {\n // \"hiddenFormTabs\": `!(${sectionHeaderVisibleOn})`\n // },\n \"tabs\": sections,\n \"tabsMode\": ctx.tabsMode\n }\n ]\n }\n\n return sections;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-07 11:02:29\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-03-07 17:19:34\n * @Description: \n */\nimport { getSections } from './fields/sections';\n\nexport async function getFormBody(permissionFields, formFields, ctx){\n return await getSections(permissionFields, formFields, ctx);\n}","/*\n * @Author: 殷亮辉 yinlianghui@hotoa.com\n * @Date: 2023-11-15 09:50:22\n * @LastEditors: 殷亮辉 yinlianghui@hotoa.com\n * @LastEditTime: 2023-12-04 17:36:50\n */\n\nimport { getFormBody } from './converter/amis/form';\nimport { clone } from 'lodash';\n\n/**\n * @param {*} props \n * @param {*} mode edit/new/readonly\n */\nfunction getFormFields(props, mode = \"edit\") {\n return (props.fields || []).map(function (item) {\n let formItem = {\n \"type\": \"steedos-field\",\n \"name\": item.name,\n \"config\": item\n }\n if(mode === \"readonly\"){\n formItem.static = true;\n }\n return formItem;\n }) || [];\n}\n\n/**\n * @param {*} props \n * @param {*} mode edit/new/readonly\n */\nasync function getInputTableColumns(props) {\n let columns = props.columns || [];\n // 实测过,直接不生成对应的隐藏column并不会对input-table值造成丢失问题,隐藏的列字段值能正常维护\n let fields = props.fields;\n if(columns && columns.length){\n return columns.map(function(column){\n let field, extendColumnProps = {};\n if(typeof column === \"string\"){\n // 如果字符串,则取出要显示的列配置\n field = fields.find(function(fieldItem){\n return fieldItem.name === column;\n });\n }\n else{\n // 如果是对象,则合并到steedos-field的config.amis属性中,steedos组件会把config.amis属性混合到最终生成的input-table column\n field = fields.find(function(fieldItem){\n return fieldItem.name === column.name;\n });\n if(field){\n // field.amis = Object.assign({}, field.amis, column);\n // 如果把column合并到field.amis,column的label/width等属性不会生效,只能放外层合并\n extendColumnProps = column;\n }\n }\n if(field){\n return {\n \"type\": \"steedos-field\",\n \"config\": field,\n \"static\": true,\n \"readonly\": true,\n label: field.label,\n name: field.name,\n hideLabel: true,\n ...extendColumnProps\n }\n }\n else{\n return column;\n }\n });\n }\n else{\n return fields.map(function(field){\n return {\n \"type\": \"steedos-field\",\n \"config\": field,\n \"static\": true,\n \"readonly\": true,\n label: field.label,\n name: field.name,\n hideLabel: true\n }\n }) || [];\n }\n}\n\n/**\n * @param {*} props \n * @param {*} mode edit/new/readonly\n */\nasync function getForm(props, mode = \"edit\") {\n let formFields = getFormFields(props, mode)\n let body = await getFormBody(null, formFields);\n let schema = {\n \"type\": \"form\",\n \"title\": \"表单\",\n \"debug\": false,\n \"mode\": \"normal\",\n \"body\": body,\n \"className\": \"steedos-object-form steedos-amis-form\"\n };\n if (mode === \"edit\") {\n Object.assign(schema, {\n \"onEvent\": {\n \"submit\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"actionType\": \"setValue\",\n \"args\": {\n \"index\": \"${index}\",\n \"value\": {\n \"&\": \"$$\"\n }\n },\n \"componentId\": props.id\n }\n ]\n }\n }\n });\n }\n else if (mode === \"new\") {\n let onNewItemSubmitScript = `\n let fieldValue = _.cloneDeep(event.data[\"${props.name}\"]);\n if(!fieldValue){\n fieldValue = [];\n }\n fieldValue.push(JSON.parse(JSON.stringify(event.data)));\n doAction({\n \"componentId\": \"${props.id}\",\n \"actionType\": \"setValue\",\n \"args\": {\n \"value\": fieldValue\n }\n });\n `;\n Object.assign(schema, {\n \"onEvent\": {\n \"submit\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"actionType\": \"custom\",\n \"script\": onNewItemSubmitScript\n },\n // {\n // \"componentId\": props.id,\n // \"actionType\": \"addItem\",//input-table组件的needConfirm属性为true时,addItem动作会把新加的行显示为编辑状态,所以只能使用上面的custom script来setValue实现添加行\n // \"args\": {\n // \"index\": `\\${${props.name}.length || 9000}`,//这里加9000是因为字段如果没放在form组件内,props.name.length拿不到值\n // \"item\": {\n // \"&\": \"$$\"\n // }\n // }\n // }\n ]\n }\n }\n });\n }\n return schema;\n}\n\nasync function getButtonNew(props) {\n return {\n \"label\": \"新增\",\n \"type\": \"button\",\n \"icon\": \"fa fa-plus\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": \"新增行\",\n \"body\": [\n await getForm(props, \"new\")\n ],\n \"size\": \"lg\",\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"className\": \"app-popover\",\n \"closeOnEsc\": false\n }\n }\n ]\n }\n },\n \"level\": \"primary\"\n };\n}\n\nasync function getButtonEdit(props) {\n return {\n \"type\": \"button\",\n \"label\": \"\",\n \"icon\": \"fa fa-pencil\",\n \"level\": \"link\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": \"编辑行\",\n \"body\": [\n await getForm(props, \"edit\")\n ],\n \"size\": \"lg\",\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"className\": \"app-popover\",\n \"closeOnEsc\": false\n }\n }\n ]\n }\n }\n };\n}\n\nasync function getButtonView(props) {\n return {\n \"type\": \"button\",\n \"label\": \"\",\n \"icon\": \"fa fa-external-link\",\n \"level\": \"link\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": \"查看行\",\n \"body\": [\n await getForm(props, \"readonly\")\n ],\n \"size\": \"lg\",\n \"showCloseButton\": true,\n \"showErrorMsg\": true,\n \"showLoading\": true,\n \"className\": \"app-popover\",\n \"closeOnEsc\": false\n }\n }\n ]\n }\n }\n };\n}\n\nfunction getButtonDelete(props) {\n return {\n \"type\": \"button\",\n \"label\": \"\",\n \"icon\": \"fa fa-minus\",\n \"level\": \"link\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"deleteItem\",\n \"args\": {\n \"index\": \"${index+','}\" //这里不加逗号后续会报错,语法是逗号分隔可以删除多行\n },\n \"componentId\": props.id\n }\n ]\n }\n }\n };\n}\n\nexport const getAmisInputTableSchema = async (props, readonly) => {\n if (!props.id) {\n props.id = \"steedos_input_table_\" + props.name + \"_\" + Math.random().toString(36).substr(2, 9);\n }\n let buttonsForColumnOperations = [];\n if (props.editable) {\n let buttonEditSchema = await getButtonEdit(props);\n buttonsForColumnOperations.push(buttonEditSchema);\n }\n else{\n // 只读时显示查看按钮\n if(props.columns && props.columns.length > 0 && props.columns.length < props.fields.length){\n // 只在有列被隐藏时才需要显示查看按钮\n let buttonViewSchema = await getButtonView(props);\n buttonsForColumnOperations.push(buttonViewSchema);\n }\n }\n if (props.removable) {\n let buttonDeleteSchema = getButtonDelete(props);\n buttonsForColumnOperations.push(buttonDeleteSchema);\n }\n let inputTableSchema = {\n \"type\": \"input-table\",\n \"label\": props.label,\n \"name\": props.name,\n //不可以addable/editable/removable设置为true,因为会在原生的操作列显示操作按钮图标,此开关实测只控制这个按钮显示不会影响功能\n // \"addable\": props.addable,\n // \"editable\": props.editable,\n // \"removable\": props.removable, \n \"draggable\": props.draggable,\n \"showIndex\": props.showIndex,\n \"perPage\": props.perPage,\n \"id\": props.id,\n \"columns\": await getInputTableColumns(props),\n // \"needConfirm\": false, //不可以配置为false,否则,单元格都是可编辑状态,且很多static类型无法正常显示,比如static-mapping\n \"strictMode\": true,\n \"showTableAddBtn\": false,\n \"showFooterAddBtn\": false,\n \"className\": props.tableClassName\n };\n if (buttonsForColumnOperations.length) {\n inputTableSchema.columns.push({\n \"name\": \"__op__\",\n \"type\": \"operation\",\n \"buttons\": buttonsForColumnOperations,\n \"width\": buttonsForColumnOperations.length > 1 ? \"46px\" : \"20px\"\n });\n }\n let schema = {\n \"type\": \"wrapper\",\n \"size\": \"none\",\n \"body\": [\n inputTableSchema\n ],\n \"className\": props.className\n };\n let footerToolbar = clone(props.footerToolbar || []); //这里不clone的话,会造成死循环,应该是因为props属性变更会让组件重新渲染\n if (props.addable) {\n let buttonNewSchema = await getButtonNew(props);\n footerToolbar.unshift(buttonNewSchema);\n }\n if (footerToolbar.length) {\n schema.body.push({\n \"type\": \"wrapper\",\n \"size\": \"none\",\n \"body\": footerToolbar\n });\n }\n if (props.amis) {\n delete props.amis.id;\n Object.assign(schema.body[0], props.amis);\n }\n return schema;\n}","import { first, keys, map, find } from 'lodash';\nimport { getUISchema, getRecordDetailHeaderSchema, getFormSchema, getViewSchema, getListViewColumns, getListViewSort, getTableSchema } from './objects';\nimport { getObjectRelatedList } from './objectsRelated';\n\nimport { getObjectListHeader,getObjectRecordDetailRelatedListHeader } from './converter/amis/header';\n// import { getListSchema } from './objects';\n\nfunction getScopeId(objectApiName,type){\n return `page_${objectApiName}_${type}`;\n}\n\n// 获取表单初始化amisSchema\nexport async function getFormPageInitSchema(objectApiName) {\n const schema = await getFormSchema(objectApiName, {recordId: '${recordId}'});\n return {\n type: 'page',\n name: getScopeId(objectApiName,\"form\"),\n bodyClassName: '',\n regions: [\n \"body\"\n ],\n body:[\n schema.amisSchema\n ]\n }\n}\n\n// 获取列表页面初始化amisSchema\nexport async function getListPageInitSchema(objectApiName, formFactor, userSession) {\n // let schema = await getListSchema(null, objectApiName, null, { showHeader: true });\n // let amisSchema = schema && schema.amisSchema;\n // if (amisSchema) {\n // return {\n // type: 'page',\n // bodyClassName: 'p-0',\n // regions: [\n // \"body\"\n // ],\n // // name: `page_${readonly ? 'readonly':'edit'}_${recordId}`\n // body: amisSchema\n // }\n // }\n\n // const uiSchema = await getUISchema(objectApiName);\n // const listViewName = first(keys(uiSchema.list_views));\n // const headerSchema = await getObjectListHeader(uiSchema, listViewName);\n\n return {\n type: 'page',\n name: getScopeId(objectApiName,\"list\"),\n bodyClassName: '',\n regions: [\n \"body\"\n ],\n // name: `page_${readonly ? 'readonly':'edit'}_${recordId}`\n body: [{\n \"type\": \"steedos-object-listview\",\n \"objectApiName\": objectApiName,\n // \"listName\": \"${listName}\",\n // \"headerToolbar\": [],\n \"columnsTogglable\": false,\n \"showHeader\": true,\n // \"headerSchema\": headerSchema\n className: \"sm:border bg-white sm:rounded border-gray-300 border-solid\"\n }]\n }\n}\n\n// 获取\nexport async function getRecordPageInitSchema(objectApiName){\n // console.log('getRecordPageSchema==>', objectApiName, ctx, formFactor, userSession);\n // const detailHeaderAmisSchema = (await getRecordDetailHeaderSchema(objectApiName, \"${recordId}\")).amisSchema;\n // const objectFormAmisSchema = (await getViewSchema(objectApiName, \"${recordId}\", {labelAlign:\"left\"})).amisSchema;\n \n const recordId = '${recordId}';\n const relatedList = await getObjectRelatedList(objectApiName, recordId, null);\n const uiSchema = await getUISchema(objectApiName);\n let body = [\n // detailHeaderAmisSchema,\n {\n \"type\": \"steedos-record-detail-header\",\n \"label\": \"标题面板\",\n \"objectApiName\": \"${objectName}\",\n \"recordId\": \"${recordId}\",\n \"onEvent\": {\n \"recordLoaded\": {\n \"actions\": [\n {\n \"actionType\": \"setValue\",\n \"args\": {\n \"value\": {\n \"recordLoaded\": true,\n }\n }\n },\n {\n \"actionType\": \"reload\",\n \"data\": {\n \"name\": `\\${record.${uiSchema?.NAME_FIELD_KEY || 'name'}}`,\n \"record\": `\\${record}`,\n \"recordLoaded\": true,\n }\n }\n ]\n }\n }\n }\n ];\n let contentBody = {\n \"type\": \"tabs\",\n \"tabs\": [\n {\n \"title\": \"详情\",\n \"body\": [\n // objectFormAmisSchema\n {\n \"type\": \"steedos-object-form\",\n \"label\": \"对象表单\",\n \"mode\": \"read\",\n \"objectApiName\": \"${objectName}\",\n \"recordId\": \"${recordId}\",\n \"labelAlign\": \"left\"\n }\n ]\n }\n ],\n \"className\": \"sm:mt-3 flex flex-col region-main bg-white sm:rounded sm:border border-gray-300\",\n \"linksClassName\": \"pl-4 pt-2\"\n };\n if(relatedList.length){\n contentBody.tabs.push({\n \"title\": \"相关\",\n \"body\": {\n \"type\": \"steedos-object-related-lists\",\n \"label\": \"所有相关表\",\n \"objectApiName\": \"${objectName}\",\n \"recordId\": \"${recordId}\",\n },\n })\n }\n body.push(contentBody);\n return {\n type: 'page',\n id: `page_${objectApiName}_record_detail`,\n name: getScopeId(objectApiName,\"record_detail\"),\n bodyClassName: '',\n regions: [\n \"body\"\n ],\n body\n }\n}\n\n// 获取对象的某个列表视图初始化amisSchema\nexport async function getListviewInitSchema(objectApiName, listViewName, ctx) {\n if(!ctx){\n ctx = {};\n }\n const uiSchema = await getUISchema(objectApiName);\n const listView = find(\n uiSchema.list_views,\n (listView, name) => {\n return name === listViewName;\n }\n );\n\n let amisSchema = {};\n\n if (listView) {\n const listViewColumns = getListViewColumns(listView, ctx.formFactor);\n const sort = getListViewSort(listView);\n \n // amisSchema = {\n // \"type\": \"steedos-object-table\",\n // \"objectApiName\": objectApiName,\n // \"columns\": listViewColumns,\n // \"extraColumns\": listView.extra_columns,\n // \"filters\": listView.filters,\n // \"sort\": sort,\n // \"headerSchema\": headerSchema\n // };\n\n const defaults = ctx.defaults || {};\n if(!defaults.headerSchema){\n //传入isListviewInit是区别于对象列表类型的微页面,即getListPageInitSchema函数中该属性为false\n const headerSchema = await getObjectListHeader(uiSchema, listViewName, {\n onlySecordLine: true,\n isListviewInit: true\n });\n defaults.headerSchema = headerSchema;\n }\n ctx.defaults = defaults;\n let setDataToComponentId = ctx.setDataToComponentId;\n if(!setDataToComponentId){\n setDataToComponentId = `service_listview_${objectApiName}`;\n }\n const schema = await getTableSchema(null, objectApiName, listViewColumns, {\n sort,\n ...ctx,\n setDataToComponentId\n });\n amisSchema = schema.amisSchema;\n // TODO: 下面这些data下的无用属性在底层代码中就不应该加,待底层移除后下面的删除语句就可以去掉了\n delete amisSchema.data.$master;\n delete amisSchema.data._id;\n delete amisSchema.data.recordPermissions;\n delete amisSchema.data.uiSchema;\n }\n // 不可以外面包一层page,否则列表视图渲染时的data无法传入顶部第一行造成按钮显示异常\n return amisSchema;\n\n // return {\n // type: 'page',\n // bodyClassName: 'p-0',\n // regions: [\n // \"body\"\n // ],\n // // name: `page_${readonly ? 'readonly':'edit'}_${recordId}`\n // body: [amisSchema],\n // data:{\n // listName: listViewName\n // }\n // }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-07-05 15:54:17\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-07-05 16:30:29\n * @Description: \n */\nimport { fetchAPI } from './steedos.client';\n\nexport async function getApps(){\n const APPS_API = '/service/api/apps/menus';\n const apps = await fetchAPI(APPS_API);\n return apps;\n}\n\nexport async function getApp(appName){\n const appApi = `/service/api/apps/${appName}/menus`;\n const app = await fetchAPI(appApi);\n return app;\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-15 11:53:28\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-08-27 16:54:21\n * @Description: \n */\nimport { fetchAPI, getSteedosAuth } from \"./steedos.client\"\n\nexport const getNotifications = async () => {\n const auth = getSteedosAuth();\n const query = `\n {\n notifications(filters: [\"owner\",\"=\",\"${auth.userId}\"], sort: \"created desc,name\", top : 10){\n _id,name,body,related_to,related_name,url,owner,is_read,from,created\n },\n unReadCount: notifications__count(filters: [[\"owner\",\"=\",\"${auth.userId}\"], [\"is_read\", \"!=\", true]])\n }\n `;\n const result = await fetchAPI('/graphql', {\n method: 'POST',\n body: JSON.stringify({ query })\n })\n\n return result.data\n}\n\nexport const markReadAll = async ()=>{\n return await fetchAPI('/api/v4/notifications/all/markReadAll', {\n method: 'POST'\n });\n}","import { map } from 'lodash';\n\nconst PUBLIC_ENV = {};\n\nexport const setEnv = (k, v)=>{\n PUBLIC_ENV[k] = v;\n}\n\nexport const getEnv = (k) =>{\n return PUBLIC_ENV[k];\n}\n\nexport const setEnvs = (data) =>{\n map(data, (v, k)=>{\n PUBLIC_ENV[k] = v;\n });\n}\n\nexport const getEnvs = () =>{\n return PUBLIC_ENV;\n}","import { getUISchema } from './objects';\n\nexport async function getSpaceUsersPickerAmisSchema(spaceUserSchema, name, options) {\n return {\n \"type\": \"picker\",\n \"label\": \"人员\",\n \"name\": name,\n \"id\": options.id,\n \"modalMode\": \"dialog\",\n \"joinValues\": false,\n \"source\": {\n \"method\": \"post\",\n \"url\": \"${context.rootUrl}/graphql\",\n \"data\": {\n \"orderBy\": \"${orderBy}\",\n \"orderDir\": \"${orderDir}\",\n \"pageNo\": \"${page}\",\n \"pageSize\": \"${perPage}\",\n \"query\": \"{rows:space_users(filters: {__filters}, top: {__top}, skip: {__skip}, sort: \\\"{__sort}\\\"){_id,name,email,mobile},count:space_users__count(filters:{__filters})}\",\n \"$term\": \"$term\",\n \"$self\": \"$$\"\n },\n \"requestAdaptor\": \"\\n const selfData = JSON.parse(JSON.stringify(api.data.$self));\\n var filters = [];\\n var pageSize = api.data.pageSize || 10;\\n var pageNo = api.data.pageNo || 1;\\n var skip = (pageNo - 1) * pageSize;\\n var orderBy = api.data.orderBy || '';\\n var orderDir = api.data.orderDir || '';\\n var sort = orderBy + ' ' + orderDir;\\n var allowSearchFields = [\\\"name\\\"];\\n if(api.data.$term){\\n filters = [[\\\"name\\\", \\\"contains\\\", \\\"'+ api.data.$term +'\\\"]];\\n }else if(selfData.op === 'loadOptions' && selfData.value){\\n filters = [[\\\"_id\\\", \\\"=\\\", selfData.value]];\\n }\\n if(allowSearchFields){\\n allowSearchFields.forEach(function(key){\\n const keyValue = selfData[key];\\n if(keyValue){\\n filters.push([key, \\\"contains\\\", keyValue]);\\n }\\n })\\n }\\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim());\\n return api;\\n \"\n },\n \"pickerSchema\": {\n \"mode\": \"table\",\n \"name\": \"thelist\",\n \"draggable\": false,\n \"headerToolbar\": [\n \"switch-per-page\",\n \"pagination\"\n ],\n \"defaultParams\": {\n \"perPage\": 50\n },\n \"columns\": [\n {\n \"name\": \"_index\",\n \"type\": \"text\",\n \"width\": 32,\n \"placeholder\": \"\"\n },\n {\n \"name\": \"_id\",\n \"label\": \"ID\",\n \"type\": \"text\",\n \"toggled\": false\n },\n {\n \"name\": \"name\",\n \"label\": \"姓名\",\n \"sortable\": true,\n \"searchable\": true,\n \"type\": \"text\"\n },\n {\n \"name\": \"email\",\n \"label\": \"邮件\",\n \"sortable\": true,\n \"type\": \"text\",\n \"searchable\": true\n },\n {\n \"name\": \"mobile\",\n \"label\": \"手机\",\n \"type\": \"text\",\n \"sortable\": true,\n \"searchable\": true\n }\n ],\n \"syncLocation\": false,\n \"keepItemSelectionOnPageChange\": true\n },\n \"labelField\": \"name\",\n \"valueField\": \"_id\",\n \"size\": \"lg\",\n \"extractValue\": true,\n \"className\": \"m-0\",\n \"labelClassName\": \"text-left\"\n }\n}\n\nexport async function getSpaceUsersPickerSchema(name, options) {\n const uiSchema = await getUISchema(\"space_users\");\n const amisSchema = await getSpaceUsersPickerAmisSchema(uiSchema, name, options);\n return {\n uiSchema,\n amisSchema,\n };\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-08-02 11:19:09\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-08-05 11:15:42\n * @Description:\n */\n// # 日期类型: date, datetime 支持操作符: \"=\", \"<>\", \"<\", \">\", \"<=\", \">=\"\n// # 文本类型: text, textarea, html 支持操作符: \"=\", \"<>\", \"contains\", \"notcontains\", \"startswith\"\n// # 选择类型: lookup, master_detail, select 支持操作符: \"=\", \"<>\"\n// # 数值类型: currency, number 支持操作符: \"=\", \"<>\", \"<\", \">\", \"<=\", \">=\"\n// # 布尔类型: boolean 支持操作符: \"=\", \"<>\"\n// # 数组类型: checkbox, [text] 支持操作符: \"=\", \"<>\"\nimport lodash from 'lodash';\n\nconst DATE_DATETIME_BETWEEN_VALUES = [\n \"last_year\",\n \"this_year\",\n \"next_year\",\n \"last_quarter\",\n \"this_quarter\",\n \"next_quarter\",\n \"last_month\",\n \"this_month\",\n \"next_month\",\n \"last_week\",\n \"this_week\",\n \"next_week\",\n \"yestday\",\n \"today\",\n \"tomorrow\",\n \"last_7_days\",\n \"last_30_days\",\n \"last_60_days\",\n \"last_90_days\",\n \"last_120_days\",\n \"next_7_days\",\n \"next_30_days\",\n \"next_60_days\",\n \"next_90_days\",\n \"next_120_days\",\n];\n\n/**\n *\n */\n\nconst opMaps = {\n equal: \"=\",\n not_equal: \"!=\",\n less: \"<\",\n less_or_equal: \"<=\",\n greater: \">\",\n greater_or_equal: \">=\",\n between: \"between\",\n not_between: \"not_between\", // TODO 不支持待@steedos/filters 增强\n is_empty: \"is_empty\", // TODO 不支持待@steedos/filters 增强\n is_not_empty: \"is_not_empty\", // TODO 不支持待@steedos/filters 增强\n select_equals: \"=\",\n select_not_equals: \"!=\",\n select_any_in: \"in\",\n select_not_any_in: \"<>\",\n like: \"contains\",\n not_like: \"notcontains\",\n starts_with: \"startswith\",\n ends_with: \"endswith\",\n};\n\nconst isGroup = (item) => {\n return _.has(item, \"conjunction\");\n};\n\nconst conditionGroupToFilters = (group) => {\n const filters = [];\n const { conjunction, children } = group;\n if (conjunction && children) {\n children.forEach((item) => {\n if (filters.length > 0) {\n filters.push(conjunction);\n }\n if (isGroup(item)) {\n const filter = conditionGroupToFilters(item);\n if (filter && filter.length > 0) {\n filters.push(filter);\n }\n } else {\n const filter = conditionItemToFilters(item);\n if (filter) {\n filters.push(filter);\n }\n }\n });\n }\n return filters;\n};\n\nconst conditionItemToFilters = (item) => {\n const { left, op, right } = item;\n if (left && left.type === \"field\") {\n if (op) {\n if (op.startsWith(\"between:\")) {\n const array = op.split(\":\");\n return [left.field, array[0], array[1]];\n } else {\n if (right != null) {\n return [left.field, opMaps[op], right];\n }\n }\n }\n }\n};\n\n// const conditionChildrenToFilters = (children)=>{\n\n// }\nconst filterToConditionItem = (filter) => {\n if (filter.length === 3) {\n const op = lodash.findKey(opMaps, (value) => {\n return value === filter[1];\n });\n if (\n op === \"between\" &&\n lodash.includes(DATE_DATETIME_BETWEEN_VALUES, filter[2])\n ) {\n return {\n left: {\n type: \"field\",\n field: filter[0],\n },\n op: `${op}:${filter[2]}`,\n };\n } else {\n return {\n left: {\n type: \"field\",\n field: filter[0],\n },\n op: op,\n right: filter[2],\n };\n }\n } else {\n console.warn(`无效的filter:${JSON.stringify(filter)}`);\n }\n};\n\nconst filterObjectToArray = (filter) => {\n if (!lodash.isArray(filter) && lodash.isObject(filter)) {\n return [filter.field, filter.operation, filter.value];\n }\n return filter;\n};\n\nconst filtersToConditionGroup = (filters) => {\n filters = filterObjectToArray(filters);\n\n const conditions = {\n conjunction: \"and\",\n children: [],\n };\n if (!filters || filters.length == 0) {\n return conditions;\n }\n filters.forEach((filter) => {\n filter = filterObjectToArray(filter);\n if (filter === \"or\" || filter === \"and\") {\n conditions.conjunction = filter;\n } else {\n if (\n filter.length === 3 &&\n filter.indexOf(\"and\") == -1 &&\n filter.indexOf(\"or\") == -1\n ) {\n conditions.children.push(filterToConditionItem(filter));\n } else {\n conditions.children.push(filtersToConditionGroup(filter));\n }\n }\n });\n return conditions;\n};\n\nexport const conditionsToFilters = (conditions) => {\n return conditionGroupToFilters(conditions);\n};\n\nexport const filtersToConditions = (filters) => {\n return filtersToConditionGroup(filters);\n};\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-13 14:34:18\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-09-13 14:59:00\n * @Description: 加载资产包,并返回所有可用资产\n */\nimport { isString, filter, map } from 'lodash';\n\nexport const registerRemoteAssets = async (assetUrls)=>{\n if(assetUrls && assetUrls.length > 0){\n let assetUrlsArray = assetUrls;\n if(isString(assetUrlsArray)){\n assetUrlsArray = assetUrlsArray.split(',');\n }\n await Builder.registerRemoteAssets(assetUrlsArray);\n const amisComps = filter(Builder.registry['meta-components'], function(item){ return item.componentName && item.amis?.render});\n return map(amisComps, (item)=>{\n return { componentType: item.componentType, componentName: item.componentName, ...item.amis.render}\n })\n }else{\n return []\n }\n}","import { getRootUrl, getSteedosAuth } from \"./lib/steedos.client\";\n\n/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-12-17 17:03:40\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-02-22 18:19:44\n * @Description: \n */\nexport const getDefaultRenderData = ()=>{\n const steedosAuth = getSteedosAuth();\n return {\n context: {\n rootUrl: getRootUrl(),\n userId: steedosAuth.userId,\n tenantId: steedosAuth.tenantId,\n authToken: steedosAuth.authToken,\n user: steedosAuth\n },\n global: {\n userId: steedosAuth.userId,\n spaceId: steedosAuth.tenantId,\n user: steedosAuth, \n now: new Date(),\n // mode: mode //由表单提供\n }\n }\n }","import {\n lookupToAmisPicker,\n getSteedosAuth, Router\n} from \"@steedos-widgets/amis-lib\";\n//TODO Meteor.settings.public?.workflow?.hideCounterSignJudgeOptions\n\nconst HIDE_COUNTER_SIGN_JUDGE_OPTIONS = false;\n\nconst getJudgeOptions = async (instance) => {\n const { step } = instance;\n const options = [];\n if (step.step_type === \"sign\") {\n options.push({\n label: \"核准\",\n value: \"approved\",\n });\n options.push({\n label: \"驳回\",\n value: \"rejected\",\n });\n } else if (\n step.step_type === \"counterSign\" &&\n HIDE_COUNTER_SIGN_JUDGE_OPTIONS != true\n ) {\n options.push({\n label: \"核准\",\n value: \"approved\",\n });\n options.push({\n label: \"驳回\",\n value: \"rejected\",\n });\n options.push({\n label: \"已阅\",\n value: \"readed\",\n });\n }\n return options;\n};\n\nconst getJudgeInput = async (instance) => {\n const judgeOptions = await getJudgeOptions(instance);\n if (judgeOptions.length > 0 && instance.approve.type != 'cc') {\n return {\n type: \"radios\",\n label: false,\n name: \"judge\",\n value: \"approved\",\n options: judgeOptions,\n id: \"u:444dbad76e90\",\n required: true,\n \"onEvent\": {\n \"change\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"instance_approval\",\n \"args\": {\n \"value\": {\n new_judge: \"${event.data.value}\",\n next_step: undefined,\n }\n },\n \"actionType\": \"setValue\"\n },\n {\n // \"componentId\": \"u:next_step\",\n \"args\": {\n judge: \"${event.data.value}\"\n },\n \"actionType\": \"broadcast\",\n eventName: \"approve_judge_change\"\n },\n ]\n }\n }\n };\n }\n};\n\n//TODO 只有一个下一步时,默认选中,并且禁止修改.\nconst getNextStepInput = async (instance) => {\n if(instance.approve?.type == 'cc'){\n return ;\n }\n return {\n type: \"grid\",\n columns: [\n {\n body: [\n {\n type: \"tpl\",\n tpl: \"下一步\",\n inline: true,\n wrapperComponent: \"\",\n id: \"u:0a85de51480f\",\n },\n ],\n id: \"u:bf75adfb544e\",\n md: \"auto\",\n valign: \"middle\",\n },\n {\n body: [\n {\n type: \"list-select\",\n label: \"\",\n name: \"next_step\",\n id: \"u:next_step\",\n multiple: false,\n required: true,\n // selectFirst: true,\n autoFill: {\n \"new_next_step\": \"${step}\",\n \"next_users\": null\n },\n \"source\": {\n \"url\": \"${context.rootUrl}/api/workflow/v2/nextStep?judge=${new_judge}\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"method\": \"post\",\n \"messages\": {\n },\n \"requestAdaptor\": \"let { context, judge } = api.data; if(!judge){judge='approved'}\\nconst formValues = SteedosUI.getRef(api.data.$scopeId).getComponentById(\\\"instance_form\\\").getValues();\\n\\napi.data = {\\nflowVersionId: context.flowVersion._id,\\n instanceId: context._id,\\n flowId: context.flow._id,\\n step: context.step,\\n judge: judge,\\n values: formValues\\n}\\n\\n\\n return api;\",\n \"adaptor\": `\n payload.data = {\n value: payload.nextSteps.length === 1 ? payload.nextSteps[0]._id : null, \n options: _.map(payload.nextSteps, (item)=>{\n return {\n label: item.name, \n value: item._id,\n step: item\n }\n })\n };\n return payload;\n `,\n \"data\": {\n // \"&\": \"$$\",\n \"context\": \"${context}\",\n \"$scopeId\": \"${scopeId}\",\n \"judge\": \"${new_judge}\",\n }\n },\n // \"onEvent\": {\n // \"change\": {\n // \"weight\": 0,\n // \"actions\": [\n // {\n // \"componentId\": \"instance_approval\",\n // \"args\": {\n // \"value\": {\n // new_next_step: \"${event.data.value}\",\n // }\n // },\n // \"actionType\": \"setValue\"\n // },\n // // {\n // // \"args\": {\n // // next_step: \"${event.data.value}\",\n // // },\n // // \"actionType\": \"broadcast\",\n // // eventName: \"approve_next_step_change\"\n // // },\n // ]\n // }\n // }\n },\n ],\n id: \"u:4d3a884b437c\",\n },\n ],\n id: \"u:016c56efe5fd\",\n className: \"b-a b-1x m-none p-xs\",\n subFormMode: \"\",\n };\n};\n\n//TODO 只有一个处理人时,默认选中,禁止修改. 部分情况不需要显示下一步处理人\nconst getNextStepUsersInput = async (instance) => {\n if(instance.approve?.type == 'cc'){\n return ;\n }\n return {\n type: \"grid\",\n columns: [\n {\n body: [\n {\n type: \"tpl\",\n tpl: \"处理人\",\n inline: true,\n wrapperComponent: \"\",\n id: \"u:3203cc281b3c\",\n },\n ],\n id: \"u:8eece76a9e4c\",\n md: \"auto\",\n valign: \"middle\",\n },\n {\n body: [\n // TODO 处理下一步处理人默认值\n Object.assign({}, \n {\n \"type\": \"steedos-select-user\"\n },\n {\n name: \"next_users\", \n hiddenOn: \"this.new_next_step.deal_type != 'pickupAtRuntime'\",\n required: true\n }),\n {\n type: \"steedos-select-user\",\n label: \"\",\n name: \"next_users\",\n id: \"u:next_users\",\n required: true,\n hiddenOn: \"this.new_next_step.deal_type === 'pickupAtRuntime'\",\n amis: {\n multiple: \"this.new_next_step.deal_type === 'counterSign'\",\n \"source\": {\n \"url\": \"${context.rootUrl}/api/workflow/v2/nextStepUsers\",\n \"method\": \"post\",\n \"sendOn\": \"!!this.new_next_step && this.new_next_step.step_type != 'end'\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"messages\": {\n },\n \"requestAdaptor\": \"\\nconst { context, next_step, $scopeId } = api.data;\\nconst formValues = SteedosUI.getRef($scopeId).getComponentById(\\\"instance_form\\\").getValues();\\n\\napi.data = {\\n instanceId: context._id,\\n nextStepId: next_step._id,\\n values: formValues\\n}\\n\\n\\n return api;\",\n \"adaptor\": \"\\npayload.data = {value: payload.nextStepUsers.length === 1 ? payload.nextStepUsers[0].id : null, options: payload.nextStepUsers};\\nreturn payload;\",\n \"data\": {\n \"&\": \"$$\",\n \"$scopeId\": \"$scopeId\",\n \"context\": \"${context}\",\n \"next_step\": \"${new_next_step}\",\n }\n },\n \"labelField\": \"name\",\n \"valueField\": \"id\",\n }\n }\n ],\n id: \"u:81a4913c61cc\",\n },\n ],\n id: \"u:ffff15b76c89\",\n className: \"b-a b-1x p-xs m-b-none m-l-none m-r-none m-t-sm\",\n subFormMode: \"\",\n hiddenOn: \"!!!this.new_next_step || (this.new_next_step && this.new_next_step.step_type === 'end')\"\n };\n};\n\nconst getCCSubmitRequestAdaptor = async (instance) => {\n return ` \n const instanceForm = SteedosUI.getRef(api.data.$scopeId).getComponentById(\"instance_form\");\n const approveValues = SteedosUI.getRef(api.data.$scopeId).getComponentById(\"instance_approval\").getValues();\n api.data = {\n instanceId: \"${instance._id}\", \n traceId: \"${instance.trace._id}\", \n approveId: \"${instance.approve._id}\", \n description: approveValues.suggestion \n };\n return api;\n `;\n};\n\nconst getPostSubmitRequestAdaptor = async (instance) => {\n return ` const instanceForm = SteedosUI.getRef(api.data.$scopeId).getComponentById(\"instance_form\");\n const formValues = instanceForm.getValues();\n const approveValues = SteedosUI.getRef(api.data.$scopeId).getComponentById(\"instance_approval\").getValues();\n let nextUsers = approveValues.next_users;\n if(_.isString(nextUsers)){\n nextUsers = [approveValues.next_users];\n }\n const body = {Instances: [{\n _id: \"${instance._id}\",\n flow: \"${instance.flow._id}\",\n applicant: formValues.applicant,\n submitter: formValues.submitter,\n traces: [{\n _id: \"${instance.trace._id}\",\n step: \"${instance.step._id}\",\n approves: [{\n _id: \"${instance.approve._id}\",\n next_steps: [{\n step: approveValues.next_step._id,\n users: nextUsers,\n }],\n description: approveValues.suggestion,\n values: formValues\n }]\n }]\n }]};\n api.data = body;\n return api;\n `;\n};\n\nconst getPostEngineRequestAdaptor = async (instance) => {\n return ` \n const formValues = SteedosUI.getRef(api.data.$scopeId).getComponentById(\"instance_form\").getValues();\n const approveValues = SteedosUI.getRef(api.data.$scopeId).getComponentById(\"instance_approval\").getValues();\n let nextUsers = approveValues.next_users;\n if(_.isString(nextUsers)){\n nextUsers = [approveValues.next_users];\n }\n const body = {Approvals: [{\n instance: \"${instance._id}\",\n judge: approveValues.judge,\n trace: \"${instance.approve.trace}\",\n _id: \"${instance.approve._id}\",\n next_steps: [{\n step: approveValues.next_step._id,\n users: nextUsers,\n }],\n description: approveValues.suggestion,\n values: formValues\n }]};\n api.data = body;\n return api;\n `;\n};\n\n/**\n * 1 TODO 处理传阅提交\n * 2 草稿状态提交. TODO 申请单的表单、流程升级\n * 3 待审核提交\n * @param instance\n * @returns\n */\nconst getSubmitActions = async (instance) => {\n // console.log(`getSubmitActions instance====`, instance)\n let api = \"\";\n let requestAdaptor = \"\";\n if(instance.approve?.type == \"cc\"){\n api = \"/api/workflow/v2/cc_submit\";\n requestAdaptor = await getCCSubmitRequestAdaptor(instance);\n }else{\n if (instance.state === \"draft\") {\n api = \"/api/workflow/submit\";\n requestAdaptor = await getPostSubmitRequestAdaptor(instance);\n } else if (instance.state === \"pending\") {\n api = \"/api/workflow/engine\";\n requestAdaptor = await getPostEngineRequestAdaptor(instance);\n } else {\n return null; //TODO 考虑异常情况?\n }\n }\n\n return [\n // 校验表单\n {\n \"componentId\": \"\",\n \"args\": {},\n \"actionType\": \"custom\",\n \"script\": `\n // console.log(\"======getSubmitActions\");\n const form = event.context.scoped.getComponentById(\"instance_form\");\n return form.validate().then((instanceFormValidate)=>{\n event.setData({...event.data, instanceFormValidate})\n })\n `\n },\n // 校验审批表单\n {\n \"componentId\": \"\",\n \"args\": {},\n \"actionType\": \"custom\",\n \"script\": `\n const form = event.context.scoped.getComponentById(\"instance_approval\");\n return form.validate().then((approvalFormValidate)=>{\n event.setData({...event.data, approvalFormValidate})\n })\n `,\n expression: \"${event.data.instanceFormValidate}\"\n },\n {\n componentId: \"\",\n args: {\n api: {\n url: `\\${context.rootUrl}${api}`,\n method: \"post\",\n dataType: \"json\",\n data: {\n \"&\": \"$$\",\n \"$scopeId\": \"${$scopeId}\"\n },\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\",\n },\n requestAdaptor: requestAdaptor,\n },\n messages: {\n success: \"提交成功!\",\n },\n },\n actionType: \"ajax\",\n expression: \"${event.data.instanceFormValidate && event.data.approvalFormValidate}\"\n },\n {\n \"componentId\": \"\",\n \"args\": {\n \"blank\": false,\n \"url\": Router.getObjectListViewPath({appId: \"${appId}\", objectName: \"${objectName}\", listViewName: \"${side_listview_id}\"})\n },\n \"actionType\": \"url\",\n expression: \"${event.data.instanceFormValidate && event.data.approvalFormValidate}\"\n },\n {\n \"actionType\": \"closeDialog\",\n expression: \"${event.data.instanceFormValidate && event.data.approvalFormValidate}\"\n }\n ];\n};\n\nexport const getApprovalDrawerSchema = async (instance) => {\n // console.log(\"=============getApprovalDrawerSchema=============\")\n return {\n type: \"drawer\",\n overlay: true,\n resizable: false,\n closeOnEsc: true,\n closeOnOutside: true,\n size: \"sm\",\n title: `${instance.step.name}`,\n className: \"approval-drawer absolute\",\n headerClassName: 'p-2',\n bodyClassName: 'p-2',\n footerClassName: 'p-2 pt-0',\n drawerContainer: ()=>{\n return window.$(\".antd-Page-content\",window.$(\".steedos-instance-wrapper\"))[0];\n },\n body: [\n {\n type: \"form\",\n debug: false,\n id: \"instance_approval\",\n resetAfterSubmit: true,\n clearPersistDataAfterSubmit: true,\n persistData: `workflow_approve_form_${instance.approve._id}`,\n body: [\n {\n type: 'hidden',\n name: 'new_next_step'\n },\n await getJudgeInput(instance),\n {\n type: \"textarea\",\n label: false,\n name: \"suggestion\",\n id: \"u:cd344f708ddc\",\n minRows: 3,\n maxRows: 20,\n placeholder: \"请填写意见\",\n requiredOn: \"${judge === 'rejected'}\"\n },\n await getNextStepInput(instance),\n await getNextStepUsersInput(instance),\n ],\n onEvent: {\n \"approve_judge_change\": {\n \"actions\": [\n {\n \"actionType\": \"reload\",\n \"componentId\": \"u:next_step\",\n \"args\": {\n }\n }\n ]\n },\n // \"approve_next_step_change\": {\n // \"actions\": [\n // {\n // \"actionType\": \"reload\",\n // \"componentId\": \"u:nex_users\",\n // \"args\": {\n // }\n // }\n // ]\n // },\n validateError: {\n weight: 0,\n actions: [\n {\n \"componentId\": \"\",\n \"args\": {\n \"msgType\": \"info\",\n \"position\": \"top-right\",\n \"closeButton\": true,\n \"showIcon\": true,\n \"title\": \"提交失败\",\n \"msg\": \"请填写必填字段\"\n },\n \"actionType\": \"toast\"\n }\n ],\n }\n },\n \n },\n ],\n id: \"u:approve_8861156e0b23\",\n position: \"bottom\",\n actions: [\n {\n type: \"button\",\n label: \"提交\",\n onEvent: {\n click: {\n actions: await getSubmitActions(instance),\n },\n },\n id: \"u:f6f8c3933f6c\",\n level: \"primary\",\n },\n {\n type: \"button\",\n label: \"取消\",\n onEvent: {\n click: {\n actions: [\n {\n componentId: \"\",\n args: {},\n actionType: \"closeDrawer\",\n },\n ],\n },\n },\n id: \"u:127ff1da7283\",\n },\n ]\n };\n};\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-16 17:27:24\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-02-08 10:13:06\n * @Description: \n */\nimport { getSteedosAuth } from '@steedos-widgets/amis-lib'\n// TODO attachments\nexport const getAttachments = async (instance)=>{\n\n return {\n \"type\": \"panel\",\n className: \"border-none bg-none shadow-none\",\n headerClassName: \"p-0 border-none mb-1\",\n bodyClassName: \"p-0\",\n \"title\": [\n await getAttachmentUploadInput(instance)\n ],\n \"body\": [\n {\n type: 'service',\n id: 'u:attachmentsService',\n api: {\n \"method\": \"post\",\n \"url\": \"${context.rootUrl}/graphql\",\n dataType: \"json\",\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\",\n },\n requestAdaptor: `\n api.data.query = 'query{attachments:cfs_instances_filerecord(filters: [[\"metadata.instance\", \"=\", \"${instance._id}\"], \"metadata.current\", \"=\", true]){ _id,original,metadata}}';\n return api;\n `\n },\n body: [\n {\n \"type\": \"list\",\n \"source\": \"${attachments}\",\n title: false,\n \"listItem\": {\n \"body\": [\n {\n type: 'tpl',\n inline: true,\n tpl: `<a href='\\${context.rootUrl}/api/files/instances/\\${_id}?download=true' target='_blank'>\\${original.name}</a>`\n }\n ],\n \"actions\": [\n {\n \"icon\": \"fa fa-eye\",\n \"type\": \"button\",\n \"id\": \"u:ef52fa8940a8\"\n }\n ],\n \"id\": \"u:550b3fdc8788\"\n },\n \"id\": \"u:f538be693fad\"\n }\n ]\n }\n ]\n }\n}\n\nexport const getAttachmentUploadInput = async (instance)=>{\n if(!instance.approve){\n return {\n type: 'tpl',\n tpl: \"附件\"\n }\n }\n const auth = getSteedosAuth();\n return {\n \"type\": \"form\",\n \"title\": \"表单\",\n \"body\": [\n {\n \"type\": \"input-file\",\n labelClassName: \"antd-List-heading\",\n className: \"flex items-center\",\n \"label\": \"附件\",\n mode:\"inline\",\n \"name\": \"file\",\n \"id\": \"u:a58d02614e04\",\n \"btnLabel\": \"上传\",\n \"btnClassName\": \"m-0\", \n \"multiple\": true,\n \"maxLength\": 10,\n \"submitType\": \"asUpload\",\n \"uploadType\": \"fileReceptor\",\n \"proxy\": false,\n \"drag\": false,\n \"autoUpload\": true,\n \"useChunk\": false,\n \"joinValues\": false,\n \"extractValue\": false,\n \"valueField\": \"version_id\",\n \"receiver\": {\n \"url\": \"${context.rootUrl}/api/v4/instances/s3\",\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"method\": \"post\",\n \"messages\": {},\n \"dataType\": \"form-data\",\n \"requestAdaptor\": `\n api.data.append('space', '${instance.space}');\n api.data.append('instance', '${instance._id}');\n api.data.append('approve', '${instance.approve?._id}');\n api.data.append('owner', '${auth.userId}');\n api.data.append('owner_name', '${auth.name}');\n return api;\n `\n },\n \"onEvent\": {\n \"success\": {\n \"weight\": 0,\n \"actions\": [\n {\n \"componentId\": \"u:5f901c0b917b\",\n \"args\": {},\n \"actionType\": \"clear\"\n },\n {\n \"componentId\": \"\",\n \"args\": {\n \"msgType\": \"success\",\n \"position\": \"top-right\",\n \"closeButton\": true,\n \"showIcon\": true,\n \"msg\": \"上传成功\"\n },\n \"actionType\": \"toast\"\n },\n {\n \"componentId\": \"u:attachmentsService\",\n \"args\": {},\n \"actionType\": \"reload\",\n }\n ]\n }\n }\n }\n ],\n \"id\": \"u:5f901c0b917b\",\n \"wrapWithPanel\": false\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-16 17:26:12\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-02-09 09:48:18\n * @Description: \n */\nimport { map, isEmpty } from 'lodash'\nimport { getSteedosAuth } from '@steedos-widgets/amis-lib';\nexport const getRelatedRecords = async (instance)=>{\n if(!instance.record_ids || isEmpty(instance.record_ids)){\n return ;\n }\n return map(instance.record_ids, (item)=>{\n return {\n type: 'tpl',\n tpl: `<a href='/app/-/${item.o}/view/${item.ids[0]}' target='_blank'>相关台账信息</a>`\n }\n })\n}\n\n// TODO delete button\nexport const getRelatedInstances = async (instance)=>{\n // if(!instance.related_instances || isEmpty(instance.related_instances)){\n // return ;\n // }\n const spaceId = getSteedosAuth().tenantId;\n \n return {\n \"type\": \"list\",\n \"name\": \"relatedInstances\",\n \"source\": \"${related_instances}\",\n title: \"相关文件\",\n \"listItem\": {\n \"body\": [\n {\n type: 'tpl',\n inline: true,\n tpl: `<a href='\\${context.rootUrl}/workflow/space/${spaceId}/view/readonly/\\${_id}' target='_blank'>\\${name}</a>`\n }\n ],\n \"actions\": [\n {\n \"icon\": \"fa fa-eye\",\n \"type\": \"button\",\n \"id\": \"u:ef52fa8940a8\"\n }\n ],\n \"id\": \"u:550b3fdc8788\"\n },\n \"id\": \"related_instances\"\n }\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-24 16:48:28\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-09-27 16:45:58\n * @Description: \n */\n\nimport _, { each } from 'lodash';\n\nexport const getInstanceApprovalHistory = async ()=>{\n return {\n \"type\": \"table\",\n \"headerClassName\": \"hidden\",\n \"title\": \"签批历程\",\n \"source\": \"${historyApproves}\",\n \"className\": \"m-b-none instance-approve-history\",\n \"columnsTogglable\": false,\n \"footable\": {\n \"expand\": \"all\"\n },\n \"columns\": [\n {\n \"name\": \"name\",\n \"label\": \"name\"\n },\n {\n \"name\": \"user_name\",\n \"label\": \"user_name\",\n \"type\": \"tpl\",\n \"tpl\": \"<div><div>${opinion}</div>${user_name}</div>\"\n },\n {\n \"name\": \"finish_date\",\n \"label\": \"finish_date\",\n \"classNameExpr\": \"<%= data.finish_date == '已读' ? 'text-[blue]' : (data.finish_date == '未处理' ? 'text-[red]' : '') %>\"\n // \"type\": \"datetime\",\n // \"format\": \"YYYY-MM-DD HH:mm\"\n },\n {\n \"name\": \"judge\",\n \"label\": \"judge\",\n \"classNameExpr\": \"<%= data.judge == '已核准' ? 'text-green-600' : (data.judge == '已驳回' ? 'text-[red]' : '') %>\"\n }\n ]\n }\n}\n\n\nconst getTrs = (instance)=>{\n const { traces } = instance;\n _.each(traces, (trace)=>{\n console.log(`trace`, trace)\n })\n}\n\nexport const getINstanceApproveHistory2 = async (instance)=>{\n \n return {\n type: \"table-view\",\n className: \"instance-history\",\n trs: await getTrs(instance),\n id: \"u:instance-history\",\n };\n}","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-07 16:20:45\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-03-23 16:49:44\n * @Description:\n */\nimport {\n lookupToAmis,\n getSteedosAuth,\n} from \"@steedos-widgets/amis-lib\";\n\nimport { each, startsWith, includes } from \"lodash\";\n\nimport { getApprovalDrawerSchema } from \"./approve\";\n\nimport { getAttachments } from './attachment';\n\nimport { getRelatedRecords, getRelatedInstances } from './related';\n\nimport { getInstanceApprovalHistory } from './history';\n\n\nconst getSelectOptions = (field) => {\n const options = [];\n each(field.options.split(\"\\n\"), (item) => {\n var foo = item.split(\":\");\n if (foo.length == 2) {\n options.push({ label: foo[0], value: foo[1] });\n } else {\n options.push({ label: item, value: item });\n }\n });\n return options;\n};\n\nconst isOpinionField = (field)=>{\n const field_formula = field.formula;\n return (field_formula?.indexOf(\"{traces.\") > -1 || field_formula?.indexOf(\"{signature.traces.\") > -1 || field_formula?.indexOf(\"{yijianlan:\") > -1 || field_formula?.indexOf(\"{\\\"yijianlan\\\":\") > -1 || field_formula?.indexOf(\"{'yijianlan':\") > -1)\n}\n\nconst getFieldEditTpl = async (field, label)=>{\n const tpl = {\n label: label === true ? field.name : false,\n name: field.code,\n mode: \"horizontal\",\n className: \"m-none p-none form-control\",\n disabled: field.permission !== \"editable\",\n required: field.is_required\n };\n if(isOpinionField(field)){\n tpl.type = 'input-group';\n tpl.body = [\n {\n \"type\": \"textarea\",\n \"inputClassName\": \"b-r-none p-r-none\",\n \"name\": \"input-group\",\n \"id\": `yijian-${field.code}`,\n \"minRows\": 3,\n \"maxRows\": 20,\n \"mode\": \"normal\",\n \"size\": \"full\"\n },\n {\n \"type\": \"button\",\n \"label\": \"签批\",\n \"level\": \"link\",\n \"id\": \"u:2592111d236d\",\n \"block\": false,\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"dialog\",\n \"dialog\": {\n \"type\": \"dialog\",\n \"title\": `${field.name || field.code}`,\n \"body\": [\n {\n \"type\": \"form\",\n \"title\": \"表单\",\n \"body\": [\n {\n \"label\": \"\",\n \"type\": \"textarea\",\n \"name\": \"yijian\",\n \"id\": \"u:1d5a60623000\",\n \"minRows\": 6,\n \"maxRows\": 20,\n \"mode\": \"normal\",\n \"placeholder\": \"请填写意见\"\n },\n {\n \"type\": \"grid\",\n \"columns\": [\n {\n \"body\": [\n {\n \"type\": \"button\",\n \"label\": \"已阅\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": \"u:1d5a60623000\",\n \"args\": {\n \"valueInput\": \"已阅\",\n \"value\": \"已阅\"\n },\n \"actionType\": \"setValue\"\n }\n ]\n }\n },\n \"id\": \"u:13498f8d2882\",\n \"level\": \"link\",\n \"className\": \"m-r\"\n },\n {\n \"type\": \"button\",\n \"label\": \"已办\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": \"u:1d5a60623000\",\n \"args\": {\n \"valueInput\": \"已办\",\n \"value\": \"已办\"\n },\n \"actionType\": \"setValue\"\n }\n ]\n }\n },\n \"id\": \"u:cfa2e3c54a21\",\n \"level\": \"link\",\n \"className\": \"m-r\"\n },\n {\n \"type\": \"button\",\n \"label\": \"同意\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": \"u:1d5a60623000\",\n \"args\": {\n \"valueInput\": \"同意\",\n \"value\": \"同意\"\n },\n \"actionType\": \"setValue\"\n }\n ]\n }\n },\n \"id\": \"u:06e0037dcd23\",\n \"level\": \"link\",\n \"className\": \"m-r\"\n },\n {\n \"type\": \"button\",\n \"label\": \"其他常用意见\",\n \"onEvent\": {\n \"click\": {\n \"actions\": []\n }\n },\n \"id\": \"u:3a781bc550a2\",\n \"level\": \"link\",\n \"className\": \"m-r\"\n }\n ],\n \"id\": \"u:3def7a5b7cd5\"\n }\n ],\n \"id\": \"u:ecbefa51b638\"\n }\n ],\n \"id\": \"u:dd32ae67b5c7\"\n }\n ],\n \"id\": \"u:a5d06d3a61b9\",\n \"closeOnEsc\": false,\n \"closeOnOutside\": false,\n \"showCloseButton\": true,\n \"actions\": [\n {\n \"type\": \"button\",\n \"label\": \"确认\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": `yijian-${field.code}`,\n \"args\": {\n \"valueInput\": \"${yijian}\",\n \"value\": \"${yijian}\"\n },\n \"actionType\": \"setValue\"\n },\n {\n \"componentId\": \"\",\n \"args\": {},\n \"actionType\": \"closeDialog\"\n }\n ]\n }\n },\n \"id\": \"u:87e22efe707a\",\n \"level\": \"primary\"\n },\n {\n \"type\": \"button\",\n \"label\": \"取消\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"componentId\": \"\",\n \"args\": {},\n \"actionType\": \"closeDialog\"\n }\n ]\n }\n },\n \"id\": \"u:d0e6550a848e\"\n }\n ]\n }\n }\n ],\n \"weight\": 0\n }\n },\n \"className\": \"instance-sign-text-btn\",\n }\n ]\n }else{\n switch (field.type) {\n case \"input\":\n if (field.is_textarea) {\n tpl.type = \"textarea\";\n } else {\n tpl.type = \"input-text\";\n }\n break;\n case \"number\":\n tpl.type = \"input-number\";\n break;\n case \"date\":\n tpl.type = \"input-date\";\n tpl.inputFormat = \"YYYY-MM-DD\";\n tpl.format = 'YYYY-MM-DDT00:00:00.000[Z]';\n break;\n case \"dateTime\":\n tpl.type = \"input-datetime\";\n tpl.inputFormat = \"YYYY-MM-DD HH:mm\";\n tpl.format = 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n break;\n case \"checkbox\":\n tpl.type = \"checkbox\";\n break;\n case \"email\":\n tpl.type = \"input-email\";\n tpl.validations = {\n isEmail: true,\n };\n break;\n case \"url\":\n tpl.type = \"input-url\";\n tpl.validations = {\n isUrl: true,\n };\n break;\n case \"password\":\n tpl.type = \"input-password\";\n tpl.showCounter = true;\n break;\n case \"select\":\n tpl.type = \"select\";\n tpl.options = getSelectOptions(field);\n break;\n case \"user\":\n const useTpl = await lookupToAmis(\n {\n name: field.code,\n label: field.name,\n reference_to: \"space_users\",\n reference_to_field: 'user',\n multiple: field.is_multiselect,\n },\n false,\n {}\n );\n Object.assign(tpl, useTpl);\n break;\n case \"group\":\n const orgTpl = await lookupToAmis(\n {\n name: field.code,\n label: field.name,\n reference_to: \"organizations\",\n multiple: field.is_multiselect,\n },\n false,\n {}\n );\n Object.assign(tpl, orgTpl);\n break;\n case \"radio\":\n tpl.type = \"radios\";\n tpl.options = getSelectOptions(field);\n break;\n case \"multiSelect\":\n tpl.type = \"checkboxes\";\n tpl.options = getSelectOptions(field);\n break;\n case \"odata\":\n var labelField = field.formula.substr(1, field.formula.length - 2);\n labelField = labelField.substr(labelField.indexOf(\".\") + 1);\n tpl.type = \"select\";\n tpl.multiple = field.is_multiselect;\n // tpl.labelField = labelField;\n // tpl.valueField = \"_value\";\n tpl.source = {\n url: startsWith(field.url, \"http\")\n ? field.url\n : `\\${context.rootUrl}${field.url}`,\n method: \"get\",\n dataType: \"json\",\n headers: {\n Authorization: \"Bearer ${context.tenantId},${context.authToken}\",\n },\n adaptor:`\n payload.data = {\n options: _.map(payload.value, (item)=>{\n const value = item;\n item[\"@label\"] = item[\"${labelField}\"]\n delete item['@odata.editLink'];\n delete item['@odata.etag'];\n delete item['@odata.id'];\n return {\n label: item[\"@label\"],\n value: value\n }\n })\n }\n return payload;\n `\n };\n break;\n case \"html\":\n if (tpl.disabled) {\n tpl.type = 'html';\n } else {\n tpl.type = \"input-rich-text\";\n }\n break;\n case \"table\":\n tpl.type = \"input-table\"; //TODO\n tpl.addable = field.permission === \"editable\";\n tpl.editable = tpl.addable;\n tpl.copyable = tpl.addable;\n tpl.removable = tpl.addable;\n tpl.columns = [];\n for (const sField of field.fields) {\n if (sField.type != \"hidden\") {\n sField.permission = field.permission\n const column = await getTdInputTpl(sField, true);\n tpl.columns.push(column);\n }\n }\n break;\n case \"section\":\n tpl.type = \"input-text\";\n break;\n default:\n break;\n }\n }\n // console.log('getFieldEditTpl ', label, tpl)\n return tpl;\n};\n\nconst getFieldReadonlyTpl = async (field, label)=>{\n // console.log(`getFieldReadonlyTpl`, label, field)\n const tpl = {\n label: label === true ? field.name : false,\n name: field.code,\n mode: \"horizontal\",\n className: \"m-none p-none form-control\",\n };\n if(includes(['text'], field.type)){\n tpl.type = `static-${field.type}`;\n }else if(field.type === 'select'){\n const options = getSelectOptions(field);\n const map = {};\n each(options , (item)=>{\n map[item.value] = item.label;\n })\n tpl.type = 'static';\n tpl.tpl = `<% var options = ${JSON.stringify(map)}; return (options && options[data.${field.code}]) || ''%>`\n }else if(field.type === 'odata'){\n tpl.type = 'static';\n tpl.tpl = `<div>\\${${field.code}['@label']}</div>`\n }else if(field.type === 'checkbox'){\n tpl.type = 'static';\n tpl.tpl = `\\${${field.code} ? '是': '否'}`\n }else if(field.type === 'email'){\n tpl.type = 'static'\n tpl.tpl = `<a href=\"mailto:\\${${field.code}}\">\\${${field.code}}</a>`\n }else if(field.type === 'url'){\n tpl.type = 'static'\n tpl.tpl = `<a href=\"\\${${field.code}}\" target=\"_blank\">\\${${field.code}}</a>`\n }else if(field.type === 'password'){\n tpl.type = 'static'\n tpl.tpl = `******`\n }else if(field.type === 'date'){\n tpl.type = 'static'\n // tpl.format = 'YYYY-MM-DD HH:mm'\n tpl.tpl = `<%=data.${field.code} ? date(new Date(data.${field.code}), 'YYYY-MM-DD') : '' %>`\n }else if(field.type === 'dateTime'){\n tpl.type = 'static'\n // tpl.format = 'YYYY-MM-DD HH:mm'\n tpl.tpl = `<%=data.${field.code} ? date(new Date(data.${field.code}), 'YYYY-MM-DD HH:mm') : '' %>`\n }else if(field.type === 'user'){\n tpl.type = 'static'\n // tpl.format = 'YYYY-MM-DD HH:mm'\n if(field.is_multiselect){\n tpl.tpl = `\\${_.map(${field.code}, 'name')}`\n }else{\n tpl.tpl = `\\${${field.code} && ${field.code}.name}`\n }\n }else if(field.type === 'group'){\n tpl.type = 'static'\n // tpl.format = 'YYYY-MM-DD HH:mm'\n tpl.tpl = `\\${${field.code}.name}`\n }else if(field.type === 'table'){\n tpl.type = \"input-table\"; //TODO\n tpl.addable = field.permission === \"editable\";\n tpl.editable = tpl.addable;\n tpl.removable = tpl.addable;\n tpl.copyable = tpl.addable;\n tpl.columns = [];\n for (const sField of field.fields) {\n if (sField.type != \"hidden\") {\n const column = await getTdInputTpl(sField, true);\n tpl.columns.push(column);\n }\n }\n }else if(field.type === 'html'){\n tpl.type = 'tpl';\n }\n else{\n tpl.type = 'static';\n }\n return tpl;\n};\n\n/**\n * TODO 先将申请单上的字段转化为 steedos field 类型, 只读、编辑 使用 steedos field tpl\n * @param {*} field \n * @param {*} label \n * @returns \n */\nconst getTdInputTpl = async (field, label) => {\n const edit = field.permission === \"editable\";\n if(edit){\n return await getFieldEditTpl(field, label)\n }else{\n return await getFieldReadonlyTpl(field, label)\n }\n};\n\nconst getTdField = async (field, fieldsCount) => {\n return {\n background: field.permission !== \"editable\" ? \"#FFFFFF\" : \"rgba(255,255,0,.1)\",\n colspan: field.type === \"table\" ? 4 : 3 - (fieldsCount - 1) * 2,\n align: \"left\",\n className: \"td-field\",\n width: \"32%\",\n body: [await getTdInputTpl(field)],\n style: {\n marginTop: \"0\",\n paddingTop: \"0\",\n paddingRight: \"0\",\n paddingBottom: \"0\",\n paddingLeft: \"0\",\n marginRight: \"0\",\n marginBottom: \"0\",\n marginLeft: \"0\",\n borderLeftColor: \"#000000\",\n borderTopColor: \"#000000\",\n borderRightColor: \"#000000\",\n borderBottomColor: \"#000000\",\n },\n // \"id\": \"u:9b001b7ff92d\"\n };\n};\n\nconst getTdTitle = (field) => {\n return {\n className: \"td-title\",\n align: field.type != \"section\" ? \"center\" : \"left\",\n width: field.type != \"section\" ? \"16%\" : \"\",\n colspan: field.type == \"section\" ? 4 : \"\",\n background: \"#FFFFFF\",\n body: [\n {\n type: \"tpl\",\n tpl: `<div>${field.name || field.code} ${field.is_required ? '<span class=\"antd-Form-star\">*</span>' : ''}</div>`,\n },\n ],\n // \"id\": \"u:9b001b7ff92d\",\n style: {\n borderLeftColor: \"#000000\",\n borderTopColor: \"#000000\",\n borderRightColor: \"#000000\",\n borderBottomColor: \"#000000\",\n },\n };\n};\n\nconst getTds = async (tdFields) => {\n const tds = [];\n for (const field of tdFields) {\n if (field.type != \"table\") {\n tds.push(getTdTitle(field));\n }\n if (field.type != \"section\") {\n tds.push(await getTdField(field, tdFields.length));\n }\n }\n return tds;\n};\n\nconst getFormTrs = async (instance) => {\n const trsSchema = [];\n const trs = [];\n let tdFields = [];\n let fields = [];\n each(instance.fields, (field) => {\n fields.push(field);\n if (field.type === \"section\" && field.fields) {\n fields = fields.concat(field.fields);\n }\n });\n each(fields, (field, index) => {\n if (field.is_wide) {\n if (tdFields.length != 0) {\n trs.push(tdFields);\n }\n if (field.type == \"table\") {\n trs.push([Object.assign({}, field, { type: \"section\" })]);\n }\n tdFields = [];\n tdFields.push(field);\n trs.push(tdFields);\n tdFields = [];\n } else {\n tdFields.push(field);\n if (tdFields.length == 2 || index === fields.length - 1) {\n trs.push(tdFields);\n tdFields = [];\n }\n }\n });\n for (const tdFields of trs) {\n trsSchema.push({\n background: \"#F7F7F7\",\n tds: await getTds(tdFields),\n });\n }\n return trsSchema;\n};\n\nconst getFormTableView = async (instance) => {\n const formSchema = {\n type: \"table-view\",\n className: \"instance-form-view\",\n trs: await getFormTrs(instance),\n id: \"u:047f3669468b\",\n };\n return formSchema;\n};\n\nconst getApplicantTableView = async (instance) => {\n let applicantInput = null;\n if(instance.state === 'draft'){\n applicantInput = Object.assign({name: \"applicant\", value: getSteedosAuth().userId, disabled: instance.box !== 'draft'}, await lookupToAmis(\n {\n name: \"applicant\",\n label: false,\n reference_to: \"space_users\",\n reference_to_field: 'user',\n multiple: false\n },\n false,\n {}\n ));\n }else{\n applicantInput = {\n label: false,\n mode: \"horizontal\",\n className: \"m-none p-none\",\n disabled: true,\n type: \"tpl\",\n tpl: '<div>${applicant_name}</div>',\n id: \"u:2016b04355f4\",\n }\n }\n\n return {\n type: \"table-view\",\n className: \"instance-applicant-view\",\n trs: [\n {\n background: \"#FFFFFF\",\n tds: [\n {\n className: \"td-title\",\n background: \"#FFFFFF\",\n align: \"left\",\n width: \"16%\",\n colspan: \"\",\n body: [\n {\n type: \"tpl\",\n tpl: \"<div>提交人</div>\",\n id: \"u:ee62634201bf\",\n },\n ],\n id: \"u:6c24c1bb99c9\",\n style: {\n padding: \"none\",\n },\n },\n {\n background: \"#FFFFFF\",\n colspan: 1,\n align: \"left\",\n className: \"td-field\",\n width: \"32%\",\n body: [\n applicantInput\n ],\n id: \"u:45d65d91905c\",\n },\n {\n className: \"td-title\",\n background: \"#FFFFFF\",\n align: \"left\",\n width: \"16%\",\n colspan: \"\",\n body: [\n {\n type: \"tpl\",\n tpl: \"<div>提交日期</div>\",\n id: \"u:6d0a7763d527\",\n },\n ],\n id: \"u:c8b8214ac931\",\n style: {\n padding: \"none\",\n },\n },\n {\n background: \"#FFFFFF\",\n colspan: 1,\n align: \"left\",\n className: \"td-field\",\n width: \"32%\",\n body: [\n {\n label: false,\n mode: \"horizontal\",\n className: \"m-none p-none\",\n disabled: true,\n type: \"tpl\",\n inputFormat: \"YYYY-MM-DD\",\n valueFormat: \"YYYY-MM-DDT00:00:00.000[Z]\",\n tpl: '<div>${submit_date}</div>',\n id: \"u:2016b04355f4\",\n },\n ],\n id: \"u:81b07d82a5e4\",\n },\n ],\n },\n ],\n id: \"u:047f3669468b\",\n style: {\n borderLeftStyle: \"none\",\n borderTopStyle: \"none\",\n borderRightStyle: \"none\",\n borderBottomStyle: \"none\",\n },\n };\n};\n\nconst getApproveButton = async (instance)=>{\n if(!instance.approve || ( instance.box != 'inbox' && instance.box != 'draft')){\n return null;\n }\n return {\n type: \"button\",\n label: \"签批\",\n onEvent: {\n click: {\n actions: [\n {\n componentId: \"\",\n args: {},\n actionType: \"drawer\",\n drawer: await getApprovalDrawerSchema(instance),\n },\n ],\n },\n },\n id: \"steedos-approve-button\",\n level: \"primary\",\n className:\n \"approve-button w-14 h-14 rounded-full fixed bottom-4 right-4 shadow-lg text-white text-base text-center font-semibold bg-blue-500 p-0\",\n }\n}\n\nexport const getFlowFormSchema = async (instance, box) => {\n return {\n type: \"page\",\n name: \"instancePage\",\n className: \"steedos-amis-instance-view\",\n bodyClassName: \"overflow-y-auto h-full\",\n \"title\": {\n \"type\": \"steedos-record-detail-header\",\n \"label\": \"标题面板\",\n \"objectApiName\": \"instances\",\n \"recordId\": instance._id,\n \"id\": \"u:e6b2adbe0e21\",\n \"showRecordTitle\": false,\n \"className\": \"p-0 m-0 p0 m0\"\n },\n \"css\": {\n \".instance-approve-history .antd-Table-table thead\": {\n \"display\": \"none\"\n },\n \".instance-approve-history .antd-Table-heading\": {\n \"font-size\": \"14px\",\n \"font-weight\": \"500\",\n \"padding-left\": \"0px\"\n },\n \".antd-List-heading\": {\n \"font-size\": \"14px\",\n \"font-weight\": \"500\"\n }\n },\n body: [\n await getAttachments(instance),\n await getRelatedInstances(instance),\n await getRelatedRecords(instance),\n {\n type: \"form\",\n debug: false,\n wrapWithPanel: false,\n resetAfterSubmit: true,\n body: [\n {\n type: \"tpl\",\n id: \"u:f5bb0ad602a6\",\n tpl: `<div class=\"instance-name\">${instance.title}</div>`,\n inline: true,\n wrapperComponent: \"\",\n style: {\n fontFamily: \"\",\n fontSize: 12,\n textAlign: \"center\",\n },\n },\n await getFormTableView(instance),\n await getApplicantTableView(instance),\n \n ],\n id: \"instance_form\",\n onEvent: {\n validateError: {\n weight: 0,\n actions: [\n {\n \"componentId\": \"\",\n \"args\": {\n \"msgType\": \"info\",\n \"position\": \"top-right\",\n \"closeButton\": true,\n \"showIcon\": true,\n \"title\": \"提交失败\",\n \"msg\": \"请填写必填字段\"\n },\n \"actionType\": \"toast\"\n }\n ],\n }\n }\n },\n await getInstanceApprovalHistory(),\n await getApproveButton(instance)\n ],\n id: \"u:63849ea39e12\",\n messages: {},\n pullRefresh: {},\n regions: [\n \"body\",\n \"header\"\n ],\n onEvent: {\n \"@data.@instanceDetail.changed\": {\n actions: [\n {\n actionType: \"reload\"\n }\n ]\n }\n // inited: {\n // weight: 0,\n // actions: [\n // // {\n // // componentId: \"steedos-approve-button\",\n // // actionType: \"click\",\n // // },\n // // {\n // // \"componentId\": \"\",\n // // \"args\": {},\n // // \"actionType\": \"drawer\",\n // // \"drawer\": await getApprovalDrawerSchema()\n // // }\n // ],\n // }\n },\n initApi:{\n \"url\": \"${context.rootUrl}/graphql\",\n \"method\": \"post\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n },\n \"messages\": {\n },\n \"requestAdaptor\": `\n const { context } = api.data;\n api.data = {\n query: \\`\n {\n instance: instances__findOne(id:\"${instance._id}\"){\n related_instances: related_instances__expand{\n _id,\n name\n }\n }\n }\n \\`\n }\n return api;\n `,\n \"adaptor\": `\n payload.data = {\n related_instances: payload.data.instance.related_instances\n };\n return payload;\n `,\n \"data\": {\n // \"&\": \"$$\",\n \"context\": \"${context}\",\n \"judge\": \"${new_judge}\",\n }\n },\n initFetch: true\n };\n};\n","/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-10-08 16:26:26\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2022-10-08 16:28:42\n * @Description: \n */\n\nconst isOpinionField = (field_formula)=>{\n return (field_formula?.indexOf(\"{traces.\") > -1 || field_formula?.indexOf(\"{signature.traces.\") > -1 || field_formula?.indexOf(\"{yijianlan:\") > -1 || field_formula?.indexOf(\"{\\\"yijianlan\\\":\") > -1 || field_formula?.indexOf(\"{'yijianlan':\") > -1)\n}\n\nexport const getOpinionFieldStepsName = (field, top_keywords) => {\n const field_formula = field.formula;\n var foo1, opinionFields;\n opinionFields = new Array();\n if (isOpinionField(field_formula)) {\n if (field_formula) {\n foo1 = field_formula.split(\";\");\n foo1.forEach(function(foo) {\n var json_formula, s1, sf, _ref, _ref1;\n json_formula = {};\n try {\n json_formula = eval(\"(\" + foo + \")\");\n } catch (_error) {\n json_formula = {};\n }\n if (json_formula != null ? json_formula.yijianlan : void 0) {\n sf = {};\n sf.stepName = json_formula.yijianlan.step;\n sf.image_sign = json_formula.yijianlan.image_sign || false;\n sf.only_cc_opinion = json_formula.yijianlan.only_cc || false;\n sf.default_description = json_formula.yijianlan[\"default\"];\n sf.only_handler = json_formula.yijianlan.only_handler;\n sf.top_keywords = json_formula.yijianlan.top_keywords || top_keywords;\n return opinionFields.push(sf);\n } else if ((field_formula != null ? field_formula.indexOf(\"{traces.\") : void 0) > -1 || (field_formula != null ? field_formula.indexOf(\"{signature.traces.\") : void 0) > -1) {\n sf = {\n only_cc_opinion: false,\n image_sign: false,\n top_keywords: top_keywords\n };\n if (foo.indexOf(\"{signature.\") > -1) {\n sf.image_sign = true;\n foo = foo.replace(\"{signature.\", \"\");\n }\n s1 = foo.replace(\"{\", \"\").replace(\"}\", \"\");\n if (s1.split(\".\").length > 1) {\n sf.stepName = s1.split(\".\")[1];\n if (opinionFields.filterProperty(\"stepName\", sf.stepName).length > 0) {\n if ((_ref = opinionFields.findPropertyByPK(\"stepName\", sf.stepName)) != null) {\n _ref.only_cc_opinion = true;\n }\n } else {\n if (s1.split(\".\").length > 2) {\n if (((_ref1 = s1.split(\".\")[2]) != null ? _ref1.toLocaleLowerCase() : void 0) === 'cc') {\n sf.only_cc_opinion = true;\n }\n }\n }\n }\n return opinionFields.push(sf);\n }\n });\n }\n }\n return opinionFields;\n}\n","import { fetchAPI, getSteedosAuth } from \"@steedos-widgets/amis-lib\";\nimport _, { find, isEmpty } from \"lodash\";\nimport { getOpinionFieldStepsName } from './util';\n/*\n * @Author: baozhoutao@steedos.com\n * @Date: 2022-09-09 17:47:37\n * @LastEditors: baozhoutao@steedos.com\n * @LastEditTime: 2023-10-10 13:57:02\n * @Description:\n */\n\nconst getMoment = ()=>{\n if(window.amisRequire){\n return window.amisRequire(\"moment\");\n }else if(window.moment){\n return window.moment;\n }\n}\n\nconst getTrace = ({ instance, traceId }) => {\n return find(instance.traces, (trace) => {\n return trace._id === traceId;\n });\n};\n\nconst getUserApprove = ({ instance, userId }) => {\n const currentTrace = find(instance.traces, (trace) => {\n return trace.is_finished != true;\n });\n let currentApprove = null;\n if (currentTrace) {\n currentApprove = find(currentTrace.approves, (approve) => {\n return approve.is_finished != true && approve.handler == userId;\n });\n }\n\n //传阅的approve返回最新一条\n if (!currentApprove || currentApprove.type == \"cc\") {\n // 当前是传阅\n _.each(instance.traces, function (t) {\n _.each(t.approves, function (a) {\n if (a.type == \"cc\" && a.handler == userId && a.is_finished == false) {\n currentApprove = a;\n }\n });\n });\n }\n\n if (!currentApprove) return;\n\n if (currentApprove._id) {\n currentApprove.id = currentApprove._id;\n }\n return currentApprove;\n};\n\nconst getApproveValues = ({ instance, trace, step, approve, box }) => {\n let instanceValues = null;\n if (!approve || approve.type === \"cc\") {\n instanceValues = instance.values;\n } else {\n if (box === \"draft\") {\n instanceValues = approve.values;\n } else if (box === \"inbox\") {\n if (\n step.step_type == \"counterSign\" ||\n (step.cc_has_edit_permission && !trace.is_finished)\n ) {\n //TODO\n instanceValues = instance.values;\n } else {\n if (isEmpty(approve.values)) {\n instanceValues = instance.values;\n } else {\n instanceValues = approve.values;\n }\n }\n } else if (\n box === \"outbox\" ||\n box === \"pending\" ||\n box == \"completed\" ||\n box == \"monitor\"\n ) {\n instanceValues = instance.values;\n } else {\n instanceValues = instance.values;\n }\n }\n return instanceValues;\n};\n\nconst getFlowVersion = (instance) => {\n if (instance.flow.current._id === instance.flow_version) {\n return instance.flow.current;\n } else {\n return find(instance.flow.historys, (history) => {\n return history._id === instance.flow_version;\n });\n }\n};\n\nconst getFormVersion = (instance) => {\n if (instance.form.current._id === instance.form_version) {\n return instance.form.current;\n } else {\n return find(instance.form.historys, (history) => {\n return history._id === instance.form_version;\n });\n }\n};\n\nconst getStep = ({ flowVersion, stepId }) => {\n return find(flowVersion.steps, (step) => {\n return step._id === stepId;\n });\n};\n\nconst getLastCCStep = ({ traces }, userId) => {\n var i, step_id, trace_id, user_id;\n\n user_id = userId;\n\n trace_id = null;\n\n step_id = null;\n\n i = traces.length - 1;\n\n while (i >= 0) {\n if (!trace_id && traces[i].is_finished) {\n _.each(traces[i].approves, function (ap) {\n if (!trace_id) {\n if (\n ap.is_finished &&\n ap.user === user_id &&\n (!ap.type || ap.type == \"cc\") &&\n [\"approved\", \"submitted\", \"rejected\"].includes(ap.judge)\n ) {\n trace_id = ap.trace;\n }\n if (trace_id) {\n step_id = traces[i].step;\n }\n }\n });\n }\n i--;\n }\n\n return step_id;\n};\n\nconst isCurrentStepOpinionField = (field, currentStep)=>{\n return _.includes(_.map(getOpinionFieldStepsName(field), 'stepName'), currentStep?.name);\n}\n\nexport const getInstanceInfo = async ({ instanceId, box }) => {\n const userId = getSteedosAuth().userId;\n const query = `{\n instance: instances__findOne(id:\"${instanceId}\"){\n _id,\n space,\n name,\n state,\n values,\n applicant,\n cc_users,\n applicant_name,\n submitter,\n submit_date,\n record_ids,\n forward_from_instance,\n related_instances: related_instances__expand{\n _id,\n name\n },\n traces,\n form_version,\n form:form__expand{\n _id,\n name\n current,\n historys\n },\n flow_version,\n flow:flow__expand{\n _id,\n name,\n perms,\n current,\n historys\n }\n }\n }\n `;\n\n const result = await fetchAPI(\"/graphql\", {\n method: \"post\",\n body: JSON.stringify({\n query: query,\n }),\n });\n \n\n let userApprove = null;\n let trace = null;\n let step = null;\n const instance = result.data.instance;\n if (!instance) {\n return undefined;\n }\n if (box === \"inbox\" || box === \"draft\") {\n userApprove = getUserApprove({ instance, userId });\n }\n const flowVersion = getFlowVersion(instance);\n const formVersion = getFormVersion(instance);\n\n if (userApprove) {\n trace = getTrace({ instance, traceId: userApprove.trace });\n step = getStep({ flowVersion, stepId: trace.step });\n }\n\n let currentStep = getStep({ flowVersion, stepId: _.last(instance.traces).step });\n\n const lastCCStep = getLastCCStep(instance, userId);\n\n const values = getApproveValues({\n instance,\n trace,\n step,\n approve: userApprove,\n box,\n });\n\n const flowPermissions = await fetchAPI(`/api/workflow/v2/flow_permissions/${instance.flow._id}`, {\n method: \"get\",\n });\n\n const moment = getMoment();\n\n return {\n box: box,\n _id: instanceId,\n space: instance.space,\n flow: instance.flow,\n form: instance.form,\n applicant: instance.applicant,\n applicant_name: instance.applicant_name,\n submitter: instance.submitter,\n submit_date: instance.submit_date\n ? (moment && moment(instance.submit_date).format(\"YYYY-MM-DD\"))\n : \"\",\n state: instance.state,\n approveValues: values,\n title: instance.name || instance.form.name,\n name: instance.name || instance.form.name,\n fields: _.map(formVersion.fields, (field) => {\n return Object.assign({}, field, {\n permission: userApprove?.type != 'cc' && (step?.permissions[field.code] || ( isCurrentStepOpinionField(field, step) ? 'editable' : '')),\n }) ;\n }),\n flowVersion: flowVersion,\n formVersion: formVersion,\n step: step,\n lastCCStep: lastCCStep,\n trace: trace,\n currentStep,\n flowPermissions: flowPermissions?.permissions || [],\n approve: userApprove,\n record_ids: instance.record_ids,\n related_instances: instance.related_instances,\n forward_from_instance: instance.forward_from_instance,\n cc_users: instance.cc_users,\n traces: instance.traces,\n historyApproves: _.map(instance.traces, (trace) => {\n return Object.assign(\n {\n children: _.map(trace.approves, (approve) => {\n let finishDate = approve.finish_date;\n let judge = approve.judge;\n let userName = approve.user_name;\n let opinion = approve.description;\n if(approve.type === 'cc'){\n userName = `${userName} (传阅)`\n opinion = approve.cc_description;\n }\n if (!finishDate) {\n finishDate = approve.is_read ? \"已读\" : \"未处理\";\n judge = null;\n } else {\n finishDate = moment && moment(finishDate).format(\"YYYY-MM-DD HH:mm\");\n }\n\n switch (judge) {\n case \"submitted\":\n judge = \"\";\n break;\n case \"returned\":\n judge = \"已退回\";\n break;\n case \"terminated\":\n judge = \"被取回\";\n break;\n case \"pending\":\n judge = \"审核中\";\n break;\n case \"approved\":\n judge = \"已核准\";\n break;\n case \"rejected\":\n judge = \"已驳回\";\n break;\n case \"finished\":\n judge = \"已完成\";\n break;\n case \"reassigned\":\n judge = \"转签核\";\n break;\n case \"inhand\":\n judge = \"处理中\";\n break;\n case \"relocated\":\n judge = \"重定位\";\n break;\n case \"readed\":\n judge = \"已阅\";\n break;\n default:\n break;\n }\n return {\n name: \"\",\n user_name: userName,\n finish_date: finishDate,\n judge: judge,\n opinion: opinion,\n };\n }),\n },\n { name: trace.name, judge: \"\" }\n );\n }),\n };\n};\n"],"names":["RegisterRenders","normalizeLink","to","location","window","pathname","search","idx","indexOf","idx2","substring","undefined","hash","test","relativeBase","paths","split","pop","m","exec","length","concat","join","amisRootClick","router","e","target","nodeName","toLocaleLowerCase","href","preventDefault","push","getEvn","theme","notify","type","msg","props","schema","tpl","SteedosUI","message","console","warn","confirm","Promise","resolve","reject","Modal","title","onOk","okText","cancelText","jumpTo","action","history","back","actionType","blank","open","replace","registerRenders","assets","isEmpty","isArray","amisLib","amisRequire","registerMap","renderer","Renderer","formitem","FormItem","options","OptionsControl","amisReact","each","asset","find","componentName","Component","Builder","components","item","name","AmisWrapper","componentType","body","render","useState","setSchema","useEffect","result","then","data","createElement","Fragment","usage","error","consoleTag","RegExp","weight","autoVar","info","component","framework","amisRender","root","env","amis","embed","Object","assign","STEEDOS_AUTH","getBuilderContext","settings","context","setSteedosAuth","steedosSession","fetchAPI","api","credentials","headers","AUTHORIZATION","getAuthorization","fetch","getRootUrl","res","status","Error","json","errors","getFileSrc","fileId","getImageSrc","getTenantId","spaceId","tenantId","searchParams","URLSearchParams","get","getAuthToken","token","authToken","getUserId","userId","absoluteUrl","url","defaultRootUrl","rootUrl","localStorage","getItem","setRootUrl","endsWith","setItem","getSteedosAuth","cloneDeep","Router","getTabDisplayAs","tab_id","urlSearch","document","has","key","value","setTabDisplayAs","displayAs","getAppPath","formFactor","appId","getPagePath","getObjectListViewPath","objectName","listViewName","getObjectDetailPath","recordId","_templateType","getObjectRelatedViewPath","masterObjectName","masterRecordId","foreignKey","getImageFieldUrl","Meteor","isCordova","doubleSlashIndex","urlIndex","getContrastColor","bgColor","backgroundColor","charAt","r","parseInt","substr","g","b","brightness","getLookupListView","refObjectConfig","listNameAll","listNameLookup","listViewAll","listViewLookup","_","list_views","view","listView","getCreatedInfoTpl","getModifiedInfoTpl","getNumberTpl","field","getTimeTpl","getDateTpl","getDateTimeTpl","getUiFieldTpl","getUiFileSizeTpl","getRefObjectNameFieldName","getUISchema","reference_to","refUiSchema","NAME_FIELD_KEY","getSelectTpl","getSelectMap","selectOptions","map","forEach","option","optionValue","optionColor","color","background","optionColorStyle","label","getNameTplUrl","ctx","idFieldName","getNameTpl","linkTarget","isLookup","getRelatedFieldTpl","optionsFunction","_optionsFunction","isTableField","onlyDisplayLookLabel","fieldDataStrTpl","isString","multiple","labelTpl","objectNameTpl","recordIdTpl","getLookupTpl","getSwitchTpl","getPasswordTpl","getLocationTpl","getFieldTpl","is_name","labelFieldName","getFieldsTemplate","fields","display","expandFields","fieldsName","displayFields","fieldsArr","values","expand","alias","includes","objectFieldName","uniq","expandFieldsQuery","expandInfo","fieldName","displayName","trimEnd","getRecordPermissionsTemplate","getFindOneQuery","object","queryOptions","filters","query","getSaveQuery","$","modalName","getScriptForReadonlyFields","scripts","readonly","getScriptForRemoveUrlPrefixForImgFields","imgFieldsKeys","imgFields","JSON","stringify","getScriptForSimplifiedValueForFileFields","fileFieldsKeys","fileFields","getSaveDataTpl","getSaveRequestAdaptor","apiRequestAdaptor","getFindQuery","limit","treeFields","enable_tree","keys","cfsFields","countQuery","count","orderBy","orderDir","pageNo","pageSize","getRecordPermissionsQuery","recordPermissionsTemplate","getApi","isMobile","config","newRecordMode","editRecordMode","perPage","AmisFormInputs","getAmisStaticFieldType","getFileTableName","steedosField","getAmisFieldType","getAmisFileReadonlySchema","amisFieldType","defaultImage","enlargeAble","showToolbar","getAmisFileEditSchema","tableName","convertData","useChunk","receiver","method","dataType","requestAdaptor","adaptor","Authorization","joinValues","extractValue","getAmisFileSchema","resources","translation","en_us","zh_cn","locale","i18next__default","use","initReactI18next","init","lng","interpolation","escapeValue","getQuickEditSchema","isAmisVersionforBatchEdit","version","Amis","quickEditId","quickEditSchema","id","submitEvent","submit","actions","script","onEvent","disabled","Fields.convertSFieldToAmisField","omit","fieldSchema","TempDisplayField","quickEditOnEvent","displayField","EventType","labelField","valueField","scale","removeDisplayField","visibleOn","i18next","t","crudId","getFieldWidth","width","defaultWidth","isNaN","Number","getTableColumns","columns","isInputTable","placeholder","className","allowEdit","permissions","enable_inline_edit","wrap","columnItem","previewFileScript","toggled","Tpl.getSelectMap","sortable","inputClassName","Tpl.getFieldTpl","show_as_qr","hidden","extra","html","quickEdit","quickEditEnabledOn","some","getMobileLines","tpls","lines","maxLineCount","lineChildren","isNewLine","isLeft","lineChildrenClassName","lineClassName","is_wide","getMobileTableColumns","nameField","Tpl.getNameTplUrl","columnLines","column","level","link","innerClassName","getDefaultParams","top","getButtonVisibleOn","button","visible","_visible","isBoolean","toString","trim","startsWith","amisSchema","amis_schema","btn1","getTableOperation","buttons","operationButtons","fixed","labelClassName","onOpenApi","getDefaultCrudCard","bodyColumns","titleColumn","card","toolbar","hideToolbarOperation","toolbarOperation","getTableSchema","hiddenColumnOperation","defaults","listSchema","useMobileColumns","mode","perPageAvailable","headerToolbarClassName","draggable","defaultParams","syncLocation","keepItemSelectionOnPageChange","checkOnItemClick","autoFillHeight","columnsTogglable","getTableApi","mainObject","searchableFields","filter","filtersFunction","sort","setDataToComponentId","operation","baseFilters","Fields.isFieldQuickSearchable","lookupFields","key_field","queryCount","isRelated","cache","$term","term","$self","self","loaded","listViewId","listName","graphql.getFindQuery","graphql.getApi","getRecordPermissionsApi","graphql.getRecordPermissionsQuery","API_CACHE","getReadonlyFormAdaptor","scriptStr","selectFields","gridAndObjectFieldsName","OMIT_FIELDS","fieldNames","n","isEditor","getScriptForAddUrlPrefixForImgFields","getScriptForRewriteValueForFileFields","initApiAdaptor","getReadonlyFormInitApi","findOneOptions","initApiRequestAdaptor","graphql.getFindOneQuery","getEditFormInitApi","uiSchema","global","defaultData","_master","responseData","initialValues","editFormInited","getSaveApi","graphql.getSaveQuery","graphql.getSaveRequestAdaptor","apiAdaptor","getBatchDelete","ids","DEFAULT_CALENDAR_OPTIONS","startDateExpr","endDateExpr","allDayExpr","textExpr","getCalendarApi","calendarOptions","searchable","getCalendarRecordPermissionsApi","getCalendarRecordSaveApi","formData","nameFieldKey","apiData","saveDataTpl","getObjectCalendar","objectSchema","omitBy","isNil","titleFields","sortField","sortOrder","sortStr","initialView","currentView","onGetEventsScript","onSelectScript","onEventClickScript","recordPermissionsApi","recordSaveApi","businessHours","daysOfWeek","startTime","endTime","startDayHour","endDayHour","eventContent","hasReturn","fn","Function","noEventsContent","allowCreate","listWeek","buttonText","__assign","s","i","arguments","p","prototype","hasOwnProperty","call","apply","keyToPath","string","charCodeAt","match","expression","quote","subString","createObject","superProps","properties","isFrozen","cloneObject","obj","create","__super","writable","enumerable","isObject","persistOwnProps","extendObject","src","typename","Array","setVariable","convertKeyToPath","parts","last","key_1","shift","isPlainObject","deleteVariable","key_2","getListBody","getListSchema","listBody","headerToolbar","listItem","icon","tabId","getCardSchema","titleField","f","defaultsDeep","output","args","toArray","reverse","mergeWith","objectValue","sourceValue","globalTag","getParentPath","path","pathArr","getValueByPath","isExpression","func","pattern","reg1","reg2","getMoment","moment","getGlobalNowData","now","Date","today","utc","set","toDate","timeNow","hours","utcOffset","parseSingleExpression","dataPath","userSession","funcBody","parent","parentPath","str","_error","log","getSchema","schemaApiAdaptor","onDialogCancelScript","getSelectedRowsScript","close","primary","getPage","pageId","page","parse","defaultFormSchema","objectApiName","formSchema","click","dialog","bodyClassName","closeOnEsc","closeOnOutside","showCloseButton","size","regions","debug","resetAfterSubmit","initApi","sendOn","importState","interval","stopAutoRefreshWhen","initFetch","inited","submitSucc","eventData","messages","success","failed","closeDialogOnSubmit","list_views_name","listViewPropsStoreKey","sessionStorage","select","filename","url_tmp","encodeURIComponent","StandardButtons","getStandardNew","standardNew.getSchema","getStandardEdit","standardEdit.getSchema","getStandardDelete","standardDelete.getSchema","getStandardDeleteMany","todo","scopeId","scope","getRef","listViewRef","getComponentById","store","toJSON","selectedItems","handleAction","handleBulkAction","bulkActions","getStandardImportData","standardImportData.getSchema","getStandardOpenView","standardOpenView.getSchema","getStandardExportExcel","standardExportExcel.getSchema","getGlobalData","hasIn","getButtonVisible","eval","fun","record","isFunction","standardButtonsTodo","standard_delete_many","getButtons","disabledButtons","disabled_actions","sortBy","include","allow_customActions","exclude_actions","on","getListViewButtons","listButtons","getObjectDetailButtons","detailButtons","getObjectDetailMoreButtons","moreButtons","getListViewItemButtons","getObjectRelatedListButtons","getButton","buttonName","hasImportTemplates","execute","todoThis","object_name","record_id","executeButton","getObjectDetailHeaderButtons","amisButtonsSchema","moreButtonsVisibleOn","dropdownButtons","index","getObjectDetailButtonsSchemas","phoneMoreButtonsVisibleOn","dropdownButtonsSchema","getObjectListViewButtonsSchemas","getObjectRecordDetailRelatedListButtonsSchemas","getObjectFieldsFilterButtonSchema","getObjectFieldsFilterFormSchema","getObjectFieldsFilterBarSchema","btnSearchId","getTime","filterFormSchema","keywordsSearchBoxName","onSearchScript","onCancelScript","dataProviderInited","onSearchableFieldsChangeScript","getObjectListHeaderFirstLine","disabled_list_views","listViewButtonOptions","_id","reg","standardIcon","standardNewButton","buttonSchema","restButtons","getObjectListHeaderSecordLine","amisListViewId","fieldsFilterButtonSchema","secordLineSchema","getObjectListHeaderFieldsFilterBar","fieldsFilterBarSchema","getObjectListHeader","firstLineSchema","headerSchema","getObjectRecordDetailHeader","showRecordTitle","gridBody","recordPermissions","getObjectRecordDetailRelatedListHeader","relatedObjectSchema","relatedLabel","recordRelatedListHeader","getObjectRelatedListHeader","relatedObjectName","getNewListviewButtonSchema","fieldsExtend","getCopyListviewButtonSchema","getRenameListviewButtonSchema","getSetListviewShareButtonSchema","getSetListviewFiltersButtonSchema","getSetListviewColumnsButtonSchema","getSetListviewSortButtonSchema","getDeleteListviewButtonSchema","getSettingListviewToolbarButtonSchema","getDisplayAsButton","showDisplayAs","onFieldsFilterToggleScript","getObjectHeaderQuickSearchBox","searchableFieldsLabel","localListViewProps","crudKeywords","__keywords","onChangeScript","getObjectHeaderToolbar","hiddenCount","headerToolbarItems","filterVisible","innerWidth","toolbarCount","toolbarReloadButton","toolbarFilter","toolbarDisplayAsButton","toolbarDQuickSearchBox","toolbars","allowCreateListViews","getObjectFooterToolbar","no_pagination","paging","enabled","is_lookup","commonConfig","getObjectFilter","onSubmitSuccScript","getBulkActions","getCrudSchemaWithDataFilter","crud","crudDataFilter","amisData","onCrudDataFilter","getObjectCRUD","crudClassName","nonpaged","isTreeObject","disableStatistics","bodyProps","footerToolbar","tableHiddenOn","primaryField","hiddenOn","tableOptions","table","imageNames","compact","quickSaveApiRequestAdaptor","rowClassNameExpr","affixHeader","quickSaveApi","crudModeClassName","footerSchema","wrappedBody","union","unshift","user","getFormFields","formProps","includedFields","excludedFields","lodash","includedFieldsMap","fName","sort_no","getFormSchemaWithDataFilter","form","formDataFilter","onFormDataFilter","getObjectForm","layout","labelAlign","submitSuccActions","formFields","getFormBody","fieldGroups","field_groups","persistData","preventEnterSubmit","promptPageLeave","canAccessSuperData","submitText","panelClassName","getObjectDetail","serviceId","showSystemFields","wrapWithPanel","eventName","getGraphqlFieldsQuery","queryFields","queryOptionsArray","getRecord","getRelatedsCount","relateds","relatedQuery","relate","foreign_key","getRecordPermissions","str2function","contents","getRelatedFieldValue","relatedField","o","getObjectRelatedList","related","relatedLists","related_lists","relatedList","arr","related_field_fullname","field_names","visible_on","page_size","details","detail","getRecordDetailRelatedListSchema","relatedKey","relatedObjectUiSchema","mainRelated","mainObjectUiSchema","mainRelatedLists","foreign_key_value","lookup_details","globalFilter","getField","refField","componentId","showHeader","getRelatedListSchema","_isRelated","getDefaultRelatedListProps","getListViewColumns","getListViewSort","getListViewFilter","_filters","isNameField","getRelatedListProps","listViewNames","listViewProps","listViewColumns","listViewSort","listviewFilter","refFieldName","relatedListColumns","extraColumns","extra_columns","UI_SCHEMA_CACHE","UISchemaFunction","setUISchemaFunction","setUISchemaCache","getUISchemaCache","hasUISchemaCache","mobile_columns","slice","field_name","order","filter_scope","formatUISchemaCache","_reference_to","exception","v","k","all","force","getUISchemaSync","Steedos","authRequest","async","getFormSchema","getViewSchema","appName","enable_amis_schema","isCustomAmisSchema","listview_filters","isCalendar","ex","convertColumnsToTableFields","filedInfo","rfUiSchema","rfFieldInfo","extraFields","crudOptions","getCalendarSchema","getRecordDetailHeaderSchema","getRecordDetailSchema","detailed","content","tabs","getRecordServiceSchema","style","getObjectRelated","relatedFieldName","masterObjectUISchema","refUsersObjectName","refOrgsObjectName","getSource","childrenData","defaultValueOptionsData","_prefix","fieldNamePrefix","$value","getDeferApi","orgsSort","usersSort","getSearchApi","getRefListViewSort","refObject","getSelectUserSchema","Field.getAmisStaticFieldType","Tpl.getLookupTpl","refUsersObjectConfig","refOrgsObjectConfig","refObjectName","_filtersFunction","lookupToAmisTreeSelect","getReferenceToFieldSchema","referenceTo","valueFieldName","reference_to_field","getReferenceTo","getReferenceToSync","getLookupSapceUserTreeSchema","treeSchema","tree","lookupToAmisPicker","tableFields","Field.isFieldQuickSearchable","tableField","source","inFilterForm","depend_on","pickerSchema","Table.getTableSchema","isAllowCreate","isCreate","isHasFilters","new_button","align","splice","modalTitle","disabledOn","modalMode","lookupToAmisSelect","valueFieldKey","defaultValueOptionsQueryData","apiInfo","isRefToMutiple","clearable","autoComplete","select_menuTpl","menuTpl","lookupToAmis","Tpl.getRelatedFieldTpl","idsDependOn","lookupToAmisIdsPicker","enableEnhancedLookup","enable_enhanced_lookup","lookupToAmisSelectUser","getIdsPickerSchema","List.getListSchema","selectFirst","getMarkdownFieldSchema","getHtmlFieldSchema","QUICK_SEARCHABLE_FIELD_TYPES","getBaseFields","calssName","Tpl.getCreatedInfoTpl","Tpl.getModifiedInfoTpl","sField","getObjectFieldSubFields","mainField","newMainField","subFields","getGridFieldSubFields","getTabledFieldSubFields","getPermissionFields","permissionFields","permission","getSelectFieldOptions","data_type","String","convertSFieldToAmisField","baseData","labelRemark","inlineHelpText","required","Tpl.getSwitchTpl","inputFormat","format","Tpl.getDateTpl","Tpl.getDateTimeTpl","timeFormat","Tpl.getNumberTpl","min","max","precision","showInput","Tpl.getUiFieldTpl","suffix","pipeIn","toFixed","pipeOut","oldValue","Tpl.getPasswordTpl","codeSize","ak","vendor","map_ak","map_vendor","coordinatesType","Tpl.getLocationTpl","lat","coordinates","coordtransform","toLowerCase","bd09togcj02","gcj02towgs84","wgs84","File.getAmisFileSchema","language","editorDidMount","showIndex","strictMode","needConfirm","editable","addable","removable","subField","subFieldName","gridSub","gridItemSchema","items","Fields.getGridFieldSubFields","__formFields","fieldTypeClassName","requiredOn","clearValueOnHidden","convertDataResult","getFieldSearchable","perField","Fields.getObjectFieldSubFields","_field","inline","defaultValue","staticOn","autoFill","amisField","isFieldTypeSearchable","fieldType","isFieldQuickSearchable","fieldSearchable","getFieldSchemaArray","fieldSchemaArray","group","isObjectField","forceHidden","getSection","sectionName","sectionFields","fieldSetBody","Fields.getTabledFieldSubFields","sectionFieldsVisibleOn","section","enableTabs","groupItem","group_name","groupVisibleOn","getSections","_sections","groupBy","sections","sectionVisibleOns","tempSectionVisibleOns","headingClassName","tabsMode","formItem","getInputTableColumns","extendColumnProps","fieldItem","hideLabel","getForm","onNewItemSubmitScript","getButtonNew","getButtonEdit","getButtonView","getButtonDelete","getAmisInputTableSchema","Math","random","buttonsForColumnOperations","buttonEditSchema","buttonViewSchema","buttonDeleteSchema","tableClassName","inputTableSchema","clone","buttonNewSchema","getScopeId","getFormPageInitSchema","getListPageInitSchema","getRecordPageInitSchema","contentBody","getListviewInitSchema","onlySecordLine","isListviewInit","$master","getApps","APPS_API","apps","getApp","appApi","app","getNotifications","auth","markReadAll","PUBLIC_ENV","setEnv","getEnv","setEnvs","getEnvs","getSpaceUsersPickerAmisSchema","spaceUserSchema","getSpaceUsersPickerSchema","DATE_DATETIME_BETWEEN_VALUES","opMaps","equal","not_equal","less","less_or_equal","greater","greater_or_equal","between","not_between","is_empty","is_not_empty","select_equals","select_not_equals","select_any_in","select_not_any_in","like","not_like","starts_with","ends_with","isGroup","conditionGroupToFilters","conjunction","children","conditionItemToFilters","left","op","right","array","filterToConditionItem","findKey","filterObjectToArray","filtersToConditionGroup","conditions","conditionsToFilters","filtersToConditions","registerRemoteAssets","assetUrls","assetUrlsArray","amisComps","registry","getDefaultRenderData","steedosAuth","HIDE_COUNTER_SIGN_JUDGE_OPTIONS","getJudgeOptions","instance","step","step_type","getJudgeInput","judgeOptions","approve","new_judge","next_step","judge","getNextStepInput","wrapperComponent","md","valign","subFormMode","getNextStepUsersInput","getCCSubmitRequestAdaptor","trace","getPostSubmitRequestAdaptor","flow","getPostEngineRequestAdaptor","getSubmitActions","state","getApprovalDrawerSchema","minRows","maxRows","validateError","clearPersistDataAfterSubmit","overlay","resizable","headerClassName","footerClassName","drawerContainer","position","getAttachments","getAttachmentUploadInput","space","getRelatedRecords","record_ids","getRelatedInstances","getInstanceApprovalHistory","getSelectOptions","foo","isOpinionField","field_formula","formula","getFieldEditTpl","code","is_required","is_textarea","validations","isEmail","isUrl","showCounter","is_multiselect","useTpl","orgTpl","copyable","getTdInputTpl","getFieldReadonlyTpl","edit","getTdField","fieldsCount","marginTop","paddingTop","paddingRight","paddingBottom","paddingLeft","marginRight","marginBottom","marginLeft","borderLeftColor","borderTopColor","borderRightColor","borderBottomColor","colspan","getTdTitle","getTds","tdFields","tds","getFormTrs","trsSchema","trs","getFormTableView","getApplicantTableView","applicantInput","box","padding","valueFormat","borderLeftStyle","borderTopStyle","borderRightStyle","borderBottomStyle","getApproveButton","drawer","getFlowFormSchema","fontFamily","fontSize","textAlign","pullRefresh","getOpinionFieldStepsName","top_keywords","foo1","opinionFields","json_formula","s1","sf","_ref","_ref1","yijianlan","stepName","image_sign","only_cc_opinion","only_cc","default_description","only_handler","filterProperty","findPropertyByPK","getTrace","traceId","traces","getUserApprove","currentTrace","is_finished","currentApprove","approves","handler","a","getApproveValues","instanceValues","cc_has_edit_permission","getFlowVersion","current","flow_version","historys","getFormVersion","form_version","getStep","flowVersion","stepId","steps","getLastCCStep","step_id","trace_id","user_id","ap","isCurrentStepOpinionField","currentStep","getInstanceInfo","instanceId","userApprove","formVersion","lastCCStep","flowPermissions","applicant","applicant_name","submitter","submit_date","approveValues","related_instances","forward_from_instance","cc_users","historyApproves","finishDate","finish_date","userName","user_name","opinion","description","cc_description","is_read"],"mappings":"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"}
|