提交 f27abb2e 编写于 作者: ibizdev's avatar ibizdev

zhujiamin 发布系统代码 [TrainSys,网页端]

上级 536ebd28
...@@ -13,13 +13,13 @@ ...@@ -13,13 +13,13 @@
"dependencies": { "dependencies": {
"@floating-ui/dom": "^1.0.11", "@floating-ui/dom": "^1.0.11",
"@ibiz-template/command": "^0.0.1-beta.50", "@ibiz-template/command": "^0.0.1-beta.50",
"@ibiz-template/controller": "^0.0.1-beta.70", "@ibiz-template/controller": "^0.0.1-beta.71",
"@ibiz-template/core": "^0.0.1-beta.70", "@ibiz-template/core": "^0.0.1-beta.71",
"@ibiz-template/model": "^0.0.1-beta.70", "@ibiz-template/model": "^0.0.1-beta.71",
"@ibiz-template/runtime": "^0.0.1-beta.70", "@ibiz-template/runtime": "^0.0.1-beta.71",
"@ibiz-template/service": "^0.0.1-beta.70", "@ibiz-template/service": "^0.0.1-beta.71",
"@ibiz-template/theme": "^0.0.1-beta.70", "@ibiz-template/theme": "^0.0.1-beta.71",
"@ibiz-template/vue-util": "^0.0.1-beta.70", "@ibiz-template/vue-util": "^0.0.1-beta.71",
"@ibiz/dynamic-model-api": "^2.1.17", "@ibiz/dynamic-model-api": "^2.1.17",
"@riophae/vue-treeselect": "^0.4.0", "@riophae/vue-treeselect": "^0.4.0",
"dayjs": "^1.11.7", "dayjs": "^1.11.7",
......
此差异已折叠。
...@@ -30,6 +30,7 @@ import { ...@@ -30,6 +30,7 @@ import {
FormRawItem, FormRawItem,
FormButton, FormButton,
FormDRUIPart, FormDRUIPart,
FormMDCtrl,
GridFieldEditColumn, GridFieldEditColumn,
GridUAColumn, GridUAColumn,
GridFieldColumn, GridFieldColumn,
...@@ -155,6 +156,7 @@ export const AppRegister = { ...@@ -155,6 +156,7 @@ export const AppRegister = {
v.component('GridUAColumn', GridUAColumn); v.component('GridUAColumn', GridUAColumn);
v.component('GridFieldColumn', GridFieldColumn); v.component('GridFieldColumn', GridFieldColumn);
v.component('GridFieldEditColumn', GridFieldEditColumn); v.component('GridFieldEditColumn', GridFieldEditColumn);
v.component('FormMDCtrl', FormMDCtrl);
v.component('FormButton', FormButton); v.component('FormButton', FormButton);
v.component('FormDruipart', FormDRUIPart); v.component('FormDruipart', FormDRUIPart);
v.component('FormGroupPanel', FormGroupPanel); v.component('FormGroupPanel', FormGroupPanel);
......
...@@ -11,6 +11,7 @@ export const EditFormControl = defineComponent({ ...@@ -11,6 +11,7 @@ export const EditFormControl = defineComponent({
}, },
context: { type: Object as PropType<IContext>, required: true }, context: { type: Object as PropType<IContext>, required: true },
params: { type: Object as PropType<IParams>, default: () => ({}) }, params: { type: Object as PropType<IParams>, default: () => ({}) },
enableAutoSave: { type: Boolean, required: false },
}, },
setup(props) { setup(props) {
const { proxy } = getCurrentInstance()!; const { proxy } = getCurrentInstance()!;
......
...@@ -46,7 +46,7 @@ export const FormGroupPanel = defineComponent({ ...@@ -46,7 +46,7 @@ export const FormGroupPanel = defineComponent({
if (!slot.componentOptions) { if (!slot.componentOptions) {
return slot; return slot;
} }
const props = (slot.componentOptions.propsData || {}) as IData; const props = (slot.data?.props || {}) as IData;
return ( return (
<app-col <app-col
layoutPos={props.modelData.source.getPSLayoutPos()} layoutPos={props.modelData.source.getPSLayoutPos()}
......
import { defineComponent, getCurrentInstance, h, watch } from 'vue';
import { useController, useNamespace } from '@ibiz-template/vue-util';
import { FormMDCtrlModel } from '@ibiz-template/model';
import '@ibiz-template/theme/style/components/widgets/form/form-mdctrl.scss';
import { FormMDCtrlController } from '@ibiz-template/controller';
export const FormMDCtrl = defineComponent({
name: 'FormMDCtrl',
props: {
modelData: {
type: FormMDCtrlModel,
required: true,
},
controller: {
type: FormMDCtrlController,
required: true,
},
},
setup(props) {
const ns = useNamespace('form-mdctrl');
// 绑定强制刷新
const { proxy } = getCurrentInstance()!;
useController(proxy, props.controller);
const c = props.controller;
watch(
() => c.form.isLoaded,
(n, o) => {
if (n !== o && n === true) {
c.loadData();
}
},
);
return { ns, c };
},
render() {
const renderFormContent = () => {
return (
this.c.contentCtrlData.length > 0 &&
this.c.contentCtrlData.map((data: IData, index: number) => {
let formComponent = null;
const { form } = this.c.model;
if (form && this.c.providers[form.name] && this.c.model.appEntity) {
const tempContext = Object.assign(this.c.form.context.clone(), {
[this.c.model.appEntity.codeName?.toLowerCase()]:
data[this.c.model.appEntity.keyName],
});
formComponent = h(this.c.providers[form.name].component, {
props: {
modelData: form,
context: tempContext,
params: this.c.form.params,
enableAutoSave: true,
},
on: {
neuronInit: this.c.onNeuronInit(data.srfkey),
},
});
}
return (
<div class={this.ns.b('form-content')} key={data.srfkey}>
{formComponent}
<div class={this.ns.b('btn')}>
<i-button
class={this.ns.b('add-btn')}
type='text'
on-click={() => this.c.handleAdd(index)}
>
添加
</i-button>
<i-button
class={this.ns.b('remove-btn')}
type='text'
on-click={() => this.c.handleRemove(data, index)}
>
删除
</i-button>
</div>
</div>
);
})
);
};
const renderMainContent = () => {
return <div class={this.ns.b('main')}>{renderFormContent()}</div>;
};
return <div class={this.ns.b()}>{renderMainContent()}</div>;
},
});
export default FormMDCtrl;
...@@ -9,6 +9,7 @@ import FormRawItem from './form-raw-item/form-raw-item'; ...@@ -9,6 +9,7 @@ import FormRawItem from './form-raw-item/form-raw-item';
import FormTabPage from './form-tab-page/form-tab-page'; import FormTabPage from './form-tab-page/form-tab-page';
import FormTabPanel from './form-tab-panel/form-tab-panel'; import FormTabPanel from './form-tab-panel/form-tab-panel';
import { FormControl } from './form-control'; import { FormControl } from './form-control';
import { FormMDCtrl } from './form-mdctrl/form-mdctrl';
export { export {
FormButton, FormButton,
...@@ -22,4 +23,5 @@ export { ...@@ -22,4 +23,5 @@ export {
FormTabPage, FormTabPage,
FormTabPanel, FormTabPanel,
FormControl, FormControl,
FormMDCtrl,
}; };
import { FormMDCtrlModel } from '@ibiz-template/model';
import {
FormContainerController,
FormController,
FormMDCtrlController,
IFormDetailProvider,
} from '@ibiz-template/controller';
/**
* 表单多数据部件适配器
*
* @author lxm
* @date 2022-09-19 22:09:03
* @export
* @class FormMDCtrlProvider
* @implements {EditorProvider}
*/
export class FormMDCtrlProvider implements IFormDetailProvider {
component: string = 'FormMDCtrl';
async createController(
detailModel: FormMDCtrlModel,
form: FormController,
parent: FormContainerController | undefined,
): Promise<FormMDCtrlController> {
const c = new FormMDCtrlController(detailModel, form, parent);
await c.init();
return c;
}
}
...@@ -2,6 +2,7 @@ import { FormButtonProvider } from './form-button-provider'; ...@@ -2,6 +2,7 @@ import { FormButtonProvider } from './form-button-provider';
import { FormDRUIPartProvider } from './form-druipart-provider'; import { FormDRUIPartProvider } from './form-druipart-provider';
import { FormGroupPanelProvider } from './form-group-panel-provider'; import { FormGroupPanelProvider } from './form-group-panel-provider';
import { FormItemProvider } from './form-item-provider'; import { FormItemProvider } from './form-item-provider';
import { FormMDCtrlProvider } from './form-mdctrl-provider';
import { FormPageProvider } from './form-page-provider'; import { FormPageProvider } from './form-page-provider';
import { FormRawItemProvider } from './form-raw-item-provider'; import { FormRawItemProvider } from './form-raw-item-provider';
import { FormTabPageProvider } from './form-tab-page-provider'; import { FormTabPageProvider } from './form-tab-page-provider';
...@@ -35,6 +36,8 @@ export function presetFormDetailProvider(): void { ...@@ -35,6 +36,8 @@ export function presetFormDetailProvider(): void {
formDetail.register('TABPANEL', new FormTabPanelProvider()); formDetail.register('TABPANEL', new FormTabPanelProvider());
// 表单分页面板 // 表单分页面板
formDetail.register('TABPAGE', new FormTabPageProvider()); formDetail.register('TABPAGE', new FormTabPageProvider());
// 表单多数据部件
formDetail.register('MDCTRL', new FormMDCtrlProvider());
} }
export { export {
......
...@@ -651,54 +651,54 @@ ...@@ -651,54 +651,54 @@
dependencies: dependencies:
qx-util "^0.4.8" qx-util "^0.4.8"
"@ibiz-template/controller@^0.0.1-beta.70": "@ibiz-template/controller@^0.0.1-beta.71":
version "0.0.1-beta.70" version "0.0.1-beta.71"
resolved "http://npm.zhr.icu/@ibiz-template/controller/-/controller-0.0.1-beta.70.tgz#a6603f09e1e66a44612142a11f4565041a07b799" resolved "http://npm.zhr.icu/@ibiz-template/controller/-/controller-0.0.1-beta.71.tgz#17dd12bf88a6f61e8a2422a22ef6bb097ee86475"
integrity sha512-WUk7glT5PkMUxPAf9wjgE+QZqLF+K3UQd2l/yEb7YM//k0DZ7lA3GzN6NlZy84gTk/dVbSTsFrldBIPe2xAlCA== integrity sha512-Fg2HrG/vzdK5c+/Rfo32AVepsDe62WVDNhRW/YCfpg2Fj2x1ttRZF1oE7cjA7f5klZACZhHdIw6Kt09+Mg4iAw==
dependencies: dependencies:
async-validator "^4.2.5" async-validator "^4.2.5"
dayjs "^1.11.5" dayjs "^1.11.5"
"@ibiz-template/core@^0.0.1-beta.70": "@ibiz-template/core@^0.0.1-beta.71":
version "0.0.1-beta.70" version "0.0.1-beta.71"
resolved "http://npm.zhr.icu/@ibiz-template/core/-/core-0.0.1-beta.70.tgz#ed81d20789798df1a5903057530d1fcaabc68d5f" resolved "http://npm.zhr.icu/@ibiz-template/core/-/core-0.0.1-beta.71.tgz#32b3d5ad13e800aa5b0702c15101814dbbefeb9b"
integrity sha512-S/MMfuzd0GIhEFJA5DsBBriJ3ev3hRQxlfeh8UsCzQT8XT0Nm9VzS9LaI++3U69TEhka7RCS8cHdIK927ZW3aQ== integrity sha512-w9yY8PkTe/eooRIbN5P4Ks4fLzHcnAzF7N+8H45eomlARi6Z8vmN643fvyCxWDuPF2Pknu2Co5GMscgSyN3mZQ==
dependencies: dependencies:
axios "^1.2.1" axios "^1.2.1"
loglevel "^1.8.0" loglevel "^1.8.0"
pluralize "^8.0.0" pluralize "^8.0.0"
qs "^6.11.0" qs "^6.11.0"
"@ibiz-template/model@^0.0.1-beta.70": "@ibiz-template/model@^0.0.1-beta.71":
version "0.0.1-beta.70" version "0.0.1-beta.71"
resolved "http://npm.zhr.icu/@ibiz-template/model/-/model-0.0.1-beta.70.tgz#7614f8d666d2aa17dc7622ffc64fdfdfaf3ae6b1" resolved "http://npm.zhr.icu/@ibiz-template/model/-/model-0.0.1-beta.71.tgz#bc7947e7b5ea6e1620605303c28a4823be3aaf4a"
integrity sha512-rqmMmLBDqta6CTEMNJavC7kGM4+vWOAUXf9Z/+CgOeEmYC4/JRa762V2ygs5A3WY1l0OkqfrPi/1caG9qxIx8A== integrity sha512-+FquY22sgR24rR4gS2hlY2LVYlkKv6qNNUvSsUHy7n3BiZi4tEd0YYeks15RbXgHi0d5S4XquACjiHXvl2Yj2A==
dependencies: dependencies:
"@ibiz/dynamic-model-api" "^2.1.17" "@ibiz/dynamic-model-api" "^2.1.17"
pluralize "^8.0.0" pluralize "^8.0.0"
"@ibiz-template/runtime@^0.0.1-beta.70": "@ibiz-template/runtime@^0.0.1-beta.71":
version "0.0.1-beta.70" version "0.0.1-beta.71"
resolved "http://npm.zhr.icu/@ibiz-template/runtime/-/runtime-0.0.1-beta.70.tgz#2001747c9529e4b7f4bcdce995e3a89369b1b649" resolved "http://npm.zhr.icu/@ibiz-template/runtime/-/runtime-0.0.1-beta.71.tgz#36924cf44918f7029375a610d12689b0b67e6055"
integrity sha512-RU4vhxNze/2h2oM7VcDHilXu2SBt0ev/8Rw3r2TkEDMlVyidvQSStbyCYW5vwdL3Jsqq7yK91rpqkKN428Of8A== integrity sha512-Q3Suu8Vza13QQnabZUWQnZeyuj0uwX3u4EhuNQ03BoMc0o1TWJJ+K//Gm4Cj/HJtVXuQzPTPDAWjWqXHo9YcXg==
dependencies: dependencies:
"@ibiz-template/command" "^0.0.1-beta.50" "@ibiz-template/command" "^0.0.1-beta.50"
qs "^6.11.0" qs "^6.11.0"
"@ibiz-template/service@^0.0.1-beta.70": "@ibiz-template/service@^0.0.1-beta.71":
version "0.0.1-beta.70" version "0.0.1-beta.71"
resolved "http://npm.zhr.icu/@ibiz-template/service/-/service-0.0.1-beta.70.tgz#0194a8cb33aecc50f3807eff089b9389d4277e76" resolved "http://npm.zhr.icu/@ibiz-template/service/-/service-0.0.1-beta.71.tgz#568a8f3661f1ab143d665b284986eacc85cf8e74"
integrity sha512-/lHYYX57Rb3v5ljqcGI1OZSCukpdVTl39P36BmFKMvS/BDwOGi0MmpAnOTySFA/Hhh5istjMs6c0qQnAVu/lng== integrity sha512-YTvJuAT2GE+mf6cw8iq5c/VyC6Gz6rVOcbmpHagFsceEOD8Vl8GQ4U0DQezhvPlkXgpvDOwiAfTQR1wMSgbJ0A==
"@ibiz-template/theme@^0.0.1-beta.70": "@ibiz-template/theme@^0.0.1-beta.71":
version "0.0.1-beta.70" version "0.0.1-beta.71"
resolved "http://npm.zhr.icu/@ibiz-template/theme/-/theme-0.0.1-beta.70.tgz#9036d5bbd99ecd49231585dbbdf697893cfe0d95" resolved "http://npm.zhr.icu/@ibiz-template/theme/-/theme-0.0.1-beta.71.tgz#69346f3722cef6ac0aa8272f6dcdaf2f92a30619"
integrity sha512-XISU6380wu5fSYhTTGLbMtQsuD9uJc4F2EW2+8SDwuMqmCAL9ZoAubmdZJJpGbv38uzxZfp3CsCkgmC6PS80qQ== integrity sha512-9l3Ea4Vl9eZi45C5Xx9jheREZqBCCJfhCRiKuPlAegDBpJ5MAu4ezla6cKsvGtAeh5lABYa0gTsFJHetRSs4Dg==
"@ibiz-template/vue-util@^0.0.1-beta.70": "@ibiz-template/vue-util@^0.0.1-beta.71":
version "0.0.1-beta.70" version "0.0.1-beta.71"
resolved "http://npm.zhr.icu/@ibiz-template/vue-util/-/vue-util-0.0.1-beta.70.tgz#5b94f0fde2874aa820de806abd2547123693e245" resolved "http://npm.zhr.icu/@ibiz-template/vue-util/-/vue-util-0.0.1-beta.71.tgz#ef0a6a2c9698c2ec31fbc8d1889adf83702640cc"
integrity sha512-9DhX20DIlIsvqDSgeT/1BurKSjMtnfVZNcYYWHp9drlj7Q30MsQ44ecCS9d5e4ozDxbNKWs9d6l5ru54vRdcoQ== integrity sha512-lqCjYSZEx+D97Qc0V4xmXNfWnvlxyDsoFW4AYJi79hCQtGJdzzpsjyJatvj0KjonTqn1B7R0ryofyAoy7QHgOQ==
"@ibiz/dynamic-model-api@^2.1.17": "@ibiz/dynamic-model-api@^2.1.17":
version "2.1.17" version "2.1.17"
......
...@@ -1224,16 +1224,16 @@ ...@@ -1224,16 +1224,16 @@
"mOSFilePath" : "pssysapps/TemplatePublish/psappviewmsggroups/VMGroup2", "mOSFilePath" : "pssysapps/TemplatePublish/psappviewmsggroups/VMGroup2",
"name" : "视图消息组2", "name" : "视图消息组2",
"getPSAppViewMsgGroupDetails" : [ { "getPSAppViewMsgGroupDetails" : [ {
"name" : "视图消息", "name" : "视图消息2",
"getPSAppViewMsg" : { "getPSAppViewMsg" : {
"modelref" : true, "modelref" : true,
"id" : "ViewMsg2" "id" : "ViewMsg3"
} }
}, { }, {
"name" : "视图消息2", "name" : "视图消息",
"getPSAppViewMsg" : { "getPSAppViewMsg" : {
"modelref" : true, "modelref" : true,
"id" : "ViewMsg3" "id" : "ViewMsg2"
} }
} ], } ],
"rTMOSFilePath" : "pssysapps/TemplatePublish/psappviewmsggroups/VMGroup2" "rTMOSFilePath" : "pssysapps/TemplatePublish/psappviewmsggroups/VMGroup2"
......
...@@ -2476,16 +2476,16 @@ ...@@ -2476,16 +2476,16 @@
"mOSFilePath" : "pssysapps/Web/psappviewmsggroups/VMGroup2", "mOSFilePath" : "pssysapps/Web/psappviewmsggroups/VMGroup2",
"name" : "视图消息组2", "name" : "视图消息组2",
"getPSAppViewMsgGroupDetails" : [ { "getPSAppViewMsgGroupDetails" : [ {
"name" : "视图消息", "name" : "视图消息2",
"getPSAppViewMsg" : { "getPSAppViewMsg" : {
"modelref" : true, "modelref" : true,
"id" : "ViewMsg2" "id" : "ViewMsg3"
} }
}, { }, {
"name" : "视图消息2", "name" : "视图消息",
"getPSAppViewMsg" : { "getPSAppViewMsg" : {
"modelref" : true, "modelref" : true,
"id" : "ViewMsg3" "id" : "ViewMsg2"
} }
} ], } ],
"rTMOSFilePath" : "pssysapps/Web/psappviewmsggroups/VMGroup2" "rTMOSFilePath" : "pssysapps/Web/psappviewmsggroups/VMGroup2"
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册