@steedos-widgets/amis-object 1.0.18 → 1.0.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/amis/AmisRecordDetailHeader.d.ts +39 -43
- package/dist/amis-object.cjs.css +33 -0
- package/dist/amis-object.cjs.js +1 -1
- package/dist/amis-object.cjs.js.map +1 -1
- package/dist/amis-object.esm.css +33 -0
- package/dist/amis-object.esm.js +1 -1
- package/dist/amis-object.esm.js.map +1 -1
- package/dist/amis-object.umd.css +33 -0
- package/dist/amis-object.umd.js +1 -1
- package/dist/amis-object.umd.js.map +1 -1
- package/dist/assets.json +10 -10
- package/dist/meta.js +46 -15
- package/package.json +3 -3
package/dist/amis-object.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e,{useState as t,useEffect as a}from"react";import*as n from"lodash";import r,{isEmpty as i,isArray as o,each as s,find as l,endsWith as d,cloneDeep as c,toArray as p,mergeWith as u,map as m,keys as f,sortBy as y,compact as b,includes as h,slice as g,has as v,isString as w,defaultsDeep as $,isObject as N,forEach as F,findKey as x,filter as k,get as S,omitBy as j,isNil as I,isBoolean as O,startsWith as D,difference as V,pick as E,random as A}from"lodash";import{Dropdown as T,Tabs as C,Spin as P,Badge as q}from"antd";var L=function(){return L=Object.assign||function(e){for(var t,a=1,n=arguments.length;a<n;a++)for(var r in t=arguments[a])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},L.apply(this,arguments)};function B(e,t,a,n){return new(a||(a=Promise))((function(r,i){function o(e){try{l(n.next(e))}catch(e){i(e)}}function s(e){try{l(n.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof a?t:new a((function(e){e(t)}))).then(o,s)}l((n=n.apply(e,t||[])).next())}))}function R(e,t){var a,n,r,i,o={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(a)throw new TypeError("Generator is already executing.");for(;o;)try{if(a=1,n&&(r=2&i[0]?n.return:i[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,i[1])).done)return r;switch(n=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return o.label++,{value:i[1],done:!1};case 5:o.label++,n=i[1],i=[0];continue;case 7:i=o.ops.pop(),o.trys.pop();continue;default:if(!(r=o.trys,(r=r.length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){o=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){o.label=i[1];break}if(6===i[0]&&o.label<r[1]){o.label=r[1],r=i;break}if(r&&o.label<r[2]){o.label=r[2],o.ops.push(i);break}r[2]&&o.ops.pop(),o.trys.pop();continue}i=t.call(e,o)}catch(e){i=[6,e],n=0}finally{a=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}function z(e,t){var a="function"==typeof Symbol&&e[Symbol.iterator];if(!a)return e;var n,r,i=a.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}return o}function U(e,t,a){if(a||2===arguments.length)for(var n,r=0,i=t.length;r<i;r++)!n&&r in t||(n||(n=Array.prototype.slice.call(t,0,r)),n[r]=t[r]);return e.concat(n||Array.prototype.slice.call(t))}var J="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},M="object"==typeof J&&J&&J.Object===Object&&J,H="object"==typeof self&&self&&self.Object===Object&&self,K=(M||H||Function("return this")()).Symbol,Y=K,W=Object.prototype,G=W.hasOwnProperty,Z=W.toString,X=Y?Y.toStringTag:void 0;var Q=function(e){var t=G.call(e,X),a=e[X];try{e[X]=void 0;var n=!0}catch(e){}var r=Z.call(e);return n&&(t?e[X]=a:delete e[X]),r},ee=Object.prototype.toString;var te=Q,ae=function(e){return ee.call(e)},ne=K?K.toStringTag:void 0;var re=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":ne&&ne in Object(e)?te(e):ae(e)};var ie=function(e,t){return function(a){return e(t(a))}}(Object.getPrototypeOf,Object);var oe=re,se=ie,le=function(e){return null!=e&&"object"==typeof e},de=Function.prototype,ce=Object.prototype,pe=de.toString,ue=ce.hasOwnProperty,me=pe.call(Object);var fe=function(e){if(!le(e)||"[object Object]"!=oe(e))return!1;var t=se(e);if(null===t)return!0;var a=ue.call(t,"constructor")&&t.constructor;return"function"==typeof a&&a instanceof a&&pe.call(a)==me};const ye=[],be=e=>({theme:"antd",notify:(e,t)=>{t.props?.schema.tpl?SteedosUI.message[e](t.props?.schema.tpl):"string"==typeof t?SteedosUI.message[e](t):console.warn("notify",e,t)},confirm:e=>new Promise(((t,a)=>SteedosUI.Modal.confirm({title:e,onOk:()=>{t(!0)},okText:"确认",cancelText:"取消"}))),jumpTo:(t,a)=>{if("goBack"===t)return window.history.back();t=((e,t=window.location)=>{(e=e||"")&&"#"===e[0]?e=t.pathname+t.search+e:e&&"?"===e[0]&&(e=t.pathname+e);var a=e.indexOf("?"),n=e.indexOf("#");let r=~a?e.substring(0,a):~n?e.substring(0,n):e;if(a=~a?e.substring(a,~n?n:void 0):"",e=~n?e.substring(n):t.hash,r){if("/"!=r[0]&&!/^https?\:\/\//.test(r)){var i,o=t.pathname.split("/");for(o.pop();i=/^\.\.?\//.exec(r);)"../"===i[0]&&o.pop(),r=r.substring(i[0].length);r=o.concat(r).join("/")}}else r=t.pathname;return r+a+e})(t),a&&"url"===a.actionType?!1===a.blank?e.push(t):window.open(t):a&&t&&a.target?window.open(t,a.target):/^https?:\/\//.test(t)?window.location.replace(t):e.push(t)}}),he=e=>{if(!i(e)&&o(e)){var t=amisRequire("amis");const a={renderer:t.Renderer,formitem:t.FormItem,options:t.OptionsControl};let n=amisRequire("react");s(e,(e=>{if(!l(ye,(t=>t===e.componentName))){let t=Builder.components.find((t=>t.name===e.componentName)),r=t.class;"amisSchema"===e.componentType&&(r=e=>{var{body:a,render:r}=e;const[i,o]=n.useState(null);return n.useEffect((()=>{var a=t.class(e);a&&a.then&&"function"==typeof a.then?a.then((e=>{o(e)})):o(a)}),[]),n.createElement(n.Fragment,null,n.createElement(n.Fragment,null,i&&r?r("body",i):""),n.createElement(n.Fragment,null,r?r("body",a):""))}),a[e.usage]?(a[e.usage]({test:new RegExp("(^|/)"+e.type),type:e.type,weight:e.weight,autoVar:!0})(r),console.info("注册了一个自定义amis组件:",{type:e.type,weight:e.weight,component:r,framework:e.framework,usage:e.usage})):console.error(`${consoleTag}自定义组件注册失败,不存在${e.usage}自定义组件类型。`),ye.push(e.componentName)}}))}},ge={},_e=()=>"undefined"==typeof window?{}:Builder.settings.context||Builder.settings;async function ve(e,t={credentials:"include"}){var a,n={"Content-Type":"application/json"};if(401===(a=((a=Ne())&&(n.Authorization=a),t.headers=Object.assign({},n,t.headers),t.credentials="include",await fetch(""+xe()+e,t))).status)throw new Error(401);if((n=await a.json()).errors)throw console.error(n.errors),new Error("Failed to fetch API");return n}function we(){try{let e=_e().tenantId;return window.location.search&&!e&&(e=new URLSearchParams(window.location.search).get("X-Space-Id")),e||null}catch(e){console.error(e)}}function $e(){try{var e=_e().authToken;return e||null}catch(e){console.error(e)}}function Ne(){try{var e=_e(),t=e.tenantId,a=e.authToken;return t&&a?`Bearer ${t},`+a:null}catch(e){console.error(e)}}function Fe(){try{var e=_e().userId;return e||null}catch(e){console.error(e)}}function xe(e){return _e().rootUrl||("undefined"!=typeof window?window.localStorage.getItem("steedos:rootUrl"):"")||e}const ke=()=>c(ge);async function Se(e,t){0!=t&&(t=!0);let a=["_id"],r=[];for(const i of n.isArray(e)?e:n.values(e))i.name.indexOf(".")<0&&(!t||"lookup"!=i.type&&"master_detail"!=i.type?a.push(i.alias?i.alias+":"+i.name:i.name):(a.push(""+i.name),r.push(""+i.name)),h(["time","date","datetime","boolean","number","currency"],i.type)&&a.push(""+i.name),h(["time","filesize","date","datetime","boolean","number","currency","select","file","image","avatar","formula","summary"],i.type)&&r.push(""+i.name));return r=n.uniq(r),a=n.uniq(a),0<r.length?`${a.join(",")},_display:_ui{${r.join(",")}}`:""+a.join(" ")}async function je(e,t,a,n){let r="",i=(t&&(r=`(filters:["${e.idFieldName}", "=", "${t}"])`),"data");return n&&(n.alias&&(i=n.alias),n.filters&&(r=`(filters:${n.filters})`),n.queryOptions&&(r=`(${n.queryOptions})`)),{query:`{${i}:${e.name}${r}{${await Se(a)}, \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 }}`}}function Ie(e,t,a,n){return{objectName:e.name,$:"$$",recordId:t,modalName:"${modalName}"}}function Oe(e){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 ${function(e){var t=[];return e.forEach((e=>{e.readonly&&t.push(`delete formData.${e.name};`)})),t.join("\r\n")}(e)}\n ${function(e){let t=[],a={};return e.forEach((e=>{h(["image","avatar"],e.type)&&(t.push(e.name),a[e.name]={name:e.name,multiple:e.multiple})})),t.length?`\n let imgFieldsKeys = ${JSON.stringify(t)};\n let imgFields = ${JSON.stringify(a)};\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?.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 `:""}(e)}\n ${function(e){let t=[],a={};return e.forEach((e=>{"file"===e.type&&(t.push(e.name),a[e.name]={name:e.name,multiple:e.multiple})})),t.length?`\n let fileFieldsKeys = ${JSON.stringify(t)};\n let fileFields = ${JSON.stringify(a)};\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 `:""}(e)}\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._id}", doc: {__saveData}){_id}}\`;\n };\n delete formData._id;\n delete formData.__selectUserLoaded__;//选人控件加载标志不应该保存到数据库中\n let __saveData = JSON.stringify(JSON.stringify(formData));\n `}function De(e){return`\n ${Oe(e)}\n api.data = {query: query.replace('{__saveData}', __saveData)};\n return api;\n `}async function Ve(e,t,a,r){var i=r.limit||10;let o=`(top: ${i})`,s=(t&&(o=`(filters:["_id", "=", "${t}"], top: ${i})`),"data");return r&&(r.alias&&(s=r.alias),r.filters&&(o=`(filters:${r.filters})`),r.queryOptions&&(o=`(${r.queryOptions})`)),t="",e.enable_tree&&n.includes(n.keys(e.fields),"parent")&&n.includes(n.keys(e.fields),"children")&&(t=",parent,children"),i="","cms_files"===e.name&&(i=",versions"),{orderBy:"${orderBy}",orderDir:"${orderDir}",pageNo:"${page}",pageSize:"${perPage}",query:`{${s}:${e.name}${o}{${await Se(a,r.expand)}${t}${i}},count:${e.name}__count(filters:{__filters})}`}}function Ee(e){if(!e)return"${context.rootUrl}/graphql"}const Ae={getAppPath:({appId:e})=>"/app/"+e,getPagePath(){},getObjectListViewPath:({appId:e,objectName:t,listViewName:a})=>`/app/${e}/${t}/grid/`+a,getObjectDetailPath(e){var{appId:e,objectName:t,recordId:a}=e;return"instances"===t?"/workflow/space/${context.tenantId}/${listName}/"+a:`/app/${e}/${t}/view/`+a},getObjectRelatedViewPath:({appId:e,masterObjectName:t,masterRecordId:a,objectName:n,foreignKey:r})=>`/app/${e}/${t}/${a}/${n}/grid?related_field_name=`+r};function Te(e){return`<div><a href='${Ae.getObjectDetailPath({formFactor:e,appId:"admin",objectName:"users",recordId:"${created_by._id}"})}'>\${_display.created_by.label}</a>\${_display.created}</div>`}function Ce(e){return`<div><a href='${Ae.getObjectDetailPath({formFactor:e,appId:"admin",objectName:"users",recordId:"${modified_by._id}"})}'>\${_display.modified_by.label}</a>\${_display.modified}</div>`}function Pe(e){return`<div>\${_display.${e.name}}</div>`}function qe(e){return`<div>\${_display.${e.name}}</div>`}function Le(e){return`<div>\${_display.${e.name}}</div>`}function Be(e){return`<div>\${_display.${e.name}}</div>`}function Re(e,t){return"cms_files"===t.objectName?"${context.rootUrl}/api/files/files/${versions[0]}?download=true":Ae.getObjectDetailPath({...t,formFactor:t.formFactor,appId:"${appId}",objectName:t.objectName||"${objectName}",recordId:`\${${t.idFieldName}}`})}function ze(e,t){let a="";var n=t.onlyDisplayLabel;if(_.isString(e.reference_to)||!e.reference_to)if(e.multiple){let r="<%=item.label%>";n||(r=`<a href="${Ae.getObjectDetailPath({formFactor:t.formFactor,appId:t.appId,objectName:"<%=item.objectName%>",recordId:"<%=item.value%>"})}"><%=item.label%></a>`),a=`\n <% if (data._display.${e.name} && data._display.${e.name}.length) { %><% data._display.${e.name}.forEach(function(item) { %> ${r} <% }); %><% } %>\n `}else{let r=`\${_display.${e.name}.label}`;n||(r=`<a href="${Ae.getObjectDetailPath({formFactor:t.formFactor,appId:t.appId,objectName:`\${_display.${e.name}.objectName}`,recordId:`\${_display.${e.name}.value}`})}">\${_display.${e.name}.label}</a>`),a=r}else{let r="<%=item.label%>";n||(r=`<a href="${Ae.getObjectDetailPath({formFactor:t.formFactor,appId:t.appId,objectName:"<%=item.objectName%>",recordId:"<%=item.value%>"})}"><%=item.label%></a>`),a=`\n <% if (data._display.${e.name} && data._display.${e.name}.length) { %><% data._display.${e.name}.forEach(function(item) { %> ${r} <% }); %><% } %>\n `}return a}async function Ue(e,t){var a,n;return e.reference_to?(a=await async function(e){return(await Da(e.reference_to)).NAME_FIELD_KEY||"name"}(e),e.multiple?(n=Ae.getObjectDetailPath({formFactor:t.formFactor,appId:t.appId,objectName:e.reference_to,recordId:"<%=item._id%>"}),`\n <% if (data.${e.name} && data.${e.name}.length) { %><% data.${e.name}.forEach(function(item) { %> <a href="${n}"><%=item.${a}%></a> <% }); %><% } %>\n `):`<a href="${Ae.getObjectDetailPath({formFactor:t.formFactor,appId:t.appId,objectName:e.reference_to,recordId:`\${${e.name}._id}`})}">\${${e.name}.${a}}</a>`):Be(e)}function Je(e){return`<% if (data.${e.name}) { %>\n <span class="slds-icon_container slds-icon-utility-check slds-current-color" title="<%=data._display.${e.name}%>">\n <span ><%= data._display.${e.name} === "√" ? "<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>" : data._display.${e.name} %></span>\n </span>\n <% } %>`}function Me(e){return`<% if (data.${e.name}) { %>\n <span>······</span>\n <% } %>`}async function He(e,t){if((e.is_name||e.name===t.labelFieldName)&&!t.onlyDisplayLabel)return function(e,t){return`<a href="${Re(0,t)}">\${${e.name}}</a>`}(e,t);switch(e.type){case"password":return Me(e);case"boolean":case"toggle":return Je(e);case"select":return Be(e);case"time":case"formula":case"summary":case"filesize":return function(e){return`<div>\${_display.${e.name}}</div>`}(e);case"date":return qe(e);case"datetime":return Le(e);case"lookup":case"master_detail":return ze(e,t);case"number":case"currency":return Pe(e)}}function Ke(e){let t="";var a=n.filter(e,(function(e){return e.name.indexOf(".")<0&&("select"==e.type&&e.options||("lookup"==e.type||"master_detail"==e.type)&&!e.reference_to)}));return n.each(a,(function(e){var a;n.includes(ca,e.name)||(e.name,e.options?(a=JSON.stringify({options:e.options}),t+=`var ${e.name}Options= (${a}).options;`):e.optionsFunction?t+=`var ${e.name}Options = eval(${e.optionsFunction.toString()})(api.data);`:e._optionsFunction&&(t+=`var ${e.name}Options = eval(${e._optionsFunction})(api.data);`),e.multiple?t+=`data.${e.name}__label = _.map(_.filter(${e.name}Options, function(option){return _.includes(data.${e.name}, option.value)}), 'label');`:t=(t+=`var ${e.name}Selected = _.find(${e.name}Options, function(option){return data.${e.name} == option.value});`)+`data.${e.name}__label = ${e.name}Selected ? ${e.name}Selected.label:null;`)})),`\n if(payload.data.data){\n var data = payload.data.data[0];\n try{\n ${t}\n ${We(e)}\n ${Ge(e)}\n }catch(e){\n console.error(e)\n }\n payload.data = data;\n window.postMessage(Object.assign({type: "record.loaded"}, {record: data}), "*")\n }\n if(payload.errors){\n payload.status = 2;\n payload.msg = payload.errors[0].message;\n }\n return payload;\n`}async function Ye(e,t,a,n){return{method:"post",url:Ee()+"?rf="+(new Date).getTime(),cache:100,adaptor:Ke(a),data:await je(e,t,a,n),headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}function We(e){let t=[],a={};return e.forEach((e=>{n.includes(["image","avatar"],e.type)&&(t.push(e.name),a[e.name]={name:e.name,type:e.type,multiple:e.multiple})})),t.length?`\n // image字段值添加URL前缀\n let imgFieldsKeys = ${JSON.stringify(t)};\n let imgFields = ${JSON.stringify(a)};\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)=>{ return i.url });\n }\n }else{\n data[item] = imgFieldDisplayValue && imgFieldDisplayValue.url;\n }\n }\n })\n `:""}function Ge(e){let t=[],a={};return e.forEach((e=>{"file"===e.type&&(t.push(e.name),a[e.name]={name:e.name,multiple:e.multiple})})),t.length?`\n // file字段值重写以便编辑时正常显示附件名、点击附件名正常下载附件\n let fileFieldsKeys = ${JSON.stringify(t)};\n let fileFields = ${JSON.stringify(a)};\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 `:""}async function Ze(e,t,a){return{method:"post",url:Ee(),sendOn:"!!this.recordId",cache:100,adaptor:`\n if(payload.data.data){\n var data = payload.data.data[0];\n if(data){\n ${We(a)}\n ${Ge(a)}\n //初始化接口返回的字段移除字段值为null的字段\n for (key in data){\n if(data[key] === null){\n delete data[key];\n }\n }\n };\n payload.data = data;\n delete payload.extensions;\n }\n return payload;\n `,data:await je(e,t,a),headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}function Xe(e,t,a,n){return{method:"post",url:Ee(),data:Ie(e,t),requestAdaptor:De(a),responseData:{recordId:"${record._id}"},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 ",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}function Qe(e){return{method:"post",url:Ee(),requestAdaptor:`\n var ids = api.data.ids.split(",");\n var deleteArray = [];\n ids.forEach((id,index)=>{\n deleteArray.push(\`delete__\${index}:${e}__delete(id: "\${id}")\`);\n })\n api.data = {query: \`mutation{\${deleteArray.join(',')}}\`};\n return api;\n `,data:{ids:"${ids}"},headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}const et=async(e,t,a,r)=>{if((t=n.filter(t,{group:a})).length!=n.filter(t,["hidden",!0]).length){var i,o=[];for(const a of t){let t=a;"grid"===a.type?t=await ua(a,e):"object"===a.type&&(t=await pa(a,e)),t.name.indexOf(".")<0&&(i=await fa(t,t.readonly,r))&&o.push(i)}return a={type:"fieldSet",title:a,collapsable:!0,body:o},0<(t=n.map(n.compact(n.map(o,"visibleOn")),(e=>`(${e.substring(2,e.length-1)})`))).length&&o.length===t.length&&(a.visibleOn=`\${${t.join(" || ")}}`),a}},tt=async(e,t,a)=>{var r=(e=>{let t=[];return t.length=0,n.forEach(e.fields,((e,t)=>{n.has(e,"name")||(e.name=t)})),n.forEach(n.sortBy(e.fields,"sort_no"),(e=>{e.group&&"null"!=e.group&&"-"!=e.group||(e.group="通用");var a=e.name,n=/\w+\.\w+/.test(a);"grid"!=e.type&&"object"!=e.type||(e.is_wide=!0),n||e.hidden||t.push(Object.assign({name:a},e,{permission:{allowEdit:!0}}))})),t})(t),i=[];for(const t in n.groupBy(r,"group")){var o=await et(e,r,t,a);0<o.body.length&&i.push(o)}return i};async function at(e,t,a){return tt(e,t,a)}function nt(e){return{perPage:e.top||e.perPage||10}}async function rt(e,t){return e=(await async function(e,t){var a=[];for(const r of e){var n=await He(r,t);let e=n?"tpl":"text";r.hidden||r.extra||a.push({name:r.name,label:r.label,sortable:r.sortable,width:r.width,type:e,tpl:n,toggled:r.toggled})}return{type:"hbox",columns:a}}(e,t)).columns,{mode:"list",name:"thelist",draggable:!1,headerToolbar:["reload"],defaultParams:nt(t),syncLocation:!1,keepItemSelectionOnPageChange:!0,checkOnItemClick:!1,labelTpl:"${name}",listItem:{body:[...e],actions:!1===t.actions?null:[{icon:"fa fa-eye",label:"查看",type:"button",actionType:"link",link:Ae.getObjectDetailPath({formFactor:t.formFactor,appId:t.appId,objectName:t.tabId,listView:t.listView,recordId:"${_id}"})}]}}}const it=(...e)=>{let t={};return p(e).reverse().forEach((e=>{u(t,e,((e,t)=>o(t)?t:void 0))})),t},ot=function(e){var t,a;return"string"==typeof e&&(t=/^{{(function.+)}}$/,a=/^{{(.+=>.+)}}$/,!("string"!=typeof e||!e.match(/^{{(.+)}}$/)||e.match(t)||e.match(a)))},st=function(e,t,a,n,r={}){var i,o;if(void 0===t&&(t={}),o=function(e){return"string"!=typeof e||1===(e=e.split(".")).length?"#":(e.pop(),e.join("."))}(a),o=function(e,t){return"#"!==t&&t?"string"==typeof t?S(e,t):void console.error("path has to be a string"):e||{}}(t,o)||{},"string"!=typeof e)return e;i=e.substring(2,e.length-2),r=`\n var $user=${JSON.stringify(r)}; return `+i.replace(/\bformData\b/g,JSON.stringify(t).replace(/\bglobal\b/g,"__G_L_O_B_A_L__")).replace(/\bglobal\b/g,JSON.stringify(n)).replace(new RegExp("\\b__G_L_O_B_A_L__\\b","g"),"global").replace(/rootValue/g,JSON.stringify(o));try{return Function(r)()}catch(t){return console.log(t,e,a),e}};var lt={newRecordMode:"modal",editRecordMode:"modal",perPage:20};async function dt({type:e,pageId:t,appId:a,objectName:n="",recordId:r,formFactor:i="LARGE"}){if((e=await ve(`/api/pageSchema/${e}?app=${a}&objectApiName=${n=n||""}&recordId=${r=r||""}&pageId=${t=t||""}&formFactor=`+i))&&e.schema)return e}const ct=async(e,t)=>{let a={type:"steedos-object-form",label:"对象表单",objectApiName:"${objectName}",recordId:"",id:"u:f8ad8ddf153a",mode:"edit",layout:"normal"};return{type:"service",body:[{type:"button",label:"新建",id:"u:standard_new",level:"default",onEvent:{click:{actions:[{actionType:"dialog",dialog:{type:"dialog",data:{$master:"$$","&":"${defaultData}",appId:"${appId}",objectName:"${objectName}",context:"${context}",global:"${global}",listViewId:"${listViewId}"},title:e="新建 "+e.label,bodyClassName:"",body:[a=(t=await dt({type:"form",appId:t.appId,objectName:t.objectName,formFactor:t.formFactor}))?_.isString(t.schema)?JSON.parse(t.schema):t.schema:a],id:"u:0b96577db93c",closeOnEsc:!1,closeOnOutside:!1,showCloseButton:!0,size:"lg"}}],weight:0}}}],regions:["body"],className:"p-0 border-0",id:"u:aef99d937b10"}},pt=async(e,t)=>{let a={type:"steedos-object-form",label:"对象表单",objectApiName:"${objectName}",recordId:"${recordId}",id:"u:d2b0c083c38f",mode:"edit"};return{type:"service",body:[{type:"button",label:"编辑",id:"u:standard_edit",onEvent:{click:{actions:[{actionType:"dialog",dialog:{type:"dialog",title:e="编辑 "+e.label,bodyClassName:"",body:[a=(t=await dt({type:"form",appId:t.appId,objectName:t.objectName,formFactor:t.formFactor}))?_.isString(t.schema)?JSON.parse(t.schema):t.schema:a],id:"u:ee95697baa4f",closeOnEsc:!1,closeOnOutside:!1,showCloseButton:!0,size:"lg"}}],weight:0}}}],regions:["body"],className:"",id:"u:3c5cbc0429bb"}},ut=e=>({type:"service",className:"p-0",body:[{type:"button",label:"删除",confirmText:"确定要删除此项目?",onEvent:{click:{actions:[{args:{api:{method:"post",url:"${context.rootUrl}/graphql",data:{"&":"$$",recordId:"${recordId}",objectName:"${objectName}"},requestAdaptor:"const {recordId, objectName} = api.body; var deleteArray = []; deleteArray.push(`delete:${objectName}__delete(id: \"${recordId}\")`); api.data = {query: `mutation{${deleteArray.join(',')}}`}; return api;",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},adaptor:"\n if(payload.errors){\n payload.status = 2;\n payload.msg = payload.errors[0].message;\n }\n return payload;\n "},messages:{success:"删除成功",failed:"删除失败"}},actionType:"ajax"},{componentId:"",args:{url:"/app/${app_id}/${objectName}/grid/all",blank:!1},actionType:"link",expression:"!!!listViewId"},{componentId:"listview_"+e.name,actionType:"reload",expression:"!!listViewId"}]}}}],regions:["body"]}),mt=async(e,t)=>({type:"amis_button",amis_schema:await ct(e,t)}),ft=async(e,t)=>({type:"amis_button",amis_schema:await pt(e,t)}),yt=async(e,t)=>({type:"amis_button",amis_schema:await ut(e)}),bt=async(e,t)=>({type:"script",todo:function(){var{appId:e,objectName:t,uiSchema:a}=this,e=this.scopeId||`amis-${e}-${t}-listview`,t=(this.scope||SteedosUI?.getRef(e)).getComponentById("listview_"+a.name);console.log("listViewRef",t),_.isEmpty(t.props.store.toJSON().selectedItems)?t.handleAction({},{actionType:"toast",toast:{items:[{position:"top-right",body:"请选择要删除的项"}]}}):t.handleBulkAction(t.props.store.toJSON().selectedItems,[],{},t.props.bulkActions[0])}}),ht=async(e,t)=>({type:"amis_button",amis_schema:await{type:"service",body:[{type:"button",label:"导入数据",id:"u:import_data",onEvent:{click:{actions:[{actionType:"dialog",dialog:{data:{"&":"$$",object_name:"${objectName}"},type:"dialog",title:"导入数据",body:[{type:"form",mode:"edit",persistData:!1,promptPageLeave:!0,name:"form_edit_data_import",debug:!1,title:"",submitText:"",api:{method:"post",url:"${context.rootUrl}/graphql",data:{objectName:"queue_import_history",$:"$$"},requestAdaptor:"\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.success_count;\ndelete formData.failure_count;\ndelete formData.total_count;\ndelete formData.start_time;\ndelete formData.end_time;\ndelete formData.state;\ndelete formData.error;\ndelete formData.created;\ndelete formData.created_by;\ndelete formData.modified;\ndelete formData.modified_by;\n \n \n let fileFieldsKeys = [\"file\"];\n let fileFields = {\"file\":{\"name\":\"file\"}};\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 let query = `mutation{record: ${objectName}__insert(doc: {__saveData}){_id}}`;\n if(formData.recordId && formData.recordId !='new'){\n query = `mutation{record: ${objectName}__update(id: \"${formData._id}\", doc: {__saveData}){_id}}`;\n };\n delete formData._id;\n let __saveData = JSON.stringify(JSON.stringify(formData));\n \n api.data = {query: query.replace('{__saveData}', __saveData)};\n return api;\n ",responseData:{recordId:"${record._id}"},adaptor:"console.log('payload', payload)\n return payload;\n ",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},dataType:"json"},initFetch:!0,body:[{type:"fieldSet",title:"通用",collapsable:!0,body:[{name:"object_name",label:"导入对象",required:!1,type:"select",joinValues:!1,extractValue:!0,autoComplete:{method:"post",url:"${context.rootUrl}/graphql",data:{orderBy:"${orderBy}",orderDir:"${orderDir}",pageNo:"${page}",pageSize:"${perPage}",query:"{options:objects(filters: {__filters}, top: {__top}){_id label:label value:name},count:objects__count(filters:{__filters})}",$term:"$term",$value:"$object_name.name",$:"$$",rfield:"${object_name}"},headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},requestAdaptor:"\n var filters = '[]';\n var top = 10;\n if(api.data.$term){\n filters = '[\"name\", \"contains\", \"'+ api.data.$term +'\"]';\n }else if(api.data.$value){\n filters = '[\"_id\", \"=\", \"'+ api.data.$value +'\"]';\n }\n api.data.query = api.data.query.replace(/{__filters}/g, filters).replace('{__top}', top);\n return api;\n "},className:"m-1",labelClassName:"text-left",clearValueOnHidden:!1,id:"u:04295fee3896",multiple:!1,hidden:!0},{name:"queue_import",label:"数据导入",required:!0,type:"picker",labelField:"description",valueField:"_id",modalMode:"dialog",source:{method:"post",url:"${context.rootUrl}/graphql",data:{orderBy:"${orderBy}",orderDir:"${orderDir}",pageNo:"${page}",pageSize:"${perPage}",query:'{rows:queue_import(filters: {__filters}, top: {__top}, skip: {__skip}, sort: "{__sort}"){_id,description,object_name,encoding,template_url,_display:_ui{object_name,encoding}},count:queue_import__count(filters:{__filters})}',$term:"$term",$self:"$$"},headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},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 = [\"description\"];\n if(api.data.$term){\n filters = [[\"name\", \"contains\", \"'+ api.data.$term +'\"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n if(selfData.value?.indexOf(',') > 0){\n filters = [[\"_id\", \"=\", selfData.value.split(',')]];\n }else{\n filters = [[\"_id\", \"=\", selfData.value]];\n }\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\n const filtersFunction = function(filters, values){return ['object_name', '=', values.object_name]};\n\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data.$self.__super.__super);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\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 ",adaptor:"\n const enable_tree = undefined;\n if(enable_tree){\n const records = payload.data.rows;\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._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 _.each(records, (record)=>{\n if(!record.parent){\n treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));\n }\n });\n payload.data.rows = treeRecords;\n }\n return payload;\n "},size:"lg",pickerSchema:{mode:"table",name:"thelist",draggable:!1,headerToolbar:["reload"],defaultParams:{perPage:20},columns:[{name:"_index",type:"text",width:32,placeholder:""},{name:"description",label:"导入描述",type:"tpl",tpl:'<a href="/app/undefined/undefined/view/${undefined}">${description}</a>',className:"whitespace-nowrap",html:null},{name:"object_name",label:"导入对象",type:"tpl",tpl:'<a href="/app/undefined/${_display.object_name.objectName}/view/${_display.object_name.value}">${_display.object_name.label}</a>',className:"whitespace-nowrap",html:null},{name:"encoding",label:"字符代码",type:"tpl",tpl:"<div>${_display.encoding}</div>",className:"whitespace-nowrap",html:null},{name:"template_url",label:"导入模板",type:"markdown",className:"whitespace-nowrap",html:!0},null],syncLocation:!1,keepItemSelectionOnPageChange:!0,checkOnItemClick:!1,autoFillHeight:!1},joinValues:!1,extractValue:!0,className:"m-1",labelClassName:"text-left",clearValueOnHidden:!0,id:"u:401df27113e0"},{name:"file",label:"Excel文件",required:!0,type:"input-file",className:"m-1",labelClassName:"text-left",clearValueOnHidden:!0,useChunk:!1,receiver:{method:"post",url:"${context.rootUrl}/s3/files",data:{$:"$$",context:"${context}"},adaptor:'\n const { context } = api.body; \n var rootUrl = context.rootUrl + "/api/files/files/";\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 ',headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}},id:"u:0213f2cc365b"}],id:"u:4899c260d667"}],panelClassName:"m-0 sm:rounded-lg shadow-none",bodyClassName:"p-0",className:"p-4 sm:p-0 steedos-amis-form",label:"对象表单",objectApiName:"queue_import_history",id:"u:e4ef598eed61",onEvent:{submitSucc:{weight:0,actions:[{args:{api:{url:"${context.rootUrl}/api/data/initiateImport",method:"post",data:{eventData:"${event.data}"},dataType:"json",requestAdaptor:"\napi.data = {\n importObjectHistoryId: api.body.eventData.result.data.recordId\n}\nreturn api;",adaptor:"payload.status = payload.status === 'success' ? 0 : payload.status;\nconsole.log(\"payload ssss==>\", payload)\nreturn payload;",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}},messages:{success:"已开始导入...",failed:"导入失败"}},actionType:"ajax",expression:"event.data.result"}]}},closeDialogOnSubmit:!0}],id:"u:dc05498d3bd4",closeOnEsc:!1,closeOnOutside:!1,showCloseButton:!0,size:"lg"}}],weight:0}},level:"default"}],regions:["body"],className:"p-0",id:"u:bd2f9c4e986f"}}),gt=async(e,t)=>({type:"amis_button",amis_schema:await{type:"service",className:"p-0",body:[{type:"button",label:"查看",className:"border-none",onEvent:{click:{actions:[{componentId:"",args:{blank:!1,url:"/app/${app_id}/${objectName}/view/${_id}"},actionType:"link"}]}},id:"u:ef35c9ae1d19"}],regions:["body"]}});function _t(e){let t=e.visible;return e._visible&&(t=e._visible),(t=r.isBoolean(t)?t.toString():t)?t.trim().startsWith("function")?t+".apply({\n object: uiSchema\n }, [objectName, _id, recordPermissions, data])":t:"amis_button"===e.type&&(e=e.amis_schema)&&e.body&&0<e.body.length?e.body[0].visibleOn:void 0}const vt={standard_delete_many:function(){var{listViewId:e,uiSchema:t,scopeId:a}=this,a=SteedosUI?.getRef(a||e).getComponentById("listview_"+t.name);r.isEmpty(a.props.store.toJSON().selectedItems)?a.handleAction({},{actionType:"toast",toast:{items:[{position:"top-right",body:"请选择要删除的项"}]}}):a.handleBulkAction(a.props.store.toJSON().selectedItems,[],{},a.props.bulkActions[0])}},wt=(e,t)=>{const a=e.permissions&&e.permissions.disabled_actions;let n=r.sortBy(r.values(e.actions),"sort");return r.has(e,"allow_customActions")&&(n=r.filter(n,(t=>r.include(e.allow_customActions,t.name)))),r.has(e,"exclude_actions")&&(n=r.filter(n,(t=>!r.include(e.exclude_actions,t.name)))),r.each(n,(a=>{a.objectName=e.name,t.isMobile&&-1<["record","record_only"].indexOf(a.on)&&"standard_edit"!=a.name&&("record_only"==a.on?a.on="record_only_more":a.on="record_more")})),t.isMobile&&-1<["cms_files","cfs.files.filerecord"].indexOf(e.name)&&r.map(n,(e=>{"standard_edit"===e.name&&(e.on="record_more"),"download"===e.name&&(e.on="record")})),r.filter(n,(e=>r.indexOf(a,e.name)<0&&"standard_query"!=e.name))},$t=(e,t)=>(e=wt(e,t),r.filter(e,(e=>"list"==e.on))),Nt=(e,t)=>(e=wt(e,t),t=r.filter(e,(e=>"record"==e.on||"record_only"==e.on)),r.sortBy(t,"sort")),Ft=(e,t)=>(e=wt(e,t),t=r.filter(e,(e=>"record_more"==e.on||"record_only_more"==e.on)),r.sortBy(t,"sort")),xt=async(e,t)=>(e=wt(e,t),r.filter(e,(e=>"record"==e.on||"list_item"==e.on||"record_more"===e.on))),kt=async(e,t)=>(e=wt(e,t),r.filter(e,(e=>"list"==e.on))),St=async(e,t,a)=>{var n=await Da(e);if(n){var i=await wt(n,a);i=r.find(i,(e=>e.name===t));if(i)return"standard_edit"==i.name?{label:i.label,name:i.name,on:i.on,...await ft(n,a)}:"cms_files"!=e&&"standard_new"==i.name?{label:i.label,name:i.name,on:i.on,...await mt(n,a)}:"standard_delete"==i.name?{label:i.label,name:i.name,on:i.on,sort:i.sort,...await yt(n,a)}:n.hasImportTemplates&&"standard_import_data"===i.name?{label:i.label,name:i.name,on:i.on,sort:i.sort,...await ht(n,a)}:"standard_open_view"===i.name?{label:i.label,name:i.name,on:i.on,sort:i.sort,...await gt(n,a)}:"standard_delete_many"===i.name?{label:i.label,name:i.name,on:i.on,sort:i.sort,...await bt(n,a)}:i}},jt=(e,t)=>{if(e.todo)return r.isString(e.todo)&&r.startsWith(r.trim(e.todo),"function")&&(window.eval("var fun = "+e.todo),e.todo=fun),r.isFunction(e.todo)?(t={objectName:t.objectName,object_name:t.objectName,object:t.uiSchema,record:t.record,recordId:t.recordId,record_id:t.recordId,...t,action:e},e.todo.apply(t,[t.objectName,t.recordId])):void 0},It=jt;function Ot(e,t,a){var{icon:n,label:r}=e;const i=[];s(e.list_views,((t,a)=>{i.push({type:"button",label:t.label,actionType:"link",link:`/app/\${appId}/${e.name}/grid/`+a})}));var o=$t(e,{}),l=(o=m(o,(e=>({type:"steedos-object-button",name:e.name,objectName:e.objectName,visibleOn:_t(e),className:"button_"+e.name}))),new RegExp("_","g"));return{type:"grid",columns:[{body:[{type:"grid",columns:[{body:{type:"tpl",className:"block",tpl:`<img class="slds-icon slds-icon_container slds-icon-standard-${n&&n.replace(l,"-")} slds-page-header__icon" src="\${context.rootUrl}/unpkg.com/@salesforce-ux/design-system/assets/icons/standard/${n}.svg" />`},md:"auto",className:"",columnClassName:"flex justify-center items-center",valign:"middle"},{body:[{type:"tpl",tpl:""+r,inline:!1,wrapperComponent:"",className:"text-md leading-none text-black"},{type:"dropdown-button",className:"",label:"${uiSchema.list_views[listName].label}",rightIcon:"fa fa-caret-down",size:"sm",hideCaret:!0,btnClassName:"!bg-transparent !border-none !hover:border-none text-lg h-5 font-bold p-0 text-black leading-none",buttons:i}],md:"",columnClassName:"p-l-xs"}],className:"flex justify-between"}],md:"auto"},{body:{type:"flex",items:o},md:"auto",valign:"middle"}],className:"flex justify-between"}}async function Dt(e,t,a){var n=f(e.fields);n=y(b(m(n,(t=>e.fields[t]))),"sort_no");return await _a(e,n,a)}async function Vt(e,t,a){return[{type:"wrapper",body:[Ot(e)],className:"bg-gray-100 sm:rounded-tl sm:rounded-tr p-4 -mb-4"}]}async function Et(e,t,a){var{showRecordTitle:a=!0}=a||{},{name:n,label:r,icon:i}=e,o=Nt(e,{}),s=Ft(e,{recordId:t,objectName:n}),l=(o=m(o,(e=>({type:"steedos-object-button",name:e.name,objectName:e.objectName,visibleOn:_t(e),className:"button_"+e.name}))),s=m(s,(e=>({type:"steedos-object-button",name:e.name,objectName:e.objectName,visibleOn:_t(e)}))),s=(o.push({type:"steedos-dropdown-button",label:"",buttons:s,className:"slds-icon"}),new RegExp("_","g")),s=i&&i.replace(s,"-"),[]);a&&l.push({body:[{type:"grid",columns:[{body:{type:"tpl",className:"block",tpl:`<img class='slds-icon slds-icon_container slds-icon-standard-${s}' src='\${context.rootUrl}/unpkg.com/@salesforce-ux/design-system/assets/icons/standard/${i}.svg'>`},md:"auto",className:"",columnClassName:"flex justify-center items-center"},{body:[{type:"tpl",tpl:""+r,inline:!1,wrapperComponent:"",className:"leading-4 text-md"},{type:"tpl",tpl:"${name}",inline:!1,wrapperComponent:"",className:"leading-5 text-xl font-bold"}],columnClassName:"p-l-xs"}],className:"flex justify-between"}],md:"auto"}),l.push({body:{type:"flex",items:o},md:"auto",hiddenOn:"${recordLoaded != true}"}),a=[{type:"service",body:[{type:"wrapper",className:"bg-gray-100 border-b sm:shadow sm:rounded sm:border border-slate-300 p-4",body:[{type:"grid",columns:l,className:"flex justify-between"}],size:"xs"}],messages:{}}];return{type:"service",bodyClassName:"",name:"page",data:{"&":"$$",objectName:n,_id:t,recordPermissions:e.permissions,uiSchema:e},body:a}}async function At(e,t){var a=e.icon,n=(e=await kt(e,{}),e=m(e,(e=>({type:"steedos-object-button",name:e.name,objectName:e.objectName,visibleOn:_t(e),className:"button_"+e.name}))),new RegExp("_","g"));return{type:"wrapper",body:[{type:"grid",valign:"middle",columns:[{body:[{type:"grid",valign:"middle",className:"flex justify-between",columns:[{body:{type:"tpl",className:"block",tpl:`<img class="slds-icon_small slds-icon_container slds-icon-standard-${a&&a.replace(n,"-")}" src="\${context.rootUrl}/unpkg.com/@salesforce-ux/design-system/assets/icons/standard/${a}.svg" />`},md:"auto",className:"",columnClassName:"flex justify-center items-center"},{body:[{type:"tpl",tpl:`<a class="text-black text-base font-bold" href="/app/\${appId}/\${masterObjectName}/\${masterRecordId}/\${objectName}/grid?related_field_name=\${relatedKey}">${t}(\${$count})</a>`,inline:!1,wrapperComponent:"",className:""}],md:"",valign:"middle",columnClassName:"p-l-xs"}]}],md:"auto"},{body:{type:"flex",items:e},md:"auto"}],className:"flex justify-between"}],className:"border-b border-gray-300 p-3"}}function Tt(e,t){return"SMALL"===t?[{type:"tpl",tpl:"${count} 个项目"},{type:"reload",align:"right",className:"bg-white p-2 rounded border-gray-300 text-gray-500"}]:["bulkActions",{type:"columns-toggler",className:"hidden"},{type:"tpl",tpl:"${count} 个项目"},{type:"reload",align:"right",className:"bg-white p-2 rounded border-gray-300 text-gray-500"},{label:"",icon:"fa fa-search",type:"button",align:"right",className:"bg-white p-2 rounded border-gray-300 text-gray-500",onEvent:{click:{actions:[{actionType:"custom",script:'\n const scope = event.context.scoped;\n const filterForm = scope.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({showFieldsFilter: !!!filterService.props.data.showFieldsFilter});\n '}]}}}]}function Ct(e,t){return"SMALL"===t?["load-more"]:["statistics","pagination"]}async function Pt(e,t,a){return{title:"",submitText:"",className:"",mode:"normal",wrapWithPanel:!1,body:[await Dt(e,0,a)]}}async function qt(e,t,a){var n=a.top,i=e.paging&&!1===e.paging.enabled,o=function(e){return[{type:"button",level:"danger",label:"批量删除",actionType:"ajax",confirmText:"确定要删除吗",className:"hidden",id:"batchDelete",api:Qe(e.name)}]}(e),s={toolbar:[],bodyClassName:"",headerToolbar:Tt(0,a.formFactor),headerToolbarClassName:"px-4 py-2 border-gray-300 bg-gray-100 border-solid border-b",footerToolbar:Ct(0,a.formFactor),className:""+(a.className||"")};"SMALL"!==a.formFactor&&Object.assign(s,{filter:!!a.filterVisible&&await Pt(e,0,a),bulkActions:0!=a.bulkActions&&o}),i?(a.top=1e3,s.footerToolbar=[]):n&&(s.footerToolbar=[]);let l=null;if(o="listview_"+e.name,a.formFactor,delete(i=await Gt(t,Object.assign({idFieldName:e.idFieldName,labelFieldName:e.NAME_FIELD_KEY||"name"},a))).mode,l=Object.assign({},i,{type:"crud",primaryField:"_id",affixHeader:!1,id:o,name:o,keepItemSelectionOnPageChange:!0,api:await Zt(e,t,a),hiddenOn:a.tableHiddenOn,autoFillHeight:!1},s),(n=a.defaults)&&(i=n.listSchema||{},l=it({},i,l),t=n.headerSchema,s=n.footerSchema,t||s)){let e=[l];t&&(r.isArray(t)?e=r.union(t,e):e.unshift(t)),s&&(r.isArray(s)?e=r.union(e,s):e.push(s)),l=e}return{type:"service",className:"",id:"service_"+o,name:"page",data:{$master:"$$",objectName:e.name,_id:null,recordPermissions:e.permissions,uiSchema:e,loaded:!1},body:l}}const Lt=e=>{var t=ke();return{mode:e,user:t,spaceId:t.spaceId,userId:t.userId}};async function Bt(e,t){var{recordId:a,layout:n="normal",labelAlign:i,defaults:o}=t,s=r.values(e.fields),o=o&&o.formSchema||{},n={type:"service",className:"p-0",name:"page_edit_"+a,api:await Ze(e,a,s),initApi:null,initFetch:null,body:[it({},o,{type:"form",mode:n,labelAlign:i,persistData:!1,promptPageLeave:!0,name:"form_edit_"+a,debug:!1,title:"",submitText:"",api:await Xe(e,a,s),initFetch:"new"!=a,body:await at(s,e,t),panelClassName:"m-0 sm:rounded-lg shadow-none",bodyClassName:"p-0",className:"steedos-amis-form",onEvent:{submitSucc:{weight:0,actions:[{componentId:"steedos-record-related-list-"+e.name,actionType:"setValue",args:{value:{$count:void 0}}},{componentId:"listview_"+e.name,actionType:"reload",expression:"!!listViewId"},{actionType:"custom",script:'\n const { recordId, listViewId } = context.props.data;\n const data = event.data;\n const appId = data.appId;\n const objectName = data.objectName;\n // 在记录详细界面时isRecordDetail为true\n // TODO: isRecordDetail这个判断需要优化\n const isRecordDetail = !!data.$master && data.$master.$master?.recordId;\n if(recordId){\n // 编辑记录时,刷新主表单\n doAction({\n componentId: `detail_${recordId}`,\n actionType: "reload",\n expression: `!${listViewId}`\n });\n }\n else if(!isRecordDetail){\n // 在列表视图界面新建记录时跳转到详细页面\n const listName = event.data.listName;\n const uiSchema = event.data.uiSchema;\n const listView = uiSchema && uiSchema.list_views[listName];\n const newRecordId = data.result.data?.recordId;\n doAction({\n "args": {\n "url": "/app/" + appId + "/" + objectName + "/view/" + newRecordId,\n "blank": false\n },\n "actionType": "link"\n });\n }\n '}]}}})]};return o.id&&(n.id="service-"+o.id),n}async function Rt(e,t,a){var{layout:n="normal",labelAlign:i,formInitProps:o}=a,s=r.values(e.fields);return{type:"service",name:"page_readonly_"+t,id:"detail_"+t,data:{global:Lt("read"),context:{rootUrl:xe(),tenantId:we(),authToken:$e()}},api:await Ye(e,t,s,o),body:[{type:"form",mode:n,labelAlign:i,persistData:!1,promptPageLeave:!1,name:"form_readonly_"+t,debug:!1,title:"",data:{formData:"$$"},wrapWithPanel:!1,body:await at(m(s,(e=>(e.readonly=!0,e))),e,Object.assign({},a,{showSystemFields:!0})),className:"steedos-amis-form bg-white",actions:[],hiddenOn:"${recordLoaded != true}"}],onEvent:{fetchInited:{weight:0,actions:[{actionType:"broadcast",eventName:"recordLoaded",args:{eventName:"recordLoaded"},data:{record:"${event.data}"}},{actionType:"setValue",args:{value:{recordLoaded:!0}}}]}}}}const zt=["text","date","file","avatar","image","datetime","time","number","currency","percent","password","url","email"];function Ut(e,t,a){return t?n.includes(["text","image"],e)?"image"===e&&a&&a.multiple?"static-images":"static-"+e:"static":n.includes(zt,e)?"input-"+e:e}const Jt=(e,t)=>Ut("avatar"===e.type?"image":e.type,t,{multiple:e.multiple}),Mt=e=>{var t=e.type,a=Jt(e,!0);return _.includes(["avatar","image"],t)?{type:a,defaultImage:"",enlargeAble:!0,showToolbar:!0}:"file"===t?{type:a,tpl:`\n <% let fileData = data.${e.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 <% });} %>`}:void 0},Ht=e=>{var t=(e=>{switch(e.type){case"avatar":return"avatars";case"image":return"images";case"file":return"files"}})(e);t={type:Jt(e,!1),useChunk:!1,receiver:{method:"post",url:"${context.rootUrl}/s3/"+t,data:{$:"$$",context:"${context}"},adaptor:`\n const { context } = api.body; \n var rootUrl = context.rootUrl + "/api/files/${t}/";\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 `,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}};return e.multiple&&(t.multiple=!0,t.joinValues=!1,t.extractValue=!0),t},Kt=(e,t)=>(t?Mt:Ht)(e);function Yt(e){return{perPage:e.top||e.perPage||lt.perPage}}function Wt(e){let t=e.visible;return e._visible&&(t=e._visible),(t=O(t)?t.toString():t)?t.trim().startsWith("function")?t+"(objectName, _id, recordPermissions, data)":t:"amis_button"===e.type&&(e=e.amis_schema)&&e.body&&0<e.body.length?e.body[0].visibleOn:void 0}async function Gt(e,t){let a=[];return"SMALL"===(t=t||{}).formFactor?a=await async function(e,t){var a=[];let n={};var r=[];for(const a of e){let e="";e=(e=a.is_name||a.name===t.labelFieldName?(n=a,t.onlyDisplayLabel=!0,await He(a,t)):"avatar"===a.type||"image"===a.type||"file"===a.type?`\${_display.${a.name}.name}`:("lookup"!==a.type&&"master_detail"!==a.type||(t.onlyDisplayLabel=!0),await He(a,t)))||`\${${a.name}}`,a.hidden||a.extra||r.push({field:a,tpl:e})}e=Re(0,t);var i=function(e){let t=[],a=[],n=!1,r=!0,i="",o="flex items-center justify-between";return e.forEach((function(e){n&&t.length<2&&(t.push({type:"wrapper",body:a,size:"none",className:o}),a=[]),r?(i="steedos-listview-item-left truncate",e.field.is_wide&&(i="steedos-listview-item-wide truncate")):i="steedos-listview-item-right truncate ml-2 flex flex-shrink-0",a.push({type:"tpl",tpl:e.tpl,className:i}),n=r=!!e.field.is_wide||!r})),a.length&&t.length<2&&t.push({type:"wrapper",body:a,size:"none",className:o}),t}(r);return a.push({name:n.name,label:n.label,sortable:n.sortable,type:"button",level:"link",actionType:"link",link:e,innerClassName:"steedos-listview-item block hover:bg-gray-50 text-gray-500",body:{type:"wrapper",body:i,size:"none",className:"p-2"}}),a}(e,t):(a=await async function(e,t){var a=[{name:"_index",type:"text",width:32,placeholder:""}];for(const r of e)if(!r.is_name&&r.name!==t.labelFieldName||"cms_files"!==t.objectName)if("toggle"===r.type)a.push({type:"switch",name:r.name,label:r.label,width:r.width,toggled:r.toggled,disabled:!0,className:"whitespace-nowrap"});else if("avatar"===r.type||"image"===r.type||"file"===r.type)a.push({type:"switch",name:r.name,label:r.label,width:r.width,toggled:r.toggled,disabled:!0,className:"whitespace-nowrap",...Mt(r)});else{var n=await He(r,t);let e="text";n?e="tpl":"html"===r.type&&(e="markdown"),r.hidden||r.extra||a.push({name:r.name,label:r.label,sortable:r.sortable,width:r.width,type:e,tpl:n,toggled:r.toggled,className:"textarea"===r.type?"min-w-56 whitespace-pre-wrap textarea":"whitespace-nowrap",html:"html"===r.type||null})}else a.push({type:"button",className:"whitespace-nowrap",label:`<%=data.versions ? data.name : "${r.label}"%>`,type:"button",actionType:"ajax",api:{url:"${context.rootUrl}/api/files/files/${versions[0]}?download=true",method:"get",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},responseType:"blob",dataType:"form-data"},id:"u:6c8291d1029f",level:"link"});return a}(e,t)).push(await async function(e){e=e.buttons;const t=[];if(s(e,(e=>{O(e.visible)&&(e.visible=e.visible.toString()),t.push({type:"steedos-object-button",name:e.name,objectName:e.objectName,visibleOn:Wt(e),className:"antd-Button--default"})})),!(t.length<1))return{type:"operation",label:"操作",fixed:"right",labelClassName:"text-center",className:"text-center steedos-listview-operation w-20",buttons:[{type:"steedos-dropdown-button",label:"xxx",buttons:t,placement:"bottomRight",overlayClassName:"shadow !min-w-[160px]",trigger:["click"],id:"u:c2140a365019",onOpenApi:{url:"${context.rootUrl}/service/api/@${objectName}/recordPermissions/${_id}",method:"get",data:{$:"$$",objectName:"${objectName}",listViewId:"${listViewId}",appId:"${appId}",formFactor:"${formFactor}",context:"${context}"},responseData:{recordPermissions:"$$"},headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},adaptor:"\n payload.recordPermissions = payload;\n return payload;\n "}}]}}(t)),{mode:"table",name:"thelist",headerToolbarClassName:"py-2 px-2 border-gray-300 bg-gray-100 border-solid border-b",className:"",draggable:!1,defaultParams:Yt(t),columns:a,syncLocation:!1,keepItemSelectionOnPageChange:!0,checkOnItemClick:!1,labelTpl:`\${${t.labelFieldName}}`,autoFillHeight:!1}}async function Zt(e,t,a){const r=[];let{globalFilter:o,filter:s,filtersFunction:l,sort:d,top:c,setDataToComponentId:p=""}=a,u=(s=(s=n.isArray(s)?n.map(s,(function(e){return e.operation?[e.field,e.operation,e.value]:e})):s)||[],null);i(o)||i(s)?o?u=o:s&&(u=s):u=[o,"and",s],n.each(t,(function(e){e.searchable&&r.push(e.name)}));const m={},f=[];t.forEach((e=>{n.includes(["image","avatar","file"],e.type)&&(f.push(e.name),m[e.name]={name:e.name,type:e.type,multiple:e.multiple})}));var y=e.key_field||"_id";return(t=await Xt(e,null,t,{alias:"rows",limit:c,queryOptions:'filters: {__filters}, top: {__top}, skip: {__skip}, sort: "{__sort}"'})).data.$term="$term",t.data.$self="$$",t.data.filter="$filter",t.data.loaded="${loaded}",t.data.listViewId="${listViewId}",t.requestAdaptor=`\n let selfData = JSON.parse(JSON.stringify(api.data.$self));\n try{\n // TODO: 不应该直接在这里取localStorage,应该从外面传入\n const listViewId = api.data.listViewId;\n const listViewPropsStoreKey = location.pathname + "/crud/" + listViewId ;\n let localListViewProps = localStorage.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 = "${a.formFactor}";\n // 移动端不识别本地存储中的翻页页码,否则点击加载更多按钮后无法刷新回第一页\n api.data.pageNo = formFactor === "SMALL" ? 1 : (localListViewProps.page || 1);\n }\n }\n }\n catch(ex){\n console.error("本地存储中crud参数解析异常:", ex);\n }\n ${u?`var systemFilters = ${JSON.stringify(u)};`:"var systemFilters = [];"}\n const filtersFunction = ${l};\n if(filtersFunction){\n const _filters = filtersFunction(systemFilters, selfData);\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 : "${d}";\n var allowSearchFields = ${JSON.stringify(r)};\n if(api.data.$term){\n userFilters = [["name", "contains", "'+ api.data.$term +'"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n userFilters = [["${y.name}", "=", selfData.value]];\n }\n var searchableFilter = [];\n _.each(selfData, (value, key)=>{\n if(!_.isEmpty(value) || _.isBoolean(value)){\n if(_.startsWith(key, '__searchable__between__')){\n searchableFilter.push([\`\${key.replace("__searchable__between__", "")}\`, "between", value])\n }else if(_.startsWith(key, '__searchable__')){\n if(_.isString(value)){\n searchableFilter.push([\`\${key.replace("__searchable__", "")}\`, "contains", value])\n }else{\n searchableFilter.push([\`\${key.replace("__searchable__", "")}\`, "=", value])\n }\n }\n }\n });\n\n if(searchableFilter.length > 0){\n if(userFilters.length > 0 ){\n userFilters = [userFilters, 'and', searchableFilter];\n }else{\n userFilters = searchableFilter;\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 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 userFilters.push(keywordsFilters);\n };\n\n let filters = [];\n\n if(!_.isEmpty(systemFilters)){\n filters = systemFilters;\n }\n\n if(!_.isEmpty(userFilters)){\n if(_.isEmpty(filters)){\n filters = userFilters;\n }else{\n filters.push('and');\n filters.push(userFilters)\n }\n }\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 return api;\n `,t.adaptor=`\n const enable_tree = ${e.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(m)};\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, 'url')\n }\n }\n })\n })\n \n if(enable_tree){\n const records = payload.data.rows;\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._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 _.each(records, (record)=>{\n if(!record.parent){\n treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));\n }\n });\n payload.data.rows = treeRecords;\n }\n\n\n try{\n // TODO: 不应该直接在这里取localStorage,应该从外面传入\n const listViewId = api.body.listViewId;\n const listViewPropsStoreKey = location.pathname + "/crud/" + listViewId ;\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 = localStorage.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 selfData.page = localListViewProps.page || 1;\n }\n }\n delete selfData.context;\n delete selfData.global;\n localStorage.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 = "${p}";\n if(setDataToComponentId){\n SteedosUI.getRef(api.body.$self.scopeId)?.getComponentById(setDataToComponentId)?.setData({$count: payload.data.count})\n }\n\n return payload;\n `,t}async function Xt(e,t,a,n){return e=await Ve(e,t,a,n),{method:"post",url:Ee(),data:e,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}async function Qt(e,t){var a,n=await Ve({name:"organizations"},null,[{name:"_id",alias:"value"},{name:"name",alias:"label"},{name:"children"}],{alias:"leftOptions",filters:"{__filters}"});(a=((a=(n.query=n.query.replace(/,count\:.+/,"}"),await Ve({name:"organizations"},null,[{name:"_id",alias:"ref"}],{alias:"children",filters:"{__filters}"}))).query=a.query.replace(/,count\:.+/,"}"),n.query=n.query.replace(/}$/,","+a.query.replace(/{(.+)}/,"$1}")),await Ve({name:"space_users"},null,[{name:"user"},{name:"name"}],{alias:"defaultValueOptions",filters:"{__options_filters}"}))).query=a.query.replace(/,count\:.+/,"}"),n.query=n.query.replace(/}$/,","+a.query.replace(/{(.+)}/,"$1}"));let r=""+e.name;return t.fieldNamePrefix&&(r=""+t.fieldNamePrefix+e.name),n.$value="$"+r,n.__selectUserLoaded__="${__selectUserLoaded__}",a=`\n console.log("select user field '${e.name}' requestAdaptor api:", api);\n var filters = [['parent', '=', null]];\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters));\n var defaultValue = api.data.$value;\n var optionsFiltersOp = "${e.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 `,{method:"post",url:Ee()+`?value=\${${e.multiple?r+"|join":r}}`,requestAdaptor:a,adaptor:"\n const data = payload.data;\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 data.leftOptions = data.leftOptions.map(function (leftOption) {\n leftOption.defer = !!(leftOption.children && leftOption.children.length);\n delete leftOption.children;\n return leftOption;\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 ",data:n,sendOn:"!this.__selectUserLoaded__",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}async function ea(e,t){var a=await Ve({name:"{__object_name}"},null,[],{alias:"options",queryOptions:'filters: {__filters}, sort: "{__sort}"'});let n=e.filters;return"function"==typeof(n="string"==typeof n?(n=new Function("return "+n))():n)&&(n=n(e)),a.query=a.query.replace(/,count\:.+/,"}"),a.query=a.query.replace("{_id}","{{__fields}}"),e=`\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 = "organizations";\n fields = "value:_id,label:name,children";\n filters = [['parent', '=', dep]];\n sort = "${t.orgsSort}";\n }\n else if (ref) { \n objectName = "space_users";\n // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次\n fields = "user,name,value:user,label:name";\n filters = [['user_accepted', '=', true]];\n var defaultFilters = ${n&&JSON.stringify(n)};\n if(defaultFilters){\n filters.push(defaultFilters);\n }\n filters.push(['organizations_parents', '=', ref]);\n sort = "${t.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 `,{method:"post",url:Ee()+"?ref=${ref}&dep=${value}",requestAdaptor:e,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 ",data:a,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}async function ta(e,t){var a=await Ve({name:"space_users"},null,[{name:"user"},{name:"name"},{name:"user",alias:"value"},{name:"name",alias:"label"}],{alias:"options",queryOptions:'filters: {__filters}, sort: "{__sort}"'});e=`\n var term = api.query.term;\n var filters;\n var sort = "";\n if (term) { \n filters = [['user_accepted', '=', true]];\n var defaultFilters = ${(e=(a.query=a.query.replace(/,count\:.+/,"}"),e.filters))&&JSON.stringify(e)};\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 = "${t.usersSort}";\n }\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());\n return api;\n `;return{method:"post",url:Ee()+"?term=${term}",requestAdaptor:e,data:a,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}function aa(e){e=n.find(e.list_views,((e,t)=>"all"===t));let t="";return e?Ia(e):t}async function na(e,t,a){if(!e)return{};a=a||{};var r={type:Ut("select",t)};if(t)r.tpl=await Ue(e,a);else{t=await Da("space_users"),a.usersSort=aa(t),t=await Da("organizations"),a.orgsSort=aa(t),Object.assign(r,{labelField:"name",valueField:"user",multiple:e.multiple,searchable:e.searchable,selectMode:"associated",leftMode:"tree",extractValue:!0,clearable:!0,source:await Qt(e,a),deferApi:await ea(e,a),searchApi:await ta(e,a)}),e.multiple&&Object.assign(r,{joinValues:!1});let i=e.defaultValue;!n.has(e,"defaultValue")||n.isString(i)&&i.startsWith("{")||(n.isString(i)&&i.startsWith("{{")&&(i="$"+i.substring(1,i.length-1)),r.value=i),"boolean"!=typeof r.searchable&&(r.searchable=!0),(t=e.onEvent)&&(r.onEvent=t),a={actionType:"custom",script:'\n // 往上找到form,设置__selectUserLoaded__标记已经加载过选人字段不能再调用source接口初始化选人组件了\n const getClosestAmisComponentByType = function(scope, type){\n const re = scope.getComponents().find(function(n){\n return n.props.type === type;\n });\n if(re){\n return re;\n }\n else{\n return getClosestAmisComponentByType(scope.parent, type);\n }\n }\n const form = getClosestAmisComponentByType(event.context.scoped, "form");\n form.setData({"__selectUserLoaded__":true});\n '},r.onEvent?r.onEvent.change?.actions?.length?r.onEvent.change.actions.unshift(a):r.onEvent.change={weight:0,actions:[a]}:Object.assign(r,{onEvent:{change:{weight:0,actions:[a]}}})}return r}const ra=async e=>{let t=e.reference_to;if(t){"users"===t&&(t="space_users",e.reference_to_field="user");var a=await Da(t);let n=null,r=e.reference_to_field;return r=r||a.idFieldName||"_id",n="_id"===r?{name:"_id",label:"ID",type:"text",toggled:!1}:a.fields[r]||{name:r},{objectName:t,valueField:n,labelField:a.fields[a.NAME_FIELD_KEY||"name"],NAME_FIELD_KEY:a.NAME_FIELD_KEY||"name"}}};async function ia(e,t,a){var r=await ra(e);if(r){const s=await Da(r.objectName),l=[];let d=0;const c=[],p=[];var i=n.find(s.list_views,((e,t)=>"all"===t));i&&i.columns?n.each(i.columns,(function(e){n.isString(e)&&s.fields[e]?p.push(s.fields[e]):n.isObject(e)&&s.fields[e.field]&&p.push(Object.assign({},s.fields[e.field],{width:e.width,wrap:e.wrap}))})):n.each(s.fields,((e,t)=>{"_id"==t||e.hidden||(n.has(e,"name")||(e.name=t),p.push(e))})),n.each(n.sortBy(p,"sort_no"),(function(e){d<5&&(n.find(l,(function(t){return t.name===e.name}))||(d++,l.push(e),e.searchable&&c.push(e.name)))}));const u={[r.labelField.name]:r.labelField,[r.valueField.name]:r.valueField};n.each(l,(e=>{e.hidden||(u[e.name]=e)}));let m="";if(i&&(m=Ia(i)),(i=await sa(s,null,u,{expand:!0,alias:"rows",queryOptions:'filters: {__filters}, top: {__top}, skip: {__skip}, sort: "{__sort}"'})).url){const t=[],a=[];n.each(e.depend_on,(e=>{t.push(`depend_on_${e}=\${${e}}`),a.push("this."+e)})),0<t.length&&(i.url=i.url+"?"+t.join("&"),i.sendOn=""+a.join(" && "))}i.data.$term="$term",i.data.$self="$$",i.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 sort = orderBy ? sort : "${m}";\n var allowSearchFields = ${JSON.stringify(c)};\n if(api.data.$term){\n filters = [["name", "contains", "'+ api.data.$term +'"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n if(selfData.value?.indexOf(',') > 0){\n filters = [["${r.valueField.name}", "=", selfData.value.split(',')]];\n }else{\n filters = [["${r.valueField.name}", "=", selfData.value]];\n }\n }\n\n var searchableFilter = [];\n _.each(selfData, (value, key)=>{\n if(!_.isEmpty(value) || _.isBoolean(value)){\n if(_.startsWith(key, '__searchable__between__')){\n searchableFilter.push([\`\${key.replace("__searchable__between__", "")}\`, "between", value])\n }else if(_.startsWith(key, '__searchable__')){\n if(_.isString(value)){\n searchableFilter.push([\`\${key.replace("__searchable__", "")}\`, "contains", value])\n }else{\n searchableFilter.push([\`\${key.replace("__searchable__", "")}\`, "=", value])\n }\n }\n }\n });\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(keyValue){\n filters.push([key, "contains", keyValue]);\n }\n })\n }\n\n const filtersFunction = ${e._filtersFunction};\n\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data.$self.__super.__super);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\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 `,i.adaptor=`\n const enable_tree = ${s.enable_tree};\n if(enable_tree){\n const records = payload.data.rows;\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._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 _.each(records, (record)=>{\n if(!record.parent){\n treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));\n }\n });\n payload.data.rows = treeRecords;\n }\n return payload;\n `;let f=20,y=(s.paging&&!1===s.paging.enabled&&(f=1e3),null);"SMALL"===a.formFactor?y=await rt(l,{top:f,...a,actions:!1}):((y=await Gt(l,{labelFieldName:s.NAME_FIELD_KEY,top:f,...a})).headerToolbar=Tt(0,a.formFactor),y.footerToolbar=Ct(),!1!==a.filterVisible&&(o=a.filterLoopCount||0,o++,y.filter=await Pt(s,0,{isLookup:!0,...a,filterLoopCount:o})),y.data=Object.assign({},y.data,{"&":"$$",objectName:s.name,uiSchema:s,listName:"all",isLookup:!0}));var o={type:Ut("picker",t),labelField:r.labelField.name,valueField:r.valueField.name,modalMode:"dialog",source:i,size:"lg",pickerSchema:y,joinValues:!1,extractValue:!0};return e.multiple&&(o.multiple=!0,o.extractValue=!0),t&&(o.tpl=await Ue(e,a)),o}}async function oa(e,t,a){var r=await ra(e);let i;i=r?await sa({name:r.objectName},null,{[r.labelField.name]:Object.assign({},r.labelField,{alias:"label"}),[r.valueField.name]:Object.assign({},r.valueField,{alias:"value"})},{expand:!1,alias:"options",queryOptions:'filters: {__filters}, top: {__top}, sort: "{__sort}"'}):{method:"post",url:Ee(),data:{query:'{objects(filters: ["_id", "=", "-1"]){_id}}',$:"$$"}};var o=(o=r&&await Da(r.objectName))&&n.find(o.list_views,((e,t)=>"all"===t));let s="";if(o&&(s=Ia(o)),i.url){const t=[],a=[];n.each(e.depend_on,(e=>{t.push(`depend_on_${e}=\${${e}}`),a.push("this."+e)})),0<t.length&&(i.url=i.url+"?"+t.join("&"),i.sendOn=""+a.join(" && "))}i.data.$term="$term",i.data.$value=`$${e.name}.`+(r?r.valueField.name:"_id"),n.each(e.depend_on,(function(e){i.data[e]="$"+e})),i.data.$="$$",i.data.rfield="${object_name}",i.requestAdaptor=`\n var filters = [];\n var top = 10;\n if(api.data.$term){\n filters = [["${r?.NAME_FIELD_KEY||"name"}", "contains", api.data.$term]];\n }else if(api.data.$value){\n filters = [["_id", "=", api.data.$value]];\n }\n\n const filtersFunction = ${e._filtersFunction};\n\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data.$);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\n }\n }\n var sort = "${s}";\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', top).replace('{__sort}', sort.trim());\n return api;\n `,r&&r.labelField.name,r&&r.valueField.name,e._optionsFunction&&(i.adaptor=`\n payload.data.options = eval(${e._optionsFunction})(api.data);\n return payload;\n `),o={type:Ut("select",t),joinValues:!1,extractValue:!0,source:i,autoComplete:i,searchable:!0};let l=e.defaultValue;return!n.has(e,"defaultValue")||n.isString(e.defaultValue)&&e.defaultValue.startsWith("{")||(n.isString(l)&&l.startsWith("{{")&&(l="$"+l.substring(1,l.length-1)),o.value=l),e.multiple&&(o.multiple=!0,o.extractValue=!0),t&&(o.tpl=await Ue(e,a)),o}async function sa(e,t,a,n){return e=await Ve(e,t,a,n),{method:"post",url:Ee(),data:e,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}async function la(e,t,a){var r,i;return t?{type:Ut("picker",t),tpl:ze(e,a)}:!e.reference_to||n.isString(e.reference_to)||t?((r=await ra(e))?(i=await Da(r.objectName),"space_users"===r.objectName?da:1==i.enable_enhanced_lookup&&n.isEmpty(e.depend_on)?ia:oa):oa)(e,t,a):{type:"steedos-field-lookup",field:e,readonly:t,ctx:{}}}async function da(e,t,a){return na(e,t,a)}const ca=["created","created_by","modified","modified_by"];function pa(e,t){var a=Object.assign({subFields:[]},e);t=n.filter(t,(function(t){return t.name.startsWith(e.name+".")}));return a.subFields=t,a}function ua(e,t){var a=Object.assign({subFields:[]},e);t=n.filter(t,(function(t){return t.name.startsWith(e.name+".")}));return a.subFields=t,a}function ma(e){const t=e.data_type||"text",a=[];return n.each(e.options,(e=>{switch(t){case"number":a.push({label:e.label,value:Number(e.value)});break;case"text":a.push({label:e.label,value:String(e.value)});break;case"boolean":a.push({label:e.label,value:"false"!==e.value})}})),a}async function fa(e,t,a){if(!n.includes(ca,e.name)||1==a.showSystemFields){var r,i={name:a.fieldNamePrefix?""+a.fieldNamePrefix+e.name:e.name,label:e.label,labelRemark:e.inlineHelpText,required:(n.has(a,"required")?a:e).required};let l={};switch(e.type){case"text":l.type=Ut("text",t);break;case"textarea":l.type=Ut("textarea",t),l.tpl=`<%=(data.${e.name} || "").split("\\n").join('<br>')%>`;break;case"html":l=((e,t,a)=>t?{type:"html",name:e.name}:{type:"input-rich-text",name:e.name})(e,t);break;case"markdown":l=((e,t,a)=>t?{type:"markdown",name:e.name,options:{linkify:!0,html:!0,breaks:!0}}:{type:"group",body:[{type:"editor",name:e.name,language:"markdown"},{type:"markdown",name:e.name,options:{linkify:!0,html:!0,breaks:!0}}]})(e,t);break;case"select":l={type:Ut("select",t),joinValues:!1,options:ma(e),extractValue:!0,clearable:!0,labelField:"label",valueField:"value",tpl:t?Be(e):null};let d=e.defaultValue;!n.has(e,"defaultValue")||n.isString(e.defaultValue)&&e.defaultValue.startsWith("{")||(n.isString(d)&&d.startsWith("{{")&&(d="$"+d.substring(1,d.length-1)),r=e.data_type||"text",null!=d&&("text"===r?l.value=String(d):"number"===r?l.value=Number(d):"boolean"===r&&(l.value="false"!==d))),e.multiple&&(l.multiple=!0,l.extractValue=!0);break;case"boolean":l={type:Ut("checkbox",t),tpl:t?Je(e):null};break;case"input-date-range":l={type:"input-date-range",inputFormat:"YYYY-MM-DD",format:"YYYY-MM-DDT00:00:00.000[Z]",tpl:t?qe(e):null,joinValues:!1};break;case"date":l={type:Ut("date",t),inputFormat:"YYYY-MM-DD",format:"YYYY-MM-DDT00:00:00.000[Z]",tpl:t?qe(e):null};break;case"input-datetime-range":l={type:"input-datetime-range",inputFormat:"YYYY-MM-DD HH:mm",format:"YYYY-MM-DDTHH:mm:ss.SSSZ",tpl:t?Le(e):null,utc:!0,joinValues:!1};break;case"datetime":l={type:Ut("datetime",t),inputFormat:"YYYY-MM-DD HH:mm",format:"YYYY-MM-DDTHH:mm:ss.SSSZ",tpl:t?Le(e):null,utc:!0};break;case"input-time-range":l={type:"input-time-range",inputFormat:"HH:mm",timeFormat:"HH:mm",format:"1970-01-01THH:mm:00.000[Z]",tpl:t?Le(e):null,joinValues:!1};break;case"time":l={type:Ut("time",t),inputFormat:"HH:mm",timeFormat:"HH:mm",format:"1970-01-01THH:mm:00.000[Z]",tpl:t?Le(e):null};break;case"currency":case"number":l=t?{type:"static-tpl",tpl:Pe(e)}:{type:Ut("number",t),min:e.min,max:e.max,precision:e.scale};break;case"input-array":l=Object.assign({},e,i);break;case"input-range":l={type:"input-range",min:e.min,max:e.max,value:[0,0],multiple:!0,showInput:!0};break;case"percent":l={type:Ut("number",t),min:e.min,max:e.max,precision:e.scale};break;case"password":l={type:Ut("password",t),tpl:t?Me(e):null};break;case"lookup":case"master_detail":l=await la(e,t,a);break;case"autonumber":t&&(l={type:"static-text"});break;case"url":l={type:Ut("url",t)};break;case"email":l={type:Ut("email",t)};break;case"avatar":case"image":case"file":l=Kt(e,t);break;case"formula":case"summary":t&&(l.type=Ut(e.data_type,t));break;case"code":l={type:"editor",language:e.language,value:e.defaultValue||""};break;case"toggle":l={type:"switch",name:e.name,label:e.label,width:e.width,toggled:e.toggled,disabled:t};break;case"grid":l={type:"input-table",strictMode:!1,affixHeader:!1,editable:!t,addable:!t,removable:!t,draggable:!t,columns:[]};for(const n of e.subFields){var o=n.name.replace(e.name+".$.","").replace(e.name+".",""),s=await fa(Object.assign({},n,{name:o}),t,a);s&&(delete s.name,delete s.label,l.columns.push({name:o,label:n.label,quickEdit:!t&&s}))}}return n.isEmpty(l)?void 0:(e.is_wide||"group"===l.type?l.className="col-span-2 m-1":l.className="m-1",t&&(l.className=l.className+" md:border-b"),t&&(l.quickEdit=!1),e.visible_on&&(e.visible_on.startsWith("{{")?l.visibleOn=""+e.visible_on.substring(2,e.visible_on.length-2).replace(/formData./g,"data."):l.visibleOn=""+e.visible_on.replace(/formData./g,"data.")),"group"===l.type?(l.body[0]=Object.assign({},i,l.body[0],{labelClassName:"text-left",clearValueOnHidden:!0,fieldName:e.name}),l):Object.assign({},i,l,{labelClassName:"text-left",clearValueOnHidden:!0,fieldName:e.name}))}}async function ya(e,t,a){var n=a.filterLoopCount||0;let r=e,i=("grid"===r.type?r=await ua(e,t):"object"===e.type&&(r=await pa(e,t)),"__searchable__");if(r.name.indexOf(".")<0&&(e=c(r),h(["textarea","html","code","autonumber"],r.type)&&(e.type="text"),"number"!==r.type&&"currency"!==r.type||(e.type="input-array",e.inline=!0,e.addable=!1,e.removable=!1,e.value=[null,null],e.items={type:"input-number"},e.is_wide=!0,i+="between__"),"date"===r.type&&(e.type="input-date-range",e.is_wide=!0,i+="between__"),"datetime"===r.type&&(e.type="input-datetime-range",e.is_wide=!0,i+="between__"),"time"===r.type&&(e.type="input-time-range",e.is_wide=!0,i+="between__"),"users"===r.reference_to&&(e.reference_to="space_users",e.reference_to_field="user"),e.readonly=!1,e.disabled=!1,e.multiple=!0,e.is_wide=!1,e.defaultValue=void 0,t=await fa(e,!1,Object.assign({},a,{fieldNamePrefix:i,required:!1,showSystemFields:!0,filterVisible:n<5}))))return t}var ba=Object.freeze({__proto__:null,OMIT_FIELDS:ca,getBaseFields:function(e){let t="m-1";return[{name:"createdInfo",label:"创建人",type:"static",labelClassName:"text-left",className:t=e?""+t:t,tpl:Te()},{name:"modifiedInfo",label:"修改人",type:"static",labelClassName:"text-left",className:t,tpl:Ce()}]},getAmisFieldType:function(e){switch(e.type){case"text":case"autonumber":return"text";case"textarea":return"textarea";case"html":return"html";case"markdown":return"markdown";case"select":case"lookup":return"select";case"boolean":return"checkbox";case"date":return"date";case"datetime":return"datetime";case"number":case"currency":case"percent":return"number";case"password":return"password";case"master_detail":return"picker";case"url":return"url";case"email":return"email";case"image":return"image";case"formula":case"summary":break;case"grid":return"table";default:console.log("convertData default",e.type)}},getObjectFieldSubFields:pa,getGridFieldSubFields:ua,getPermissionFields:function(e,t){const a=[],r=[];return n.each(e.fields,((e,t)=>{n.has(e,"name")||(e.name=t),r.push(e)})),n.each(n.sortBy(r,"sort_no"),(function(e){e.hidden||a.push(Object.assign({},e,{permission:{allowEdit:!0}}))})),a},getSelectFieldOptions:ma,convertSFieldToAmisField:fa,getFieldSearchable:ya,getAmisStaticFieldType:Ut});async function ha(e){return{type:"button",label:"",icon:"fa fa-search",className:"bg-white p-2 rounded border-gray-300 text-gray-500",onEvent:{click:{actions:[{actionType:"broadcast",args:{eventName:"broadcast_toggle_fields_filter"}}]}}}}async function ga(e,t,a){a=a||{};var n,r,i=[];for(n of t)h(["grid","avatar","image","object","[object]","[Object]","[grid]","[text]","audio","file"],n.type)||(delete n.defaultValue,delete n.required,delete n.is_wide,delete n.readonly,delete n.hidden,delete n.omit,(r=await ya(n,t,a))&&i.push(r));return m(i,"name"),a.enableSearchableFieldsVisibleOn&&i.forEach((function(e){e.visibleOn=`this.filterFormSearchableFields && this.filterFormSearchableFields.indexOf("${e.fieldName}") > -1`})),{title:"",type:"form",name:"listview-filter-form",id:"listview_filter_form_"+e.name,mode:"normal",wrapWithPanel:!1,className:"sm:grid sm:gap-2 sm:grid-cols-4 mb-2",data:{"&":"${filterFormValues || {}}",...a.initData},body:i}}async function _a(e,t,a){return a=a||{},t=await ga(e,t,Object.assign({},{enableSearchableFieldsVisibleOn:!0},a)),{type:"service",name:"service_listview_filter_form",data:{},id:"service_listview_filter_form_"+e.name,dataProvider:{inited:'\n const objectName = data.objectName;\n const isLookup = data.isLookup;\n const listViewId = data.listViewId;\n let searchableFieldsStoreKey = location.pathname + "/searchable_fields/";\n if(isLookup){\n searchableFieldsStoreKey += "lookup/" + objectName;\n }\n else{\n searchableFieldsStoreKey += listViewId;\n }\n let defaultSearchableFields = localStorage.getItem(searchableFieldsStoreKey);\n if(!defaultSearchableFields && data.uiSchema){\n let listView = data.uiSchema.list_views[data.listName];\n defaultSearchableFields = listView && listView.searchable_fields;\n if(defaultSearchableFields && defaultSearchableFields.length){\n defaultSearchableFields = _.map(defaultSearchableFields, \'field\');\n }\n }\n if(_.isEmpty(defaultSearchableFields) && data.uiSchema){\n defaultSearchableFields = _.map(\n _.filter(_.values(data.uiSchema.fields), (field) => {\n return field.searchable;\n }),\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/" + data.listViewId ;\n let localListViewProps = localStorage.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 setData({ showFieldsFilter: true });\n }\n }\n }\n }\n '},body:{type:"wrapper",body:{type:"wrapper",body:[{type:"wrapper",body:[t],size:"xs",visibleOn:"this.filterFormSearchableFields && this.filterFormSearchableFields.length",className:"slds-filters__body p-0"},{type:"wrapper",body:{type:"wrapper",body:[{type:"button",label:"搜索",icon:"fa fa-search",visibleOn:"this.filterFormSearchableFields && this.filterFormSearchableFields.length",onEvent:{click:{actions:[{actionType:"custom",script:'\n const scope = event.context.scoped;\n var filterForm = scope.getComponents().find(function(n){\n return n.props.type === "form";\n });\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] = "";\n }\n }\n listView.handleFilterSubmit(Object.assign({}, removedValues, filterFormValues));\n '}]}}},{type:"button",label:"设置搜索项",onEvent:{click:{actions:[{actionType:"dialog",dialog:{type:"dialog",size:"md",title:"设置搜索项",body:[{type:"form",title:"",body:[{label:"",type:"transfer",name:"fields",id:"u:92c0b3cccca0",source:{method:"get",url:"${context.rootUrl}/service/api/amis-metadata-objects/objects/${objectName}/fields/options",dataType:"json",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},data:null,requestAdaptor:"",adaptor:""},options:[],required:!0,placeholder:"-",className:"col-span-2 m-0",checkAll:!1,searchable:!0,sortable:!0,joinValues:!1,extractValue:!0,multiple:!0}],id:"u:e5ac506d5683",mode:"normal",persistData:!1,promptPageLeave:!0,name:"form",debug:!1,actions:[],panelClassName:"m-0",bodyClassName:"p-4",className:"steedos-amis-form"}],id:"u:ca99fa9fe1b1",actions:[{type:"button",label:"取消",onEvent:{click:{actions:[{componentId:"",args:{},actionType:"closeDialog"}]}},id:"u:4e447b5ca72a"},{type:"button",label:"确认",onEvent:{click:{actions:[{actionType:"custom",script:'\n const data = context.props.data;\n const listName = data.listName;\n const objectName = data.objectName;\n const isLookup = data.isLookup;\n const listViewId = data.listViewId;\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 else{\n searchableFieldsStoreKey += listViewId;\n }\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] = "";\n });\n filterForm.setValues(removedValues);//这里使用filterInnerForm也可以\n\n if(isLookup){\n return;\n }\n \n // 列表视图crud支持本地缓存,所以需要进一步清除浏览器本地缓存里面用户在可搜索项中移除的字段值\n const listViewPropsStoreKey = location.pathname + "/crud/" + listViewId ;\n let localListViewProps = localStorage.getItem(listViewPropsStoreKey);\n if(localListViewProps){\n localListViewProps = JSON.parse(localListViewProps);\n // const removedValues = {};\n removedKeys.forEach(function(key){\n delete localListViewProps[key];\n // removedValues[key] = "";\n });\n localStorage.setItem(listViewPropsStoreKey, JSON.stringify(localListViewProps));\n }\n // ===END===\n '},{componentId:"",args:{},actionType:"closeDrawer"}]}},id:"u:14e7388fecd3",level:"primary"}],closeOnEsc:!1,closeOnOutside:!1,showCloseButton:!0,data:{"&":"$$",objectName:"${objectName}",listName:"${listName}",listViewId:"${listViewId}",uiSchema:"${uiSchema}",isLookup:"${isLookup}",context:"${context}",fields:"${filterFormSearchableFields}"}}}]}},id:"u:b96d84868a5a",level:"link"}],size:"xs",className:"space-x-4"},size:"xs",className:"slds-filters__footer slds-grid slds-shrink-none flex justify-between p-0"}],size:"xs",className:"slds-filters"},size:"xs",className:"border-gray-300 border-y slds-grid slds-grid_vertical slds-nowrap "+(!a.isLookup&&"mt-2"),visibleOn:"this.showFieldsFilter"},className:"bg-white"}}const va={startDateExpr:"start",endDateExpr:"end",allDayExpr:"is_all_day",textExpr:"name"};function wa(e,t){return e=function(e,t,a){return e=function(e,t,a){let n="",r=(t&&(n=`(filters:["${e.idFieldName}", "=", "${t}"])`),"data"),i=(a&&(a.alias&&(r=a.alias),a.filters&&(n=`(filters:${a.filters})`),a.queryOptions&&(n=`(${a.queryOptions})`)),"\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 ");return a?.fields&&a.fields.length&&(i=`\n recordPermissions: _permissions{\n ${a.fields.join(",")}\n }\n `),{query:`{${r}:${e.name}${n}{${e.idFieldName},${i}}}`}}(e,t,a),{method:"post",url:Ee(),data:e,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}(e,t,{alias:"rows",limit:1,fields:["allowEdit"]}),e.data.$self="$$",e.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 ",e}async function $a(e,t,a){var n=e.permissions,o=(a=a||{},(t=Object.assign({},va,j(t,I))).title||[t.startDateExpr,t.endDateExpr,t.allDayExpr,t.textExpr]);let l=[],d=(s(o,(function(t){e.fields[t]&&l.push(e.fields[t])})),e.fields[t.allDayExpr]&&l.push(e.fields[t.allDayExpr]),a.sort||(o=a.sortField,a.sortOrder),t.currentView);if(d)switch(d){case"day":case"agenda":d="timeGridDay";break;case"week":d="timeGridWeek";break;case"month":d="dayGridMonth"}else d="timeGridWeek";a.calendarOptions=t;o=await async function(e,t,a){var n=(a=a||{}).calendarOptions;const i=[];let{globalFilter:o,filter:s,sort:l,top:d,setDataToComponentId:c=""}=a;d=d||200,s=(s=r.isArray(s)?r.map(s,(function(e){return e.operation?[e.field,e.operation,e.value]:e})):s)||[],r.each(t,(function(e){e.searchable&&i.push(e.name)})),a=e.idFieldName||"_id";var p=e.key_field||"_id";return(e=await Xt(e,null,t,{alias:"rows",limit:d,queryOptions:'filters: {__filters}, top: {__top}, skip: {__skip}, sort: "{__sort}"'})).data.$term="$term",e.data.$self="$$",e.data.filter="$filter",e.data.pageSize=d||10,e.requestAdaptor=`\n let selfData = JSON.parse(JSON.stringify(api.data.$self));\n ${o?`var filters = ${JSON.stringify(o)};`:"var filters = [];"}\n if(_.isEmpty(filters)){\n filters = api.data.filter || ${JSON.stringify(s)};\n }else{\n filters = [filters, 'and', api.data.filter || ${JSON.stringify(s)}]\n }\n const eventFetchInfo = selfData.fetchInfo;\n const startDateExpr = "${n.startDateExpr}";\n const endDateExpr = "${n.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 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 : "${l}";\n var allowSearchFields = ${JSON.stringify(i)};\n if(api.data.$term){\n filters = [["name", "contains", "'+ api.data.$term +'"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n filters = [["${p.name}", "=", selfData.value]];\n }\n var searchableFilter = [];\n _.each(selfData, (value, key)=>{\n if(!_.isEmpty(value) || _.isBoolean(value)){\n if(_.startsWith(key, '__searchable__between__')){\n searchableFilter.push([\`\${key.replace("__searchable__between__", "")}\`, "between", value])\n }else if(_.startsWith(key, '__searchable__')){\n if(_.isString(value)){\n searchableFilter.push([\`\${key.replace("__searchable__", "")}\`, "contains", value])\n }else{\n searchableFilter.push([\`\${key.replace("__searchable__", "")}\`, "=", value])\n }\n }\n }\n });\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 `,e.adaptor=`\n window.postMessage(Object.assign({type: "listview.loaded"}), "*");\n const setDataToComponentId = "${c}";\n if(setDataToComponentId){\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["${a}"],\n title: n["${n.textExpr}"],\n start: n["${n.startDateExpr}"],\n end: n["${n.endDateExpr}"],\n allDay: n["${n.allDayExpr}"]\n }\n });\n const successCallback = selfData.successCallback;\n const failureCallback = selfData.failureCallback;\n successCallback(events);\n return payload;\n `,e}(e,l,a),a=`\n const api = ${JSON.stringify(o)};\n event.data.calendarOptions = ${JSON.stringify(t)};\n doAction({\n "actionType": 'ajax',\n "args": {\n "api": api\n },\n });\n `,o=`\n const data = event.data;\n const doc = {};\n doc["${t.startDateExpr}"] = data.start;\n doc["${t.endDateExpr}"] = data.end;\n doc["${t.allDayExpr}"] = data.allDay;\n doc["${t.textExpr}"] = data.title;\n // ObjectForm会认作用域下的变量值\n // TODO: 待组件支持initValues属性后应该改掉,不应该通过data直接传值\n // TODO: 全天事件属性传入doc了但是没有生效,需要手动在ObjectForm中勾选全天事件\n event.data = doc;\n const title = "新建 ${e.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 "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 `;var c=wa(e,"${event.id}"),p=function(e,t){var a={},n=e.idFieldName||"_id";return a[n]="${event.data.event.id}",e=e.NAME_FIELD_KEY||"name",a[e]="${event.data.event.title}",a[t.startDateExpr]="${event.data.event.start}",a[t.endDateExpr]="${event.data.event.end}",a[t.allDayExpr]="${event.data.event.allDay}",e={objectName:"${objectName}",$:a,$self:"$$"},t=`\n \n const formData = api.data.$;\n const objectName = api.data.objectName;\n let query = \`mutation{record: \${objectName}__update(id: "\${formData.${n}}", doc: {__saveData}){${n}}}\`;\n delete formData.${n};\n let __saveData = JSON.stringify(JSON.stringify(formData));\n \n api.data.query = query.replace('{__saveData}', __saveData);\n return api;\n `,{method:"post",url:Ee(),data:e,requestAdaptor:t,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 ",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}(e,t),u={daysOfWeek:[1,2,3,4,5],startTime:"08:00",endTime:"18:00"};return t=(i(t.startDayHour)||(u.startTime=t.startDayHour+":00"),i(t.endDayHour)||(u.endTime=t.endDayHour+":00"),{type:"steedos-fullcalendar",label:"",name:"fullcalendar",editable:n.allowEdit,selectable:n.allowCreate,selectMirror:n.allowCreate,initialView:d,businessHours:u,onEvent:{getEvents:{weight:0,actions:[{componentId:"",args:{},actionType:"custom",script:a}]},select:{weight:0,actions:[{componentId:"",args:{},actionType:"custom",script:o}]},eventClick:{weight:0,actions:[{componentId:"",args:{},actionType:"custom",script:'\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": "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 '}]},eventAdd:{weight:0,actions:[{componentId:"",args:{},actionType:"custom",script:"console.log('eventAdd'); console.log(event);"}]},eventChange:{weight:0,actions:[{actionType:"ajax",args:{api:c}},{actionType:"toast",expression:"!event.data.editable",args:{msgType:"error",msg:"您没有编辑该记录的权限!",position:"top-center"}},{actionType:"ajax",expression:"event.data.editable",args:{api:p,messages:{success:e.label+"修改成功",failed:e.label+"修改失败!"}}}]},eventRemove:{weight:0,actions:[{componentId:"",args:{},actionType:"custom",script:"console.log('eventRemove'); console.log(event);"}]},eventsSet:{weight:0,actions:[{componentId:"",args:{},actionType:"custom",script:"console.log('eventsSet'); console.log(event);"}]}}})}const Na=(e,t,a)=>{e=e.replace(/\./g,"_"),a=(e=>{const t=["_id"];return e.push("record_permissions"),s(e,(e=>{-1<e.indexOf(".")&&(e=e.split(".")[0]),t.push(""+e)})),""+t.join(" ")})(a);let n="";return`{record:${e}__findOne${n=0<(t=[`id: "${t}"`]).length?`(${t.join(",")})`:n}{${a}}}`},Fa=async(e,t,a)=>(await ve("/graphql",{method:"post",body:JSON.stringify({query:Na(e,t,a)})})).data.record;let xa,ka={};const Sa=("undefined"!=typeof window&&(window.UI_SCHEMA_CACHE||(window.UI_SCHEMA_CACHE=ka),ka=window.UI_SCHEMA_CACHE),(e,t)=>{ka[e]=t});function ja(e,t){return"SMALL"===t?i(e.mobile_columns)?g(e.columns,0,4):e.mobile_columns:e.columns}function Ia(e){let t="";return e&&e.sort&&e.sort.length&&s(e.sort,(function(e,a){var n;o(e)?(n=e[0]+" "+(e[1]||""),t+=n=0<a?","+n:n):(n=e.field_name+" "+e.order,t+=n=0<a?","+n:n)})),t}function Oa(e){if(e){var t=Fe();let a=e.filters;return"mine"===e.filter_scope&&(r.isEmpty(a)?a=[["owner","=",t]]:a.push(["owner","=",t])),a}}async function Da(e,t){if(e){if(!(e=>v(ka,e))(e)||t){let a=null;try{if(!(a=xa?await xa(e,t):await ve(`/service/api/@${e.replace(/\./g,"_")}/uiSchema`,{method:"get"})))return;Sa(e,a),s(a.list_views,((e,t)=>{e.name=t,v(e,"columns")||(e.columns=a.list_views.all.columns)}))}catch(t){console.error("getUISchema",e,t),Sa(e,null)}}return(e=>c(ka[e]))(e)}}async function Va(e,t){return(await Da(e))?.fields[t]}async function Ea(e,t){return{uiSchema:e=await Da(e),amisSchema:await Bt(e,t)}}async function Aa(e,t,a){return{uiSchema:e=await Da(e),amisSchema:await Rt(e,t,a)}}async function Ta(e,t,a,n={}){var r=await Da(t),i=l(r.list_views,((e,t)=>t===(a=a||t)||e._id===a));if(!i)return{uiSchema:r};if(i.enable_amis_schema&&i.amis_schema){return{uiSchema:r,isCustomAmisSchema:!0,amisSchema:w(i.amis_schema)?JSON.parse(i.amis_schema):i.amis_schema}}var o=ja(i,n.formFactor),s=Ia(i),d=Oa(i),c=i&&i._filters;if("calendar"===i.type){return{uiSchema:r,isCalendar:!0,amisSchema:{type:"steedos-object-calendar",objectApiName:t,filters:d,filtersFunction:c,sort:s,...i.options}}}var p=n.defaults||{};!p.headerSchema&&n.showHeader&&(p.headerSchema=await Vt(r)),n.showHeader||(p.headerSchema=null);try{var u,m=location.pathname+"/crud/"+n.listViewId,f=localStorage.getItem(m);f&&(f=JSON.parse(f),u={},f.orderBy&&(u.orderBy=f.orderBy),f.orderDir&&(u.orderDir=f.orderDir),f.perPage&&(u.defaultParams={perPage:f.perPage}),p.listSchema=$({},u,p.listSchema||{}))}catch(e){console.error("本地存储中crud参数解析异常:",e)}n.defaults=p;return{uiSchema:r,amisSchema:{type:"steedos-object-table",objectApiName:t,columns:o,extraColumns:i.extra_columns,filters:d,filtersFunction:c,sort:s,ctx:n}}}async function Ca(e,t,a,n={}){const r=await Da(t);let i=n.sort;i||(l=n.sortField,d=n.sortOrder,l&&(i=l+" "+d||"asc"));let o=[];s(a,(function(e){w(e)&&r.fields[e]?o.push(r.fields[e]):N(e)&&r.fields[e.field]&&o.push(Object.assign({},r.fields[e.field],{width:e.width,wrap:e.wrap}))}));var l=n.extraColumns,d=(l&&s(l,(function(e){w(e)?o.push({extra:!0,name:e}):N(e)&&o.push({extra:!0,name:e.field})})),await qt(r,o,{tabId:t,appId:e,objectName:t,...n,filter:n.filters,sort:i,buttons:await xt(r,n)}));return{uiSchema:r,amisSchema:d}}async function Pa(e,t,a,n={}){var r=await Da(t);return{uiSchema:r,amisSchema:await $a(r,a,{tabId:t,appId:e,objectName:t,...n})}}async function qa(e,t,a){return{uiSchema:e=await Da(e),amisSchema:await Et(e,t,a)}}async function La(e,t){return{uiSchema:e=await Da(e),amisSchema:{type:"service",body:[{type:"steedos-record-detail-header",label:"标题面板",objectApiName:"${objectName}",recordId:"${recordId}",id:"u:48d2c28eb755",onEvent:{recordLoaded:{actions:[{actionType:"reload",data:{name:`\${record.${e?.NAME_FIELD_KEY||"name"}}`,record:"${record}",recordLoaded:!0}}]}}},{type:"tabs",className:"sm:mt-3 bg-white sm:shadow sm:rounded sm:border border-slate-300 p-4",tabs:[{title:"详细",className:"px-0 py-4",body:[{type:"steedos-object-form",label:"对象表单",objectApiName:"${objectName}",recordId:"${recordId}",id:"u:d4a495811d57",appId:t}],id:"u:5d4e7e3f6ecc"},{title:"相关",className:"px-0 pt-4",body:[{type:"steedos-object-related-lists",label:"相关列表",objectApiName:"${objectName}",recordId:"${recordId}",id:"u:3b85b7b7a7f6",appId:t}],id:"u:1a0326aeec2b"}],id:"u:a649e4094a12"}]}}}async function Ba(e,t,a,n){var r=await Da(t),o=[],s=[].concat(r.related_lists||[]);if(i(s))for(const i of[].concat(r.details||[])){var d=i.split("."),c=await Da(d[0]);if(c){let r=null;var p=await Va(d[0],d[1]);r=p._reference_to||p.reference_to&&!w(p.reference_to)?[[d[1]+"/o","=",t],[d[1]+"/ids","=",a]]:[""+d[1],"=",a],o.push({masterObjectName:t,object_name:d[0],foreign_key:d[1],schema:await Ta(e,d[0],"all",{globalFilter:r,formFactor:n,buttons:await xt(c,{isMobile:!1})})})}}else for(const r of s){var u=r.related_field_fullname.split(".");let i=null;var m=await Va(u[0],u[1]);if(m){i=m._reference_to||m.reference_to&&!w(m.reference_to)?[[u[1]+"/o","=",t],[u[1]+"/ids","=",a]]:[""+u[1],"=",a];const s=await Da(u[0]);if(s){let a=[];F(r.field_names,(e=>{var t=l(s.fields,(t=>t.name===e));t&&a.push(t)})),o.push({masterObjectName:t,object_name:u[0],foreign_key:u[1],label:r.label,schema:{uiSchema:s,amisSchema:await qt(s,a,{tabId:t,appId:e,objectName:u[0],formFactor:n,globalFilter:i,buttons:await xt(s,{isMobile:!1})})}})}}}return o}const Ra=(e,t,a,n)=>(a=l(a.fields,(e=>n===e?.name)),w(a.reference_to)?a.multiple?[t]:t:{o:e,ids:[t]});async function za(e,t,a,n){var r=await Da(t),o=[],s=[].concat(r.related_lists||[]);if(i(s))for(const i of[].concat(r.details||[])){var d,c,p=i.split("."),u=await Da(p[0]);u&&(((d=await Va(p[0],p[1]))._reference_to||d.reference_to&&!w(d.reference_to))&&p[1],p[1],c=(d=await Ta(e,p[0],"all",{formFactor:n,buttons:await xt(u,{isMobile:!1})})).amisSchema,u=await At(u),c.headerSchema=u,c.headerToolbar=[],c.columnsTogglable=!1,delete c.ctx,d.amisSchema={type:"service",className:"b-a m-b",data:{masterObjectName:t,masterRecordId:"${recordId}",relatedKey:p[1],objectName:p[0],listViewId:`amis-\${appId}-${p[0]}-listview`},body:[{...c,data:{filter:["${relatedKey}","=","${masterRecordId}"],objectName:"${objectName}",recordId:"${masterRecordId}",defaultData:{[p[1]]:Ra(t,a,d.uiSchema,p[1])}}}]},o.push({masterObjectName:t,object_name:p[0],foreign_key:p[1],schema:d}))}else for(const r of s){var m=r.related_field_fullname.split(".");let i=null;var f=await Va(m[0],m[1]);if(f){i=f._reference_to||f.reference_to&&!w(f.reference_to)?[[m[1]+"/o","=",t],[m[1]+"/ids","=",a]]:[""+m[1],"=",a];const s=await Da(m[0]);if(s){let a=[];F(r.field_names,(e=>{var t=l(s.fields,(t=>t.name===e));t&&a.push(t)})),o.push({masterObjectName:t,object_name:m[0],foreign_key:m[1],schema:{uiSchema:s,amisSchema:await qt(s,a,{tabId:t,appId:e,objectName:m[0],formFactor:n,globalFilter:i,buttons:await xt(s,{isMobile:!1})})}})}}}return o}async function Ua(e,t,a,n,r,i,o,s,l,d){var c=await Da(a),{list_views:p,label:u,fields:m}=c,u=(l=l||u,f(p)[0]);let y=null;p=await Va(a,n=n||x(m,(function(t){return-1<["lookup","master_detail"].indexOf(t.type)&&t.reference_to===e})));let b=t;return p.reference_to_field&&"_id"!=p.reference_to_field&&(b=(m=await Fa(e,t,[p.reference_to_field]))[p.reference_to_field]),y=p._reference_to||p.reference_to&&!w(p.reference_to)?[[n+"/o","=",e],[n+"/ids","=",b]]:[""+n,"=",b],t=await At(c,l),m="steedos-record-related-list-"+a,p=(await Ta(null,a,u,{globalFilter:y,defaults:{listSchema:{headerToolbar:[],columnsTogglable:!1},headerSchema:t},showHeader:!0,top:r,perPage:i,setDataToComponentId:m,tableHiddenOn:o?"this.$count === 0":null,appId:s})).amisSchema,{uiSchema:c,amisSchema:{type:"service",id:m,className:"steedos-record-related-list sm:rounded sm:border border-slate-300 bg-gray-100 mb-4 "+d,data:{"&":"$$",appId:"${appId}",app_id:"${appId}",masterObjectName:e,masterRecordId:"${recordId}",relatedKey:n,objectName:a,listViewId:`amis-\${appId}-${a}-listview`},body:[{...p,data:{"&":"$$",appId:"${appId}",app_id:"${appId}",relatedKey:n,objectName:"${objectName}",recordId:"${masterRecordId}",defaultData:{[n]:Ra(e,b,c,n)}}}]}}}const Ja={};async function Ma(e,t,a){return{type:"picker",label:"人员",name:t,id:a.id,modalMode:"dialog",joinValues:!1,source:{method:"post",url:"${context.rootUrl}/graphql",data:{orderBy:"${orderBy}",orderDir:"${orderDir}",pageNo:"${page}",pageSize:"${perPage}",query:'{rows:space_users(filters: {__filters}, top: {__top}, skip: {__skip}, sort: "{__sort}"){_id,name,email,mobile},count:space_users__count(filters:{__filters})}',$term:"$term",$self:"$$"},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 "},pickerSchema:{mode:"table",name:"thelist",draggable:!1,headerToolbar:["switch-per-page","pagination"],defaultParams:{perPage:50},columns:[{name:"_index",type:"text",width:32,placeholder:""},{name:"_id",label:"ID",type:"text",toggled:!1},{name:"name",label:"姓名",sortable:!0,searchable:!0,type:"text"},{name:"email",label:"邮件",sortable:!0,type:"text",searchable:!0},{name:"mobile",label:"手机",type:"text",sortable:!0,searchable:!0}],syncLocation:!1,keepItemSelectionOnPageChange:!0},labelField:"name",valueField:"_id",size:"lg",extractValue:!0,className:"m-0",labelClassName:"text-left"}}const Ha=["last_year","this_year","next_year","last_quarter","this_quarter","next_quarter","last_month","this_month","next_month","last_week","this_week","next_week","yestday","today","tomorrow","last_7_days","last_30_days","last_60_days","last_90_days","last_120_days","next_7_days","next_30_days","next_60_days","next_90_days","next_120_days"],Ka={equal:"=",not_equal:"!=",less:"<",less_or_equal:"<=",greater:">",greater_or_equal:">=",between:"between",not_between:"not_between",is_empty:"is_empty",is_not_empty:"is_not_empty",select_equals:"=",select_not_equals:"!=",select_any_in:"in",select_not_any_in:"<>",like:"contains",not_like:"notcontains",starts_with:"startswith",ends_with:"endswith"},Ya=e=>{const t=[],{conjunction:a,children:n}=e;return a&&n&&n.forEach((e=>{var n;0<t.length&&t.push(a),(e=>_.has(e,"conjunction"))(e)?(n=Ya(e))&&0<n.length&&t.push(n):(n=Wa(e))&&t.push(n)})),t},Wa=e=>{var t,{left:e,op:a,right:n}=e;if(e&&"field"===e.type&&a)return a.startsWith("between:")?(t=a.split(":"),[e.field,t[0],t[1]]):null!=n?[e.field,Ka[a],n]:void 0},Ga=e=>!r.isArray(e)&&r.isObject(e)?[e.field,e.operation,e.value]:e,Za=e=>{e=Ga(e);const t={conjunction:"and",children:[]};return e&&0!=e.length&&e.forEach((e=>{"or"===(e=Ga(e))||"and"===e?t.conjunction=e:3===e.length&&-1==e.indexOf("and")&&-1==e.indexOf("or")?t.children.push((e=>{var t;if(3===e.length)return"between"===(t=r.findKey(Ka,(t=>t===e[1])))&&r.includes(Ha,e[2])?{left:{type:"field",field:e[0]},op:t+":"+e[2]}:{left:{type:"field",field:e[0]},op:t,right:e[2]};console.warn("无效的filter:"+JSON.stringify(e))})(e)):t.children.push(Za(e))})),t},Xa=e=>Ya(e),Qa=e=>{const t=[];return s(e.options.split("\n"),(e=>{var a=e.split(":");2==a.length?t.push({label:a[0],value:a[1]}):t.push({label:e,value:e})})),t},en=(e,t)=>{const a={label:!0===t&&e.name,name:e.code,mode:"horizontal",className:"m-none p-none",disabled:"readonly"===e.permission};switch(e.type){case"input":e.is_textarea?a.type="textarea":a.type="input-text";break;case"number":a.type="input-number";break;case"date":a.type="input-date";break;case"dateTime":a.type="input-datetime";break;case"checkbox":a.type="checkbox";break;case"email":a.type="input-email",a.validations={isEmail:!0};break;case"url":a.type="input-url",a.validations={isUrl:!0};break;case"password":a.type="input-password",a.showCounter=!0;break;case"select":a.type="select",a.options=Qa(e);break;case"user":case"group":case"section":a.type="input-text";break;case"radio":a.type="radios",a.options=Qa(e);break;case"multiSelect":a.type="checkboxes",a.options=Qa(e);break;case"odata":var n=e.formula.substr(1,e.formula.length-2);a.type="select",a.multiple=e.is_multiselect,a.labelField=n,a.valueField="$$",a.source={url:D(e.url,"http")?e.url:"${context.rootUrl}"+e.url,method:"get",dataType:"json",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}};break;case"html":a.type="html";break;case"table":a.type="input-table",a.addable="readonly"!=e.permission,a.editable=a.addable,a.copyable=a.addable,a.columns=[],s(e.sfields,(e=>{"hidden"!=e.type&&a.columns.push(en(e,!0))}))}return a},tn=e=>{const t=[];return s(e,(a=>{"table"!=a.type&&t.push((e=>({className:"td-title",align:"section"!=e.type?"center":"left",width:"section"!=e.type?"16%":"",colspan:"section"==e.type?4:"",body:[{type:"tpl",tpl:`<div style='font-size:20px'>${e.name}</div>`}]}))(a)),"section"!=a.type&&t.push(((e,t)=>({background:"readonly"===e.permission?"":"rgba(255,255,0,.1)",colspan:"table"===e.type?4:3-2*(t-1),align:"left",className:"td-field",body:[en(e)],style:{marginTop:"0",paddingTop:"0",paddingRight:"0",paddingBottom:"0",paddingLeft:"0",marginRight:"0",marginBottom:"0",marginLeft:"0"}}))(a,e.length))})),t},an=e=>{const t=[],a=[];let n=[];return s(e.fields,((t,r)=>{t.is_wide?(0!=n.length&&a.push(n),"table"==t.type&&a.push([Object.assign({},t,{type:"section"})]),(n=[]).push(t),a.push(n),n=[]):(n.push(t),2!=n.length&&r!==e.fields.length-1||(a.push(n),n=[]))})),s(a,(e=>{t.push({background:"#F7F7F7",tds:tn(e)})})),t},nn=e=>({type:"table-view",trs:an(e),id:"u:047f3669468b"});var rn=function(){return(rn=Object.assign||function(e){for(var t,a=1,n=arguments.length;a<n;a++)for(var r in t=arguments[a])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},on=function(e){var t=[];return e.charCodeAt(0)===".".charCodeAt(0)&&t.push(""),e.replace(new RegExp("[^.[\\]]+|\\[(?:([^\"'][^[]*)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))","g"),(function(e,a,n,r){return n?e=r.replace(/\\(\\)?/g,"$1"):a&&(e=a.trim()),t.push(e),""})),t};function sn(e,t,a){var n=(e=e&&Object.isFrozen(e)?ln(e):e)?Object.create(e,rn(rn({},a),{__super:{value:e,writable:!1,enumerable:!1}})):Object.create(Object.prototype,a);return t&&dn(t)&&Object.keys(t).forEach((function(e){return n[e]=t[e]})),n}function ln(e,t){void 0===t&&(t=!0);var a=e&&e.__super?Object.create(e.__super,{__super:{value:e.__super,writable:!1,enumerable:!1}}):Object.create(Object.prototype);return t&&e&&Object.keys(e).forEach((function(t){return a[t]=e[t]})),a}function dn(e){var t=typeof e;return e&&"string"!=t&&"number"!=t&&"boolean"!=t&&"function"!=t&&!Array.isArray(e)}var cn=function(){var e=ke();return{context:{rootUrl:xe(),userId:e.userId,tenantId:e.spaceId,authToken:e.authToken,user:e},global:{userId:e.userId,spaceId:e.spaceId,user:e,now:new Date}}},pn=Object.freeze({__proto__:null,Field:ba,absoluteUrl:function(e){return""+xe()+e},amisRender:(e,t,a={},n={},r)=>{var i=amisRequire("amis/embed"),{router:r,assets:o}=r;return he(o),i.embed(e,t,a,Object.assign(be(r),n))},amisRootClick:(e,t)=>{"a"===t.target.nodeName.toLocaleLowerCase()&&t.target.href&&(t.preventDefault(),e.push(t.target.href))},cloneObject:ln,conditionsToFilters:Xa,createObject:sn,defaultsDeep:it,deleteVariable:function(e,t){if(e)if(e.hasOwnProperty(t))delete e[t];else{var a=on(t);for(t=a.pop();a.length;){var n=a.shift();if(!fe(e[n])){if(e[n])throw new Error("目标路径不是纯对象,不能修改");break}e=e[n]=rn({},e[n])}e&&e.hasOwnProperty&&e.hasOwnProperty(t)&&delete e[t]}},execute:jt,executeButton:It,extendObject:function(e,t,a){var n=ln(e,a=void 0===a||a);return t&&Object.keys(t).forEach((function(e){return n[e]=t[e]})),n},fetchAPI:ve,filtersToConditions:e=>Za(e),getAmisObjectRelatedList:za,getApp:async function(e){return await ve(`/service/api/apps/${e}/menus`)},getApps:async function(){return await ve("/service/api/apps/menus")},getAuthToken:$e,getAuthorization:Ne,getButton:St,getButtonVisible:(e,t)=>{if(e._visible&&(r.startsWith(r.trim(e._visible),"function")?(window.eval("var fun = "+e._visible),e.visible=fun):ot(e._visible)&&(e.visible=t=>{st(e._visible,t.record,"#",{now:new Date},t.userSession)})),!r.isFunction(e.visible))return e.visible;try{return e.visible(t)}catch(t){}},getButtonVisibleOn:_t,getButtons:wt,getCalendarSchema:Pa,getDefaultRenderData:cn,getEnv:e=>Ja[e],getEnvs:()=>Ja,getEvn:be,getField:Va,getFileSrc:function(e){return xe()+"/api/files/files/"+e},getFlowFormSchema:e=>({type:"page",body:[{type:"service",data:{beijing:"20",tianjing:"19"},body:[{type:"tpl",id:"u:f5bb0ad602a6",tpl:`<div style='font-size:20px'>${e.title}</div>`,inline:!0,wrapperComponent:"",style:{fontFamily:"",fontSize:12,textAlign:"center"}},nn(e)],id:"u:a381684e042b"}],id:"u:63849ea39e12",messages:{},pullRefresh:{},regions:["body"]}),getFormPageInitSchema:async function(e){return{type:"page",bodyClassName:"",regions:["body"],body:[(await Ea(e,{recordId:"${recordId}"})).amisSchema]}},getFormSchema:Ea,getImageSrc:function(e){return xe()+"/api/files/images/"+e},getListPageInitSchema:async function(e,t,a){return{type:"page",bodyClassName:"",regions:["body"],body:[{type:"steedos-object-listview",objectApiName:e,columnsTogglable:!1,showHeader:!0}]}},getListSchema:Ta,getListViewButtons:$t,getListViewColumns:ja,getListViewFilter:Oa,getListViewItemButtons:xt,getListViewSort:Ia,getListviewInitSchema:async function(e,t,a){a=a||{};var n=await Da(e),r=l(n.list_views,((e,a)=>a===t));let i={};if(r){var o=ja(r,a.formFactor),s=(r=Ia(r),a.defaults||{});s.headerSchema||(n=await Vt(n),s.headerSchema=n),a.defaults=s;let t=a.setDataToComponentId;t=t||"service_listview_"+e,delete(i=(n=await Ca(null,e,o,{sort:r,...a,setDataToComponentId:t})).amisSchema).data.$master,delete i.data._id,delete i.data.recordPermissions,delete i.data.uiSchema}return i},getNotifications:async()=>{var e=`\n {\n notifications(filters: ["owner","=","${(e=ke()).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","=","${e.userId}"], ["is_read", "!=", true]])\n }\n `;return(await ve("/graphql",{method:"POST",body:JSON.stringify({query:e})})).data},getObjectDetailButtons:Nt,getObjectDetailMoreButtons:Ft,getObjectFieldsFilterBarSchema:_a,getObjectFieldsFilterButtonSchema:ha,getObjectFieldsFilterFormSchema:ga,getObjectListHeader:Vt,getObjectListHeaderFieldsFilterBar:Dt,getObjectListHeaderFirstLine:Ot,getObjectListHeaderSecordLine:async function(e,t,a){return e="listview_"+e.name,{type:"grid",columns:[{body:[{type:"tpl",tpl:"${$count} 个项目",visibleOn:"this.$count >= 0",inline:!1,wrapperComponent:"",className:"leading-none",style:{fontFamily:"",fontSize:14},id:"u:1661f8471235"}],md:"auto",columnClassName:"flex items-center"},{body:[await ha(),{type:"button",label:"",icon:"fa fa-refresh",actionType:"reload",target:e,className:"bg-white p-2 rounded border-gray-300 text-gray-500"}],md:"auto"}],className:"flex justify-between"}},getObjectRecordDetailHeader:Et,getObjectRecordDetailRelatedListHeader:At,getObjectRelated:async function({appName:e,masterObjectName:t,objectName:a,relatedFieldName:n,recordId:r,formFactor:i}){let o=null;var s=(o=(s=await Va(a,n))._reference_to||s.reference_to&&!w(s.reference_to)?[[n+"/o","=",t],[n+"/ids","=",r]]:[""+n,"=",r],await Da(t));return{masterObjectName:t,object_name:a,foreign_key:n,schema:await Ta(e,a,"all",{globalFilter:o,formFactor:i}),record:await Fa(t,r,[s.NAME_FIELD_KEY]),masterObjectUISchema:s}},getObjectRelatedList:Ba,getObjectRelatedListButtons:kt,getObjectRelatedListHeader:async function(e,t,a){},getPage:dt,getRecord:Fa,getRecordDetailHeaderSchema:qa,getRecordDetailRelatedListSchema:Ua,getRecordDetailSchema:La,getRecordPageInitSchema:async function(e){var t=await za(null,e,"${recordId}",null),a=[{type:"steedos-record-detail-header",label:"标题面板",objectApiName:"${objectName}",recordId:"${recordId}",onEvent:{recordLoaded:{actions:[{actionType:"setValue",args:{value:{recordLoaded:!0}}},{actionType:"reload",data:{name:`\${record.${(await Da(e))?.NAME_FIELD_KEY||"name"}}`,record:"${record}",recordLoaded:!0}}]}}}],n={type:"tabs",tabs:[{title:"详情",body:[{type:"steedos-object-form",label:"对象表单",mode:"read",objectApiName:"${objectName}",recordId:"${recordId}",labelAlign:"left"}]}],className:"sm:mt-3 flex flex-col region-main bg-white sm:shadow sm:rounded sm:border border-slate-300",linksClassName:"pl-4 pt-2"};return t=m(t,(e=>e.schema.amisSchema)),t.length&&n.tabs.push({title:"相关",body:t}),a.push(n),{type:"page",id:`page_${e}_record_detail`,bodyClassName:"",regions:["body"],body:a}},getRecordPermissions:async(e,t)=>await ve(`/service/api/@${e}/recordPermissions/`+t,{method:"GET"}),getRelatedFieldValue:Ra,getRelatedsCount:async(e,t)=>{const a=[];return s(t,(t=>{a.push(`${t.object_name}: ${t.object_name}__count(filters: [["${t.foreign_key}","=","${e}"]])`)})),t=`\n {\n ${a.join(",")}\n }\n `,(await ve("/graphql",{method:"POST",body:JSON.stringify({query:t})})).data},getRootUrl:xe,getSearchableFieldsFilterSchema:async function(e,t,a){return ga(e,t,a)},getSelectUserSchema:na,getSpaceUsersPickerAmisSchema:Ma,getSpaceUsersPickerSchema:async function(e,t){var a=await Da("space_users");return{uiSchema:a,amisSchema:await Ma(0,e,t)}},getSteedosAuth:ke,getTableSchema:Ca,getTenantId:we,getUISchema:Da,getUserId:Fe,getViewSchema:Aa,isExpression:ot,isObject:dn,lookupToAmis:la,lookupToAmisPicker:ia,lookupToAmisSelect:oa,lookupToAmisSelectUser:da,markReadAll:async()=>ve("/api/v4/notifications/all/markReadAll",{method:"POST"}),parseSingleExpression:st,registerRemoteAssets:async e=>{if(e&&0<e.length){let t=e;return w(t)&&(t=t.split(",")),await Builder.registerRemoteAssets(t),e=k(Builder.registry["meta-components"],(function(e){return e.componentName&&e.amis?.render})),m(e,(e=>({componentType:e.componentType,componentName:e.componentName,...e.amis.render})))}return[]},registerRenders:he,setEnv:(e,t)=>{Ja[e]=t},setEnvs:e=>{m(e,((e,t)=>{Ja[t]=e}))},setRootUrl:function(e){d(e,"/")&&(e=e.substring(0,e.length-1)),localStorage.setItem("steedos:rootUrl",e)},setSteedosAuth:e=>{Object.assign(ge,e)},setUISchemaFunction:function(e){xa=e},setVariable:function(e,t,a,n){if(t in(e=e||{}))e[t]=a;else{var r=!1!==n?on(t):[t];for(n=r.pop();r.length;){var i=r.shift();e=fe(e[i])?e[i]=rn({},e[i]):(Array.isArray(e[i])?e[i]=e[i].concat():(e[i],e[i]={}),e[i])}e[n]=a}},standardButtonsTodo:vt}),un=function(e,t,a){return B(void 0,void 0,void 0,(function(){var n,r,i,o,s,l,d,c,p,u,m,f;return R(this,(function(y){switch(y.label){case 0:n=e.reference_to,r="".concat(e.name,"__left"),i=[],y.label=1;case 1:y.trys.push([1,6,7,8]),o=function(e){var t="function"==typeof Symbol&&Symbol.iterator,a=t&&e[t],n=0;if(a)return a.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(n),s=o.next(),y.label=2;case 2:return s.done?[3,5]:[4,Da(l=s.value,!1)];case 3:d=y.sent(),i.push({label:d.label,value:l,icon:d.icon}),y.label=4;case 4:return s=o.next(),[3,2];case 5:return[3,8];case 6:return c=y.sent(),m={error:c},[3,8];case 7:try{s&&!s.done&&(f=o.return)&&f.call(o)}finally{if(m)throw m.error}return[7];case 8:return t&&t.o||(t={o:i[0].value,ids:[]}),[4,Da(t.o,!1)];case 9:return p=y.sent(),u=null,1!=p.enable_enhanced_lookup?[3,11]:[4,ia(Object.assign({},e,{reference_to:t.o}),!1,a)];case 10:return u=y.sent(),[3,13];case 11:return[4,oa(Object.assign({},e,{reference_to:t.o}),!1,a)];case 12:u=y.sent(),y.label=13;case 13:return[2,{type:"input-group",label:!1,body:[{type:"select",name:r,options:i,value:"".concat(t.o)},Object.assign({},u,{name:"".concat(e.name,"__right"),id:"right:".concat(e.name),inputClassName:"w-full",value:"".concat(t.ids)})]}]}}))}))},mn=function(n){var r=n.field;n.readonly;var i=n.ctx,o=n.dispatchEvent,s=n.render;n.renderFormItems;var l=n.onChange,d=n.data,c=n.formItemValue,p=z(t(),2),u=p[0],m=p[1],f=z(t(c),2),y=f[0],h=f[1];a((function(){h(c)}),[c]),a((function(){un(r,y,i).then((function(e){m(e)}))}),[y]);return e.createElement("div",{className:"amis-object-field-lookup"},u?e.createElement("div",{className:"container"},s("body",u,{onChange:function(e,t){return B(void 0,void 0,void 0,(function(){var a,n;return R(this,(function(r){switch(r.label){case 0:return a=Object.assign({o:t.endsWith("_left")?e:null==y?void 0:y.o,ids:t.endsWith("_right")?e:null==y?void 0:y.ids}),t.endsWith("_left")&&(a.ids=[]),w(a.ids)&&(a.ids=b(a.ids.split(","))),[4,o("change",sn(d,{fieldValue:a}))];case 1:return(null==(n=r.sent())?void 0:n.prevented)?[2]:[2,l(a)]}}))}))}})):null)},fn=function(n){var r=n.objectName,i=n.name,o=n.data,s=n.render,l=n.className,d=n.listViewId,c=z(t(),2),p=c[0],u=c[1],m=z(t(),2),f=m[0],y=m[1],b=o.appId,h=o.formFactor;a((function(){r&&Da(r,!1).then((function(e){St(r,i,{objectName:r,recordId:o._id,appId:b,uiSchema:e,formFactor:h,router:null,listViewId:o.listViewId,props:{className:"antd-Button antd-Button--link"}}).then((function(t){u(t),y(e)}))}))}),[r,i]);if(!p)return e.createElement(e.Fragment,null,e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor",className:"animate-spin w-4 h-4"},e.createElement("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99"})));if("amis_button"===p.type){var g=p.amis_schema,_=w(g)?JSON.parse(g):g;_&&_.body.length>0&&delete _.body[0].visibleOn;var v=Object.assign(o,{recordId:o._id,objectName:r,listViewId:o.listViewId,app_id:b,className:l});return _&&(_.data=$({},v,cn(),_.data)),e.createElement(e.Fragment,null,p&&g?e.createElement(e.Fragment,null,s("body",_,{data:v,onChange:function(){console.log("change....")}})):null)}return e.createElement("button",{onClick:function(){var e=o.dataComponentId,t=o.scopeId;return It(p,{objectName:r,listViewId:d||o.listViewId,uiSchema:f,record:o,recordId:o._id,appId:b,formFactor:h,scope:window.SteedosUI.getRef(e),scopeId:t||e})},className:"antd-Button antd-Button--default antd-Button--size-default ".concat(l||"")},p.label)},yn=function(t,a,n,r){return m(a,(function(a){return a.className="".concat(a.className," ").concat(n),{key:a.name,label:e.createElement(e.Fragment,null,t("body",a,r))}}))},bn=function(a){var n=a.data,r=a.render,i=a.className,o=a.btnClassName,s=a.buttons,l=a.placement,d=a.trigger,c=void 0===d?["click"]:d,p=a.onOpenApi;a.store;var u=a.env,m=a.overlayClassName,f=a.arrow,y=z(t([]),2),b=y[0],h=y[1];return e.createElement(T,{menu:{items:b},trigger:c,onOpenChange:function(e){if(e)if(p)try{u.fetcher(p,sn(n,{})).then((function(e){var t=(null==e?void 0:e.hasOwnProperty("ok"))?e.data:e;h(yn(r,s,o,{data:sn(n,$(t,n))}))})).catch((function(e){console.error(e)}))}catch(e){console.error(e)}else h(yn(r,s,o,{data:n}))},placement:l,overlayClassName:m,arrow:f},e.createElement("button",{className:"slds-button slds-button_icon slds-button_icon-border-filled slds-button_icon-x-small ".concat(i||"")},e.createElement("svg",{fill:"none",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"m7 10 5 5 5-5z",fill:"currentColor"}))))},hn=function(t){var a,n,r=t.basePath,i=t.category,o=void 0===i?"standard":i,s=t.className,l=void 0===s?"":s,d=t.containerClassName,c=void 0===d?"":d,p=t.colorVariant,u=void 0===p?"default":p;t.inverse;var m=t.name,f=void 0===m?"account":m,y=t.size,b=void 0===y?"medium":y;t.title;var h=t.rootUrl;return void 0===h&&(null===(n=null===(a=t.data)||void 0===a?void 0:a.context)||void 0===n||n.rootUrl),r||(r=""),e.createElement("span",{className:"slds-icon_container slds-icon-".concat(o,"-").concat(f," ").concat(c)},e.createElement("svg",{className:"slds-icon slds-icon_".concat(b," slds-icon-text-").concat(u," ").concat(l)},e.createElement("use",{xlinkHref:"".concat(r,"/assets/icons/").concat(o,"-sprite/svg/symbols.svg#").concat(f)})))};C.TabPane;var gn=function(t){t.overlayClassName;var a=function(e,t){var a={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(a[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(a[n[r]]=e[n[r]])}return a}(t,["overlayClassName"]);return e.createElement(T,L({overlayClassName:"header-dropdown",getPopupContainer:function(e){return e.parentElement||document.body}},a,{arrow:!0}))},_n=function(t,a,n){return e.createElement(e.Fragment,null,e.createElement(P,{delay:300,spinning:!1},e.createElement("div",{className:"bg-white shadow"},t("body",a,{}))))},vn=function(t){var a=t.render,n=t.overlay,r=t.body,i=t.trigger,o=void 0===i?["click"]:i,s=t.placement,l=void 0===s?"bottomRight":s,d=t.overlayClassName,c=t.className;return t.data,e.createElement(e.Fragment,null,e.createElement(gn,{placement:l,overlay:_n(a,n),trigger:o,className:c,overlayClassName:d},e.createElement("div",null,e.createElement(e.Fragment,null,a("body",r,{})))))};function wn(n){var r=n.date,i=z(t(),2),o=i[0],s=i[1],l=z(t(""),2),d=l[0],c=l[1],p=function(e){return window.amisRequire?window.amisRequire("moment")(e).fromNow():window.moment?window.moment(e).fromNow():void console.error("not find moment")};return a((function(){o&&clearInterval(o),c(p(r)),s(setInterval((function(){c(p(r))}),6e4))}),[r]),e.createElement(e.Fragment,null,d)}var $n=function(t){var a=t.body,n=t.render,r=t.count,i=t.color,o=t.dot,s=t.offset,l=t.overflowCount,d=t.showZero,c=t.size,p=t.status,u=t.text,m=t.title;return e.createElement(q,{count:r,color:i,dot:o,offset:s,overflowCount:l,showZero:d,size:c,status:p,text:u,title:m},n("body",a,{}))},Nn=function(t){var a=t.body,n=t.render,r=t.color,i=t.placement,o=void 0===i?"end":i,s=t.text,l=void 0===s?"Badge.Ribbon":s;return e.createElement(q.Ribbon,{color:r,placement:o,text:l},n("body",a,{}))},Fn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c,p,u,m;return R(this,(function(y){switch(y.label){case 0:return t=e.$schema,a=e.recordId,n=e.mode,r=e.layout,i=e.labelAlign,o=e.appId,s=e.objectApiName||"space_users",l=V(f(t),["type","mode","layout"]),d=E(e,l),c={recordId:a,mode:n,layout:"vertical"===r?"normal":r,labelAlign:i,defaults:{formSchema:d},appId:o},(p=e.data.global||{}).mode="edit"===n?"edit":"read","edit"!==n?[3,2]:[4,Ea(s,c)];case 1:return m=y.sent().amisSchema,u={},a&&(u.recordId=a),s&&(u.objectName=s),m.data=Object.assign({"&":"$$"},m.data,u,{global:p}),[2,m];case 2:return a||(c.formInitProps={queryOptions:"top: 1"}),[4,Aa(s,a,c)];case 3:return(m=y.sent().amisSchema).data=Object.assign({"&":"$$"},m.data,{global:p}),[2,m]}}))}))},xn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,d,c,p,u,m,y,b,h,g,_,v,w,$,N,F,x,k,S,j,I;return R(this,(function(O){switch(O.label){case 0:return t=e.$schema,a=e.top,n=e.perPage,r=e.showHeader,i=e.headerSchema,o=e.data,s=e.defaultData,d=e.className,c=void 0===d?"":d,p=e.tableClassName,u=e.ctx,m=(null==s?void 0:s.listName)||(null==o?void 0:o.listName)||(null==e?void 0:e.listName),y={},b=e.objectApiName||"space_users",u||(u={}),u.formFactor||(u.formFactor=window.innerWidth<768?"SMALL":"LARGE"),[4,Da(b,!1)];case 1:return h=O.sent(),(g=l(h.list_views,(function(e,t){return m||(m=t),t===m||e._id===m})))?(m=g.name,u&&u.defaults||(_=V(f(t),["type","showHeader","id"]),(v=E(e,_)).className=p,y={listSchema:v}),i&&(y.headerSchema=i),(w=u&&u.setDataToComponentId)||(w="service_listview_".concat(b)),$=Object.assign({},o,s),N=(null==u?void 0:u.listViewId)||$.listViewId,[4,Ta($.appId,b,m,L(L({top:a,perPage:n,showHeader:r,defaults:y},u),{listViewId:N,setDataToComponentId:w,filterVisible:!0}))]):[2,{type:"alert",body:"当前".concat(m,"视图不存在!"),level:"warning",showIcon:!0,className:"mb-3"}];case 2:return F=O.sent(),x=F.amisSchema,k=F.uiSchema,S=[x],(F.isCustomAmisSchema||F.isCalendar)&&(j=Ot(k),S.unshift({type:"wrapper",body:[j],className:"bg-gray-100 pb-0 sm:rounded-tl sm:rounded-tr"})),I=Object.assign({},x.data,$,{listName:m,uiSchema:k,recordPermissions:k.permissions,_id:null}),[2,{type:"service",body:S,className:"".concat(c),data:I}]}}))}))},kn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c,p,u,m,y,b,h,g,_,v,w,$,N,F;return R(this,(function(x){switch(x.label){case 0:return t=e.$schema,a=e.filters,n=e.filtersFunction,r=e.amisCondition,i=e.top,o=e.headerSchema,s=e.sort,l=e.sortField,d=e.sortOrder,c=e.extraColumns,p=e.ctx,u=e.data,m=e.defaultData,y=e.columns||[],b={},h=e.objectApiName||"space_users",p&&p.defaults||(g=V(f(t),["type","objectApiName","columns","extraColumns","id"]),_=E(e,g),b={listSchema:_}),o&&(b.headerSchema=o),(v=p&&p.setDataToComponentId)||(v="service_listview_".concat(h)),w=r&&Xa(r),$=a||w,[4,Ca((N=Object.assign({},u,m)).appId,h,y,L(L({filters:$,filtersFunction:n,top:i,sort:s,sortField:l,sortOrder:d,extraColumns:c,defaults:b},p),{setDataToComponentId:v}))];case 1:return(F=x.sent().amisSchema).data=Object.assign({},F.data,N),[2,F]}}))}))},Sn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c,p,u,m,f,y,b,h,g,_,v;return R(this,(function(w){switch(w.label){case 0:return e.$schema,t=e.top,a=e.sort,n=e.filters,r=e.filtersFunction,i=e.title,o=e.currentView,s=e.startDateExpr,l=e.endDateExpr,d=e.allDayExpr,c=e.textExpr,p=e.data,u=e.defaultData,m=e.className,f=void 0===m?"":m,y=e.objectApiName||"events",[4,Pa((b=Object.assign({},p,u)).appId,y,{title:i,currentView:o,startDateExpr:s,endDateExpr:l,allDayExpr:d,textExpr:c},{top:t,sort:a,filter:n,filtersFunction:r})];case 1:return h=w.sent(),g=h.uiSchema,_=h.amisSchema,v=Object.assign({},_.data,b,{objectName:y,uiSchema:g}),[2,{type:"service",body:_,className:"".concat(f),data:v}]}}))}))},jn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l;return R(this,(function(d){switch(d.label){case 0:return[4,Da(e.objectApiName||"space_users",!1)];case 1:return t=d.sent(),a={recordLoaded:{actions:[{actionType:"reload",data:{name:"${record.".concat((null==t?void 0:t.NAME_FIELD_KEY)||"name","}"),record:"${record}",recordLoaded:!0}},{actionType:"setValue",args:{value:{recordLoaded:!0}}}]}},e.$schema,n=e.recordId,r=e.onEvent,i=void 0===r?a:r,o=e.showRecordTitle,s=void 0===o||o,[4,qa(e.objectApiName||"space_users",n,{showRecordTitle:s})];case 2:return l=d.sent().amisSchema,[2,Object.assign({},l,{onEvent:i})]}}))}))},In=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s;return R(this,(function(l){switch(l.label){case 0:return e.$schema,t=e.appId,a=e.objectApiName,n=void 0===a?"space_users":a,r=e.recordId,i=e.onEvent,e.defaultData,[4,La(n,t)];case 1:return o=l.sent().amisSchema,s={},r&&(s.recordId=r),o.data=Object.assign({},o.data,s),[2,Object.assign({},o,{onEvent:i})]}}))}))},On=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c,p;return R(this,(function(u){switch(u.label){case 0:return t=e.objectApiName,a=e.recordId,n=e.relatedObjectApiName,e.data,r=e.relatedKey,i=e.top,o=e.perPage,s=e.hiddenEmptyTable,l=e.appId,d=e.label,c=e.className,p=void 0===c?"":c,t&&n?[4,Ua(t,a,n,r,i,o,s,l,d,p)]:[2,{type:"alert",body:"缺少父级对象或相关列表对象",level:"warning",showIcon:!0,className:"mb-3"}];case 1:return[2,u.sent().amisSchema]}}))}))},Dn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s;return R(this,(function(l){switch(l.label){case 0:return t=e.objectApiName,a=e.recordId,n=e.appId,e.data,r=e.formFactor,i=e.perPage,o=void 0===i?5:i,t?[4,Ba(n,t,a,r)]:[2,{type:"alert",body:"缺少父级对象",level:"warning",showIcon:!0,className:"mb-3"}];case 1:return s=l.sent(),[2,{type:"service",body:m(s,(function(e){return{type:"steedos-object-related-listview",objectApiName:t,recordId:a,relatedObjectApiName:e.object_name,foreign_key:e.foreign_key,relatedKey:e.foreign_key,perPage:o,hiddenEmptyTable:!0,appId:n,label:e.label}}))}]}}))}))},Vn=function(e){return B(void 0,void 0,void 0,(function(){var t,a;return R(this,(function(n){switch(n.label){case 0:return console.log("AmisSelectUser props",e),t=e.$schema,e.data,[4,na({name:t.name,multiple:t.multiple,searchable:t.searchable,onEvent:t.onEvent,filters:t.filters},!1,{})];case 1:return(a=n.sent()).name=t.name,[2,a]}}))}))},En=function(e){return B(void 0,void 0,void 0,(function(){return R(this,(function(t){return console.log("AmisProvider props",e),[2,{}]}))}))},An=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d;return R(this,(function(c){return t=e.app,a=e.data,n=e.className,r=e.showAppName,i=void 0===r||r,o=e.appNameClassName,s=void 0===o?"":o,t||(t=a.context.app),l=window.innerWidth<768?"SMALL":"LARGE",d="SMALL"===l,[2,{type:"service",className:n,body:[{type:"button",actionType:"dialog",className:"flex items-center",body:[{type:"tpl",className:"flex items-center",tpl:"<div aria-haspopup='true' title='Open App Launcher' class='slds-icon-waffle_container slds-context-bar__button' title='Open App Launcher' type='button'><span class='slds-icon-waffle'><span class='slds-r1'></span><span class='slds-r2'></span><span class='slds-r3'></span><span class='slds-r4'></span><span class='slds-r5'></span><span class='slds-r6'></span><span class='slds-r7'></span><span class='slds-r8'></span><span class='slds-r9'></span></span></div>"},{type:"tpl",className:"text-xl ml-4 mr-4 ".concat(s," "),tpl:"${app.name}",hiddenOn:"".concat(!!t&&!i)}],dialog:{size:"xl",title:{type:"tpl",tpl:"应用程序启动器",className:"block text-xl text-center"},actions:[],body:[{type:"service",id:"u:0f6224a0836f",affixFooter:!1,body:[{type:"collapse-group",activeKey:["1","2"],body:[{type:"collapse",key:"1",header:"所有应用",body:[{type:"each",name:"app_items",items:{type:"tpl",tpl:"<a class='slds-app-launcher__tile slds-text-link_reset ' role='button' tabindex='0' href='${path}'><div class='slds-app-launcher__tile-figure'><span class='slds-icon_container slds-icon-standard-${REPLACE(icon, '_', '-')}'><img class='w-12 h-12 slds-icon slds-icon_container slds-icon-standard-${icon}' src='${context.rootUrl}/unpkg.com/@salesforce-ux/design-system/assets/icons/standard/${icon}.svg'><span class='slds-assistive-text'>${name}</span></span></div><div class='slds-app-launcher__tile-body'><span class='slds-link text-blue-600 text-lg'><span title='${name}'>${name}</span></span><div style='display: -webkit-box; -webkit-line-clamp: 1;-webkit-box-orient: vertical;overflow: hidden;'><span title='${description}'>${description}</span></div></div></a>",inline:!0,style:{},className:"slds-p-horizontal_small slds-size_1-of-1 slds-medium-size_1-of-3"},id:"u:a0f163ed207f",className:"slds-grid slds-wrap slds-grid_pull-padded"}]},{type:"collapse",key:"2",header:"所有项目",body:[{type:"html",html:"<ul class='slds-grid slds-wrap'>${object_items_dom|raw}</ul>",className:"dec"}],id:"u:a88a225c8832",className:""}],id:"u:cb1c62622fd6"}],className:"",visibleOn:"",clearValueOnHidden:!1,visible:!0,messages:{},api:{method:"get",url:"${context.rootUrl}/service/api/apps/menus?mobile="+d,data:null,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},adaptor:'\nlet app_items = payload;\nlet object_items = [];\nlet objects = [];\napp_items.forEach((item) => {\n item.children.forEach((i) => {\n if (objects.indexOf(i.id) < 0) {\n objects.push(i.id);\n object_items.push(i)\n }\n })\n})\nlet object_items_dom = \'\';\nobject_items.forEach((item) => {\n\n object_items_dom = object_items_dom +\n `<li class="slds-col--padded slds-p-vertical_xx-small slds-size_1-of-5 slds-grow-none oneAppLauncherItem">\n <a data-object-name="${item.id}" href="${item.path}" class="app-launcher-link slds-text-link--reset slds-app-launcher__tile--small slds-truncate creator-object-nav-${item.id}">\n <span class="slds-truncate slds-text-link">${item.name}</span>\n </a>\n </li>`\n})\npayload.data = {\n app_items,\n object_items_dom\n}\nreturn payload;'}}]},id:"u:b5dc095e1c11"}]}]}))}))},Tn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r;return R(this,(function(i){return t=e.src,a=void 0===t?"/logo.png":t,n=e.className,r=e.imgClassName,[2,{type:"tpl",className:n,tpl:"<a href='/app' class='flex items-center '><img class='".concat(void 0===r?"block h-7 w-auto":r,"' src='").concat(a,"'></a>"),id:"u:2a8e7a359dff"}]}))}))},Cn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c,p,u,m,f;return R(this,(function(y){return t=e.stacked,a=void 0!==t&&t,n=e.overflow,r=e.appId,i=e.data,o=e.links,s=void 0===o?null:o,l=e.showIcon,d=void 0===l||l,c=e.className,p=void 0===c?"":c,u=e.indentSize,m=void 0===u?12:u,f=e.selectedId,r||(r=i.context.appId||"admin"),[2,{type:"nav",className:"".concat(p),stacked:a,overflow:n,indentSize:m,links:s,source:{method:"get",url:"${context.rootUrl}/service/api/apps/".concat(r,"/menus"),adaptor:"\n try {\n const data = { nav: [] };\n const stacked = ".concat(a,";\n const showIcon = ").concat(d,";\n const selectedId = '").concat(f,'\';\n _.each(_.groupBy(payload.children, \'group\'), (tabs, groupName) => {\n if (groupName === \'undefined\') {\n _.each(tabs, (tab) => {\n data.nav.push({\n "label": showIcon ? {\n type: \'tpl\',\n tpl: `<span class=\'fill-slate-500 text-slate-700 block -ml-px no-underline group flex items-center text-[15px] font-medium rounded-md\'><svg class="mr-1 flex-shrink-0 h-6 w-6"><use xlink:href="/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || \'account\'}"></use></svg>${tab.name}</span>`\n } : tab.name,\n "to": tab.path,\n // active: selectedId === tab.id,\n })\n })\n } else {\n\n if(stacked){\n data.nav.push({\n "label": groupName,\n "unfolded": true,\n "children": _.map(tabs, (tab) => {\n return {\n "label": showIcon ? {\n type: \'tpl\',\n tpl: `<span class=\'fill-slate-500 text-slate-700 block -ml-px no-underline group flex items-center text-[15px] font-medium rounded-md\'><svg class="mr-1 flex-shrink-0 h-6 w-6"><use xlink:href="/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || \'account\'}"></use></svg>${tab.name}</span>`\n } : tab.name,\n "to": tab.path,\n // active: selectedId === tab.id,\n }\n })\n })\n }else{\n _.each(tabs, (tab) => {\n data.nav.push({\n "label": showIcon ? {\n type: \'tpl\',\n tpl: `<span class=\'fill-slate-500 text-slate-700 block -ml-px no-underline group flex items-center text-[15px] font-medium rounded-md\'><svg class="mr-1 flex-shrink-0 h-6 w-6"><use xlink:href="/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || \'account\'}"></use></svg>${tab.name}</span>`\n } : tab.name,\n "to": tab.path,\n // active: selectedId === tab.id,\n });\n })\n }\n\n \n }\n });\n payload.data = data.nav;\n } catch (error) {\n console.log(`error`, error)\n }\n return payload;\n '),headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},sendOn:"".concat(!s)}}]}))}))},Pn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c;return R(this,(function(p){return t=e.className,a=void 0===t?"":t,n=e.data,r=e.logoutScript,i=void 0===r?"":r,o=e.customButtons,s=void 0===o?[]:o,l=null,(null===(c=null===(d=n.context)||void 0===d?void 0:d.user)||void 0===c?void 0:c.avatar)&&(l="".concat(n.context.rootUrl||"","/avatar/").concat(n.context.user.userId,"?w=220&h=200&fs=160&avatar=").concat(n.context.user.avatar)),[2,{type:"wrapper",id:"u:9c3d279be31a",className:"steedos-global-header leading-3\t".concat(a),size:"xs",body:U(U([],z(s),!1),[{type:"button",hiddenOn:"window.innerWidth < 768",id:"u:267a7e84a89d",onEvent:{click:{actions:[{componentId:"",args:{url:"https://www.steedos.com/docs"},actionType:"url"}]}},body:[{type:"steedos-icon",category:"utility",name:"help",colorVariant:"default",id:"u:afc3a08e8cf3",className:"slds-button_icon slds-global-header__icon"}],label:"帮助"},{type:"button",hiddenOn:"window.innerWidth < 768",onEvent:{click:{actions:[{componentId:"",args:{url:"/app/admin"},actionType:"url"}]}},id:"u:b5d0ab3a32b5",body:[{type:"steedos-icon",category:"utility",name:"setup",colorVariant:"default",id:"u:793a86f8a9e4",className:"slds-button_icon slds-global-header__icon"}],label:"设置"},{type:"steedos-dropdown",placement:"bottomRight",trigger:["click"],body:[{type:"service",body:[{type:"steedos-badge",body:[{type:"steedos-icon",category:"utility",name:"notification",colorVariant:"default",className:"slds-button_icon slds-global-header__icon"}],count:"${unReadCount}"}],id:"u:aba521eed5b7",messages:{},api:{method:"post",url:"${context.rootUrl}/graphql",data:{"&":"$$",context:"${context}",userId:"${context.userId}"},dataType:"json",requestAdaptor:'const { userId } = api.data;\napi.data = {\n query: `{\n unReadCount: notifications__count(filters: [["owner","=","${userId}"], ["is_read", "!=", true]])\n }`\n}',headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},adaptor:"return payload.data"},interval:3e4,silentPolling:!0}],overlay:[{type:"service",body:[{type:"panel",title:"通知",className:"min-w-[300px] max-w-md",body:[{type:"each",className:"overflow-auto max-h-96",name:"notifications",items:{type:"tpl",tpl:"<div class='flex items-center p-4 hover:bg-sky-50'><img src='<%=data.context.rootUrl + `/avatar/` + data.from%>' alt='' class='h-10 w-10 flex-none rounded-full'><div class='ml-4 flex-auto'><div class='font-medium'><a href='<%=data.context.rootUrl + `/api/v4/notifications/` + data._id + `/read?rootUrl=` + window.location.origin + `&appId=` + data.appId %>' target='_blank'><%=data.name%></a></div><div class='mt-1 text-slate-700'><%=data.body%></div><div class='mt-1 text-slate-700'><%=moment(data.created).fromNow()%><abbr class='slds-text-link slds-m-horizontal_xxx-small <%=data.is_read ? 'hidden' : ''%>' title='unread'>●</abbr></div></div></div>",id:"u:07ece657c7b7"},id:"u:18da41dab9ca"}],actions:[{type:"button",label:"全部标记为已读",id:"u:5530f3779e3a",onEvent:{click:{actions:[{componentId:"",args:{api:{url:"${context.rootUrl}/api/v4/notifications/all/markReadAll",method:"post",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}},messages:{success:"已全部标记为已读"}},actionType:"ajax"}],weight:0}}}]}],id:"u:aba521eed5b7",messages:{},api:{method:"post",url:"${context.rootUrl}/graphql",data:{"&":"$$",context:"${context}",userId:"${context.userId}"},dataType:"json",requestAdaptor:'const { userId } = api.data;\napi.data = {\n query: `{\n notifications(filters: ["owner","=","${userId}"], sort: "created desc,name", top : 10){\n _id,name,body,related_to,related_name,url,owner,is_read,from,created\n } }`\n}',headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},adaptor:"return payload.data"}}],id:"u:857e8161c96b",className:"antd-Action",open:!1},{type:"steedos-dropdown",placement:"bottomRight",trigger:["click"],body:[{type:"avatar",src:l,icon:"fa fa-user",id:"u:033218742221",style:{background:"rgb(59 130 246 / 0.5)",color:"#FFFFFF"},size:30}],overlay:[{type:"wrapper",className:"",body:[{type:"grid",valign:"middle",align:"center",className:"m-2",columns:[{body:[{type:"avatar",className:"",src:l,icon:"fa fa-user",id:"u:033218742221",style:{background:"rgb(59 130 246 / 0.5)",color:"#FFFFFF"}}]},{body:[{type:"tpl",className:"block",tpl:"${context.user.name}",inline:!0},{type:"tpl",className:"block",tpl:"${context.user.email}",inline:!0}]}]},{type:"button",label:"个人资料",className:"flex",onEvent:{click:{actions:[{args:{url:"/app/admin/space_users/view/${context.user.spaceUserId}",blank:!1},actionType:"link"}]}},level:"link"},{type:"button",label:"注销",className:"flex",onEvent:{click:{actions:[{componentId:"",args:{},actionType:"custom",script:i}]}},level:"link"}]}],className:"antd-Action"}],!1)}]}))}))},qn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s;return R(this,(function(l){switch(l.label){case 0:t=e.field,a=e.readonly,n=void 0!==a&&a,r=e.ctx,i=void 0===r?{}:r,w(t)&&(t=JSON.parse(t)),w(i)&&(i=JSON.parse(i)),l.label=1;case 1:return l.trys.push([1,3,,4]),[4,ba.convertSFieldToAmisField(t,n,i)];case 2:return o=l.sent(),console.log("schema",o),[2,o];case 3:return s=l.sent(),console.log("error",s),[3,4];case 4:return[2,null]}}))}))},Ln=function(e){var t=e.mode,a=void 0===t?"input-tree":t,n=e.id,r=void 0===n?"selectFlow"+A(1e4,99999):n;console.log("AmisSelectFlow props",e);var i="".concat(r,"_input"),o=function(e,t){var a=t.label,n=t.data,r=t.name,i=t.required,o=t.action,s=void 0===o?"query":o,l=t.mode,d=void 0===l?"input-tree":l,c=t.className,p=t.onEvent,u=t.multiple,m=void 0!==u&&u,f=t.delimiter,y=t.joinValues,b=t.extractValue,h=t.searchable,g=t.showIcon,_=void 0===g||g,v=t.showRadio,w=void 0!==v&&v;return{type:d,id:e,label:a,name:r,options:[],multiple:m,delimiter:f,joinValues:y,extractValue:b,searchable:h,showOutline:t.showOutline,initiallyOpen:t.initiallyOpen,unfoldedLevel:t.unfoldedLevel,className:c,required:i,treeContainerClassName:t.treeContainerClassName,source:{method:"post",url:"${context.rootUrl}/graphql?keywords=${keywords}",requestAdaptor:"\n const keywords = api.body.keywords || '';\n const appId = '".concat(n.app_id||"","';\n api.data = {\n query: `\n {\n options: flows__getList(action: \"").concat(s,'", keywords: "${keywords}", appId: "${appId}"){\n value:_id\n label:name\n children: flows{\n value: _id,\n label: name\n }\n }\n }\n `\n }\n '),headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}},showIcon:_,showRadio:w,onlyLeaf:!0,onEvent:p}}(i,e);return"tree-select"===a?o:{type:"service",id:"selectFlowService",body:[{type:"search-box",className:"!w-full mb-2",name:"keywords",enhance:!0,onEvent:{search:{actions:[{actionType:"setValue",componentId:"selectFlowService",args:{value:{keywords:"${event.data.keywords}"}}},{componentId:i,actionType:"reload"}]}}},o]}};export{An as AmisAppLauncher,Cn as AmisAppMenu,Pn as AmisGlobalHeader,pn as AmisLib,Tn as AmisLogo,fn as AmisObjectButton,Sn as AmisObjectCalendar,mn as AmisObjectFieldLookup,Fn as AmisObjectForm,xn as AmisObjectListView,kn as AmisObjectTable,En as AmisProvider,In as AmisRecordDetail,jn as AmisRecordDetailHeader,On as AmisRecordDetailRelatedList,Dn as AmisRecordDetailRelatedLists,Ln as AmisSelectFlow,Vn as AmisSelectUser,qn as AmisSteedosField,wn as FromNow,$n as SteedosBadge,Nn as SteedosBadgeRibbon,vn as SteedosDropdown,bn as SteedosDropdownButton,hn as SteedosIcon};
|
|
1
|
+
import e,{useState as t,useEffect as a}from"react";import*as n from"lodash";import r,{isEmpty as i,isArray as o,each as s,find as l,endsWith as d,cloneDeep as c,toArray as p,mergeWith as u,map as m,keys as f,sortBy as y,compact as b,includes as h,slice as g,has as v,isString as w,defaultsDeep as $,isObject as N,forEach as F,findKey as x,filter as k,get as S,omitBy as j,isNil as I,isBoolean as O,startsWith as D,difference as V,pick as E,random as A}from"lodash";import{Dropdown as T,Tabs as C,Spin as q,Badge as P}from"antd";var L=function(){return L=Object.assign||function(e){for(var t,a=1,n=arguments.length;a<n;a++)for(var r in t=arguments[a])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},L.apply(this,arguments)};function B(e,t,a,n){return new(a||(a=Promise))((function(r,i){function o(e){try{l(n.next(e))}catch(e){i(e)}}function s(e){try{l(n.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof a?t:new a((function(e){e(t)}))).then(o,s)}l((n=n.apply(e,t||[])).next())}))}function R(e,t){var a,n,r,i,o={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(a)throw new TypeError("Generator is already executing.");for(;o;)try{if(a=1,n&&(r=2&i[0]?n.return:i[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,i[1])).done)return r;switch(n=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return o.label++,{value:i[1],done:!1};case 5:o.label++,n=i[1],i=[0];continue;case 7:i=o.ops.pop(),o.trys.pop();continue;default:if(!(r=o.trys,(r=r.length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){o=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){o.label=i[1];break}if(6===i[0]&&o.label<r[1]){o.label=r[1],r=i;break}if(r&&o.label<r[2]){o.label=r[2],o.ops.push(i);break}r[2]&&o.ops.pop(),o.trys.pop();continue}i=t.call(e,o)}catch(e){i=[6,e],n=0}finally{a=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}function z(e,t){var a="function"==typeof Symbol&&e[Symbol.iterator];if(!a)return e;var n,r,i=a.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}return o}function U(e,t,a){if(a||2===arguments.length)for(var n,r=0,i=t.length;r<i;r++)!n&&r in t||(n||(n=Array.prototype.slice.call(t,0,r)),n[r]=t[r]);return e.concat(n||Array.prototype.slice.call(t))}var J="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},M="object"==typeof J&&J&&J.Object===Object&&J,H="object"==typeof self&&self&&self.Object===Object&&self,K=(M||H||Function("return this")()).Symbol,Y=K,W=Object.prototype,G=W.hasOwnProperty,Z=W.toString,X=Y?Y.toStringTag:void 0;var Q=function(e){var t=G.call(e,X),a=e[X];try{e[X]=void 0;var n=!0}catch(e){}var r=Z.call(e);return n&&(t?e[X]=a:delete e[X]),r},ee=Object.prototype.toString;var te=Q,ae=function(e){return ee.call(e)},ne=K?K.toStringTag:void 0;var re=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":ne&&ne in Object(e)?te(e):ae(e)};var ie=function(e,t){return function(a){return e(t(a))}}(Object.getPrototypeOf,Object);var oe=re,se=ie,le=function(e){return null!=e&&"object"==typeof e},de=Function.prototype,ce=Object.prototype,pe=de.toString,ue=ce.hasOwnProperty,me=pe.call(Object);var fe=function(e){if(!le(e)||"[object Object]"!=oe(e))return!1;var t=se(e);if(null===t)return!0;var a=ue.call(t,"constructor")&&t.constructor;return"function"==typeof a&&a instanceof a&&pe.call(a)==me};const ye=[],be=e=>({theme:"antd",notify:(e,t)=>{t.props?.schema.tpl?SteedosUI.message[e](t.props?.schema.tpl):"string"==typeof t?SteedosUI.message[e](t):console.warn("notify",e,t)},confirm:e=>new Promise(((t,a)=>SteedosUI.Modal.confirm({title:e,onOk:()=>{t(!0)},okText:"确认",cancelText:"取消"}))),jumpTo:(t,a)=>{if("goBack"===t)return window.history.back();t=((e,t=window.location)=>{(e=e||"")&&"#"===e[0]?e=t.pathname+t.search+e:e&&"?"===e[0]&&(e=t.pathname+e);var a=e.indexOf("?"),n=e.indexOf("#");let r=~a?e.substring(0,a):~n?e.substring(0,n):e;if(a=~a?e.substring(a,~n?n:void 0):"",e=~n?e.substring(n):t.hash,r){if("/"!=r[0]&&!/^https?\:\/\//.test(r)){var i,o=t.pathname.split("/");for(o.pop();i=/^\.\.?\//.exec(r);)"../"===i[0]&&o.pop(),r=r.substring(i[0].length);r=o.concat(r).join("/")}}else r=t.pathname;return r+a+e})(t),a&&"url"===a.actionType?!1===a.blank?e.push(t):window.open(t):a&&t&&a.target?window.open(t,a.target):/^https?:\/\//.test(t)?window.location.replace(t):e.push(t)}}),he=e=>{if(!i(e)&&o(e)){var t=amisRequire("amis");const a={renderer:t.Renderer,formitem:t.FormItem,options:t.OptionsControl};let n=amisRequire("react");s(e,(e=>{if(!l(ye,(t=>t===e.componentName))){let t=Builder.components.find((t=>t.name===e.componentName)),r=t.class;"amisSchema"===e.componentType&&(r=e=>{var{body:a,render:r}=e;const[i,o]=n.useState(null);return n.useEffect((()=>{var a=t.class(e);a&&a.then&&"function"==typeof a.then?a.then((e=>{o(e)})):o(a)}),[]),n.createElement(n.Fragment,null,n.createElement(n.Fragment,null,i&&r?r("body",i):""),n.createElement(n.Fragment,null,r?r("body",a):""))}),a[e.usage]?(a[e.usage]({test:new RegExp("(^|/)"+e.type),type:e.type,weight:e.weight,autoVar:!0})(r),console.info("注册了一个自定义amis组件:",{type:e.type,weight:e.weight,component:r,framework:e.framework,usage:e.usage})):console.error(`${consoleTag}自定义组件注册失败,不存在${e.usage}自定义组件类型。`),ye.push(e.componentName)}}))}},ge={},_e=()=>"undefined"==typeof window?{}:Builder.settings.context||Builder.settings;async function ve(e,t={credentials:"include"}){var a,n={"Content-Type":"application/json"};if(401===(a=((a=Ne())&&(n.Authorization=a),t.headers=Object.assign({},n,t.headers),t.credentials="include",await fetch(""+xe()+e,t))).status)throw new Error(401);if((n=await a.json()).errors)throw console.error(n.errors),new Error("Failed to fetch API");return n}function we(){try{let e=_e().tenantId;return window.location.search&&!e&&(e=new URLSearchParams(window.location.search).get("X-Space-Id")),e||null}catch(e){console.error(e)}}function $e(){try{var e=_e().authToken;return e||null}catch(e){console.error(e)}}function Ne(){try{var e=_e(),t=e.tenantId,a=e.authToken;return t&&a?`Bearer ${t},`+a:null}catch(e){console.error(e)}}function Fe(){try{var e=_e().userId;return e||null}catch(e){console.error(e)}}function xe(e){return _e().rootUrl||("undefined"!=typeof window?window.localStorage.getItem("steedos:rootUrl"):"")||e}const ke=()=>c(ge);async function Se(e,t){0!=t&&(t=!0);let a=["_id"],r=[];for(const i of n.isArray(e)?e:n.values(e))i.name.indexOf(".")<0&&(!t||"lookup"!=i.type&&"master_detail"!=i.type?a.push(i.alias?i.alias+":"+i.name:i.name):(a.push(""+i.name),r.push(""+i.name)),h(["time","date","datetime","boolean","number","currency"],i.type)&&a.push(""+i.name),h(["time","filesize","date","datetime","boolean","number","currency","select","file","image","avatar","formula","summary"],i.type)&&r.push(""+i.name));return r=n.uniq(r),a=n.uniq(a),0<r.length?`${a.join(",")},_display:_ui{${r.join(",")}}`:""+a.join(" ")}async function je(e,t,a,n){let r="",i=(t&&(r=`(filters:["${e.idFieldName}", "=", "${t}"])`),"data");return n&&(n.alias&&(i=n.alias),n.filters&&(r=`(filters:${n.filters})`),n.queryOptions&&(r=`(${n.queryOptions})`)),{query:`{${i}:${e.name}${r}{${await Se(a)}, \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 }}`}}function Ie(e,t,a,n){return{objectName:e.name,$:"$$",recordId:t,modalName:"${modalName}"}}function Oe(e){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 ${function(e){var t=[];return e.forEach((e=>{e.readonly&&t.push(`delete formData.${e.name};`)})),t.join("\r\n")}(e)}\n ${function(e){let t=[],a={};return e.forEach((e=>{h(["image","avatar"],e.type)&&(t.push(e.name),a[e.name]={name:e.name,multiple:e.multiple})})),t.length?`\n let imgFieldsKeys = ${JSON.stringify(t)};\n let imgFields = ${JSON.stringify(a)};\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?.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 `:""}(e)}\n ${function(e){let t=[],a={};return e.forEach((e=>{"file"===e.type&&(t.push(e.name),a[e.name]={name:e.name,multiple:e.multiple})})),t.length?`\n let fileFieldsKeys = ${JSON.stringify(t)};\n let fileFields = ${JSON.stringify(a)};\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 `:""}(e)}\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._id}", doc: {__saveData}){_id}}\`;\n };\n delete formData._id;\n delete formData.__selectUserLoaded__;//选人控件加载标志不应该保存到数据库中\n let __saveData = JSON.stringify(JSON.stringify(formData));\n `}function De(e){return`\n ${Oe(e)}\n api.data = {query: query.replace('{__saveData}', __saveData)};\n return api;\n `}async function Ve(e,t,a,r){var i=r.limit||10;let o=`(top: ${i})`,s=(t&&(o=`(filters:["_id", "=", "${t}"], top: ${i})`),"data");return r&&(r.alias&&(s=r.alias),r.filters&&(o=`(filters:${r.filters})`),r.queryOptions&&(o=`(${r.queryOptions})`)),t="",e.enable_tree&&n.includes(n.keys(e.fields),"parent")&&n.includes(n.keys(e.fields),"children")&&(t=",parent,children"),i="","cms_files"===e.name&&(i=",versions"),{orderBy:"${orderBy}",orderDir:"${orderDir}",pageNo:"${page}",pageSize:"${perPage}",query:`{${s}:${e.name}${o}{${await Se(a,r.expand)}${t}${i}},count:${e.name}__count(filters:{__filters})}`}}function Ee(e){if(!e)return"${context.rootUrl}/graphql"}const Ae={getAppPath:({appId:e})=>"/app/"+e,getPagePath(){},getObjectListViewPath:({appId:e,objectName:t,listViewName:a})=>`/app/${e}/${t}/grid/`+a,getObjectDetailPath(e){var{appId:e,objectName:t,recordId:a}=e;return"instances"===t?"/workflow/space/${context.tenantId}/${listName}/"+a:`/app/${e}/${t}/view/`+a},getObjectRelatedViewPath:({appId:e,masterObjectName:t,masterRecordId:a,objectName:n,foreignKey:r})=>`/app/${e}/${t}/${a}/${n}/grid?related_field_name=`+r};function Te(e){return`<div><a href='${Ae.getObjectDetailPath({formFactor:e,appId:"admin",objectName:"users",recordId:"${created_by._id}"})}'>\${_display.created_by.label}</a>\${_display.created}</div>`}function Ce(e){return`<div><a href='${Ae.getObjectDetailPath({formFactor:e,appId:"admin",objectName:"users",recordId:"${modified_by._id}"})}'>\${_display.modified_by.label}</a>\${_display.modified}</div>`}function qe(e){return`<div>\${_display.${e.name}}</div>`}function Pe(e){return`<div>\${_display.${e.name}}</div>`}function Le(e){return`<div>\${_display.${e.name}}</div>`}function Be(e){return`<div>\${_display.${e.name}}</div>`}function Re(e,t){return"cms_files"===t.objectName?"${context.rootUrl}/api/files/files/${versions[0]}?download=true":Ae.getObjectDetailPath({...t,formFactor:t.formFactor,appId:"${appId}",objectName:t.objectName||"${objectName}",recordId:`\${${t.idFieldName}}`})}function ze(e,t){let a="";if(!e.reference_to&&(e.optionsFunction||e._optionsFunction))return`\${${e.name}__label}`;var n=t.onlyDisplayLabel;if(_.isString(e.reference_to)||!e.reference_to)if(e.multiple){let r="<%=item.label%>";n||(r=`<a href="${Ae.getObjectDetailPath({formFactor:t.formFactor,appId:t.appId,objectName:"<%=item.objectName%>",recordId:"<%=item.value%>"})}"><%=item.label%></a>`),a=`\n <% if (data._display.${e.name} && data._display.${e.name}.length) { %><% data._display.${e.name}.forEach(function(item) { %> ${r} <% }); %><% } %>\n `}else{let r=`\${_display.${e.name}.label}`;n||(r=`<a href="${Ae.getObjectDetailPath({formFactor:t.formFactor,appId:t.appId,objectName:`\${_display.${e.name}.objectName}`,recordId:`\${_display.${e.name}.value}`})}">\${_display.${e.name}.label}</a>`),a=r}else{let r="<%=item.label%>";n||(r=`<a href="${Ae.getObjectDetailPath({formFactor:t.formFactor,appId:t.appId,objectName:"<%=item.objectName%>",recordId:"<%=item.value%>"})}"><%=item.label%></a>`),a=`\n <% if (data._display.${e.name} && data._display.${e.name}.length) { %><% data._display.${e.name}.forEach(function(item) { %> ${r} <% }); %><% } %>\n `}return a}async function Ue(e,t){var a,n;return e.reference_to?(a=await async function(e){return(await Da(e.reference_to)).NAME_FIELD_KEY||"name"}(e),e.multiple?(n=Ae.getObjectDetailPath({formFactor:t.formFactor,appId:t.appId,objectName:e.reference_to,recordId:"<%=item._id%>"}),`\n <% if (data.${e.name} && data.${e.name}.length) { %><% data.${e.name}.forEach(function(item) { %> <a href="${n}"><%=item.${a}%></a> <% }); %><% } %>\n `):`<a href="${Ae.getObjectDetailPath({formFactor:t.formFactor,appId:t.appId,objectName:e.reference_to,recordId:`\${${e.name}._id}`})}">\${${e.name}.${a}}</a>`):Be(e)}function Je(e){return`<% if (data.${e.name}) { %>\n <span class="slds-icon_container slds-icon-utility-check slds-current-color" title="<%=data._display.${e.name}%>">\n <span ><%= data._display.${e.name} === "√" ? "<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>" : data._display.${e.name} %></span>\n </span>\n <% } %>`}function Me(e){return`<% if (data.${e.name}) { %>\n <span>······</span>\n <% } %>`}async function He(e,t){if((e.is_name||e.name===t.labelFieldName)&&!t.onlyDisplayLabel)return function(e,t){return`<a href="${Re(0,t)}">\${${e.name}}</a>`}(e,t);switch(e.type){case"password":return Me(e);case"boolean":case"toggle":return Je(e);case"select":return Be(e);case"time":case"formula":case"summary":case"filesize":return function(e){return`<div>\${_display.${e.name}}</div>`}(e);case"date":return Pe(e);case"datetime":return Le(e);case"lookup":case"master_detail":return ze(e,t);case"number":case"currency":return qe(e)}}function Ke(e){let t="";var a=n.filter(e,(function(e){return e.name.indexOf(".")<0&&("select"==e.type&&e.options||("lookup"==e.type||"master_detail"==e.type)&&!e.reference_to)}));return n.each(a,(function(e){var a;n.includes(ca,e.name)||(e.name,e.options?(a=JSON.stringify({options:e.options}),t+=`var ${e.name}Options= (${a}).options;`):e.optionsFunction?t+=`var ${e.name}Options = eval(${e.optionsFunction.toString()})(api.data);`:e._optionsFunction&&(t+=`var ${e.name}Options = eval(${e._optionsFunction})(api.data);`),e.multiple?t+=`data.${e.name}__label = _.map(_.filter(${e.name}Options, function(option){return _.includes(data.${e.name}, option.value)}), 'label');`:t=(t+=`var ${e.name}Selected = _.find(${e.name}Options, function(option){return data.${e.name} == option.value});`)+`data.${e.name}__label = ${e.name}Selected ? ${e.name}Selected.label:null;`)})),`\n if(payload.data.data){\n var data = payload.data.data[0];\n try{\n ${t}\n ${We(e)}\n ${Ge(e)}\n }catch(e){\n console.error(e)\n }\n payload.data = data;\n window.postMessage(Object.assign({type: "record.loaded"}, {record: data}), "*")\n }\n if(payload.errors){\n payload.status = 2;\n payload.msg = payload.errors[0].message;\n }\n return payload;\n`}async function Ye(e,t,a,n){return{method:"post",url:Ee()+"?rf="+(new Date).getTime(),cache:100,adaptor:Ke(a),data:await je(e,t,a,n),headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}function We(e){let t=[],a={};return e.forEach((e=>{n.includes(["image","avatar"],e.type)&&(t.push(e.name),a[e.name]={name:e.name,type:e.type,multiple:e.multiple})})),t.length?`\n // image字段值添加URL前缀\n let imgFieldsKeys = ${JSON.stringify(t)};\n let imgFields = ${JSON.stringify(a)};\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)=>{ return i.url });\n }\n }else{\n data[item] = imgFieldDisplayValue && imgFieldDisplayValue.url;\n }\n }\n })\n `:""}function Ge(e){let t=[],a={};return e.forEach((e=>{"file"===e.type&&(t.push(e.name),a[e.name]={name:e.name,multiple:e.multiple})})),t.length?`\n // file字段值重写以便编辑时正常显示附件名、点击附件名正常下载附件\n let fileFieldsKeys = ${JSON.stringify(t)};\n let fileFields = ${JSON.stringify(a)};\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 `:""}async function Ze(e,t,a){return{method:"post",url:Ee(),sendOn:"!!this.recordId",cache:100,adaptor:`\n if(payload.data.data){\n var data = payload.data.data[0];\n if(data){\n ${We(a)}\n ${Ge(a)}\n //初始化接口返回的字段移除字段值为null的字段\n for (key in data){\n if(data[key] === null){\n delete data[key];\n }\n }\n };\n payload.data = data;\n delete payload.extensions;\n }\n return payload;\n `,data:await je(e,t,a),headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}function Xe(e,t,a,n){return{method:"post",url:Ee(),data:Ie(e,t),requestAdaptor:De(a),responseData:{recordId:"${record._id}"},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 ",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}function Qe(e){return{method:"post",url:Ee(),requestAdaptor:`\n var ids = api.data.ids.split(",");\n var deleteArray = [];\n ids.forEach((id,index)=>{\n deleteArray.push(\`delete__\${index}:${e}__delete(id: "\${id}")\`);\n })\n api.data = {query: \`mutation{\${deleteArray.join(',')}}\`};\n return api;\n `,data:{ids:"${ids}"},headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}const et=async(e,t,a,r)=>{if((t=n.filter(t,{group:a})).length!=n.filter(t,["hidden",!0]).length){var i,o=[];for(const a of t){let t=a;"grid"===a.type?t=await ua(a,e):"object"===a.type&&(t=await pa(a,e)),t.name.indexOf(".")<0&&(r.__permissionFields=e,(i=await fa(t,t.readonly,r))&&o.push(i))}return a={type:"fieldSet",title:a,collapsable:!0,body:o},0<(t=n.map(n.compact(n.map(o,"visibleOn")),(e=>`(${e.substring(2,e.length-1)})`))).length&&o.length===t.length&&(a.visibleOn=`\${${t.join(" || ")}}`),a}},tt=async(e,t,a)=>{var r=(e=>{let t=[];return t.length=0,n.forEach(e.fields,((e,t)=>{n.has(e,"name")||(e.name=t)})),n.forEach(n.sortBy(e.fields,"sort_no"),(e=>{e.group&&"null"!=e.group&&"-"!=e.group||(e.group="通用");var a=e.name,n=/\w+\.\w+/.test(a);"grid"!=e.type&&"object"!=e.type||(e.is_wide=!0),n||e.hidden||t.push(Object.assign({name:a},e,{permission:{allowEdit:!0}}))})),t})(t),i=[];for(const t in n.groupBy(r,"group")){var o=await et(e,r,t,a);0<o.body.length&&i.push(o)}return i};async function at(e,t,a){return tt(e,t,a)}function nt(e){return{perPage:e.top||e.perPage||10}}async function rt(e,t){return e=(await async function(e,t){var a=[];for(const r of e){var n=await He(r,t);let e=n?"tpl":"text";r.hidden||r.extra||a.push({name:r.name,label:r.label,sortable:r.sortable,width:r.width,type:e,tpl:n,toggled:r.toggled})}return{type:"hbox",columns:a}}(e,t)).columns,{mode:"list",name:"thelist",draggable:!1,headerToolbar:["reload"],defaultParams:nt(t),syncLocation:!1,keepItemSelectionOnPageChange:!0,checkOnItemClick:!1,labelTpl:"${name}",listItem:{body:[...e],actions:!1===t.actions?null:[{icon:"fa fa-eye",label:"查看",type:"button",actionType:"link",link:Ae.getObjectDetailPath({formFactor:t.formFactor,appId:t.appId,objectName:t.tabId,listView:t.listView,recordId:"${_id}"})}]}}}const it=(...e)=>{let t={};return p(e).reverse().forEach((e=>{u(t,e,((e,t)=>o(t)?t:void 0))})),t},ot=function(e){var t,a;return"string"==typeof e&&(t=/^{{(function.+)}}$/,a=/^{{(.+=>.+)}}$/,!("string"!=typeof e||!e.match(/^{{(.+)}}$/)||e.match(t)||e.match(a)))},st=function(e,t,a,n,r={}){var i,o;if(void 0===t&&(t={}),o=function(e){return"string"!=typeof e||1===(e=e.split(".")).length?"#":(e.pop(),e.join("."))}(a),o=function(e,t){return"#"!==t&&t?"string"==typeof t?S(e,t):void console.error("path has to be a string"):e||{}}(t,o)||{},"string"!=typeof e)return e;i=e.substring(2,e.length-2),r=`\n var $user=${JSON.stringify(r)}; return `+i.replace(/\bformData\b/g,JSON.stringify(t).replace(/\bglobal\b/g,"__G_L_O_B_A_L__")).replace(/\bglobal\b/g,JSON.stringify(n)).replace(new RegExp("\\b__G_L_O_B_A_L__\\b","g"),"global").replace(/rootValue/g,JSON.stringify(o));try{return Function(r)()}catch(t){return console.log(t,e,a),e}};var lt={newRecordMode:"modal",editRecordMode:"modal",perPage:20};async function dt({type:e,pageId:t,appId:a,objectName:n="",recordId:r,formFactor:i="LARGE"}){if((e=await ve(`/api/pageSchema/${e}?app=${a}&objectApiName=${n=n||""}&recordId=${r=r||""}&pageId=${t=t||""}&formFactor=`+i))&&e.schema)return e}const ct=async(e,t)=>{let a={type:"steedos-object-form",label:"对象表单",objectApiName:"${objectName}",recordId:"",id:"u:f8ad8ddf153a",mode:"edit",layout:"normal"};return{type:"service",body:[{type:"button",label:"新建",id:"u:standard_new",level:"default",onEvent:{click:{actions:[{actionType:"dialog",dialog:{type:"dialog",data:{$master:"$$","&":"${defaultData}",appId:"${appId}",objectName:"${objectName}",context:"${context}",global:"${global}",listViewId:"${listViewId}"},title:e="新建 "+e.label,bodyClassName:"",body:[a=(t=await dt({type:"form",appId:t.appId,objectName:t.objectName,formFactor:t.formFactor}))?_.isString(t.schema)?JSON.parse(t.schema):t.schema:a],id:"u:0b96577db93c",closeOnEsc:!1,closeOnOutside:!1,showCloseButton:!0,size:"lg"}}],weight:0}}}],regions:["body"],className:"p-0 border-0",id:"u:aef99d937b10"}},pt=async(e,t)=>{let a={type:"steedos-object-form",label:"对象表单",objectApiName:"${objectName}",recordId:"${recordId}",id:"u:d2b0c083c38f",mode:"edit"};return{type:"service",body:[{type:"button",label:"编辑",id:"u:standard_edit",onEvent:{click:{actions:[{actionType:"dialog",dialog:{type:"dialog",title:e="编辑 "+e.label,bodyClassName:"",body:[a=(t=await dt({type:"form",appId:t.appId,objectName:t.objectName,formFactor:t.formFactor}))?_.isString(t.schema)?JSON.parse(t.schema):t.schema:a],id:"u:ee95697baa4f",closeOnEsc:!1,closeOnOutside:!1,showCloseButton:!0,size:"lg"}}],weight:0}}}],regions:["body"],className:"",id:"u:3c5cbc0429bb"}},ut=e=>({type:"service",className:"p-0",body:[{type:"button",label:"删除",confirmText:"确定要删除此项目?",onEvent:{click:{actions:[{args:{api:{method:"post",url:"${context.rootUrl}/graphql",data:{"&":"$$",recordId:"${recordId}",objectName:"${objectName}"},requestAdaptor:"const {recordId, objectName} = api.body; var deleteArray = []; deleteArray.push(`delete:${objectName}__delete(id: \"${recordId}\")`); api.data = {query: `mutation{${deleteArray.join(',')}}`}; return api;",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},adaptor:"\n if(payload.errors){\n payload.status = 2;\n payload.msg = payload.errors[0].message;\n }\n return payload;\n "},messages:{success:"删除成功",failed:"删除失败"}},actionType:"ajax"},{componentId:"",args:{url:"/app/${app_id}/${objectName}/grid/all",blank:!1},actionType:"link",expression:"!!!listViewId"},{componentId:"listview_"+e.name,actionType:"reload",expression:"!!listViewId"}]}}}],regions:["body"]}),mt=async(e,t)=>({type:"amis_button",amis_schema:await ct(e,t)}),ft=async(e,t)=>({type:"amis_button",amis_schema:await pt(e,t)}),yt=async(e,t)=>({type:"amis_button",amis_schema:await ut(e)}),bt=async(e,t)=>({type:"script",todo:function(){var{appId:e,objectName:t,uiSchema:a}=this,e=this.scopeId||`amis-${e}-${t}-listview`,t=(this.scope||SteedosUI?.getRef(e)).getComponentById("listview_"+a.name);console.log("listViewRef",t),_.isEmpty(t.props.store.toJSON().selectedItems)?t.handleAction({},{actionType:"toast",toast:{items:[{position:"top-right",body:"请选择要删除的项"}]}}):t.handleBulkAction(t.props.store.toJSON().selectedItems,[],{},t.props.bulkActions[0])}}),ht=async(e,t)=>({type:"amis_button",amis_schema:await{type:"service",body:[{type:"button",label:"导入数据",id:"u:import_data",onEvent:{click:{actions:[{actionType:"dialog",dialog:{data:{"&":"$$",object_name:"${objectName}"},type:"dialog",title:"导入数据",body:[{type:"form",mode:"edit",persistData:!1,promptPageLeave:!0,name:"form_edit_data_import",debug:!1,title:"",submitText:"",api:{method:"post",url:"${context.rootUrl}/graphql",data:{objectName:"queue_import_history",$:"$$"},requestAdaptor:"\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.success_count;\ndelete formData.failure_count;\ndelete formData.total_count;\ndelete formData.start_time;\ndelete formData.end_time;\ndelete formData.state;\ndelete formData.error;\ndelete formData.created;\ndelete formData.created_by;\ndelete formData.modified;\ndelete formData.modified_by;\n \n \n let fileFieldsKeys = [\"file\"];\n let fileFields = {\"file\":{\"name\":\"file\"}};\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 let query = `mutation{record: ${objectName}__insert(doc: {__saveData}){_id}}`;\n if(formData.recordId && formData.recordId !='new'){\n query = `mutation{record: ${objectName}__update(id: \"${formData._id}\", doc: {__saveData}){_id}}`;\n };\n delete formData._id;\n let __saveData = JSON.stringify(JSON.stringify(formData));\n \n api.data = {query: query.replace('{__saveData}', __saveData)};\n return api;\n ",responseData:{recordId:"${record._id}"},adaptor:"console.log('payload', payload)\n return payload;\n ",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},dataType:"json"},initFetch:!0,body:[{type:"fieldSet",title:"通用",collapsable:!0,body:[{name:"object_name",label:"导入对象",required:!1,type:"select",joinValues:!1,extractValue:!0,autoComplete:{method:"post",url:"${context.rootUrl}/graphql",data:{orderBy:"${orderBy}",orderDir:"${orderDir}",pageNo:"${page}",pageSize:"${perPage}",query:"{options:objects(filters: {__filters}, top: {__top}){_id label:label value:name},count:objects__count(filters:{__filters})}",$term:"$term",$value:"$object_name.name",$:"$$",rfield:"${object_name}"},headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},requestAdaptor:"\n var filters = '[]';\n var top = 10;\n if(api.data.$term){\n filters = '[\"name\", \"contains\", \"'+ api.data.$term +'\"]';\n }else if(api.data.$value){\n filters = '[\"_id\", \"=\", \"'+ api.data.$value +'\"]';\n }\n api.data.query = api.data.query.replace(/{__filters}/g, filters).replace('{__top}', top);\n return api;\n "},className:"m-1",labelClassName:"text-left",clearValueOnHidden:!1,id:"u:04295fee3896",multiple:!1,hidden:!0},{name:"queue_import",label:"数据导入",required:!0,type:"picker",labelField:"description",valueField:"_id",modalMode:"dialog",source:{method:"post",url:"${context.rootUrl}/graphql",data:{orderBy:"${orderBy}",orderDir:"${orderDir}",pageNo:"${page}",pageSize:"${perPage}",query:'{rows:queue_import(filters: {__filters}, top: {__top}, skip: {__skip}, sort: "{__sort}"){_id,description,object_name,encoding,template_url,_display:_ui{object_name,encoding}},count:queue_import__count(filters:{__filters})}',$term:"$term",$self:"$$"},headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},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 = [\"description\"];\n if(api.data.$term){\n filters = [[\"name\", \"contains\", \"'+ api.data.$term +'\"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n if(selfData.value?.indexOf(',') > 0){\n filters = [[\"_id\", \"=\", selfData.value.split(',')]];\n }else{\n filters = [[\"_id\", \"=\", selfData.value]];\n }\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\n const filtersFunction = function(filters, values){return ['object_name', '=', values.object_name]};\n\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data.$self.__super.__super);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\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 ",adaptor:"\n const enable_tree = undefined;\n if(enable_tree){\n const records = payload.data.rows;\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._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 _.each(records, (record)=>{\n if(!record.parent){\n treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));\n }\n });\n payload.data.rows = treeRecords;\n }\n return payload;\n "},size:"lg",pickerSchema:{mode:"table",name:"thelist",draggable:!1,headerToolbar:["reload"],defaultParams:{perPage:20},columns:[{name:"_index",type:"text",width:32,placeholder:""},{name:"description",label:"导入描述",type:"tpl",tpl:'<a href="/app/undefined/undefined/view/${undefined}">${description}</a>',className:"whitespace-nowrap",html:null},{name:"object_name",label:"导入对象",type:"tpl",tpl:'<a href="/app/undefined/${_display.object_name.objectName}/view/${_display.object_name.value}">${_display.object_name.label}</a>',className:"whitespace-nowrap",html:null},{name:"encoding",label:"字符代码",type:"tpl",tpl:"<div>${_display.encoding}</div>",className:"whitespace-nowrap",html:null},{name:"template_url",label:"导入模板",type:"tpl",className:"whitespace-nowrap"},null],syncLocation:!1,keepItemSelectionOnPageChange:!0,checkOnItemClick:!1,autoFillHeight:!1},joinValues:!1,extractValue:!0,className:"m-1",labelClassName:"text-left",clearValueOnHidden:!0,id:"u:401df27113e0"},{name:"file",label:"Excel文件",required:!0,type:"input-file",className:"m-1",labelClassName:"text-left",clearValueOnHidden:!0,useChunk:!1,receiver:{method:"post",url:"${context.rootUrl}/s3/files",data:{$:"$$",context:"${context}"},adaptor:'\n const { context } = api.body; \n var rootUrl = context.rootUrl + "/api/files/files/";\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 ',headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}},id:"u:0213f2cc365b"}],id:"u:4899c260d667"}],panelClassName:"m-0 sm:rounded-lg shadow-none",bodyClassName:"p-0",className:"p-4 sm:p-0 steedos-amis-form",label:"对象表单",objectApiName:"queue_import_history",id:"u:e4ef598eed61",onEvent:{submitSucc:{weight:0,actions:[{args:{api:{url:"${context.rootUrl}/api/data/initiateImport",method:"post",data:{eventData:"${event.data}"},dataType:"json",requestAdaptor:"\napi.data = {\n importObjectHistoryId: api.body.eventData.result.data.recordId\n}\nreturn api;",adaptor:"payload.status = payload.status === 'success' ? 0 : payload.status;\nconsole.log(\"payload ssss==>\", payload)\nreturn payload;",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}},messages:{success:"已开始导入...",failed:"导入失败"}},actionType:"ajax",expression:"event.data.result"}]}},closeDialogOnSubmit:!0}],id:"u:dc05498d3bd4",closeOnEsc:!1,closeOnOutside:!1,showCloseButton:!0,size:"lg"}}],weight:0}},level:"default"}],regions:["body"],className:"p-0",id:"u:bd2f9c4e986f"}}),gt=async(e,t)=>({type:"amis_button",amis_schema:await{type:"service",className:"p-0",body:[{type:"button",label:"查看",className:"border-none",onEvent:{click:{actions:[{componentId:"",args:{blank:!1,url:"/app/${app_id}/${objectName}/view/${_id}"},actionType:"link"}]}},id:"u:ef35c9ae1d19"}],regions:["body"]}});function _t(e){let t=e.visible;return e._visible&&(t=e._visible),(t=r.isBoolean(t)?t.toString():t)?t.trim().startsWith("function")?t+".apply({\n object: uiSchema\n }, [objectName, _id, recordPermissions, data])":t:"amis_button"===e.type&&(e=e.amis_schema)&&e.body&&0<e.body.length?e.body[0].visibleOn:void 0}const vt={standard_delete_many:function(){var{listViewId:e,uiSchema:t,scopeId:a}=this,a=SteedosUI?.getRef(a||e).getComponentById("listview_"+t.name);r.isEmpty(a.props.store.toJSON().selectedItems)?a.handleAction({},{actionType:"toast",toast:{items:[{position:"top-right",body:"请选择要删除的项"}]}}):a.handleBulkAction(a.props.store.toJSON().selectedItems,[],{},a.props.bulkActions[0])}},wt=(e,t)=>{const a=e.permissions&&e.permissions.disabled_actions;let n=r.sortBy(r.values(e.actions),"sort");return r.has(e,"allow_customActions")&&(n=r.filter(n,(t=>r.include(e.allow_customActions,t.name)))),r.has(e,"exclude_actions")&&(n=r.filter(n,(t=>!r.include(e.exclude_actions,t.name)))),r.each(n,(a=>{a.objectName=e.name,t.isMobile&&-1<["record","record_only"].indexOf(a.on)&&"standard_edit"!=a.name&&("record_only"==a.on?a.on="record_only_more":a.on="record_more")})),t.isMobile&&-1<["cms_files","cfs.files.filerecord"].indexOf(e.name)&&r.map(n,(e=>{"standard_edit"===e.name&&(e.on="record_more"),"download"===e.name&&(e.on="record")})),r.filter(n,(e=>r.indexOf(a,e.name)<0&&"standard_query"!=e.name))},$t=(e,t)=>(e=wt(e,t),r.filter(e,(e=>"list"==e.on))),Nt=(e,t)=>(e=wt(e,t),t=r.filter(e,(e=>"record"==e.on||"record_only"==e.on)),r.sortBy(t,"sort")),Ft=(e,t)=>(e=wt(e,t),t=r.filter(e,(e=>"record_more"==e.on||"record_only_more"==e.on)),r.sortBy(t,"sort")),xt=async(e,t)=>(e=wt(e,t),r.filter(e,(e=>"record"==e.on||"list_item"==e.on||"record_more"===e.on))),kt=async(e,t)=>(e=wt(e,t),r.filter(e,(e=>"list"==e.on))),St=async(e,t,a)=>{var n=await Da(e);if(n){var i=await wt(n,a);i=r.find(i,(e=>e.name===t));if(i)return"standard_edit"==i.name&&"standard_edit"===i.todo&&"amis_button"!=i.type?{label:i.label,name:i.name,on:i.on,...await ft(n,a)}:"cms_files"!=e&&"standard_new"==i.name&&"standard_new"===i.todo&&"amis_button"!=i.type?{label:i.label,name:i.name,on:i.on,...await mt(n,a)}:"standard_delete"==i.name&&"standard_delete"===i.todo&&"amis_button"!=i.type?{label:i.label,name:i.name,on:i.on,sort:i.sort,...await yt(n,a)}:n.hasImportTemplates&&"standard_import_data"===i.name?{label:i.label,name:i.name,on:i.on,sort:i.sort,...await ht(n,a)}:"standard_open_view"===i.name?{label:i.label,name:i.name,on:i.on,sort:i.sort,...await gt(n,a)}:"standard_delete_many"===i.name?{label:i.label,name:i.name,on:i.on,sort:i.sort,...await bt(n,a)}:i}},jt=(e,t)=>{if(e.todo)return r.isString(e.todo)&&r.startsWith(r.trim(e.todo),"function")&&(window.eval("var fun = "+e.todo),e.todo=fun),r.isFunction(e.todo)?(t={objectName:t.objectName,object_name:t.objectName,object:t.uiSchema,record:t.record,recordId:t.recordId,record_id:t.recordId,...t,action:e},e.todo.apply(t,[t.objectName,t.recordId])):void 0},It=jt;function Ot(e,t,a){var{icon:n,label:r}=e;const i=[];s(e.list_views,((t,a)=>{i.push({type:"button",label:t.label,actionType:"link",link:`/app/\${appId}/${e.name}/grid/`+a})}));var o=$t(e,{}),l=(o=m(o,(e=>({type:"steedos-object-button",name:e.name,objectName:e.objectName,visibleOn:_t(e),className:"button_"+e.name}))),new RegExp("_","g"));return{type:"grid",columns:[{body:[{type:"grid",columns:[{body:{type:"tpl",className:"block",tpl:`<img class="slds-icon slds-icon_container slds-icon-standard-${n&&n.replace(l,"-")} slds-page-header__icon" src="\${context.rootUrl}/unpkg.com/@salesforce-ux/design-system/assets/icons/standard/${n}.svg" />`},md:"auto",className:"",columnClassName:"flex justify-center items-center",valign:"middle"},{body:[{type:"tpl",tpl:""+r,inline:!1,wrapperComponent:"",className:"text-md leading-none text-black"},{type:"dropdown-button",className:"",label:"${uiSchema.list_views[listName].label}",rightIcon:"fa fa-caret-down",size:"sm",hideCaret:!0,btnClassName:"!bg-transparent !border-none !hover:border-none text-lg h-5 font-bold p-0 text-black leading-none",buttons:i}],md:"",columnClassName:"p-l-xs"}],className:"flex justify-between"}],md:"auto"},{body:{type:"flex",items:o},md:"auto",valign:"middle"}],className:"flex justify-between"}}async function Dt(e,t,a){var n=f(e.fields);n=y(b(m(n,(t=>e.fields[t]))),"sort_no");return await _a(e,n,a)}async function Vt(e,t,a){return[{type:"wrapper",body:[Ot(e)],className:"bg-gray-100 sm:rounded-tl sm:rounded-tr p-4 -mb-4"}]}async function Et(e,t,a){var{showRecordTitle:a=!0}=a||{},{name:n,label:r,icon:i}=e,o=Nt(e,{}),s=Ft(e,{recordId:t,objectName:n}),l=(o=m(o,(e=>({type:"steedos-object-button",name:e.name,objectName:e.objectName,visibleOn:_t(e),className:"button_"+e.name}))),s=m(s,(e=>({type:"steedos-object-button",name:e.name,objectName:e.objectName,visibleOn:_t(e)}))),s=(o.push({type:"steedos-dropdown-button",label:"",buttons:s,className:"slds-icon"}),new RegExp("_","g")),s=i&&i.replace(s,"-"),[]);a&&l.push({body:[{type:"grid",columns:[{body:{type:"tpl",className:"block",tpl:`<img class='slds-icon slds-icon_container slds-icon-standard-${s}' src='\${context.rootUrl}/unpkg.com/@salesforce-ux/design-system/assets/icons/standard/${i}.svg'>`},md:"auto",className:"",columnClassName:"flex justify-center items-center"},{body:[{type:"tpl",tpl:""+r,inline:!1,wrapperComponent:"",className:"leading-4 text-md"},{type:"tpl",tpl:"${name}",inline:!1,wrapperComponent:"",className:"leading-5 text-xl font-bold"}],columnClassName:"p-l-xs"}],className:"flex justify-between"}],md:"auto"}),l.push({body:{type:"flex",items:o},md:"auto",hiddenOn:"${recordLoaded != true}"}),a=[{type:"service",body:[{type:"grid",columns:l,className:"flex justify-between"}],messages:{}}];return{type:"service",bodyClassName:"",name:"page",data:{"&":"$$",objectName:n,_id:t,recordPermissions:e.permissions,uiSchema:e},body:a,className:""}}async function At(e,t){var a=e.icon,n=(e=await kt(e,{}),e=m(e,(e=>({type:"steedos-object-button",name:e.name,objectName:e.objectName,visibleOn:_t(e),className:"button_"+e.name}))),new RegExp("_","g"));return{type:"wrapper",body:[{type:"grid",valign:"middle",columns:[{body:[{type:"grid",valign:"middle",className:"flex justify-between",columns:[{body:{type:"tpl",className:"block",tpl:`<img class="slds-icon_small slds-icon_container slds-icon-standard-${a&&a.replace(n,"-")}" src="\${context.rootUrl}/unpkg.com/@salesforce-ux/design-system/assets/icons/standard/${a}.svg" />`},md:"auto",className:"",columnClassName:"flex justify-center items-center"},{body:[{type:"tpl",tpl:`<a class="text-black text-base font-bold" href="/app/\${appId}/\${masterObjectName}/\${masterRecordId}/\${objectName}/grid?related_field_name=\${relatedKey}">${t}(\${$count})</a>`,inline:!1,wrapperComponent:"",className:""}],md:"",valign:"middle",columnClassName:"p-l-xs"}]}],md:"auto"},{body:{type:"flex",items:e},md:"auto"}],className:"flex justify-between"}],className:"border-b border-gray-300 p-3"}}function Tt(e,t){return"SMALL"===t?[{type:"tpl",tpl:"${count} 个项目"},{type:"button",align:"right",className:"bg-white p-2 rounded border-gray-300 text-gray-500",label:"",icon:"fa fa-sync",onEvent:{click:{actions:[{actionType:"custom",script:'\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 '}]}}}]:["bulkActions",{type:"columns-toggler",className:"hidden"},{type:"tpl",tpl:"${count} 个项目"},{type:"reload",align:"right",className:"bg-white p-2 rounded border-gray-300 text-gray-500"},{label:"",icon:"fa fa-search",type:"button",align:"right",className:"bg-white p-2 rounded border-gray-300 text-gray-500",onEvent:{click:{actions:[{actionType:"custom",script:'\n const scope = event.context.scoped;\n const filterForm = scope.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({showFieldsFilter: !!!filterService.props.data.showFieldsFilter});\n '}]}}}]}function Ct(e,t){return"SMALL"===t?["load-more"]:["statistics","pagination"]}async function qt(e,t,a){return{title:"",submitText:"",className:"",mode:"normal",wrapWithPanel:!1,body:[await Dt(e,0,a)]}}async function Pt(e,t,a){var n=a.top,i=e.paging&&!1===e.paging.enabled,o=function(e){return[{type:"button",level:"danger",label:"批量删除",actionType:"ajax",confirmText:"确定要删除吗",className:"hidden",id:"batchDelete",api:Qe(e.name)}]}(e),s={toolbar:[],bodyClassName:"",headerToolbar:Tt(0,a.formFactor),headerToolbarClassName:"px-4 py-2 border-gray-300 bg-gray-100 border-solid border-b",footerToolbar:Ct(0,a.formFactor),className:""+(a.className||"")};"SMALL"!==a.formFactor&&Object.assign(s,{filter:!!a.filterVisible&&await qt(e,0,a),bulkActions:0!=a.bulkActions&&o}),i?(a.top=1e3,s.footerToolbar=[]):n&&(s.footerToolbar=[]);let l=null;if(o="listview_"+e.name,a.formFactor,delete(i=await Gt(t,Object.assign({idFieldName:e.idFieldName,labelFieldName:e.NAME_FIELD_KEY||"name"},a))).mode,l=Object.assign({},i,{type:"crud",primaryField:"_id",affixHeader:!1,id:o,name:o,keepItemSelectionOnPageChange:!0,api:await Zt(e,t,a),hiddenOn:a.tableHiddenOn,autoFillHeight:!1},s),(n=a.defaults)&&(i=n.listSchema||{},l=it({},i,l),t=n.headerSchema,s=n.footerSchema,t||s)){let e=[l];t&&(r.isArray(t)?e=r.union(t,e):e.unshift(t)),s&&(r.isArray(s)?e=r.union(e,s):e.push(s)),l=e}return{type:"service",className:"",id:"service_"+o,name:"page",data:{$master:"$$",objectName:e.name,_id:null,recordPermissions:e.permissions,uiSchema:e,loaded:!1},body:l}}const Lt=e=>{var t=ke();return{mode:e,user:t,spaceId:t.spaceId,userId:t.userId}};async function Bt(e,t){var{recordId:a,layout:n="normal",labelAlign:i,defaults:o}=t,s=r.values(e.fields),o=o&&o.formSchema||{},n={type:"service",className:"p-0",name:"page_edit_"+a,api:await Ze(e,a,s),initApi:null,initFetch:null,body:[it({},o,{type:"form",mode:n,labelAlign:i,persistData:!1,promptPageLeave:!0,name:"form_edit_"+a,debug:!1,title:"",submitText:"",api:await Xe(e,a,s),initFetch:"new"!=a,body:await at(s,e,t),panelClassName:"m-0 sm:rounded-lg shadow-none",bodyClassName:"p-0",className:"steedos-amis-form",onEvent:{submitSucc:{weight:0,actions:[{componentId:"steedos-record-related-list-"+e.name,actionType:"setValue",args:{value:{$count:void 0}}},{componentId:"listview_"+e.name,actionType:"reload",expression:"!!listViewId"},{actionType:"custom",script:'\n const { recordId, listViewId } = context.props.data;\n const data = event.data;\n const appId = data.appId;\n const objectName = data.objectName;\n // 在记录详细界面时isRecordDetail为true\n // TODO: isRecordDetail这个判断需要优化\n const isRecordDetail = !!data.$master && data.$master.$master?.recordId;\n if(recordId){\n // 编辑记录时,刷新主表单\n doAction({\n componentId: `detail_${recordId}`,\n actionType: "reload",\n expression: `!${listViewId}`\n });\n }\n else if(!isRecordDetail){\n // 在列表视图界面新建记录时跳转到详细页面\n const listName = event.data.listName;\n const uiSchema = event.data.uiSchema;\n const listView = uiSchema && uiSchema.list_views[listName];\n const newRecordId = data.result.data?.recordId;\n doAction({\n "args": {\n "url": "/app/" + appId + "/" + objectName + "/view/" + newRecordId,\n "blank": false\n },\n "actionType": "link"\n });\n }\n '}]}}})]};return o.id&&(n.id="service-"+o.id),n}async function Rt(e,t,a){var{layout:n="normal",labelAlign:i,formInitProps:o}=a,s=r.values(e.fields);return{type:"service",name:"page_readonly_"+t,id:"detail_"+t,data:{global:Lt("read"),context:{rootUrl:xe(),tenantId:we(),authToken:$e()}},api:await Ye(e,t,s,o),body:[{type:"form",mode:n,labelAlign:i,persistData:!1,promptPageLeave:!1,name:"form_readonly_"+t,debug:!1,title:"",data:{formData:"$$"},wrapWithPanel:!1,body:await at(m(s,(e=>(e.readonly=!0,e))),e,Object.assign({},a,{showSystemFields:!0})),className:"steedos-amis-form bg-white",actions:[],hiddenOn:"${recordLoaded != true}"}],onEvent:{fetchInited:{weight:0,actions:[{actionType:"broadcast",eventName:"recordLoaded",args:{eventName:"recordLoaded"},data:{record:"${event.data}"}},{actionType:"setValue",args:{value:{recordLoaded:!0}}}]}}}}const zt=["text","date","file","avatar","image","datetime","time","number","currency","percent","password","url","email"];function Ut(e,t,a){return t?n.includes(["text","image"],e)?"image"===e&&a&&a.multiple?"static-images":"static-"+e:"static":n.includes(zt,e)?"input-"+e:e}const Jt=(e,t)=>Ut("avatar"===e.type?"image":e.type,t,{multiple:e.multiple}),Mt=e=>{var t=e.type,a=Jt(e,!0);return _.includes(["avatar","image"],t)?{type:a,defaultImage:"",enlargeAble:!0,showToolbar:!0}:"file"===t?{type:a,tpl:`\n <% let fileData = data.${e.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 <% });} %>`}:void 0},Ht=e=>{var t=(e=>{switch(e.type){case"avatar":return"avatars";case"image":return"images";case"file":return"files"}})(e);t={type:Jt(e,!1),useChunk:!1,receiver:{method:"post",url:"${context.rootUrl}/s3/"+t,data:{$:"$$",context:"${context}"},adaptor:`\n const { context } = api.body; \n var rootUrl = context.rootUrl + "/api/files/${t}/";\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 `,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}};return e.multiple&&(t.multiple=!0,t.joinValues=!1,t.extractValue=!0),t},Kt=(e,t)=>(t?Mt:Ht)(e);function Yt(e){return{perPage:e.top||e.perPage||lt.perPage}}function Wt(e){let t=e.visible;return e._visible&&(t=e._visible),(t=O(t)?t.toString():t)?t.trim().startsWith("function")?t+"(objectName, _id, recordPermissions, data)":t:"amis_button"===e.type&&(e=e.amis_schema)&&e.body&&0<e.body.length?e.body[0].visibleOn:void 0}async function Gt(e,t){let a=[];return"SMALL"===(t=t||{}).formFactor?a=await async function(e,t){var a=[];let n={};var r=[];for(const a of e){let e="";e=(e=a.is_name||a.name===t.labelFieldName?(n=a,t.onlyDisplayLabel=!0,await He(a,t)):"avatar"===a.type||"image"===a.type||"file"===a.type?`\${_display.${a.name}.name}`:("lookup"!==a.type&&"master_detail"!==a.type||(t.onlyDisplayLabel=!0),await He(a,t)))||`\${${a.name}}`,a.hidden||a.extra||r.push({field:a,tpl:e})}e=Re(0,t);var i=function(e){let t=[],a=[],n=!1,r=!0,i="",o="flex items-center justify-between";return e.forEach((function(e){n&&t.length<2&&(t.push({type:"wrapper",body:a,size:"none",className:o}),a=[]),r?(i="steedos-listview-item-left truncate",e.field.is_wide&&(i="steedos-listview-item-wide truncate")):i="steedos-listview-item-right truncate ml-2 flex flex-shrink-0",a.push({type:"tpl",tpl:e.tpl,className:i}),n=r=!!e.field.is_wide||!r})),a.length&&t.length<2&&t.push({type:"wrapper",body:a,size:"none",className:o}),t}(r);return a.push({name:n.name,label:n.label,sortable:n.sortable,type:"button",level:"link",actionType:"link",link:e,innerClassName:"steedos-listview-item block hover:bg-gray-50 text-gray-500",body:{type:"wrapper",body:i,size:"none",className:"p-2"}}),a}(e,t):(a=await async function(e,t){var a=[{name:"_index",type:"text",width:32,placeholder:""}];for(const r of e)if(!r.is_name&&r.name!==t.labelFieldName||"cms_files"!==t.objectName)if("toggle"===r.type)a.push({type:"switch",name:r.name,label:r.label,width:r.width,toggled:r.toggled,disabled:!0,className:"whitespace-nowrap"});else if("avatar"===r.type||"image"===r.type||"file"===r.type)a.push({type:"switch",name:r.name,label:r.label,width:r.width,toggled:r.toggled,disabled:!0,className:"whitespace-nowrap",...Mt(r)});else{var n=await He(r,t);let e="text";n?e="tpl":"html"===r.type&&(e="markdown"),r.hidden||r.extra||a.push({name:r.name,label:r.label,sortable:r.sortable,width:r.width,type:e,tpl:n,toggled:r.toggled,className:"textarea"===r.type?"min-w-56 whitespace-pre-wrap textarea":"whitespace-nowrap",html:"html"===r.type||null})}else n=`\n var data = event.data;\n var file_name = data.versions ? data.name : "${r.label}";\n var file_id = data._id;\n SteedosUI.previewFile && SteedosUI.previewFile({file_name, file_id});\n `,a.push({type:"button",label:`<%=data.versions ? data.name : "${r.label}"%>`,className:"whitespace-nowrap",level:"link",onEvent:{click:{actions:[{args:{api:{url:"${context.rootUrl}/api/files/files/${versions[0]}?download=true",method:"get",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}},actionType:"download",expression:"!!!window?.nw?.require"},{args:{},actionType:"custom",script:n,expression:"!!window?.nw?.require"}]}}});return a}(e,t)).push(await async function(e){e=e.buttons;const t=[];if(s(e,(e=>{O(e.visible)&&(e.visible=e.visible.toString()),t.push({type:"steedos-object-button",name:e.name,objectName:e.objectName,visibleOn:Wt(e),className:"antd-Button--default"})})),!(t.length<1))return{type:"operation",label:"操作",fixed:"right",labelClassName:"text-center",className:"text-center steedos-listview-operation w-20",buttons:[{type:"steedos-dropdown-button",label:"xxx",buttons:t,placement:"bottomRight",overlayClassName:"shadow !min-w-[160px]",trigger:["click"],id:"u:c2140a365019",onOpenApi:{url:"${context.rootUrl}/service/api/@${objectName}/recordPermissions/${_id}",method:"get",data:{$:"$$",objectName:"${objectName}",listViewId:"${listViewId}",appId:"${appId}",formFactor:"${formFactor}",context:"${context}"},responseData:{recordPermissions:"$$"},headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},adaptor:"\n payload.recordPermissions = payload;\n return payload;\n "}}]}}(t)),{mode:"table",name:"thelist",headerToolbarClassName:"py-2 px-2 border-gray-300 bg-gray-100 border-solid border-b",className:"",draggable:!1,defaultParams:Yt(t),columns:a,syncLocation:!1,keepItemSelectionOnPageChange:!0,checkOnItemClick:!1,labelTpl:`\${${t.labelFieldName}}`,autoFillHeight:!1,columnsTogglable:!1}}async function Zt(e,t,a){const r=[];let{globalFilter:o,filter:s,filtersFunction:l,sort:d,top:c,setDataToComponentId:p=""}=a,u=(s=(s=n.isArray(s)?n.map(s,(function(e){return e.operation?[e.field,e.operation,e.value]:e})):s)||[],null);i(o)||i(s)?o?u=o:s&&(u=s):u=[o,"and",s],n.each(t,(function(e){e.searchable&&r.push(e.name)}));const m={},f=[];t.forEach((e=>{n.includes(["image","avatar","file"],e.type)&&(f.push(e.name),m[e.name]={name:e.name,type:e.type,multiple:e.multiple})}));var y=e.key_field||"_id";return(t=await Xt(e,null,t,{alias:"rows",limit:c,queryOptions:'filters: {__filters}, top: {__top}, skip: {__skip}, sort: "{__sort}"'})).data.$term="$term",t.data.$self="$$",t.data.filter="$filter",t.data.loaded="${loaded}",t.data.listViewId="${listViewId}",t.requestAdaptor=`\n let selfData = JSON.parse(JSON.stringify(api.data.$self));\n try{\n // TODO: 不应该直接在这里取localStorage,应该从外面传入\n const listViewId = api.data.listViewId;\n const listViewPropsStoreKey = location.pathname + "/crud/" + listViewId ;\n let localListViewProps = localStorage.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 = "${a.formFactor}";\n // 移动端不识别本地存储中的翻页页码,否则点击加载更多按钮后无法刷新回第一页\n api.data.pageNo = formFactor === "SMALL" ? 1 : (localListViewProps.page || 1);\n }\n }\n }\n catch(ex){\n console.error("本地存储中crud参数解析异常:", ex);\n }\n ${u?`var systemFilters = ${JSON.stringify(u)};`:"var systemFilters = [];"}\n const filtersFunction = ${l};\n if(filtersFunction){\n const _filters = filtersFunction(systemFilters, selfData);\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 : "${d||""}";\n var allowSearchFields = ${JSON.stringify(r)};\n if(api.data.$term){\n userFilters = [["name", "contains", "'+ api.data.$term +'"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n userFilters = [["${y.name}", "=", selfData.value]];\n }\n var searchableFilter = [];\n _.each(selfData, (value, key)=>{\n if(!_.isEmpty(value) || _.isBoolean(value)){\n if(_.startsWith(key, '__searchable__between__')){\n searchableFilter.push([\`\${key.replace("__searchable__between__", "")}\`, "between", value])\n }else if(_.startsWith(key, '__searchable__')){\n if(_.isString(value)){\n searchableFilter.push([\`\${key.replace("__searchable__", "")}\`, "contains", value])\n }else{\n searchableFilter.push([\`\${key.replace("__searchable__", "")}\`, "=", value])\n }\n }\n }\n });\n\n if(searchableFilter.length > 0){\n if(userFilters.length > 0 ){\n userFilters = [userFilters, 'and', searchableFilter];\n }else{\n userFilters = searchableFilter;\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 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 userFilters.push(keywordsFilters);\n };\n\n let filters = [];\n\n if(!_.isEmpty(systemFilters)){\n filters = systemFilters;\n }\n\n if(!_.isEmpty(userFilters)){\n if(_.isEmpty(filters)){\n filters = userFilters;\n }else{\n filters.push('and');\n filters.push(userFilters)\n }\n }\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 return api;\n `,t.adaptor=`\n const enable_tree = ${e.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(m)};\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, 'url')\n }\n }\n })\n })\n \n if(enable_tree){\n const records = payload.data.rows;\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._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 _.each(records, (record)=>{\n if(!record.parent){\n treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));\n }\n });\n payload.data.rows = treeRecords;\n }\n\n\n try{\n // TODO: 不应该直接在这里取localStorage,应该从外面传入\n const listViewId = api.body.listViewId;\n const listViewPropsStoreKey = location.pathname + "/crud/" + listViewId ;\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 = localStorage.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 = "${a.formFactor}";\n // 移动端不识别本地存储中的翻页页码,否则点击加载更多按钮后无法刷新回第一页\n selfData.page = formFactor === "SMALL" ? 1 : (localListViewProps.page || 1);\n }\n }\n delete selfData.context;\n delete selfData.global;\n localStorage.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 = "${p}";\n if(setDataToComponentId){\n SteedosUI.getRef(api.body.$self.scopeId)?.getComponentById(setDataToComponentId)?.setData({$count: payload.data.count})\n }\n\n return payload;\n `,t}async function Xt(e,t,a,n){return e=await Ve(e,t,a,n),{method:"post",url:Ee(),data:e,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}async function Qt(e,t){var a,n=await Ve({name:"organizations"},null,[{name:"_id",alias:"value"},{name:"name",alias:"label"},{name:"children"}],{alias:"leftOptions",filters:"{__filters}"});(a=((a=(n.query=n.query.replace(/,count\:.+/,"}"),await Ve({name:"organizations"},null,[{name:"_id",alias:"ref"}],{alias:"children",filters:"{__filters}"}))).query=a.query.replace(/,count\:.+/,"}"),n.query=n.query.replace(/}$/,","+a.query.replace(/{(.+)}/,"$1}")),await Ve({name:"space_users"},null,[{name:"user"},{name:"name"}],{alias:"defaultValueOptions",filters:"{__options_filters}"}))).query=a.query.replace(/,count\:.+/,"}"),n.query=n.query.replace(/}$/,","+a.query.replace(/{(.+)}/,"$1}"));let r=""+e.name;return t.fieldNamePrefix&&(r=""+t.fieldNamePrefix+e.name),n.$value="$"+r,n.__selectUserLoaded__="${__selectUserLoaded__}",a=`\n console.log("select user field '${e.name}' requestAdaptor api:", api);\n var filters = [['parent', '=', null]];\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters));\n var defaultValue = api.data.$value;\n var optionsFiltersOp = "${e.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 `,{method:"post",url:Ee()+`?value=\${${e.multiple?r+"|join":r}}`,requestAdaptor:a,adaptor:"\n const data = payload.data;\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 data.leftOptions = data.leftOptions.map(function (leftOption) {\n leftOption.defer = !!(leftOption.children && leftOption.children.length);\n delete leftOption.children;\n return leftOption;\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 ",data:n,sendOn:"!this.__selectUserLoaded__",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}async function ea(e,t){var a=await Ve({name:"{__object_name}"},null,[],{alias:"options",queryOptions:'filters: {__filters}, sort: "{__sort}"'});let n=e.filters;return"function"==typeof(n="string"==typeof n?(n=new Function("return "+n))():n)&&(n=n(e)),a.query=a.query.replace(/,count\:.+/,"}"),a.query=a.query.replace("{_id}","{{__fields}}"),e=`\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 = "organizations";\n fields = "value:_id,label:name,children";\n filters = [['parent', '=', dep]];\n sort = "${t.orgsSort}";\n }\n else if (ref) { \n objectName = "space_users";\n // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次\n fields = "user,name,value:user,label:name";\n filters = [['user_accepted', '=', true]];\n var defaultFilters = ${n&&JSON.stringify(n)};\n if(defaultFilters){\n filters.push(defaultFilters);\n }\n filters.push(['organizations_parents', '=', ref]);\n sort = "${t.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 `,{method:"post",url:Ee()+"?ref=${ref}&dep=${value}",requestAdaptor:e,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 ",data:a,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}async function ta(e,t){var a=await Ve({name:"space_users"},null,[{name:"user"},{name:"name"},{name:"user",alias:"value"},{name:"name",alias:"label"}],{alias:"options",queryOptions:'filters: {__filters}, sort: "{__sort}"'});e=`\n var term = api.query.term;\n var filters;\n var sort = "";\n if (term) { \n filters = [['user_accepted', '=', true]];\n var defaultFilters = ${(e=(a.query=a.query.replace(/,count\:.+/,"}"),e.filters))&&JSON.stringify(e)};\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 = "${t.usersSort}";\n }\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());\n return api;\n `;return{method:"post",url:Ee()+"?term=${term}",requestAdaptor:e,data:a,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}function aa(e){e=n.find(e.list_views,((e,t)=>"all"===t));let t="";return e?Ia(e):t}async function na(e,t,a){if(!e)return{};a=a||{};var r={type:Ut("select",t)};if(t)r.tpl=await Ue(e,a);else{t=await Da("space_users"),a.usersSort=aa(t),t=await Da("organizations"),a.orgsSort=aa(t),Object.assign(r,{labelField:"name",valueField:"user",multiple:e.multiple,searchable:e.searchable,selectMode:"associated",leftMode:"tree",extractValue:!0,clearable:!0,source:await Qt(e,a),deferApi:await ea(e,a),searchApi:await ta(e,a)}),e.multiple&&Object.assign(r,{joinValues:!1});let i=e.defaultValue;!n.has(e,"defaultValue")||n.isString(i)&&i.startsWith("{")||(n.isString(i)&&i.startsWith("{{")&&(i="$"+i.substring(1,i.length-1)),r.value=i),"boolean"!=typeof r.searchable&&(r.searchable=!0),(t=e.onEvent)&&(r.onEvent=t),a={actionType:"custom",script:'\n // 往上找到form,设置__selectUserLoaded__标记已经加载过选人字段不能再调用source接口初始化选人组件了\n const getClosestAmisComponentByType = function(scope, type){\n const re = scope.getComponents().find(function(n){\n return n.props.type === type;\n });\n if(re){\n return re;\n }\n else{\n return getClosestAmisComponentByType(scope.parent, type);\n }\n }\n const form = getClosestAmisComponentByType(event.context.scoped, "form");\n form.setData({"__selectUserLoaded__":true});\n '},r.onEvent?r.onEvent.change?.actions?.length?r.onEvent.change.actions.unshift(a):r.onEvent.change={weight:0,actions:[a]}:Object.assign(r,{onEvent:{change:{weight:0,actions:[a]}}})}return r}const ra=async e=>{let t=e.reference_to;if(t){"users"===t&&(t="space_users",e.reference_to_field="user");var a=await Da(t);let n=null,r=e.reference_to_field;return r=r||a.idFieldName||"_id",n="_id"===r?{name:"_id",label:"ID",type:"text",toggled:!1}:a.fields[r]||{name:r},{objectName:t,valueField:n,labelField:a.fields[a.NAME_FIELD_KEY||"name"],NAME_FIELD_KEY:a.NAME_FIELD_KEY||"name"}}};async function ia(e,t,a){var r=await ra(e);if(r){const s=await Da(r.objectName),l=[];let d=0;const c=[],p=[];var i=n.find(s.list_views,((e,t)=>"all"===t));i&&i.columns?n.each(i.columns,(function(e){n.isString(e)&&s.fields[e]?p.push(s.fields[e]):n.isObject(e)&&s.fields[e.field]&&p.push(Object.assign({},s.fields[e.field],{width:e.width,wrap:e.wrap}))})):n.each(s.fields,((e,t)=>{"_id"==t||e.hidden||(n.has(e,"name")||(e.name=t),p.push(e))})),n.each(n.sortBy(p,"sort_no"),(function(e){d<5&&(n.find(l,(function(t){return t.name===e.name}))||(d++,l.push(e),e.searchable&&c.push(e.name)))}));const u={[r.labelField.name]:r.labelField,[r.valueField.name]:r.valueField};n.each(l,(e=>{e.hidden||(u[e.name]=e)}));let m="";if(i&&(m=Ia(i)),(i=await sa(s,null,u,{expand:!0,alias:"rows",queryOptions:'filters: {__filters}, top: {__top}, skip: {__skip}, sort: "{__sort}"'})).url){const t=[],a=[];n.each(e.depend_on,(e=>{t.push(`depend_on_${e}=\${${e}}`),a.push("this."+e)})),0<t.length&&(i.url=i.url+"?"+t.join("&"),i.sendOn=""+a.join(" && "))}i.data.$term="$term",i.data.$self="$$",i.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 sort = orderBy ? sort : "${m}";\n var allowSearchFields = ${JSON.stringify(c)};\n if(api.data.$term){\n filters = [["name", "contains", "'+ api.data.$term +'"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n if(selfData.value?.indexOf(',') > 0){\n filters = [["${r.valueField.name}", "=", selfData.value.split(',')]];\n }else{\n filters = [["${r.valueField.name}", "=", selfData.value]];\n }\n }\n\n var searchableFilter = [];\n _.each(selfData, (value, key)=>{\n if(!_.isEmpty(value) || _.isBoolean(value)){\n if(_.startsWith(key, '__searchable__between__')){\n searchableFilter.push([\`\${key.replace("__searchable__between__", "")}\`, "between", value])\n }else if(_.startsWith(key, '__searchable__')){\n if(_.isString(value)){\n searchableFilter.push([\`\${key.replace("__searchable__", "")}\`, "contains", value])\n }else{\n searchableFilter.push([\`\${key.replace("__searchable__", "")}\`, "=", value])\n }\n }\n }\n });\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(keyValue){\n filters.push([key, "contains", keyValue]);\n }\n })\n }\n\n const filtersFunction = ${e._filtersFunction};\n\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data.$self.__super.__super);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\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 `,i.adaptor=`\n const enable_tree = ${s.enable_tree};\n if(enable_tree){\n const records = payload.data.rows;\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._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 _.each(records, (record)=>{\n if(!record.parent){\n treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));\n }\n });\n payload.data.rows = treeRecords;\n }\n return payload;\n `;let f=20,y=(s.paging&&!1===s.paging.enabled&&(f=1e3),null);"SMALL"===a.formFactor?y=await rt(l,{top:f,...a,actions:!1}):((y=await Gt(l,{labelFieldName:s.NAME_FIELD_KEY,top:f,...a})).headerToolbar=Tt(0,a.formFactor),y.footerToolbar=Ct(),!1!==a.filterVisible&&(o=a.filterLoopCount||0,o++,y.filter=await qt(s,0,{isLookup:!0,...a,filterLoopCount:o})),y.data=Object.assign({},y.data,{"&":"$$",objectName:s.name,uiSchema:s,listName:"all",isLookup:!0}));var o={type:Ut("picker",t),labelField:r.labelField.name,valueField:r.valueField.name,modalMode:"dialog",source:i,size:"lg",pickerSchema:y,joinValues:!1,extractValue:!0};return e.multiple&&(o.multiple=!0,o.extractValue=!0),t&&(o.tpl=await Ue(e,a)),o}}async function oa(e,t,a){var r=await ra(e);let i;i=r?await sa({name:r.objectName},null,{[r.labelField.name]:Object.assign({},r.labelField,{alias:"label"}),[r.valueField.name]:Object.assign({},r.valueField,{alias:"value"})},{expand:!1,alias:"options",queryOptions:'filters: {__filters}, top: {__top}, sort: "{__sort}"'}):{method:"post",url:Ee(),data:{query:'{objects(filters: ["_id", "=", "-1"]){_id}}',$:"$$"}};var o=(o=r&&await Da(r.objectName))&&n.find(o.list_views,((e,t)=>"all"===t));let s="";if(o&&(s=Ia(o)),i.url){const t=[],a=[];n.each(e.depend_on,(e=>{t.push(`depend_on_${e}=\${${e}}`),a.push("this."+e)})),0<t.length&&(i.url=i.url+"?"+t.join("&"),i.sendOn=""+a.join(" && "))}i.data.$term="$term",i.data.$value=`$${e.name}.`+(r?r.valueField.name:"_id"),n.each(e.depend_on,(function(e){i.data[e]="$"+e})),i.data.$="$$",i.data.rfield="${object_name}",i.requestAdaptor=`\n var filters = [];\n var top = 10;\n if(api.data.$term){\n filters = [["${r?.NAME_FIELD_KEY||"name"}", "contains", api.data.$term]];\n }else if(api.data.$value){\n filters = [["_id", "=", api.data.$value]];\n }\n\n const filtersFunction = ${e._filtersFunction};\n\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data.$);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\n }\n }\n var sort = "${s}";\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', top).replace('{__sort}', sort.trim());\n return api;\n `,r&&r.labelField.name,r&&r.valueField.name,e._optionsFunction&&(i.adaptor=`\n payload.data.options = eval(${e._optionsFunction})(api.data);\n return payload;\n `),o={type:Ut("select",t),joinValues:!1,extractValue:!0,source:i,autoComplete:i,searchable:!0};let l=e.defaultValue;return!n.has(e,"defaultValue")||n.isString(e.defaultValue)&&e.defaultValue.startsWith("{")||(n.isString(l)&&l.startsWith("{{")&&(l="$"+l.substring(1,l.length-1)),o.value=l),e.multiple&&(o.multiple=!0,o.extractValue=!0),t&&(o.tpl=await Ue(e,a)),o}async function sa(e,t,a,n){return e=await Ve(e,t,a,n),{method:"post",url:Ee(),data:e,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}async function la(e,t,a){var r,i;return t?{type:Ut("picker",t),tpl:ze(e,a)}:!e.reference_to||n.isString(e.reference_to)||t?((r=await ra(e))?(i=await Da(r.objectName),"space_users"===r.objectName&&"user"===e.reference_to_field?da:1==i.enable_enhanced_lookup&&n.isEmpty(e.depend_on)?ia:oa):oa)(e,t,a):{type:"steedos-field-lookup",field:e,readonly:t,ctx:{}}}async function da(e,t,a){return na(e,t,a)}const ca=["created","created_by","modified","modified_by"];function pa(e,t){var a=Object.assign({subFields:[]},e);t=n.filter(t,(function(t){var a=t.name.startsWith(e.name+".")&&n.split(t.name,".").length<3;return a&&(t._prefix=e.name+"."),a}));return a.subFields=t,a}function ua(e,t){var a=Object.assign({subFields:[]},e);t=n.filter(t,(function(t){var a=t.name.startsWith(e.name+".");return a&&(t._prefix=e.name+"."),a}));return a.subFields=t,a}function ma(e){const t=e.data_type||"text",a=[];return n.each(e.options,(e=>{switch(t){case"number":a.push({label:e.label,value:Number(e.value)});break;case"text":a.push({label:e.label,value:String(e.value)});break;case"boolean":a.push({label:e.label,value:"false"!==e.value})}})),a}async function fa(e,t,a){if(!n.includes(ca,e.name)||1==a.showSystemFields){var r,i={name:a.fieldNamePrefix?""+a.fieldNamePrefix+e.name:e.name,label:e.label,labelRemark:e.inlineHelpText,required:(n.has(a,"required")?a:e).required};let p={};switch(e.type){case"text":p.type=Ut("text",t);break;case"textarea":p.type=Ut("textarea",t),p.tpl=`<%=(data.${e.name} || "").split("\\n").join('<br>')%>`;break;case"html":p=((e,t,a)=>t?{type:"html",name:e.name}:{type:"input-rich-text",name:e.name})(e,t);break;case"markdown":p=((e,t,a)=>t?{type:"markdown",name:e.name,options:{linkify:!0,html:!0,breaks:!0}}:{type:"group",body:[{type:"editor",name:e.name,language:"markdown"},{type:"markdown",name:e.name,options:{linkify:!0,html:!0,breaks:!0}}]})(e,t);break;case"select":p={type:Ut("select",t),joinValues:!1,options:ma(e),extractValue:!0,clearable:!0,labelField:"label",valueField:"value",tpl:t?Be(e):null};let u=e.defaultValue;!n.has(e,"defaultValue")||n.isString(e.defaultValue)&&e.defaultValue.startsWith("{")||(n.isString(u)&&u.startsWith("{{")&&(u="$"+u.substring(1,u.length-1)),r=e.data_type||"text",null!=u&&("text"===r?p.value=String(u):"number"===r?p.value=Number(u):"boolean"===r&&(p.value="false"!==u))),e.multiple&&(p.multiple=!0,p.extractValue=!0);break;case"boolean":p={type:Ut("checkbox",t),tpl:t?Je(e):null};break;case"input-date-range":p={type:"input-date-range",inputFormat:"YYYY-MM-DD",format:"YYYY-MM-DDT00:00:00.000[Z]",tpl:t?Pe(e):null,joinValues:!1};break;case"date":p={type:Ut("date",t),inputFormat:"YYYY-MM-DD",format:"YYYY-MM-DDT00:00:00.000[Z]",tpl:t?Pe(e):null};break;case"input-datetime-range":p={type:"input-datetime-range",inputFormat:"YYYY-MM-DD HH:mm",format:"YYYY-MM-DDTHH:mm:ss.SSSZ",tpl:t?Le(e):null,utc:!0,joinValues:!1};break;case"datetime":p={type:Ut("datetime",t),inputFormat:"YYYY-MM-DD HH:mm",format:"YYYY-MM-DDTHH:mm:ss.SSSZ",tpl:t?Le(e):null,utc:!0};break;case"input-time-range":p={type:"input-time-range",inputFormat:"HH:mm",timeFormat:"HH:mm",format:"1970-01-01THH:mm:00.000[Z]",tpl:t?Le(e):null,joinValues:!1};break;case"time":p={type:Ut("time",t),inputFormat:"HH:mm",timeFormat:"HH:mm",format:"1970-01-01THH:mm:00.000[Z]",tpl:t?Le(e):null};break;case"currency":case"number":p=t?{type:"static-tpl",tpl:qe(e)}:{type:Ut("number",t),min:e.min,max:e.max,precision:e.scale};break;case"input-array":p=Object.assign({},e,i);break;case"input-range":p={type:"input-range",min:e.min,max:e.max,value:[0,0],multiple:!0,showInput:!0};break;case"percent":p={type:Ut("number",t),min:e.min,max:e.max,precision:e.scale};break;case"password":p={type:Ut("password",t),tpl:t?Me(e):null};break;case"lookup":case"master_detail":p=await la(e,t,a);break;case"autonumber":t&&(p={type:"static-text"});break;case"url":p={type:Ut("url",t)};break;case"email":p={type:Ut("email",t)};break;case"avatar":case"image":case"file":p=Kt(e,t);break;case"formula":case"summary":t&&(p.type=Ut(e.data_type,t));break;case"code":p={type:"editor",language:e.language,value:e.defaultValue||""};break;case"toggle":p={type:"switch",name:e.name,label:e.label,width:e.width,toggled:e.toggled,disabled:t};break;case"grid":if(e.subFields){p={type:"input-table",showIndex:!0,columnsTogglable:!1,strictMode:!1,affixHeader:!1,editable:!t,addable:!t,removable:!t,draggable:!t,columns:[]};for(const n of e.subFields){var o=n.name.replace(`${e._prefix||""}${e.name}.$.`,"").replace(e.name+".",""),s=await fa(Object.assign({},n,{name:o}),t,a);s&&(delete s.name,delete s.label,p.columns.push({name:o,label:n.label,quickEdit:!t&&s}))}}break;case"object":if(e.subFields)for(var l of(p={type:"combo",items:[]},e.subFields)){var d=l.name.replace(e.name+".$.","").replace(e.name+".",""),c=("grid"===l.type&&(l=await ua(l,a.__permissionFields)),await fa(Object.assign({},l,{name:d}),t,a));c&&(delete c.name,delete c.label,p.items.push(Object.assign({},c,{name:d,label:l.label})))}}return n.isEmpty(p)?void 0:(e.is_wide||"group"===p.type?p.className="col-span-2 m-1":p.className="m-1",t&&(p.className=p.className+" md:border-b"),t&&(p.quickEdit=!1),e.visible_on&&(e.visible_on.startsWith("{{")?p.visibleOn=""+e.visible_on.substring(2,e.visible_on.length-2).replace(/formData./g,"data."):p.visibleOn=""+e.visible_on.replace(/formData./g,"data.")),"group"===p.type?(p.body[0]=Object.assign({},i,p.body[0],{labelClassName:"text-left",clearValueOnHidden:!0,fieldName:e.name}),p):Object.assign({},i,p,{labelClassName:"text-left",clearValueOnHidden:!0,fieldName:e.name}))}}async function ya(e,t,a){var n=a.filterLoopCount||0;let r=e,i=("grid"===r.type?r=await ua(e,t):"object"===e.type&&(r=await pa(e,t)),"__searchable__");if(r.name.indexOf(".")<0&&(e=c(r),h(["textarea","html","code","autonumber"],r.type)&&(e.type="text"),"number"!==r.type&&"currency"!==r.type||(e.type="input-array",e.inline=!0,e.addable=!1,e.removable=!1,e.value=[null,null],e.items={type:"input-number"},e.is_wide=!0,i+="between__"),"date"===r.type&&(e.type="input-date-range",e.is_wide=!0,i+="between__"),"datetime"===r.type&&(e.type="input-datetime-range",e.is_wide=!0,i+="between__"),"time"===r.type&&(e.type="input-time-range",e.is_wide=!0,i+="between__"),"users"===r.reference_to&&(e.reference_to="space_users",e.reference_to_field="user"),e.readonly=!1,e.disabled=!1,e.multiple=!0,e.is_wide=!1,e.defaultValue=void 0,t=await fa(e,!1,Object.assign({},a,{fieldNamePrefix:i,required:!1,showSystemFields:!0,filterVisible:n<5}))))return t}var ba=Object.freeze({__proto__:null,OMIT_FIELDS:ca,getBaseFields:function(e){let t="m-1";return[{name:"createdInfo",label:"创建人",type:"static",labelClassName:"text-left",className:t=e?""+t:t,tpl:Te()},{name:"modifiedInfo",label:"修改人",type:"static",labelClassName:"text-left",className:t,tpl:Ce()}]},getAmisFieldType:function(e){switch(e.type){case"text":case"autonumber":return"text";case"textarea":return"textarea";case"html":return"html";case"markdown":return"markdown";case"select":case"lookup":return"select";case"boolean":return"checkbox";case"date":return"date";case"datetime":return"datetime";case"number":case"currency":case"percent":return"number";case"password":return"password";case"master_detail":return"picker";case"url":return"url";case"email":return"email";case"image":return"image";case"formula":case"summary":break;case"grid":return"table";default:console.log("convertData default",e.type)}},getObjectFieldSubFields:pa,getGridFieldSubFields:ua,getPermissionFields:function(e,t){const a=[],r=[];return n.each(e.fields,((e,t)=>{n.has(e,"name")||(e.name=t),r.push(e)})),n.each(n.sortBy(r,"sort_no"),(function(e){e.hidden||a.push(Object.assign({},e,{permission:{allowEdit:!0}}))})),a},getSelectFieldOptions:ma,convertSFieldToAmisField:fa,getFieldSearchable:ya,getAmisStaticFieldType:Ut});async function ha(e){return{type:"button",label:"",icon:"fa fa-search",className:"bg-white p-2 rounded border-gray-300 text-gray-500",onEvent:{click:{actions:[{actionType:"broadcast",args:{eventName:"broadcast_toggle_fields_filter"}}]}}}}async function ga(e,t,a){a=a||{};var n,r,i=[];for(n of t)h(["grid","avatar","image","object","[object]","[Object]","[grid]","[text]","audio","file"],n.type)||(delete n.defaultValue,delete n.required,delete n.is_wide,delete n.readonly,delete n.hidden,delete n.omit,(r=await ya(n,t,a))&&i.push(r));return m(i,"name"),a.enableSearchableFieldsVisibleOn&&i.forEach((function(e){e.visibleOn=`this.filterFormSearchableFields && this.filterFormSearchableFields.indexOf("${e.fieldName}") > -1`})),{title:"",type:"form",name:"listview-filter-form",id:"listview_filter_form_"+e.name,mode:"normal",wrapWithPanel:!1,className:"sm:grid sm:gap-2 sm:grid-cols-4 mb-2",data:{"&":"${filterFormValues || {}}",...a.initData},body:i}}async function _a(e,t,a){return a=a||{},t=await ga(e,t,Object.assign({},{enableSearchableFieldsVisibleOn:!0},a)),{type:"service",name:"service_listview_filter_form",data:{},id:"service_listview_filter_form_"+e.name,dataProvider:{inited:'\n const objectName = data.objectName;\n const isLookup = data.isLookup;\n const listViewId = data.listViewId;\n let searchableFieldsStoreKey = location.pathname + "/searchable_fields/";\n if(isLookup){\n searchableFieldsStoreKey += "lookup/" + objectName;\n }\n else{\n searchableFieldsStoreKey += listViewId;\n }\n let defaultSearchableFields = localStorage.getItem(searchableFieldsStoreKey);\n if(!defaultSearchableFields && data.uiSchema){\n let listView = data.uiSchema.list_views[data.listName];\n defaultSearchableFields = listView && listView.searchable_fields;\n if(defaultSearchableFields && defaultSearchableFields.length){\n defaultSearchableFields = _.map(defaultSearchableFields, \'field\');\n }\n }\n if(_.isEmpty(defaultSearchableFields) && data.uiSchema){\n defaultSearchableFields = _.map(\n _.filter(_.values(data.uiSchema.fields), (field) => {\n return field.searchable;\n }),\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/" + data.listViewId ;\n let localListViewProps = localStorage.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 setData({ showFieldsFilter: true });\n }\n }\n }\n }\n '},body:{type:"wrapper",body:{type:"wrapper",body:[{type:"wrapper",body:[t],size:"xs",visibleOn:"this.filterFormSearchableFields && this.filterFormSearchableFields.length",className:"slds-filters__body p-0"},{type:"wrapper",body:{type:"wrapper",body:[{type:"button",label:"搜索",icon:"fa fa-search",visibleOn:"this.filterFormSearchableFields && this.filterFormSearchableFields.length",onEvent:{click:{actions:[{actionType:"custom",script:'\n const scope = event.context.scoped;\n var filterForm = scope.getComponents().find(function(n){\n return n.props.type === "form";\n });\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] = "";\n }\n }\n listView.handleFilterSubmit(Object.assign({}, removedValues, filterFormValues));\n '}]}}},{type:"button",label:"设置搜索项",onEvent:{click:{actions:[{actionType:"dialog",dialog:{type:"dialog",size:"md",title:"设置搜索项",body:[{type:"form",title:"",body:[{label:"",type:"transfer",name:"fields",id:"u:92c0b3cccca0",source:{method:"get",url:"${context.rootUrl}/service/api/amis-metadata-objects/objects/${objectName}/fields/options",dataType:"json",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},data:null,requestAdaptor:"",adaptor:""},options:[],required:!0,placeholder:"-",className:"col-span-2 m-0",checkAll:!1,searchable:!0,sortable:!0,joinValues:!1,extractValue:!0,multiple:!0}],id:"u:e5ac506d5683",mode:"normal",persistData:!1,promptPageLeave:!0,name:"form",debug:!1,actions:[],panelClassName:"m-0",bodyClassName:"p-4",className:"steedos-amis-form"}],id:"u:ca99fa9fe1b1",actions:[{type:"button",label:"取消",onEvent:{click:{actions:[{componentId:"",args:{},actionType:"closeDialog"}]}},id:"u:4e447b5ca72a"},{type:"button",label:"确认",onEvent:{click:{actions:[{actionType:"custom",script:'\n const data = context.props.data;\n const listName = data.listName;\n const objectName = data.objectName;\n const isLookup = data.isLookup;\n const listViewId = data.listViewId;\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 else{\n searchableFieldsStoreKey += listViewId;\n }\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] = "";\n });\n filterForm.setValues(removedValues);//这里使用filterInnerForm也可以\n\n if(isLookup){\n return;\n }\n \n // 列表视图crud支持本地缓存,所以需要进一步清除浏览器本地缓存里面用户在可搜索项中移除的字段值\n const listViewPropsStoreKey = location.pathname + "/crud/" + listViewId ;\n let localListViewProps = localStorage.getItem(listViewPropsStoreKey);\n if(localListViewProps){\n localListViewProps = JSON.parse(localListViewProps);\n // const removedValues = {};\n removedKeys.forEach(function(key){\n delete localListViewProps[key];\n // removedValues[key] = "";\n });\n localStorage.setItem(listViewPropsStoreKey, JSON.stringify(localListViewProps));\n }\n // ===END===\n '},{componentId:"",args:{},actionType:"closeDrawer"}]}},id:"u:14e7388fecd3",level:"primary"}],closeOnEsc:!1,closeOnOutside:!1,showCloseButton:!0,data:{"&":"$$",objectName:"${objectName}",listName:"${listName}",listViewId:"${listViewId}",uiSchema:"${uiSchema}",isLookup:"${isLookup}",context:"${context}",fields:"${filterFormSearchableFields}"}}}]}},id:"u:b96d84868a5a",level:"link"}],size:"xs",className:"space-x-4"},size:"xs",className:"slds-filters__footer slds-grid slds-shrink-none flex justify-between p-0"}],size:"xs",className:"slds-filters"},size:"xs",className:"border-gray-300 border-y slds-grid slds-grid_vertical slds-nowrap "+(!a.isLookup&&"mt-2"),visibleOn:"this.showFieldsFilter"},className:"bg-white"}}const va={startDateExpr:"start",endDateExpr:"end",allDayExpr:"is_all_day",textExpr:"name"};function wa(e,t){return e=function(e,t,a){return e=function(e,t,a){let n="",r=(t&&(n=`(filters:["${e.idFieldName}", "=", "${t}"])`),"data"),i=(a&&(a.alias&&(r=a.alias),a.filters&&(n=`(filters:${a.filters})`),a.queryOptions&&(n=`(${a.queryOptions})`)),"\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 ");return a?.fields&&a.fields.length&&(i=`\n recordPermissions: _permissions{\n ${a.fields.join(",")}\n }\n `),{query:`{${r}:${e.name}${n}{${e.idFieldName},${i}}}`}}(e,t,a),{method:"post",url:Ee(),data:e,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}(e,t,{alias:"rows",limit:1,fields:["allowEdit"]}),e.data.$self="$$",e.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 ",e}async function $a(e,t,a){var n=e.permissions,o=(a=a||{},(t=Object.assign({},va,j(t,I))).title||[t.startDateExpr,t.endDateExpr,t.allDayExpr,t.textExpr]);let l=[],d=(s(o,(function(t){e.fields[t]&&l.push(e.fields[t])})),e.fields[t.allDayExpr]&&l.push(e.fields[t.allDayExpr]),a.sort||(o=a.sortField,a.sortOrder),t.currentView);if(d)switch(d){case"day":case"agenda":d="timeGridDay";break;case"week":d="timeGridWeek";break;case"month":d="dayGridMonth"}else d="timeGridWeek";a.calendarOptions=t;o=await async function(e,t,a){var n=(a=a||{}).calendarOptions;const i=[];let{globalFilter:o,filter:s,sort:l,top:d,setDataToComponentId:c=""}=a;d=d||200,s=(s=r.isArray(s)?r.map(s,(function(e){return e.operation?[e.field,e.operation,e.value]:e})):s)||[],r.each(t,(function(e){e.searchable&&i.push(e.name)})),a=e.idFieldName||"_id";var p=e.key_field||"_id";return(e=await Xt(e,null,t,{alias:"rows",limit:d,queryOptions:'filters: {__filters}, top: {__top}, skip: {__skip}, sort: "{__sort}"'})).data.$term="$term",e.data.$self="$$",e.data.filter="$filter",e.data.pageSize=d||10,e.requestAdaptor=`\n let selfData = JSON.parse(JSON.stringify(api.data.$self));\n ${o?`var filters = ${JSON.stringify(o)};`:"var filters = [];"}\n if(_.isEmpty(filters)){\n filters = api.data.filter || ${JSON.stringify(s)};\n }else{\n filters = [filters, 'and', api.data.filter || ${JSON.stringify(s)}]\n }\n const eventFetchInfo = selfData.fetchInfo;\n const startDateExpr = "${n.startDateExpr}";\n const endDateExpr = "${n.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 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 : "${l}";\n var allowSearchFields = ${JSON.stringify(i)};\n if(api.data.$term){\n filters = [["name", "contains", "'+ api.data.$term +'"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n filters = [["${p.name}", "=", selfData.value]];\n }\n var searchableFilter = [];\n _.each(selfData, (value, key)=>{\n if(!_.isEmpty(value) || _.isBoolean(value)){\n if(_.startsWith(key, '__searchable__between__')){\n searchableFilter.push([\`\${key.replace("__searchable__between__", "")}\`, "between", value])\n }else if(_.startsWith(key, '__searchable__')){\n if(_.isString(value)){\n searchableFilter.push([\`\${key.replace("__searchable__", "")}\`, "contains", value])\n }else{\n searchableFilter.push([\`\${key.replace("__searchable__", "")}\`, "=", value])\n }\n }\n }\n });\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 `,e.adaptor=`\n window.postMessage(Object.assign({type: "listview.loaded"}), "*");\n const setDataToComponentId = "${c}";\n if(setDataToComponentId){\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["${a}"],\n title: n["${n.textExpr}"],\n start: n["${n.startDateExpr}"],\n end: n["${n.endDateExpr}"],\n allDay: n["${n.allDayExpr}"]\n }\n });\n const successCallback = selfData.successCallback;\n const failureCallback = selfData.failureCallback;\n successCallback(events);\n return payload;\n `,e}(e,l,a),a=`\n const api = ${JSON.stringify(o)};\n event.data.calendarOptions = ${JSON.stringify(t)};\n doAction({\n "actionType": 'ajax',\n "args": {\n "api": api\n },\n });\n `,o=`\n const data = event.data;\n const doc = {};\n doc["${t.startDateExpr}"] = data.start;\n doc["${t.endDateExpr}"] = data.end;\n doc["${t.allDayExpr}"] = data.allDay;\n doc["${t.textExpr}"] = data.title;\n // ObjectForm会认作用域下的变量值\n // TODO: 待组件支持initValues属性后应该改掉,不应该通过data直接传值\n // TODO: 全天事件属性传入doc了但是没有生效,需要手动在ObjectForm中勾选全天事件\n event.data = doc;\n const title = "新建 ${e.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 "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 `;var c=wa(e,"${event.id}"),p=function(e,t){var a={},n=e.idFieldName||"_id";return a[n]="${event.data.event.id}",e=e.NAME_FIELD_KEY||"name",a[e]="${event.data.event.title}",a[t.startDateExpr]="${event.data.event.start}",a[t.endDateExpr]="${event.data.event.end}",a[t.allDayExpr]="${event.data.event.allDay}",e={objectName:"${objectName}",$:a,$self:"$$"},t=`\n \n const formData = api.data.$;\n const objectName = api.data.objectName;\n let query = \`mutation{record: \${objectName}__update(id: "\${formData.${n}}", doc: {__saveData}){${n}}}\`;\n delete formData.${n};\n let __saveData = JSON.stringify(JSON.stringify(formData));\n \n api.data.query = query.replace('{__saveData}', __saveData);\n return api;\n `,{method:"post",url:Ee(),data:e,requestAdaptor:t,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 ",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}}}(e,t),u={daysOfWeek:[1,2,3,4,5],startTime:"08:00",endTime:"18:00"};return t=(i(t.startDayHour)||(u.startTime=t.startDayHour+":00"),i(t.endDayHour)||(u.endTime=t.endDayHour+":00"),{type:"steedos-fullcalendar",label:"",name:"fullcalendar",editable:n.allowEdit,selectable:n.allowCreate,selectMirror:n.allowCreate,initialView:d,businessHours:u,onEvent:{getEvents:{weight:0,actions:[{componentId:"",args:{},actionType:"custom",script:a}]},select:{weight:0,actions:[{componentId:"",args:{},actionType:"custom",script:o}]},eventClick:{weight:0,actions:[{componentId:"",args:{},actionType:"custom",script:'\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": "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 '}]},eventAdd:{weight:0,actions:[{componentId:"",args:{},actionType:"custom",script:"console.log('eventAdd'); console.log(event);"}]},eventChange:{weight:0,actions:[{actionType:"ajax",args:{api:c}},{actionType:"toast",expression:"!event.data.editable",args:{msgType:"error",msg:"您没有编辑该记录的权限!",position:"top-center"}},{actionType:"ajax",expression:"event.data.editable",args:{api:p,messages:{success:e.label+"修改成功",failed:e.label+"修改失败!"}}}]},eventRemove:{weight:0,actions:[{componentId:"",args:{},actionType:"custom",script:"console.log('eventRemove'); console.log(event);"}]},eventsSet:{weight:0,actions:[{componentId:"",args:{},actionType:"custom",script:"console.log('eventsSet'); console.log(event);"}]}}})}const Na=(e,t,a)=>{e=e.replace(/\./g,"_"),a=(e=>{const t=["_id"];return e.push("record_permissions"),s(e,(e=>{-1<e.indexOf(".")&&(e=e.split(".")[0]),t.push(""+e)})),""+t.join(" ")})(a);let n="";return`{record:${e}__findOne${n=0<(t=[`id: "${t}"`]).length?`(${t.join(",")})`:n}{${a}}}`},Fa=async(e,t,a)=>(await ve("/graphql",{method:"post",body:JSON.stringify({query:Na(e,t,a)})})).data.record;let xa,ka={};const Sa=("undefined"!=typeof window&&(window.UI_SCHEMA_CACHE||(window.UI_SCHEMA_CACHE=ka),ka=window.UI_SCHEMA_CACHE),(e,t)=>{ka[e]=t});function ja(e,t){return"SMALL"===t?i(e.mobile_columns)?g(e.columns,0,4):e.mobile_columns:e.columns}function Ia(e){let t="";return e&&e.sort&&e.sort.length&&s(e.sort,(function(e,a){var n;o(e)?(n=e[0]+" "+(e[1]||""),t+=n=0<a?","+n:n):(n=e.field_name+" "+e.order,t+=n=0<a?","+n:n)})),t}function Oa(e){if(e){var t=Fe();let a=e.filters;return"mine"===e.filter_scope&&(r.isEmpty(a)?a=[["owner","=",t]]:a.push(["owner","=",t])),a}}async function Da(e,t){if(e){if(!(e=>v(ka,e))(e)||t){let a=null;try{if(!(a=xa?await xa(e,t):await ve(`/service/api/@${e.replace(/\./g,"_")}/uiSchema`,{method:"get"})))return;Sa(e,a),s(a.list_views,((e,t)=>{e.name=t,v(e,"columns")||(e.columns=a.list_views.all.columns)}))}catch(t){console.error("getUISchema",e,t),Sa(e,null)}}return(e=>c(ka[e]))(e)}}async function Va(e,t){return(await Da(e))?.fields[t]}async function Ea(e,t){return{uiSchema:e=await Da(e),amisSchema:await Bt(e,t)}}async function Aa(e,t,a){return{uiSchema:e=await Da(e),amisSchema:await Rt(e,t,a)}}async function Ta(e,t,a,n={}){var r=await Da(t),i=l(r.list_views,((e,t)=>t===(a=a||t)||e._id===a));if(!i)return{uiSchema:r};if(i.enable_amis_schema&&i.amis_schema){return{uiSchema:r,isCustomAmisSchema:!0,amisSchema:w(i.amis_schema)?JSON.parse(i.amis_schema):i.amis_schema}}var o=ja(i,n.formFactor),s=Ia(i),d=Oa(i),c=i&&i._filters;if("calendar"===i.type){return{uiSchema:r,isCalendar:!0,amisSchema:{type:"steedos-object-calendar",objectApiName:t,filters:d,filtersFunction:c,sort:s,...i.options}}}var p=n.defaults||{};!p.headerSchema&&n.showHeader&&(p.headerSchema=await Vt(r)),n.showHeader||(p.headerSchema=null);try{var u,m=location.pathname+"/crud/"+n.listViewId,f=localStorage.getItem(m);f&&(f=JSON.parse(f),u={},f.orderBy&&(u.orderBy=f.orderBy),f.orderDir&&(u.orderDir=f.orderDir),f.perPage&&(u.defaultParams={perPage:f.perPage}),p.listSchema=$({},u,p.listSchema||{}))}catch(e){console.error("本地存储中crud参数解析异常:",e)}n.defaults=p;return{uiSchema:r,amisSchema:{type:"steedos-object-table",objectApiName:t,columns:o,extraColumns:i.extra_columns,filters:d,filtersFunction:c,sort:s,ctx:n}}}async function Ca(e,t,a,n={}){const r=await Da(t);let i=n.sort;i||(l=n.sortField,d=n.sortOrder,l&&(i=l+" "+d||"asc"));let o=[];s(a,(function(e){w(e)&&r.fields[e]?o.push(r.fields[e]):N(e)&&r.fields[e.field]&&o.push(Object.assign({},r.fields[e.field],{width:e.width,wrap:e.wrap}))}));var l=n.extraColumns,d=(l&&s(l,(function(e){w(e)?o.push({extra:!0,name:e}):N(e)&&o.push({extra:!0,name:e.field})})),await Pt(r,o,{tabId:t,appId:e,objectName:t,...n,filter:n.filters,sort:i,buttons:await xt(r,n)}));return{uiSchema:r,amisSchema:d}}async function qa(e,t,a,n={}){var r=await Da(t);return{uiSchema:r,amisSchema:await $a(r,a,{tabId:t,appId:e,objectName:t,...n})}}async function Pa(e,t,a){return{uiSchema:e=await Da(e),amisSchema:await Et(e,t,a)}}async function La(e,t){return{uiSchema:e=await Da(e),amisSchema:{type:"service",body:[{type:"steedos-record-detail-header",label:"标题面板",objectApiName:"${objectName}",recordId:"${recordId}",id:"u:48d2c28eb755",onEvent:{recordLoaded:{actions:[{actionType:"reload",data:{name:`\${record.${e?.NAME_FIELD_KEY||"name"}}`,record:"${record}",recordLoaded:!0}}]}}},{type:"tabs",className:"sm:mt-3 bg-white sm:shadow sm:rounded sm:border border-slate-300 p-4",tabs:[{title:"详细",className:"px-0 py-4",body:[{type:"steedos-object-form",label:"对象表单",objectApiName:"${objectName}",recordId:"${recordId}",id:"u:d4a495811d57",appId:t}],id:"u:5d4e7e3f6ecc"},{title:"相关",className:"px-0 pt-4",body:[{type:"steedos-object-related-lists",label:"相关列表",objectApiName:"${objectName}",recordId:"${recordId}",id:"u:3b85b7b7a7f6",appId:t}],id:"u:1a0326aeec2b"}],id:"u:a649e4094a12"}]}}}async function Ba(e,t,a,n){var r=await Da(t),o=[],s=[].concat(r.related_lists||[]);if(i(s))for(const i of[].concat(r.details||[])){var d=i.split("."),c=await Da(d[0]);if(c){let r=null;var p=await Va(d[0],d[1]);r=p._reference_to||p.reference_to&&!w(p.reference_to)?[[d[1]+"/o","=",t],[d[1]+"/ids","=",a]]:[""+d[1],"=",a],o.push({masterObjectName:t,object_name:d[0],foreign_key:d[1],schema:await Ta(e,d[0],"all",{globalFilter:r,formFactor:n,buttons:await xt(c,{isMobile:!1})})})}}else for(const r of s){var u=r.related_field_fullname.split(".");let i=null;var m=await Va(u[0],u[1]);if(m){i=m._reference_to||m.reference_to&&!w(m.reference_to)?[[u[1]+"/o","=",t],[u[1]+"/ids","=",a]]:[""+u[1],"=",a];const s=await Da(u[0]);if(s){let a=[];F(r.field_names,(e=>{var t=l(s.fields,(t=>t.name===e));t&&a.push(t)})),o.push({masterObjectName:t,object_name:u[0],foreign_key:u[1],label:r.label,schema:{uiSchema:s,amisSchema:await Pt(s,a,{tabId:t,appId:e,objectName:u[0],formFactor:n,globalFilter:i,buttons:await xt(s,{isMobile:!1})})}})}}}return o}const Ra=(e,t,a,n)=>(a=l(a.fields,(e=>n===e?.name)),w(a.reference_to)?a.multiple?[t]:t:{o:e,ids:[t]});async function za(e,t,a,n){var r=await Da(t),o=[],s=[].concat(r.related_lists||[]);if(i(s))for(const i of[].concat(r.details||[])){var d,c,p=i.split("."),u=await Da(p[0]);u&&(((d=await Va(p[0],p[1]))._reference_to||d.reference_to&&!w(d.reference_to))&&p[1],p[1],c=(d=await Ta(e,p[0],"all",{formFactor:n,buttons:await xt(u,{isMobile:!1})})).amisSchema,u=await At(u),c.headerSchema=u,c.headerToolbar=[],c.columnsTogglable=!1,delete c.ctx,d.amisSchema={type:"service",className:"b-a m-b",data:{masterObjectName:t,masterRecordId:"${recordId}",relatedKey:p[1],objectName:p[0],listViewId:`amis-\${appId}-${p[0]}-listview`},body:[{...c,data:{filter:["${relatedKey}","=","${masterRecordId}"],objectName:"${objectName}",recordId:"${masterRecordId}",defaultData:{[p[1]]:Ra(t,a,d.uiSchema,p[1])}}}]},o.push({masterObjectName:t,object_name:p[0],foreign_key:p[1],schema:d}))}else for(const r of s){var m=r.related_field_fullname.split(".");let i=null;var f=await Va(m[0],m[1]);if(f){i=f._reference_to||f.reference_to&&!w(f.reference_to)?[[m[1]+"/o","=",t],[m[1]+"/ids","=",a]]:[""+m[1],"=",a];const s=await Da(m[0]);if(s){let a=[];F(r.field_names,(e=>{var t=l(s.fields,(t=>t.name===e));t&&a.push(t)})),o.push({masterObjectName:t,object_name:m[0],foreign_key:m[1],schema:{uiSchema:s,amisSchema:await Pt(s,a,{tabId:t,appId:e,objectName:m[0],formFactor:n,globalFilter:i,buttons:await xt(s,{isMobile:!1})})}})}}}return o}async function Ua(e,t,a,n,r,i,o,s,l,d){var c=await Da(a),{list_views:p,label:u,fields:m}=c,u=(l=l||u,f(p)[0]);let y=null;p=await Va(a,n=n||x(m,(function(t){return-1<["lookup","master_detail"].indexOf(t.type)&&t.reference_to===e})));let b=t;return p.reference_to_field&&"_id"!=p.reference_to_field&&(b=(m=await Fa(e,t,[p.reference_to_field]))[p.reference_to_field]),y=p._reference_to||p.reference_to&&!w(p.reference_to)?[[n+"/o","=",e],[n+"/ids","=",b]]:[""+n,"=",b],t=await At(c,l),m="steedos-record-related-list-"+a,p=(await Ta(null,a,u,{globalFilter:y,defaults:{listSchema:{headerToolbar:[],columnsTogglable:!1},headerSchema:t},showHeader:!0,top:r,perPage:i,setDataToComponentId:m,tableHiddenOn:o?"this.$count === 0":null,appId:s})).amisSchema,{uiSchema:c,amisSchema:{type:"service",id:m,className:"steedos-record-related-list sm:rounded sm:border border-slate-300 bg-gray-100 mb-4 "+d,data:{"&":"$$",appId:"${appId}",app_id:"${appId}",masterObjectName:e,masterRecordId:"${recordId}",relatedKey:n,objectName:a,listViewId:`amis-\${appId}-${a}-listview`},body:[{...p,data:{"&":"$$",appId:"${appId}",app_id:"${appId}",relatedKey:n,objectName:"${objectName}",recordId:"${masterRecordId}",defaultData:{[n]:Ra(e,b,c,n)}}}]}}}const Ja={};async function Ma(e,t,a){return{type:"picker",label:"人员",name:t,id:a.id,modalMode:"dialog",joinValues:!1,source:{method:"post",url:"${context.rootUrl}/graphql",data:{orderBy:"${orderBy}",orderDir:"${orderDir}",pageNo:"${page}",pageSize:"${perPage}",query:'{rows:space_users(filters: {__filters}, top: {__top}, skip: {__skip}, sort: "{__sort}"){_id,name,email,mobile},count:space_users__count(filters:{__filters})}',$term:"$term",$self:"$$"},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 "},pickerSchema:{mode:"table",name:"thelist",draggable:!1,headerToolbar:["switch-per-page","pagination"],defaultParams:{perPage:50},columns:[{name:"_index",type:"text",width:32,placeholder:""},{name:"_id",label:"ID",type:"text",toggled:!1},{name:"name",label:"姓名",sortable:!0,searchable:!0,type:"text"},{name:"email",label:"邮件",sortable:!0,type:"text",searchable:!0},{name:"mobile",label:"手机",type:"text",sortable:!0,searchable:!0}],syncLocation:!1,keepItemSelectionOnPageChange:!0},labelField:"name",valueField:"_id",size:"lg",extractValue:!0,className:"m-0",labelClassName:"text-left"}}const Ha=["last_year","this_year","next_year","last_quarter","this_quarter","next_quarter","last_month","this_month","next_month","last_week","this_week","next_week","yestday","today","tomorrow","last_7_days","last_30_days","last_60_days","last_90_days","last_120_days","next_7_days","next_30_days","next_60_days","next_90_days","next_120_days"],Ka={equal:"=",not_equal:"!=",less:"<",less_or_equal:"<=",greater:">",greater_or_equal:">=",between:"between",not_between:"not_between",is_empty:"is_empty",is_not_empty:"is_not_empty",select_equals:"=",select_not_equals:"!=",select_any_in:"in",select_not_any_in:"<>",like:"contains",not_like:"notcontains",starts_with:"startswith",ends_with:"endswith"},Ya=e=>{const t=[],{conjunction:a,children:n}=e;return a&&n&&n.forEach((e=>{var n;0<t.length&&t.push(a),(e=>_.has(e,"conjunction"))(e)?(n=Ya(e))&&0<n.length&&t.push(n):(n=Wa(e))&&t.push(n)})),t},Wa=e=>{var t,{left:e,op:a,right:n}=e;if(e&&"field"===e.type&&a)return a.startsWith("between:")?(t=a.split(":"),[e.field,t[0],t[1]]):null!=n?[e.field,Ka[a],n]:void 0},Ga=e=>!r.isArray(e)&&r.isObject(e)?[e.field,e.operation,e.value]:e,Za=e=>{e=Ga(e);const t={conjunction:"and",children:[]};return e&&0!=e.length&&e.forEach((e=>{"or"===(e=Ga(e))||"and"===e?t.conjunction=e:3===e.length&&-1==e.indexOf("and")&&-1==e.indexOf("or")?t.children.push((e=>{var t;if(3===e.length)return"between"===(t=r.findKey(Ka,(t=>t===e[1])))&&r.includes(Ha,e[2])?{left:{type:"field",field:e[0]},op:t+":"+e[2]}:{left:{type:"field",field:e[0]},op:t,right:e[2]};console.warn("无效的filter:"+JSON.stringify(e))})(e)):t.children.push(Za(e))})),t},Xa=e=>Ya(e),Qa=e=>{const t=[];return s(e.options.split("\n"),(e=>{var a=e.split(":");2==a.length?t.push({label:a[0],value:a[1]}):t.push({label:e,value:e})})),t},en=(e,t)=>{const a={label:!0===t&&e.name,name:e.code,mode:"horizontal",className:"m-none p-none",disabled:"readonly"===e.permission};switch(e.type){case"input":e.is_textarea?a.type="textarea":a.type="input-text";break;case"number":a.type="input-number";break;case"date":a.type="input-date";break;case"dateTime":a.type="input-datetime";break;case"checkbox":a.type="checkbox";break;case"email":a.type="input-email",a.validations={isEmail:!0};break;case"url":a.type="input-url",a.validations={isUrl:!0};break;case"password":a.type="input-password",a.showCounter=!0;break;case"select":a.type="select",a.options=Qa(e);break;case"user":case"group":case"section":a.type="input-text";break;case"radio":a.type="radios",a.options=Qa(e);break;case"multiSelect":a.type="checkboxes",a.options=Qa(e);break;case"odata":var n=e.formula.substr(1,e.formula.length-2);a.type="select",a.multiple=e.is_multiselect,a.labelField=n,a.valueField="$$",a.source={url:D(e.url,"http")?e.url:"${context.rootUrl}"+e.url,method:"get",dataType:"json",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}};break;case"html":a.type="html";break;case"table":a.type="input-table",a.addable="readonly"!=e.permission,a.editable=a.addable,a.copyable=a.addable,a.columns=[],s(e.sfields,(e=>{"hidden"!=e.type&&a.columns.push(en(e,!0))}))}return a},tn=e=>{const t=[];return s(e,(a=>{"table"!=a.type&&t.push((e=>({className:"td-title",align:"section"!=e.type?"center":"left",width:"section"!=e.type?"16%":"",colspan:"section"==e.type?4:"",body:[{type:"tpl",tpl:`<div style='font-size:20px'>${e.name}</div>`}]}))(a)),"section"!=a.type&&t.push(((e,t)=>({background:"readonly"===e.permission?"":"rgba(255,255,0,.1)",colspan:"table"===e.type?4:3-2*(t-1),align:"left",className:"td-field",body:[en(e)],style:{marginTop:"0",paddingTop:"0",paddingRight:"0",paddingBottom:"0",paddingLeft:"0",marginRight:"0",marginBottom:"0",marginLeft:"0"}}))(a,e.length))})),t},an=e=>{const t=[],a=[];let n=[];return s(e.fields,((t,r)=>{t.is_wide?(0!=n.length&&a.push(n),"table"==t.type&&a.push([Object.assign({},t,{type:"section"})]),(n=[]).push(t),a.push(n),n=[]):(n.push(t),2!=n.length&&r!==e.fields.length-1||(a.push(n),n=[]))})),s(a,(e=>{t.push({background:"#F7F7F7",tds:tn(e)})})),t},nn=e=>({type:"table-view",trs:an(e),id:"u:047f3669468b"});var rn=function(){return(rn=Object.assign||function(e){for(var t,a=1,n=arguments.length;a<n;a++)for(var r in t=arguments[a])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},on=function(e){var t=[];return e.charCodeAt(0)===".".charCodeAt(0)&&t.push(""),e.replace(new RegExp("[^.[\\]]+|\\[(?:([^\"'][^[]*)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))","g"),(function(e,a,n,r){return n?e=r.replace(/\\(\\)?/g,"$1"):a&&(e=a.trim()),t.push(e),""})),t};function sn(e,t,a){var n=(e=e&&Object.isFrozen(e)?ln(e):e)?Object.create(e,rn(rn({},a),{__super:{value:e,writable:!1,enumerable:!1}})):Object.create(Object.prototype,a);return t&&dn(t)&&Object.keys(t).forEach((function(e){return n[e]=t[e]})),n}function ln(e,t){void 0===t&&(t=!0);var a=e&&e.__super?Object.create(e.__super,{__super:{value:e.__super,writable:!1,enumerable:!1}}):Object.create(Object.prototype);return t&&e&&Object.keys(e).forEach((function(t){return a[t]=e[t]})),a}function dn(e){var t=typeof e;return e&&"string"!=t&&"number"!=t&&"boolean"!=t&&"function"!=t&&!Array.isArray(e)}var cn=function(){var e=ke();return{context:{rootUrl:xe(),userId:e.userId,tenantId:e.spaceId,authToken:e.authToken,user:e},global:{userId:e.userId,spaceId:e.spaceId,user:e,now:new Date}}},pn=Object.freeze({__proto__:null,Field:ba,absoluteUrl:function(e){return""+xe()+e},amisRender:(e,t,a={},n={},r)=>{var i=amisRequire("amis/embed"),{router:r,assets:o}=r;return he(o),i.embed(e,t,a,Object.assign(be(r),n))},amisRootClick:(e,t)=>{"a"===t.target.nodeName.toLocaleLowerCase()&&t.target.href&&(t.preventDefault(),e.push(t.target.href))},cloneObject:ln,conditionsToFilters:Xa,createObject:sn,defaultsDeep:it,deleteVariable:function(e,t){if(e)if(e.hasOwnProperty(t))delete e[t];else{var a=on(t);for(t=a.pop();a.length;){var n=a.shift();if(!fe(e[n])){if(e[n])throw new Error("目标路径不是纯对象,不能修改");break}e=e[n]=rn({},e[n])}e&&e.hasOwnProperty&&e.hasOwnProperty(t)&&delete e[t]}},execute:jt,executeButton:It,extendObject:function(e,t,a){var n=ln(e,a=void 0===a||a);return t&&Object.keys(t).forEach((function(e){return n[e]=t[e]})),n},fetchAPI:ve,filtersToConditions:e=>Za(e),getAmisObjectRelatedList:za,getApp:async function(e){return await ve(`/service/api/apps/${e}/menus`)},getApps:async function(){return await ve("/service/api/apps/menus")},getAuthToken:$e,getAuthorization:Ne,getButton:St,getButtonVisible:(e,t)=>{if(e._visible&&(r.startsWith(r.trim(e._visible),"function")?(window.eval("var fun = "+e._visible),e.visible=fun):ot(e._visible)&&(e.visible=t=>{st(e._visible,t.record,"#",{now:new Date},t.userSession)})),!r.isFunction(e.visible))return e.visible;try{return e.visible(t)}catch(t){}},getButtonVisibleOn:_t,getButtons:wt,getCalendarSchema:qa,getDefaultRenderData:cn,getEnv:e=>Ja[e],getEnvs:()=>Ja,getEvn:be,getField:Va,getFileSrc:function(e){return xe()+"/api/files/files/"+e},getFlowFormSchema:e=>({type:"page",body:[{type:"service",data:{beijing:"20",tianjing:"19"},body:[{type:"tpl",id:"u:f5bb0ad602a6",tpl:`<div style='font-size:20px'>${e.title}</div>`,inline:!0,wrapperComponent:"",style:{fontFamily:"",fontSize:12,textAlign:"center"}},nn(e)],id:"u:a381684e042b"}],id:"u:63849ea39e12",messages:{},pullRefresh:{},regions:["body"]}),getFormPageInitSchema:async function(e){return{type:"page",bodyClassName:"",regions:["body"],body:[(await Ea(e,{recordId:"${recordId}"})).amisSchema]}},getFormSchema:Ea,getImageSrc:function(e){return xe()+"/api/files/images/"+e},getListPageInitSchema:async function(e,t,a){return{type:"page",bodyClassName:"",regions:["body"],body:[{type:"steedos-object-listview",objectApiName:e,columnsTogglable:!1,showHeader:!0}]}},getListSchema:Ta,getListViewButtons:$t,getListViewColumns:ja,getListViewFilter:Oa,getListViewItemButtons:xt,getListViewSort:Ia,getListviewInitSchema:async function(e,t,a){a=a||{};var n=await Da(e),r=l(n.list_views,((e,a)=>a===t));let i={};if(r){var o=ja(r,a.formFactor),s=(r=Ia(r),a.defaults||{});s.headerSchema||(n=await Vt(n),s.headerSchema=n),a.defaults=s;let t=a.setDataToComponentId;t=t||"service_listview_"+e,delete(i=(n=await Ca(null,e,o,{sort:r,...a,setDataToComponentId:t})).amisSchema).data.$master,delete i.data._id,delete i.data.recordPermissions,delete i.data.uiSchema}return i},getNotifications:async()=>{var e=`\n {\n notifications(filters: ["owner","=","${(e=ke()).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","=","${e.userId}"], ["is_read", "!=", true]])\n }\n `;return(await ve("/graphql",{method:"POST",body:JSON.stringify({query:e})})).data},getObjectDetailButtons:Nt,getObjectDetailMoreButtons:Ft,getObjectFieldsFilterBarSchema:_a,getObjectFieldsFilterButtonSchema:ha,getObjectFieldsFilterFormSchema:ga,getObjectListHeader:Vt,getObjectListHeaderFieldsFilterBar:Dt,getObjectListHeaderFirstLine:Ot,getObjectListHeaderSecordLine:async function(e,t,a){return e="listview_"+e.name,{type:"grid",columns:[{body:[{type:"tpl",tpl:"${$count} 个项目",visibleOn:"this.$count >= 0",inline:!1,wrapperComponent:"",className:"leading-none",style:{fontFamily:"",fontSize:14},id:"u:1661f8471235"}],md:"auto",columnClassName:"flex items-center"},{body:[await ha(),{type:"button",label:"",icon:"fa fa-refresh",actionType:"reload",target:e,className:"bg-white p-2 rounded border-gray-300 text-gray-500"}],md:"auto"}],className:"flex justify-between"}},getObjectRecordDetailHeader:Et,getObjectRecordDetailRelatedListHeader:At,getObjectRelated:async function({appName:e,masterObjectName:t,objectName:a,relatedFieldName:n,recordId:r,formFactor:i}){let o=null;var s=(o=(s=await Va(a,n))._reference_to||s.reference_to&&!w(s.reference_to)?[[n+"/o","=",t],[n+"/ids","=",r]]:[""+n,"=",r],await Da(t));return{masterObjectName:t,object_name:a,foreign_key:n,schema:await Ta(e,a,"all",{globalFilter:o,formFactor:i}),record:await Fa(t,r,[s.NAME_FIELD_KEY]),masterObjectUISchema:s}},getObjectRelatedList:Ba,getObjectRelatedListButtons:kt,getObjectRelatedListHeader:async function(e,t,a){},getPage:dt,getRecord:Fa,getRecordDetailHeaderSchema:Pa,getRecordDetailRelatedListSchema:Ua,getRecordDetailSchema:La,getRecordPageInitSchema:async function(e){var t=await za(null,e,"${recordId}",null),a=[{type:"steedos-record-detail-header",label:"标题面板",objectApiName:"${objectName}",recordId:"${recordId}",onEvent:{recordLoaded:{actions:[{actionType:"setValue",args:{value:{recordLoaded:!0}}},{actionType:"reload",data:{name:`\${record.${(await Da(e))?.NAME_FIELD_KEY||"name"}}`,record:"${record}",recordLoaded:!0}}]}}}],n={type:"tabs",tabs:[{title:"详情",body:[{type:"steedos-object-form",label:"对象表单",mode:"read",objectApiName:"${objectName}",recordId:"${recordId}",labelAlign:"left"}]}],className:"sm:mt-3 flex flex-col region-main bg-white sm:shadow sm:rounded sm:border border-slate-300",linksClassName:"pl-4 pt-2"};return t=m(t,(e=>e.schema.amisSchema)),t.length&&n.tabs.push({title:"相关",body:t}),a.push(n),{type:"page",id:`page_${e}_record_detail`,bodyClassName:"",regions:["body"],body:a}},getRecordPermissions:async(e,t)=>await ve(`/service/api/@${e}/recordPermissions/`+t,{method:"GET"}),getRelatedFieldValue:Ra,getRelatedsCount:async(e,t)=>{const a=[];return s(t,(t=>{a.push(`${t.object_name}: ${t.object_name}__count(filters: [["${t.foreign_key}","=","${e}"]])`)})),t=`\n {\n ${a.join(",")}\n }\n `,(await ve("/graphql",{method:"POST",body:JSON.stringify({query:t})})).data},getRootUrl:xe,getSearchableFieldsFilterSchema:async function(e,t,a){return ga(e,t,a)},getSelectUserSchema:na,getSpaceUsersPickerAmisSchema:Ma,getSpaceUsersPickerSchema:async function(e,t){var a=await Da("space_users");return{uiSchema:a,amisSchema:await Ma(0,e,t)}},getSteedosAuth:ke,getTableSchema:Ca,getTenantId:we,getUISchema:Da,getUserId:Fe,getViewSchema:Aa,isExpression:ot,isObject:dn,lookupToAmis:la,lookupToAmisPicker:ia,lookupToAmisSelect:oa,lookupToAmisSelectUser:da,markReadAll:async()=>ve("/api/v4/notifications/all/markReadAll",{method:"POST"}),parseSingleExpression:st,registerRemoteAssets:async e=>{if(e&&0<e.length){let t=e;return w(t)&&(t=t.split(",")),await Builder.registerRemoteAssets(t),e=k(Builder.registry["meta-components"],(function(e){return e.componentName&&e.amis?.render})),m(e,(e=>({componentType:e.componentType,componentName:e.componentName,...e.amis.render})))}return[]},registerRenders:he,setEnv:(e,t)=>{Ja[e]=t},setEnvs:e=>{m(e,((e,t)=>{Ja[t]=e}))},setRootUrl:function(e){d(e,"/")&&(e=e.substring(0,e.length-1)),localStorage.setItem("steedos:rootUrl",e)},setSteedosAuth:e=>{Object.assign(ge,e)},setUISchemaFunction:function(e){xa=e},setVariable:function(e,t,a,n){if(t in(e=e||{}))e[t]=a;else{var r=!1!==n?on(t):[t];for(n=r.pop();r.length;){var i=r.shift();e=fe(e[i])?e[i]=rn({},e[i]):(Array.isArray(e[i])?e[i]=e[i].concat():(e[i],e[i]={}),e[i])}e[n]=a}},standardButtonsTodo:vt}),un=function(e,t,a){return B(void 0,void 0,void 0,(function(){var n,r,i,o,s,l,d,c,p,u,m,f;return R(this,(function(y){switch(y.label){case 0:n=e.reference_to,r="".concat(e.name,"__left"),i=[],y.label=1;case 1:y.trys.push([1,6,7,8]),o=function(e){var t="function"==typeof Symbol&&Symbol.iterator,a=t&&e[t],n=0;if(a)return a.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(n),s=o.next(),y.label=2;case 2:return s.done?[3,5]:[4,Da(l=s.value,!1)];case 3:d=y.sent(),i.push({label:d.label,value:l,icon:d.icon}),y.label=4;case 4:return s=o.next(),[3,2];case 5:return[3,8];case 6:return c=y.sent(),m={error:c},[3,8];case 7:try{s&&!s.done&&(f=o.return)&&f.call(o)}finally{if(m)throw m.error}return[7];case 8:return t&&t.o||(t={o:i[0].value,ids:[]}),[4,Da(t.o,!1)];case 9:return p=y.sent(),u=null,1!=p.enable_enhanced_lookup?[3,11]:[4,ia(Object.assign({},e,{reference_to:t.o}),!1,a)];case 10:return u=y.sent(),[3,13];case 11:return[4,oa(Object.assign({},e,{reference_to:t.o}),!1,a)];case 12:u=y.sent(),y.label=13;case 13:return[2,{type:"input-group",label:!1,body:[{type:"select",name:r,options:i,value:"".concat(t.o)},Object.assign({},u,{name:"".concat(e.name,"__right"),id:"right:".concat(e.name),inputClassName:"w-full",value:"".concat(t.ids)})]}]}}))}))},mn=function(n){var r=n.field;n.readonly;var i=n.ctx,o=n.dispatchEvent,s=n.render;n.renderFormItems;var l=n.onChange,d=n.data,c=n.formItemValue,p=z(t(),2),u=p[0],m=p[1],f=z(t(c),2),y=f[0],h=f[1];a((function(){h(c)}),[c]),a((function(){un(r,y,i).then((function(e){m(e)}))}),[y]);return e.createElement("div",{className:"amis-object-field-lookup"},u?e.createElement("div",{className:"container"},s("body",u,{onChange:function(e,t){return B(void 0,void 0,void 0,(function(){var a,n;return R(this,(function(r){switch(r.label){case 0:return a=Object.assign({o:t.endsWith("_left")?e:null==y?void 0:y.o,ids:t.endsWith("_right")?e:null==y?void 0:y.ids}),t.endsWith("_left")&&(a.ids=[]),w(a.ids)&&(a.ids=b(a.ids.split(","))),[4,o("change",sn(d,{fieldValue:a}))];case 1:return(null==(n=r.sent())?void 0:n.prevented)?[2]:[2,l(a)]}}))}))}})):null)},fn=function(n){var r=n.objectName,i=n.name,o=n.data,s=n.render,l=n.className,d=n.listViewId,c=z(t(),2),p=c[0],u=c[1],m=z(t(),2),f=m[0],y=m[1],b=o.appId,h=o.formFactor;a((function(){r&&Da(r,!1).then((function(e){St(r,i,{objectName:r,recordId:o._id,appId:b,uiSchema:e,formFactor:h,router:null,listViewId:o.listViewId,props:{className:"antd-Button antd-Button--link"}}).then((function(t){u(t),y(e)}))}))}),[r,i]);if(!p)return e.createElement(e.Fragment,null,e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor",className:"animate-spin w-4 h-4"},e.createElement("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99"})));if("amis_button"===p.type){var g=p.amis_schema,_=w(g)?JSON.parse(g):g;_&&_.body.length>0&&delete _.body[0].visibleOn;var v=Object.assign(o,{recordId:o._id,objectName:r,listViewId:o.listViewId,app_id:b,className:l});return _&&(_.data=$({},v,cn(),_.data)),e.createElement(e.Fragment,null,p&&g?e.createElement(e.Fragment,null,s("body",_,{data:v,onChange:function(){console.log("change....")}})):null)}return e.createElement("button",{onClick:function(){var e=o.dataComponentId,t=o.scopeId;return It(p,{objectName:r,listViewId:d||o.listViewId,uiSchema:f,record:o,recordId:o._id,appId:b,formFactor:h,scope:window.SteedosUI.getRef(e),scopeId:t||e})},className:"antd-Button antd-Button--default antd-Button--size-default ".concat(l||"")},p.label)},yn=function(t,a,n,r){return m(a,(function(a){return a.className="".concat(a.className," ").concat(n),{key:a.name,label:e.createElement(e.Fragment,null,t("body",a,r))}}))},bn=function(a){var n=a.data,r=a.render,i=a.className,o=a.btnClassName,s=a.buttons,l=a.placement,d=a.trigger,c=void 0===d?["click"]:d,p=a.onOpenApi;a.store;var u=a.env,m=a.overlayClassName,f=a.arrow,y=z(t([]),2),b=y[0],h=y[1];return e.createElement(T,{menu:{items:b},trigger:c,onOpenChange:function(e){if(e)if(p)try{u.fetcher(p,sn(n,{})).then((function(e){var t=(null==e?void 0:e.hasOwnProperty("ok"))?e.data:e;h(yn(r,s,o,{data:sn(n,$(t,n))}))})).catch((function(e){console.error(e)}))}catch(e){console.error(e)}else h(yn(r,s,o,{data:n}))},placement:l,overlayClassName:m,arrow:f},e.createElement("button",{className:"slds-button slds-button_icon slds-button_icon-border-filled slds-button_icon-x-small ".concat(i||"")},e.createElement("svg",{fill:"none",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"m7 10 5 5 5-5z",fill:"currentColor"}))))},hn=function(t){var a,n,r=t.basePath,i=t.category,o=void 0===i?"standard":i,s=t.className,l=void 0===s?"":s,d=t.containerClassName,c=void 0===d?"":d,p=t.colorVariant,u=void 0===p?"default":p;t.inverse;var m=t.name,f=void 0===m?"account":m,y=t.size,b=void 0===y?"medium":y;t.title;var h=t.rootUrl;return void 0===h&&(null===(n=null===(a=t.data)||void 0===a?void 0:a.context)||void 0===n||n.rootUrl),r||(r=""),e.createElement("span",{className:"slds-icon_container slds-icon-".concat(o,"-").concat(f," ").concat(c)},e.createElement("svg",{className:"slds-icon slds-icon_".concat(b," slds-icon-text-").concat(u," ").concat(l)},e.createElement("use",{xlinkHref:"".concat(r,"/assets/icons/").concat(o,"-sprite/svg/symbols.svg#").concat(f)})))};C.TabPane;var gn=function(t){t.overlayClassName;var a=function(e,t){var a={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(a[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(a[n[r]]=e[n[r]])}return a}(t,["overlayClassName"]);return e.createElement(T,L({overlayClassName:"header-dropdown",getPopupContainer:function(e){return e.parentElement||document.body}},a,{arrow:!0}))},_n=function(t,a,n){return e.createElement(e.Fragment,null,e.createElement(q,{delay:300,spinning:!1},e.createElement("div",{className:"bg-white shadow"},t("body",a,{}))))},vn=function(t){var a=t.render,n=t.overlay,r=t.body,i=t.trigger,o=void 0===i?["click"]:i,s=t.placement,l=void 0===s?"bottomRight":s,d=t.overlayClassName,c=t.className;return t.data,e.createElement(e.Fragment,null,e.createElement(gn,{placement:l,overlay:_n(a,n),trigger:o,className:c,overlayClassName:d},e.createElement("div",null,e.createElement(e.Fragment,null,a("body",r,{})))))};function wn(n){var r=n.date,i=z(t(),2),o=i[0],s=i[1],l=z(t(""),2),d=l[0],c=l[1],p=function(e){return window.amisRequire?window.amisRequire("moment")(e).fromNow():window.moment?window.moment(e).fromNow():void console.error("not find moment")};return a((function(){o&&clearInterval(o),c(p(r)),s(setInterval((function(){c(p(r))}),6e4))}),[r]),e.createElement(e.Fragment,null,d)}var $n=function(t){var a=t.body,n=t.render,r=t.count,i=t.color,o=t.dot,s=t.offset,l=t.overflowCount,d=t.showZero,c=t.size,p=t.status,u=t.text,m=t.title;return e.createElement(P,{count:r,color:i,dot:o,offset:s,overflowCount:l,showZero:d,size:c,status:p,text:u,title:m},n("body",a,{}))},Nn=function(t){var a=t.body,n=t.render,r=t.color,i=t.placement,o=void 0===i?"end":i,s=t.text,l=void 0===s?"Badge.Ribbon":s;return e.createElement(P.Ribbon,{color:r,placement:o,text:l},n("body",a,{}))},Fn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c,p,u,m,y,b;return R(this,(function(h){switch(h.label){case 0:return t=e.$schema,a=e.recordId,n=e.mode,r=e.layout,i=e.labelAlign,o=e.appId,s=e.className,l=void 0===s?"":s,d=e.objectApiName||"space_users",c=V(f(t),["type","mode","layout"]),p=E(e,c),u={recordId:a,mode:n,layout:"vertical"===r?"normal":r,labelAlign:i,defaults:{formSchema:p},appId:o},(m=e.data.global||{}).mode="edit"===n?"edit":"read","edit"!==n?[3,2]:[4,Ea(d,u)];case 1:return b=h.sent().amisSchema,y={},a&&(y.recordId=a),d&&(y.objectName=d),b.className="".concat(l),b.data=Object.assign({"&":"$$"},b.data,y,{global:m}),[2,b];case 2:return a||(u.formInitProps={queryOptions:"top: 1"}),[4,Aa(d,a,u)];case 3:return(b=h.sent().amisSchema).className="".concat(l),b.data=Object.assign({"&":"$$"},b.data,{global:m}),[2,b]}}))}))},xn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,d,c,p,u,m,y,b,h,g,_,v,w,$,N,F,x,k,S,j,I,O;return R(this,(function(D){switch(D.label){case 0:return t=e.$schema,a=e.top,n=e.perPage,r=e.showHeader,i=void 0===r||r,o=e.headerSchema,s=e.data,d=e.defaultData,c=e.className,p=void 0===c?"":c,u=e.tableClassName,e.columnsTogglable,m=e.ctx,y=(null==d?void 0:d.listName)||(null==s?void 0:s.listName)||(null==e?void 0:e.listName),b={},h=e.objectApiName||"space_users",m||(m={}),m.formFactor||(m.formFactor=window.innerWidth<768?"SMALL":"LARGE"),[4,Da(h,!1)];case 1:return g=D.sent(),(_=l(g.list_views,(function(e,t){return y||(y=t),t===y||e._id===y})))?(y=_.name,m&&m.defaults||(v=V(f(t),["type","showHeader","id"]),(w=E(e,v)).className=u,b={listSchema:w}),o&&(b.headerSchema=o),($=m&&m.setDataToComponentId)||($="service_listview_".concat(h)),N=Object.assign({},s,d),F=(null==m?void 0:m.listViewId)||N.listViewId,[4,Ta(N.appId,h,y,L(L({top:a,perPage:n,showHeader:i,defaults:b},m),{listViewId:F,setDataToComponentId:$,filterVisible:!0}))]):[2,{type:"alert",body:"当前".concat(y,"视图不存在!"),level:"warning",showIcon:!0,className:"mb-3"}];case 2:return x=D.sent(),k=x.amisSchema,S=x.uiSchema,j=[k],(x.isCustomAmisSchema||x.isCalendar)&&(I=Ot(S),j.unshift({type:"wrapper",body:[I],className:"bg-gray-100 pb-0 sm:rounded-tl sm:rounded-tr"})),O=Object.assign({},k.data,N,{listName:y,uiSchema:S,recordPermissions:S.permissions,_id:null}),[2,{type:"service",body:j,className:"".concat(p),data:O}]}}))}))},kn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c,p,u,m,y,b,h,g,_,v,w,$,N,F;return R(this,(function(x){switch(x.label){case 0:return t=e.$schema,a=e.filters,n=e.filtersFunction,r=e.amisCondition,i=e.top,o=e.headerSchema,s=e.sort,l=e.sortField,d=e.sortOrder,c=e.extraColumns,p=e.ctx,u=e.data,m=e.defaultData,e.className,y=e.columns||[],b={},h=e.objectApiName||"space_users",p&&p.defaults||(g=V(f(t),["type","objectApiName","columns","extraColumns","id"]),_=E(e,g),b={listSchema:_}),o&&(b.headerSchema=o),(v=p&&p.setDataToComponentId)||(v="service_listview_".concat(h)),w=r&&Xa(r),$=a||w,[4,Ca((N=Object.assign({},u,m)).appId,h,y,L(L({filters:$,filtersFunction:n,top:i,sort:s,sortField:l,sortOrder:d,extraColumns:c,defaults:b},p),{setDataToComponentId:v}))];case 1:return(F=x.sent().amisSchema).data=Object.assign({},F.data,N),[2,F]}}))}))},Sn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c,p,u,m,f,y,b,h,g,_,v;return R(this,(function(w){switch(w.label){case 0:return e.$schema,t=e.top,a=e.sort,n=e.filters,r=e.filtersFunction,i=e.title,o=e.currentView,s=e.startDateExpr,l=e.endDateExpr,d=e.allDayExpr,c=e.textExpr,p=e.data,u=e.defaultData,m=e.className,f=void 0===m?"":m,y=e.objectApiName||"events",[4,qa((b=Object.assign({},p,u)).appId,y,{title:i,currentView:o,startDateExpr:s,endDateExpr:l,allDayExpr:d,textExpr:c},{top:t,sort:a,filter:n,filtersFunction:r})];case 1:return h=w.sent(),g=h.uiSchema,_=h.amisSchema,v=Object.assign({},_.data,b,{objectName:y,uiSchema:g}),[2,{type:"service",body:_,className:"".concat(f),data:v}]}}))}))},jn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c;return R(this,(function(p){switch(p.label){case 0:return t=e.className,a=void 0===t?"bg-gray-100 border-b sm:shadow sm:rounded sm:border border-slate-300 p-4":t,[4,Da(e.objectApiName||"space_users",!1)];case 1:return n=p.sent(),r={recordLoaded:{actions:[{actionType:"reload",data:{name:"${record.".concat((null==n?void 0:n.NAME_FIELD_KEY)||"name","}"),record:"${record}",recordLoaded:!0}},{actionType:"setValue",args:{value:{recordLoaded:!0}}}]}},e.$schema,i=e.recordId,o=e.onEvent,s=void 0===o?r:o,l=e.showRecordTitle,d=void 0===l||l,[4,Pa(e.objectApiName||"space_users",i,{showRecordTitle:d})];case 2:return(c=p.sent().amisSchema).className=a,[2,Object.assign({},c,{onEvent:s})]}}))}))},In=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s;return R(this,(function(l){switch(l.label){case 0:return e.$schema,t=e.appId,a=e.objectApiName,n=void 0===a?"space_users":a,r=e.recordId,i=e.onEvent,e.defaultData,[4,La(n,t)];case 1:return o=l.sent().amisSchema,s={},r&&(s.recordId=r),o.data=Object.assign({},o.data,s),[2,Object.assign({},o,{onEvent:i})]}}))}))},On=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c,p;return R(this,(function(u){switch(u.label){case 0:return t=e.objectApiName,a=e.recordId,n=e.relatedObjectApiName,e.data,r=e.relatedKey,i=e.top,o=e.perPage,s=e.hiddenEmptyTable,l=e.appId,d=e.label,c=e.className,p=void 0===c?"":c,t&&n?[4,Ua(t,a,n,r,i,o,s,l,d,p)]:[2,{type:"alert",body:"缺少父级对象或相关列表对象",level:"warning",showIcon:!0,className:"mb-3"}];case 1:return[2,u.sent().amisSchema]}}))}))},Dn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s;return R(this,(function(l){switch(l.label){case 0:return t=e.objectApiName,a=e.recordId,n=e.appId,e.data,r=e.formFactor,i=e.perPage,o=void 0===i?5:i,t?[4,Ba(n,t,a,r)]:[2,{type:"alert",body:"缺少父级对象",level:"warning",showIcon:!0,className:"mb-3"}];case 1:return s=l.sent(),[2,{type:"service",body:m(s,(function(e){return{type:"steedos-object-related-listview",objectApiName:t,recordId:a,relatedObjectApiName:e.object_name,foreign_key:e.foreign_key,relatedKey:e.foreign_key,perPage:o,hiddenEmptyTable:!0,appId:n,label:e.label}}))}]}}))}))},Vn=function(e){return B(void 0,void 0,void 0,(function(){var t,a;return R(this,(function(n){switch(n.label){case 0:return console.log("AmisSelectUser props",e),t=e.$schema,e.data,[4,na({name:t.name,multiple:t.multiple,searchable:t.searchable,onEvent:t.onEvent,filters:t.filters},!1,{})];case 1:return(a=n.sent()).name=t.name,[2,a]}}))}))},En=function(e){return B(void 0,void 0,void 0,(function(){return R(this,(function(t){return console.log("AmisProvider props",e),[2,{}]}))}))},An=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d;return R(this,(function(c){return t=e.app,a=e.data,n=e.className,r=e.showAppName,i=void 0===r||r,o=e.appNameClassName,s=void 0===o?"":o,t||(t=a.context.app),l=window.innerWidth<768?"SMALL":"LARGE",d="SMALL"===l,[2,{type:"service",className:n,body:[{type:"button",actionType:"dialog",className:"flex items-center",body:[{type:"tpl",className:"flex items-center",tpl:"<div aria-haspopup='true' title='Open App Launcher' class='slds-icon-waffle_container slds-context-bar__button' title='Open App Launcher' type='button'><span class='slds-icon-waffle'><span class='slds-r1'></span><span class='slds-r2'></span><span class='slds-r3'></span><span class='slds-r4'></span><span class='slds-r5'></span><span class='slds-r6'></span><span class='slds-r7'></span><span class='slds-r8'></span><span class='slds-r9'></span></span></div>"},{type:"tpl",className:"text-xl ml-4 mr-4 text-black ".concat(s," "),tpl:"${app.name}",hiddenOn:"".concat(!!t&&!i)}],dialog:{size:"xl",title:{type:"tpl",tpl:"应用程序启动器",className:"block text-xl text-center"},actions:[],body:[{type:"service",id:"u:0f6224a0836f",affixFooter:!1,body:[{type:"collapse-group",activeKey:["1","2"],body:[{type:"collapse",key:"1",header:"所有应用",body:[{type:"each",name:"app_items",items:{type:"tpl",tpl:"<a class='slds-app-launcher__tile slds-text-link_reset ' role='button' tabindex='0' href='${path}'><div class='slds-app-launcher__tile-figure'><span class='slds-icon_container slds-icon-standard-${REPLACE(icon, '_', '-')}'><img class='w-12 h-12 slds-icon slds-icon_container slds-icon-standard-${icon}' src='${context.rootUrl}/unpkg.com/@salesforce-ux/design-system/assets/icons/standard/${icon}.svg'><span class='slds-assistive-text'>${name}</span></span></div><div class='slds-app-launcher__tile-body'><span class='slds-link text-blue-600 text-lg'><span title='${name}'>${name}</span></span><div style='display: -webkit-box; -webkit-line-clamp: 1;-webkit-box-orient: vertical;overflow: hidden;'><span title='${description}'>${description}</span></div></div></a>",inline:!0,style:{},className:"slds-p-horizontal_small slds-size_1-of-1 slds-medium-size_1-of-3"},id:"u:a0f163ed207f",className:"slds-grid slds-wrap slds-grid_pull-padded"}]},{type:"collapse",key:"2",header:"所有项目",body:[{type:"html",html:"<ul class='slds-grid slds-wrap'>${object_items_dom|raw}</ul>",className:"dec"}],id:"u:a88a225c8832",className:""}],id:"u:cb1c62622fd6"}],className:"",visibleOn:"",clearValueOnHidden:!1,visible:!0,messages:{},api:{method:"get",url:"${context.rootUrl}/service/api/apps/menus?mobile="+d,data:null,headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},adaptor:'\nlet app_items = payload;\nlet object_items = [];\nlet objects = [];\napp_items.forEach((item) => {\n item.children.forEach((i) => {\n if (objects.indexOf(i.id) < 0) {\n objects.push(i.id);\n object_items.push(i)\n }\n })\n})\nlet object_items_dom = \'\';\nobject_items.forEach((item) => {\n\n object_items_dom = object_items_dom +\n `<li class="slds-col--padded slds-p-vertical_xx-small slds-size_1-of-5 slds-grow-none oneAppLauncherItem">\n <a data-object-name="${item.id}" href="${item.path}" class="app-launcher-link slds-text-link--reset slds-app-launcher__tile--small slds-truncate creator-object-nav-${item.id}">\n <span class="slds-truncate slds-text-link">${item.name}</span>\n </a>\n </li>`\n})\npayload.data = {\n app_items,\n object_items_dom\n}\nreturn payload;'}}]},id:"u:b5dc095e1c11"}]}]}))}))},Tn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r;return R(this,(function(i){return t=e.src,a=void 0===t?"/logo.png":t,n=e.className,r=e.imgClassName,[2,{type:"tpl",className:n,tpl:"<a href='/app' class='flex items-center '><img class='".concat(void 0===r?"block h-7 w-auto":r,"' src='").concat(a,"'></a>"),id:"u:2a8e7a359dff"}]}))}))},Cn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c,p,u,m,f;return R(this,(function(y){return t=e.stacked,a=void 0!==t&&t,n=e.overflow,r=e.appId,i=e.data,o=e.links,s=void 0===o?null:o,l=e.showIcon,d=void 0===l||l,c=e.className,p=void 0===c?"":c,u=e.indentSize,m=void 0===u?12:u,f=e.selectedId,r||(r=i.context.appId||"admin"),[2,{type:"nav",className:"".concat(p),stacked:a,overflow:n,indentSize:m,links:s,source:{method:"get",url:"${context.rootUrl}/service/api/apps/".concat(r,"/menus"),adaptor:"\n try {\n const data = { nav: [] };\n const stacked = ".concat(a,";\n const showIcon = ").concat(d,";\n const selectedId = '").concat(f,'\';\n _.each(_.groupBy(payload.children, \'group\'), (tabs, groupName) => {\n if (groupName === \'undefined\') {\n _.each(tabs, (tab) => {\n data.nav.push({\n "label": showIcon ? {\n type: \'tpl\',\n tpl: `<span class=\'fill-slate-500 text-slate-700 block -ml-px no-underline group flex items-center text-[15px] font-medium rounded-md\'><svg class="mr-1 flex-shrink-0 h-6 w-6"><use xlink:href="/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || \'account\'}"></use></svg>${tab.name}</span>`\n } : tab.name,\n "to": tab.path,\n // active: selectedId === tab.id,\n })\n })\n } else {\n\n if(stacked){\n data.nav.push({\n "label": groupName,\n "unfolded": true,\n "children": _.map(tabs, (tab) => {\n return {\n "label": showIcon ? {\n type: \'tpl\',\n tpl: `<span class=\'fill-slate-500 text-slate-700 block -ml-px no-underline group flex items-center text-[15px] font-medium rounded-md\'><svg class="mr-1 flex-shrink-0 h-6 w-6"><use xlink:href="/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || \'account\'}"></use></svg>${tab.name}</span>`\n } : tab.name,\n "to": tab.path,\n // active: selectedId === tab.id,\n }\n })\n })\n }else{\n _.each(tabs, (tab) => {\n data.nav.push({\n "label": showIcon ? {\n type: \'tpl\',\n tpl: `<span class=\'fill-slate-500 text-slate-700 block -ml-px no-underline group flex items-center text-[15px] font-medium rounded-md\'><svg class="mr-1 flex-shrink-0 h-6 w-6"><use xlink:href="/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || \'account\'}"></use></svg>${tab.name}</span>`\n } : tab.name,\n "to": tab.path,\n // active: selectedId === tab.id,\n });\n })\n }\n\n \n }\n });\n payload.data = data.nav;\n } catch (error) {\n console.log(`error`, error)\n }\n return payload;\n '),headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},sendOn:"".concat(!s)}}]}))}))},qn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s,l,d,c;return R(this,(function(p){return t=e.className,a=void 0===t?"":t,n=e.data,r=e.logoutScript,i=void 0===r?"":r,o=e.customButtons,s=void 0===o?[]:o,l=null,(null===(c=null===(d=n.context)||void 0===d?void 0:d.user)||void 0===c?void 0:c.avatar)&&(l="".concat(n.context.rootUrl||"","/avatar/").concat(n.context.user.userId,"?w=220&h=200&fs=160&avatar=").concat(n.context.user.avatar)),[2,{type:"wrapper",id:"u:9c3d279be31a",className:"steedos-global-header leading-3\t".concat(a),size:"xs",body:U(U([],z(s),!1),[{type:"button",hiddenOn:"window.innerWidth < 768",id:"u:267a7e84a89d",onEvent:{click:{actions:[{componentId:"",args:{url:"https://www.steedos.com/docs"},actionType:"url"}]}},body:[{type:"steedos-icon",category:"utility",name:"help",colorVariant:"default",id:"u:afc3a08e8cf3",className:"slds-button_icon slds-global-header__icon"}],label:"帮助"},{type:"button",hiddenOn:"window.innerWidth < 768",onEvent:{click:{actions:[{componentId:"",args:{url:"/app/admin"},actionType:"url"}]}},id:"u:b5d0ab3a32b5",body:[{type:"steedos-icon",category:"utility",name:"setup",colorVariant:"default",id:"u:793a86f8a9e4",className:"slds-button_icon slds-global-header__icon"}],label:"设置"},{type:"steedos-dropdown",placement:"bottomRight",trigger:["click"],body:[{type:"service",body:[{type:"steedos-badge",body:[{type:"steedos-icon",category:"utility",name:"notification",colorVariant:"default",className:"slds-button_icon slds-global-header__icon"}],count:"${unReadCount}"}],id:"u:aba521eed5b7",messages:{},api:{method:"post",url:"${context.rootUrl}/graphql",data:{"&":"$$",context:"${context}",userId:"${context.userId}"},dataType:"json",requestAdaptor:'const { userId } = api.data;\napi.data = {\n query: `{\n unReadCount: notifications__count(filters: [["owner","=","${userId}"], ["is_read", "!=", true]])\n }`\n}',headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},adaptor:"return payload.data"},interval:3e4,silentPolling:!0}],overlay:[{type:"service",body:[{type:"panel",title:"通知",className:"min-w-[300px] max-w-md",body:[{type:"each",className:"overflow-auto max-h-96",name:"notifications",items:{type:"tpl",tpl:"<div class='flex items-center p-4 hover:bg-sky-50'><img src='<%=data.context.rootUrl + `/avatar/` + data.from%>' alt='' class='h-10 w-10 flex-none rounded-full'><div class='ml-4 flex-auto'><div class='font-medium'><a href='<%=data.context.rootUrl + `/api/v4/notifications/` + data._id + `/read?rootUrl=` + window.location.origin + `&appId=` + data.appId %>' target='_blank'><%=data.name%></a></div><div class='mt-1 text-slate-700'><%=data.body%></div><div class='mt-1 text-slate-700'><%=moment(data.created).fromNow()%><abbr class='slds-text-link slds-m-horizontal_xxx-small <%=data.is_read ? 'hidden' : ''%>' title='unread'>●</abbr></div></div></div>",id:"u:07ece657c7b7"},id:"u:18da41dab9ca"}],actions:[{type:"button",label:"全部标记为已读",id:"u:5530f3779e3a",onEvent:{click:{actions:[{componentId:"",args:{api:{url:"${context.rootUrl}/api/v4/notifications/all/markReadAll",method:"post",headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}},messages:{success:"已全部标记为已读"}},actionType:"ajax"}],weight:0}}}]}],id:"u:aba521eed5b7",messages:{},api:{method:"post",url:"${context.rootUrl}/graphql",data:{"&":"$$",context:"${context}",userId:"${context.userId}"},dataType:"json",requestAdaptor:'const { userId } = api.data;\napi.data = {\n query: `{\n notifications(filters: ["owner","=","${userId}"], sort: "created desc,name", top : 10){\n _id,name,body,related_to,related_name,url,owner,is_read,from,created\n } }`\n}',headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"},adaptor:"return payload.data"}}],id:"u:857e8161c96b",className:"antd-Action",open:!1},{type:"steedos-dropdown",placement:"bottomRight",trigger:["click"],body:[{type:"avatar",src:l,icon:"fa fa-user",id:"u:033218742221",style:{background:"rgb(59 130 246 / 0.5)",color:"#FFFFFF"},size:30}],overlay:[{type:"wrapper",className:"",body:[{type:"grid",valign:"middle",align:"center",className:"m-2",columns:[{body:[{type:"avatar",className:"",src:l,icon:"fa fa-user",id:"u:033218742221",style:{background:"rgb(59 130 246 / 0.5)",color:"#FFFFFF"}}]},{body:[{type:"tpl",className:"block",tpl:"${context.user.name}",inline:!0},{type:"tpl",className:"block",tpl:"${context.user.email}",inline:!0}]}]},{type:"button",label:"个人资料",className:"flex",onEvent:{click:{actions:[{args:{url:"/app/admin/space_users/view/${context.user.spaceUserId}",blank:!1},actionType:"link"}]}},level:"link"},{type:"button",label:"注销",className:"flex",onEvent:{click:{actions:[{componentId:"",args:{},actionType:"custom",script:i}]}},level:"link"}]}],className:"antd-Action"}],!1)}]}))}))},Pn=function(e){return B(void 0,void 0,void 0,(function(){var t,a,n,r,i,o,s;return R(this,(function(l){switch(l.label){case 0:t=e.field,a=e.readonly,n=void 0!==a&&a,r=e.ctx,i=void 0===r?{}:r,w(t)&&(t=JSON.parse(t)),w(i)&&(i=JSON.parse(i)),l.label=1;case 1:return l.trys.push([1,3,,4]),[4,ba.convertSFieldToAmisField(t,n,i)];case 2:return o=l.sent(),console.log("schema",o),[2,o];case 3:return s=l.sent(),console.log("error",s),[3,4];case 4:return[2,null]}}))}))},Ln=function(e){var t=e.mode,a=void 0===t?"input-tree":t,n=e.id,r=void 0===n?"selectFlow"+A(1e4,99999):n;console.log("AmisSelectFlow props",e);var i="".concat(r,"_input"),o=function(e,t){var a=t.label,n=t.data,r=t.name,i=t.required,o=t.action,s=void 0===o?"query":o,l=t.mode,d=void 0===l?"input-tree":l,c=t.className,p=t.onEvent,u=t.multiple,m=void 0!==u&&u,f=t.delimiter,y=t.joinValues,b=t.extractValue,h=t.searchable,g=t.showIcon,_=void 0===g||g,v=t.showRadio,w=void 0!==v&&v;return{type:d,id:e,label:a,name:r,options:[],multiple:m,delimiter:f,joinValues:y,extractValue:b,searchable:h,showOutline:t.showOutline,initiallyOpen:t.initiallyOpen,unfoldedLevel:t.unfoldedLevel,className:c,required:i,treeContainerClassName:t.treeContainerClassName,source:{method:"post",url:"${context.rootUrl}/graphql?keywords=${keywords}",requestAdaptor:"\n const keywords = api.body.keywords || '';\n const appId = '".concat(n.app_id||"","';\n api.data = {\n query: `\n {\n options: flows__getList(action: \"").concat(s,'", keywords: "${keywords}", appId: "${appId}"){\n value:_id\n label:name\n children: flows{\n value: _id,\n label: name\n }\n }\n }\n `\n }\n '),headers:{Authorization:"Bearer ${context.tenantId},${context.authToken}"}},showIcon:_,showRadio:w,onlyLeaf:!0,onEvent:p}}(i,e);return"tree-select"===a?o:{type:"service",id:"selectFlowService",body:[{type:"search-box",className:"!w-full mb-2",name:"keywords",enhance:!0,onEvent:{search:{actions:[{actionType:"setValue",componentId:"selectFlowService",args:{value:{keywords:"${event.data.keywords}"}}},{componentId:i,actionType:"reload"}]}}},o]}};export{An as AmisAppLauncher,Cn as AmisAppMenu,qn as AmisGlobalHeader,pn as AmisLib,Tn as AmisLogo,fn as AmisObjectButton,Sn as AmisObjectCalendar,mn as AmisObjectFieldLookup,Fn as AmisObjectForm,xn as AmisObjectListView,kn as AmisObjectTable,En as AmisProvider,In as AmisRecordDetail,jn as AmisRecordDetailHeader,On as AmisRecordDetailRelatedList,Dn as AmisRecordDetailRelatedLists,Ln as AmisSelectFlow,Vn as AmisSelectUser,Pn as AmisSteedosField,wn as FromNow,$n as SteedosBadge,Nn as SteedosBadgeRibbon,vn as SteedosDropdown,bn as SteedosDropdownButton,hn as SteedosIcon};
|
|
2
2
|
//# sourceMappingURL=amis-object.esm.js.map
|