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

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

上级 53e6111d
...@@ -8,8 +8,8 @@ pnpm-debug.log* ...@@ -8,8 +8,8 @@ pnpm-debug.log*
lerna-debug.log* lerna-debug.log*
node_modules node_modules
dist dist/**
dist-ssr dist-ssr/**
*.local *.local
# Editor directories and files # Editor directories and files
......
registry=http://npm.zhr.icu/
...@@ -11,14 +11,14 @@ ...@@ -11,14 +11,14 @@
"lint:style": "stylelint 'src/**/*.scss'" "lint:style": "stylelint 'src/**/*.scss'"
}, },
"dependencies": { "dependencies": {
"@ibiz-template/command": "^0.0.1-alpha.37", "@ibiz-template/command": "^0.0.1-alpha.41",
"@ibiz-template/controller": "^0.0.1-alpha.40", "@ibiz-template/controller": "^0.0.1-alpha.41",
"@ibiz-template/core": "^0.0.1-alpha.40", "@ibiz-template/core": "^0.0.1-alpha.41",
"@ibiz-template/model": "^0.0.1-alpha.39", "@ibiz-template/model": "^0.0.1-alpha.41",
"@ibiz-template/runtime": "^0.0.1-alpha.40", "@ibiz-template/runtime": "^0.0.1-alpha.41",
"@ibiz-template/service": "^0.0.1-alpha.40", "@ibiz-template/service": "^0.0.1-alpha.41",
"@ibiz-template/theme": "^0.0.1-alpha.40", "@ibiz-template/theme": "^0.0.1-alpha.41",
"@ibiz-template/vue-util": "^0.0.1-alpha.40", "@ibiz-template/vue-util": "^0.0.1-alpha.41",
"@ibiz/dynamic-model-api": "^2.1.5", "@ibiz/dynamic-model-api": "^2.1.5",
"dayjs": "^1.11.6", "dayjs": "^1.11.6",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
......
...@@ -3,14 +3,14 @@ lockfileVersion: 5.4 ...@@ -3,14 +3,14 @@ lockfileVersion: 5.4
specifiers: specifiers:
'@commitlint/cli': ^17.2.0 '@commitlint/cli': ^17.2.0
'@commitlint/config-conventional': ^17.2.0 '@commitlint/config-conventional': ^17.2.0
'@ibiz-template/command': ^0.0.1-alpha.37 '@ibiz-template/command': ^0.0.1-alpha.41
'@ibiz-template/controller': ^0.0.1-alpha.40 '@ibiz-template/controller': ^0.0.1-alpha.41
'@ibiz-template/core': ^0.0.1-alpha.40 '@ibiz-template/core': ^0.0.1-alpha.41
'@ibiz-template/model': ^0.0.1-alpha.39 '@ibiz-template/model': ^0.0.1-alpha.41
'@ibiz-template/runtime': ^0.0.1-alpha.40 '@ibiz-template/runtime': ^0.0.1-alpha.41
'@ibiz-template/service': ^0.0.1-alpha.40 '@ibiz-template/service': ^0.0.1-alpha.41
'@ibiz-template/theme': ^0.0.1-alpha.40 '@ibiz-template/theme': ^0.0.1-alpha.40
'@ibiz-template/vue-util': ^0.0.1-alpha.40 '@ibiz-template/vue-util': ^0.0.1-alpha.41
'@ibiz/dynamic-model-api': ^2.1.5 '@ibiz/dynamic-model-api': ^2.1.5
'@types/lodash-es': ^4.17.6 '@types/lodash-es': ^4.17.6
'@types/node': ^18.11.9 '@types/node': ^18.11.9
...@@ -61,14 +61,14 @@ specifiers: ...@@ -61,14 +61,14 @@ specifiers:
vue-tsc: ^1.0.9 vue-tsc: ^1.0.9
dependencies: dependencies:
'@ibiz-template/command': 0.0.1-alpha.37 '@ibiz-template/command': 0.0.1-alpha.41
'@ibiz-template/controller': 0.0.1-alpha.40_ih5ecz32a4ibmstgfcjyi3tpam '@ibiz-template/controller': 0.0.1-alpha.41_qiggmtl4kdjswnuiwqfbo6qhu4
'@ibiz-template/core': 0.0.1-alpha.40_qzytosuu5eg3bvoa74ldx6evva '@ibiz-template/core': 0.0.1-alpha.41_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.39_yslesr4iih24kokbsmhl36awki '@ibiz-template/model': 0.0.1-alpha.41_yslesr4iih24kokbsmhl36awki
'@ibiz-template/runtime': 0.0.1-alpha.40_5kdc272ska6i73jbiqdmud7zjq '@ibiz-template/runtime': 0.0.1-alpha.41_htntrmo5c6ybvxgifiug67fuva
'@ibiz-template/service': 0.0.1-alpha.40_q2gs43s4muf6wdt2kzef2bkl5u '@ibiz-template/service': 0.0.1-alpha.41_pqm4hovalqiydv7ewa72l7tngy
'@ibiz-template/theme': 0.0.1-alpha.40 '@ibiz-template/theme': 0.0.1-alpha.40
'@ibiz-template/vue-util': 0.0.1-alpha.40_ugp54vtapc454oxcr74b5b6rda '@ibiz-template/vue-util': 0.0.1-alpha.41_7ld4khxzprgdjxio25v3wsr5ie
'@ibiz/dynamic-model-api': 2.1.5_qx-util@0.4.4 '@ibiz/dynamic-model-api': 2.1.5_qx-util@0.4.4
dayjs: 1.11.6 dayjs: 1.11.6
lodash-es: 4.17.21 lodash-es: 4.17.21
...@@ -661,14 +661,14 @@ packages: ...@@ -661,14 +661,14 @@ packages:
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
dev: true dev: true
/@ibiz-template/command/0.0.1-alpha.37: /@ibiz-template/command/0.0.1-alpha.41:
resolution: {integrity: sha512-7KPS16osgsOHgPekTC8W2SKMtVIF4lsY6XP5IPttkQiZU6nhBDLs4MoRyRvhHPA30aKHzgxmYT/Whl186apoqg==} resolution: {integrity: sha512-zT43FCKM343d4rpfRx2YhcoymriTdAn3Ujb598U39hxLltJZpEp4LkqR4HqCVB0MazpfWA4QRviifPbQPA+3jw==}
dependencies: dependencies:
qx-util: 0.4.4 qx-util: 0.4.4
dev: false dev: false
/@ibiz-template/controller/0.0.1-alpha.40_ih5ecz32a4ibmstgfcjyi3tpam: /@ibiz-template/controller/0.0.1-alpha.41_qiggmtl4kdjswnuiwqfbo6qhu4:
resolution: {integrity: sha512-s9xXqRStODQBPvam7UVKx/U7oqj1yM/qHhZH+K0RMMLVEn/IoCp3ir1asjbgPSqBWxwJ4JM5ZIfvWm4dyyJxkg==} resolution: {integrity: sha512-NOeX2Kf4qgx6LUR9KUrt+/Dm8RJPXRk81UBL0mDQw5eQFy11GFPQhVoY5Ls/xQk8Wrxn6IOYOiu/JrLNxp3heg==}
peerDependencies: peerDependencies:
'@ibiz-template/core': ^0.0.1-alpha.2 '@ibiz-template/core': ^0.0.1-alpha.2
'@ibiz-template/model': ^0.0.1-alpha.2 '@ibiz-template/model': ^0.0.1-alpha.2
...@@ -677,18 +677,18 @@ packages: ...@@ -677,18 +677,18 @@ packages:
lodash-es: ^4.17.21 lodash-es: ^4.17.21
qx-util: ^0.4.4 qx-util: ^0.4.4
dependencies: dependencies:
'@ibiz-template/core': 0.0.1-alpha.40_qzytosuu5eg3bvoa74ldx6evva '@ibiz-template/core': 0.0.1-alpha.41_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.39_yslesr4iih24kokbsmhl36awki '@ibiz-template/model': 0.0.1-alpha.41_yslesr4iih24kokbsmhl36awki
'@ibiz-template/runtime': 0.0.1-alpha.40_5kdc272ska6i73jbiqdmud7zjq '@ibiz-template/runtime': 0.0.1-alpha.41_htntrmo5c6ybvxgifiug67fuva
'@ibiz-template/service': 0.0.1-alpha.40_q2gs43s4muf6wdt2kzef2bkl5u '@ibiz-template/service': 0.0.1-alpha.41_pqm4hovalqiydv7ewa72l7tngy
async-validator: 4.2.5 async-validator: 4.2.5
dayjs: 1.11.6 dayjs: 1.11.6
lodash-es: 4.17.21 lodash-es: 4.17.21
qx-util: 0.4.4 qx-util: 0.4.4
dev: false dev: false
/@ibiz-template/core/0.0.1-alpha.40_qzytosuu5eg3bvoa74ldx6evva: /@ibiz-template/core/0.0.1-alpha.41_qzytosuu5eg3bvoa74ldx6evva:
resolution: {integrity: sha512-8O411O3StgmbohRkOhh1GkdSln3xH4CEIqBqc/sVtPw/1YuTP/LaLr8g/qfCiuq8KriVOk1IDkKMZrPrVqG7Qg==} resolution: {integrity: sha512-zrrt/cCGFj4eOYSjmhqc7D9v8rPQ71CbE6UJjvOuDrTu4BSjktqNC5L1tX/fl+mt8V0x1FkaZH1vrSSktwstKw==}
peerDependencies: peerDependencies:
lodash-es: ^4.17.21 lodash-es: ^4.17.21
qx-util: ^0.4.4 qx-util: ^0.4.4
...@@ -703,8 +703,8 @@ packages: ...@@ -703,8 +703,8 @@ packages:
- debug - debug
dev: false dev: false
/@ibiz-template/model/0.0.1-alpha.39_yslesr4iih24kokbsmhl36awki: /@ibiz-template/model/0.0.1-alpha.41_yslesr4iih24kokbsmhl36awki:
resolution: {integrity: sha512-HPpCR8W6enEjWxGdYdDKJJdirO4Qx5dIpYNfZVrmhHX7dd+Ov9OnpunnIXeTLk8RFzFfQEf9ZuOTziU7QX5dfg==} resolution: {integrity: sha512-aakOQlZNTS7lIl0J3vICitswVN3xqACDSNj1HBLoM/mYshyjtpcwyY84/6KurAoGWI9y0KVGpBJjLufGsVevhA==}
peerDependencies: peerDependencies:
'@ibiz/dynamic-model-api': ^2.1.5 '@ibiz/dynamic-model-api': ^2.1.5
lodash-es: ^4.17.21 lodash-es: ^4.17.21
...@@ -716,31 +716,31 @@ packages: ...@@ -716,31 +716,31 @@ packages:
qx-util: 0.4.4 qx-util: 0.4.4
dev: false dev: false
/@ibiz-template/runtime/0.0.1-alpha.40_5kdc272ska6i73jbiqdmud7zjq: /@ibiz-template/runtime/0.0.1-alpha.41_htntrmo5c6ybvxgifiug67fuva:
resolution: {integrity: sha512-QnGZ9A32caNbPUyhHP3+rNJBM6HdxKxJh4FgNvtlpuiNga9Cw8vG0OHmM9LkMZFs4u6Gu79fationwJIBducqA==} resolution: {integrity: sha512-b9ALOMwVJxPsadqiD+Z/+c/v7kBuVRHqKuYwLYKLe64jEnFwi+KA3PARfQhSw9ntKGvg+9s9uiehC058ti4c6Q==}
peerDependencies: peerDependencies:
'@ibiz-template/core': ^0.0.1-alpha.2 '@ibiz-template/core': ^0.0.1-alpha.2
'@ibiz-template/model': ^0.0.1-alpha.2 '@ibiz-template/model': ^0.0.1-alpha.2
'@ibiz-template/service': ^0.0.1-alpha.2 '@ibiz-template/service': ^0.0.1-alpha.2
qx-util: ^0.4.4 qx-util: ^0.4.4
dependencies: dependencies:
'@ibiz-template/command': 0.0.1-alpha.37 '@ibiz-template/command': 0.0.1-alpha.41
'@ibiz-template/core': 0.0.1-alpha.40_qzytosuu5eg3bvoa74ldx6evva '@ibiz-template/core': 0.0.1-alpha.41_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.39_yslesr4iih24kokbsmhl36awki '@ibiz-template/model': 0.0.1-alpha.41_yslesr4iih24kokbsmhl36awki
'@ibiz-template/service': 0.0.1-alpha.40_q2gs43s4muf6wdt2kzef2bkl5u '@ibiz-template/service': 0.0.1-alpha.41_pqm4hovalqiydv7ewa72l7tngy
qx-util: 0.4.4 qx-util: 0.4.4
dev: false dev: false
/@ibiz-template/service/0.0.1-alpha.40_q2gs43s4muf6wdt2kzef2bkl5u: /@ibiz-template/service/0.0.1-alpha.41_pqm4hovalqiydv7ewa72l7tngy:
resolution: {integrity: sha512-DAcha7xUwxmpdC0fuL4InGlDAy2L9sABmoP3n5er8SXMzfGRKxlCt6cOtwwC5+P/4igCb/Uqv80Is8XWuqNDbg==} resolution: {integrity: sha512-g/P9mqu/uem+V70JFpIWag8IysjmiwcBNCO5dsRjaxRpUg7BIZob6elHfucyPth0z3iXXooO9cng/eqLsZUvHA==}
peerDependencies: peerDependencies:
'@ibiz-template/core': ^0.0.1-alpha.2 '@ibiz-template/core': ^0.0.1-alpha.2
'@ibiz-template/model': ^0.0.1-alpha.2 '@ibiz-template/model': ^0.0.1-alpha.2
qx-util: ^0.4.4 qx-util: ^0.4.4
ramda: ^0.28.0 ramda: ^0.28.0
dependencies: dependencies:
'@ibiz-template/core': 0.0.1-alpha.40_qzytosuu5eg3bvoa74ldx6evva '@ibiz-template/core': 0.0.1-alpha.41_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.39_yslesr4iih24kokbsmhl36awki '@ibiz-template/model': 0.0.1-alpha.41_yslesr4iih24kokbsmhl36awki
qx-util: 0.4.4 qx-util: 0.4.4
ramda: 0.28.0 ramda: 0.28.0
dev: false dev: false
...@@ -749,8 +749,8 @@ packages: ...@@ -749,8 +749,8 @@ packages:
resolution: {integrity: sha512-e3R5XAhG23QgwZheW92vzZGf+CklnvE18UG+NJ2XsIORWVJfwxA3ix89/oFmA0sXUVX7+iI4SuhubhvbWu787A==} resolution: {integrity: sha512-e3R5XAhG23QgwZheW92vzZGf+CklnvE18UG+NJ2XsIORWVJfwxA3ix89/oFmA0sXUVX7+iI4SuhubhvbWu787A==}
dev: false dev: false
/@ibiz-template/vue-util/0.0.1-alpha.40_ugp54vtapc454oxcr74b5b6rda: /@ibiz-template/vue-util/0.0.1-alpha.41_7ld4khxzprgdjxio25v3wsr5ie:
resolution: {integrity: sha512-dSLVzVA0b3bHe2Y4eOvcCCauCawYE0L2PTimgeYieVK36KGSk5wbA75JLaDJJyXhNYU3tbtK3TV9fS0EvU9upw==} resolution: {integrity: sha512-oyfyldxjELlYx9u/PHxaPJNrCgvjeQmWRdy547wrCeEYPcJrAGQB80LQJ8SdzBq68CPuEfX0ZuX99m82RNT6SQ==}
peerDependencies: peerDependencies:
'@ibiz-template/controller': '>=0.0.1-alpha.2' '@ibiz-template/controller': '>=0.0.1-alpha.2'
'@ibiz-template/core': '>=0.0.1-alpha.2' '@ibiz-template/core': '>=0.0.1-alpha.2'
...@@ -761,9 +761,9 @@ packages: ...@@ -761,9 +761,9 @@ packages:
vue: ^2.7.13 vue: ^2.7.13
vue-router: ^3.6.5 vue-router: ^3.6.5
dependencies: dependencies:
'@ibiz-template/controller': 0.0.1-alpha.40_ih5ecz32a4ibmstgfcjyi3tpam '@ibiz-template/controller': 0.0.1-alpha.41_qiggmtl4kdjswnuiwqfbo6qhu4
'@ibiz-template/core': 0.0.1-alpha.40_qzytosuu5eg3bvoa74ldx6evva '@ibiz-template/core': 0.0.1-alpha.41_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.39_yslesr4iih24kokbsmhl36awki '@ibiz-template/model': 0.0.1-alpha.41_yslesr4iih24kokbsmhl36awki
qs: 6.11.0 qs: 6.11.0
qx-util: 0.4.4 qx-util: 0.4.4
ramda: 0.28.0 ramda: 0.28.0
......
rm -rf node_modules rm -rf node_modules
yarn yarn
yarn add "@ibiz-template/vue-util@latest" "@ibiz-template/service@latest" "@ibiz-template/runtime@latest" "@ibiz-template/model@latest" "@ibiz-template/core@latest" "@ibiz-template/command@latest" "@ibiz-template/controller@latest" yarn add "@ibiz-template/vue-util@latest" "@ibiz-template/service@latest" "@ibiz-template/runtime@latest" "@ibiz-template/model@latest" "@ibiz-template/core@latest" "@ibiz-template/command@latest" "@ibiz-template/controller@latest" "@ibiz-template/theme@latest"
yarn build yarn build
rm -rf node_modules rm -rf node_modules
pnpm install pnpm install
......
...@@ -83,7 +83,7 @@ import { ...@@ -83,7 +83,7 @@ import {
IBizPickerLink, IBizPickerLink,
IBizCheckbox, IBizCheckbox,
IBizDatePicker, IBizDatePicker,
IBizDropDownList, IBizDropdown,
IBizFileUpload, IBizFileUpload,
IBizInput, IBizInput,
IBizMPicker, IBizMPicker,
...@@ -94,6 +94,12 @@ import { ...@@ -94,6 +94,12 @@ import {
NotSupportedEditor, NotSupportedEditor,
IBizGridInput, IBizGridInput,
IBizGridCheckbox, IBizGridCheckbox,
IBizGridInputNumber,
IBizGridSpan,
IBizGridDatePicker,
IBizGridDropdown,
IBizGridRadio,
IBizGridPicker,
} from './components/editor'; } from './components/editor';
export const AppRegister = { export const AppRegister = {
...@@ -176,7 +182,7 @@ export const AppRegister = { ...@@ -176,7 +182,7 @@ export const AppRegister = {
v.component('IBizCheckbox', IBizCheckbox); v.component('IBizCheckbox', IBizCheckbox);
v.component('IBizRadio', IBizRadio); v.component('IBizRadio', IBizRadio);
v.component('IBizDatePicker', IBizDatePicker); v.component('IBizDatePicker', IBizDatePicker);
v.component('IBizDropDownList', IBizDropDownList); v.component('IBizDropdown', IBizDropdown);
v.component('IBizPicker', IBizPicker); v.component('IBizPicker', IBizPicker);
v.component('IBizPickerDropDown', IBizPickerDropDown); v.component('IBizPickerDropDown', IBizPickerDropDown);
v.component('IBizPickerLink', IBizPickerLink); v.component('IBizPickerLink', IBizPickerLink);
...@@ -188,6 +194,12 @@ export const AppRegister = { ...@@ -188,6 +194,12 @@ export const AppRegister = {
v.component('NotSupportedEditor', NotSupportedEditor); v.component('NotSupportedEditor', NotSupportedEditor);
// 注册表格编辑器 // 注册表格编辑器
v.component('IBizGridInput', IBizGridInput); v.component('IBizGridInput', IBizGridInput);
v.component('IBizGridSpan', IBizGridSpan);
v.component('IBizGridInputNumber', IBizGridInputNumber);
v.component('IBizGridCheckbox', IBizGridCheckbox); v.component('IBizGridCheckbox', IBizGridCheckbox);
v.component('IBizGridDatePicker', IBizGridDatePicker);
v.component('IBizGridDropdown', IBizGridDropdown);
v.component('IBizGridRadio', IBizGridRadio);
v.component('IBizGridPicker', IBizGridPicker);
}, },
}; };
...@@ -120,10 +120,22 @@ export const IBizCheckbox = defineComponent({ ...@@ -120,10 +120,22 @@ export const IBizCheckbox = defineComponent({
selectArray.value = value; selectArray.value = value;
}; };
const valueText = computed(() => {
const valueArr = Array.isArray(selectArray.value)
? selectArray.value
: [selectArray.value];
return items.value
.filter(item => valueArr.includes(item.value))
.map(item => item.text)
.join(',');
});
return { return {
ns, ns,
items, items,
selectArray, selectArray,
valueText,
onSelectArrayChange, onSelectArrayChange,
}; };
}, },
...@@ -131,19 +143,19 @@ export const IBizCheckbox = defineComponent({ ...@@ -131,19 +143,19 @@ export const IBizCheckbox = defineComponent({
return ( return (
<div class={this.ns.b()}> <div class={this.ns.b()}>
{this.infoMode ? ( {this.infoMode ? (
this.value this.valueText
) : ( ) : (
<i-checkbox-group <i-checkbox-group
value={this.selectArray} value={this.selectArray}
on-on-change={this.onSelectArrayChange} on-on-change={this.onSelectArrayChange}
> >
{this.items.map((_item, index: number) => ( {this.items.map((item, index: number) => (
<i-checkbox <i-checkbox
key={index} key={index}
label={_item.value} label={item.value}
readonly={this.controller.model.readOnly} readonly={this.controller.model.readOnly}
> >
<span class={this.ns.e('text')}>{_item.text}</span> <span class={this.ns.e('text')}>{item.text}</span>
</i-checkbox> </i-checkbox>
))} ))}
</i-checkbox-group> </i-checkbox-group>
......
...@@ -4,7 +4,6 @@ import { ...@@ -4,7 +4,6 @@ import {
useGridCellEditor, useGridCellEditor,
useNamespace, useNamespace,
} from '@ibiz-template/vue-util'; } from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-input/ibiz-input.scss';
export const IBizGridCheckbox = defineComponent({ export const IBizGridCheckbox = defineComponent({
name: 'IBizGridCheckbox', name: 'IBizGridCheckbox',
...@@ -13,8 +12,8 @@ export const IBizGridCheckbox = defineComponent({ ...@@ -13,8 +12,8 @@ export const IBizGridCheckbox = defineComponent({
const ns = useNamespace('grid-checkbox'); const ns = useNamespace('grid-checkbox');
const { isInfoMode, componentRef, onOperateChange, onChange } = const { isInfoMode, componentRef, onOperateChange, onChange } =
useGridCellEditor(props.rowDataChange, { useGridCellEditor(props.rowDataChange, props.rowSave, {
isCacheValue: true, isDelaySave: true,
}); });
return { return {
......
import { defineComponent, ref } from 'vue';
import {
getGridDataPickerProps,
useGridCellEditor,
useNamespace,
} from '@ibiz-template/vue-util';
export const IBizGridPicker = defineComponent({
name: 'IBizGridPicker',
props: getGridDataPickerProps(),
setup(props) {
const ns = useNamespace('grid-picker');
const multiple = props.controller.model.editorType === 'ADDRESSPICKUP';
const provider = ref();
ibiz.register.editor.get(props.controller.model).then(value => {
provider.value = value;
});
const { isInfoMode, componentRef, onOperateChange, onChange } =
useGridCellEditor(props.rowDataChange, props.rowSave, {
isDelaySave: multiple,
});
return {
ns,
isInfoMode,
componentRef,
provider,
onOperateChange,
onChange,
};
},
render(h) {
return (
<div
ref='componentRef'
class={`${this.ns.b()} ibiz-grid-editor`}
onDblclick={evt => evt.stopPropagation()}
onClick={evt => evt.stopPropagation()}
>
{this.provider &&
h(this.provider.formEditor, {
props: {
...this.$props,
infoMode: this.isInfoMode,
},
on: {
change: this.onChange,
operate: this.onOperateChange,
},
})}
</div>
);
},
});
import { PickerEditorController } from '@ibiz-template/controller'; import { ref, watch, Ref, defineComponent, computed } from 'vue';
import { ref, watch, Ref, defineComponent, PropType } from 'vue'; import {
import { useNamespace } from '@ibiz-template/vue-util'; getDataPickerProps,
getEditorEmits,
useNamespace,
} from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-mpicker/ibiz-mpicker.scss'; import '@ibiz-template/theme/style/components/editor/ibiz-mpicker/ibiz-mpicker.scss';
export const IBizMPicker = defineComponent({ export const IBizMPicker = defineComponent({
name: 'IBizMPicker', name: 'IBizMPicker',
props: { props: getDataPickerProps(),
value: { emits: getEditorEmits(),
type: String,
},
controller: {
type: PickerEditorController,
},
data: {
type: Object as PropType<IData>,
},
disabled: {
type: Boolean,
},
},
emits: {
change: (_value: Array<string> | string | null, _tag?: string) => true,
},
setup(props, { emit }) { setup(props, { emit }) {
const ns = useNamespace('mpicker'); const ns = useNamespace('mpicker');
...@@ -239,12 +227,21 @@ export const IBizMPicker = defineComponent({ ...@@ -239,12 +227,21 @@ export const IBizMPicker = defineComponent({
onSearch(''); onSearch('');
} }
}; };
const valueText = computed(() => {
return selectItems.value
.map(item => {
return item[c.textName] || item.srfmajortext;
})
.join(',');
});
return { return {
ns, ns,
c, c,
curValue, curValue,
loading, loading,
items, items,
valueText,
onSearch, onSearch,
onSelectOpen, onSelectOpen,
onSelect, onSelect,
...@@ -254,34 +251,41 @@ export const IBizMPicker = defineComponent({ ...@@ -254,34 +251,41 @@ export const IBizMPicker = defineComponent({
render() { render() {
return ( return (
<div class={this.ns.b()}> <div class={this.ns.b()}>
<i-select {this.infoMode && this.valueText}
value={this.curValue} {!this.infoMode && (
filterable <i-select
multiple value={this.curValue}
loading={this.loading} filterable
placeholder={this.c.placeHolder} multiple
remote-method={this.onSearch} loading={this.loading}
on-on-open-change={this.onSelectOpen} placeholder={this.c.placeHolder}
on-on-change={this.onSelect} remote-method={this.onSearch}
disabled={this.disabled} on-on-open-change={this.onSelectOpen}
> on-on-change={this.onSelect}
{this.items.map((item, index) => { disabled={this.disabled}
return ( >
<i-option key={index} value={item[this.c.keyName]}> {this.items.map((item, index) => {
{item[this.c.textName]} return (
</i-option> <i-option key={index} value={item[this.c.keyName]}>
); {item[this.c.textName]}
})} </i-option>
</i-select> );
<div class={this.ns.e('btns')}> })}
{this.c.pickupView ? ( </i-select>
<i-button )}
icon='ios-search' {!this.infoMode && (
on-click={this.openPickUpView} <div class={this.ns.e('buns-position')}>
type={'text'} <div class={this.ns.e('btns')}>
></i-button> {this.c.pickupView ? (
) : null} <i-button
</div> icon='ios-search'
on-click={this.openPickUpView}
type={'text'}
></i-button>
) : null}
</div>
</div>
)}
</div> </div>
); );
}, },
......
import { PickerEditorController } from '@ibiz-template/controller'; import { ref, Ref, watch, defineComponent } from 'vue';
import { ref, Ref, watch, defineComponent, PropType } from 'vue'; import {
import { useNamespace } from '@ibiz-template/vue-util'; getDataPickerProps,
getEditorEmits,
useNamespace,
} from '@ibiz-template/vue-util';
import { debounce } from 'lodash-es'; import { debounce } from 'lodash-es';
import { isNil } from 'ramda'; import { isNil } from 'ramda';
import '@ibiz-template/theme/style/components/editor/ibiz-picker-dropdown/ibiz-picker-dropdown.scss'; import '@ibiz-template/theme/style/components/editor/ibiz-picker-dropdown/ibiz-picker-dropdown.scss';
export const IBizPickerDropDown = defineComponent({ export const IBizPickerDropDown = defineComponent({
name: 'IBizPickerDropDown', name: 'IBizPickerDropDown',
props: { props: getDataPickerProps(),
value: { emits: getEditorEmits(),
type: String,
},
controller: {
type: PickerEditorController,
},
data: {
type: Object as PropType<IData>,
required: true,
},
disabled: {
type: Boolean,
},
},
emits: {
change: (_value?: string | Array<string> | IData | null, _tag?: string) =>
true,
},
setup(props, { emit }) { setup(props, { emit }) {
const ns = useNamespace('picker-dropdown'); const ns = useNamespace('picker-dropdown');
const c = props.controller as PickerEditorController; const c = props.controller;
// 允许搜索 // 允许搜索
const allowSearch = ref(true); const allowSearch = ref(true);
...@@ -189,6 +175,9 @@ export const IBizPickerDropDown = defineComponent({ ...@@ -189,6 +175,9 @@ export const IBizPickerDropDown = defineComponent({
}; };
}, },
render() { render() {
if (this.infoMode) {
return <div class={this.ns.b()}>{this.value}</div>;
}
return ( return (
<div class={this.ns.b()}> <div class={this.ns.b()}>
<i-select <i-select
......
import { PickerEditorController } from '@ibiz-template/controller'; import { defineComponent, ref, Ref, watch } from 'vue';
import { defineComponent, PropType, ref, Ref, watch } from 'vue'; import {
import { useNamespace } from '@ibiz-template/vue-util'; getDataPickerProps,
getEditorEmits,
useNamespace,
} from '@ibiz-template/vue-util';
export const IBizPickerLink = defineComponent({ export const IBizPickerLink = defineComponent({
name: 'IBizPickerLink', name: 'IBizPickerLink',
props: { props: getDataPickerProps(),
value: { emits: getEditorEmits(),
type: String,
},
controller: {
type: PickerEditorController,
},
data: {
type: Object as PropType<IData>,
},
},
emits: {
change: (_value: Array<string | number> | string, _tag?: string) => true,
},
setup(props, { emit }) { setup(props, { emit }) {
const ns = useNamespace('picker-link'); const ns = useNamespace('picker-link');
...@@ -59,7 +50,11 @@ export const IBizPickerLink = defineComponent({ ...@@ -59,7 +50,11 @@ export const IBizPickerLink = defineComponent({
render() { render() {
return ( return (
<div class={this.ns.b()}> <div class={this.ns.b()}>
<a on-click={this.openLinkView}>{this.curValue}</a> {this.infoMode ? (
this.value
) : (
<a on-click={this.openLinkView}>{this.curValue}</a>
)}
</div> </div>
); );
}, },
......
import { PickerEditorController } from '@ibiz-template/controller'; import { ref, watch, Ref, defineComponent } from 'vue';
import { ref, watch, Ref, defineComponent, PropType } from 'vue'; import {
import { useNamespace } from '@ibiz-template/vue-util'; getDataPickerProps,
getEditorEmits,
useNamespace,
} from '@ibiz-template/vue-util';
import { isEmpty } from 'ramda'; import { isEmpty } from 'ramda';
import '@ibiz-template/theme/style/components/editor/ibiz-picker/ibiz-picker.scss'; import '@ibiz-template/theme/style/components/editor/ibiz-picker/ibiz-picker.scss';
export const IBizPicker = defineComponent({ export const IBizPicker = defineComponent({
name: 'IBizPicker', name: 'IBizPicker',
props: { props: getDataPickerProps(),
value: { emits: getEditorEmits(),
type: String,
},
controller: {
type: PickerEditorController,
},
data: {
type: Object as PropType<IData>,
required: true,
},
disabled: {
type: Boolean,
},
},
setup(props, { emit }) { setup(props, { emit }) {
const ns = useNamespace('picker'); const ns = useNamespace('picker');
...@@ -144,6 +134,9 @@ export const IBizPicker = defineComponent({ ...@@ -144,6 +134,9 @@ export const IBizPicker = defineComponent({
}; };
}, },
render() { render() {
if (this.infoMode) {
return <div class={this.ns.b()}>{this.value}</div>;
}
return ( return (
<div class={this.ns.b()}> <div class={this.ns.b()}>
{this.c.noAC ? ( {this.c.noAC ? (
...@@ -201,23 +194,25 @@ export const IBizPicker = defineComponent({ ...@@ -201,23 +194,25 @@ export const IBizPicker = defineComponent({
); );
})} })}
</i-auto-complete> </i-auto-complete>
<div class={this.ns.e('btns')}> <div class={this.ns.e('buns-position')}>
{this.c.pickupView ? ( <div class={this.ns.e('btns')}>
<i-button {this.c.pickupView ? (
icon='ios-search' <i-button
on-click={this.openPickUpView} icon='ios-search'
type={'text'} on-click={this.openPickUpView}
></i-button> type={'text'}
) : null} ></i-button>
{this.c.linkView ? ( ) : null}
<i-button {this.c.linkView ? (
on-click={this.openLinkView} <i-button
type={'text'} on-click={this.openLinkView}
class={this.ns.e('link')} type={'text'}
> class={this.ns.e('link')}
<ion-icon src={'./assets/img/link.svg'}></ion-icon> >
</i-button> <ion-icon src={'./assets/img/link.svg'}></ion-icon>
) : null} </i-button>
) : null}
</div>
</div> </div>
</div> </div>
)} )}
......
...@@ -2,3 +2,4 @@ export { IBizPicker } from './ibiz-picker/ibiz-picker'; ...@@ -2,3 +2,4 @@ export { IBizPicker } from './ibiz-picker/ibiz-picker';
export { IBizPickerDropDown } from './ibiz-picker-dropdown/ibiz-picker-dropdown'; export { IBizPickerDropDown } from './ibiz-picker-dropdown/ibiz-picker-dropdown';
export { IBizMPicker } from './ibiz-mpicker/ibiz-mpicker'; export { IBizMPicker } from './ibiz-mpicker/ibiz-mpicker';
export { IBizPickerLink } from './ibiz-picker-link/ibiz-picker-link'; export { IBizPickerLink } from './ibiz-picker-link/ibiz-picker-link';
export { IBizGridPicker } from './ibiz-grid-picker/ibiz-grid-picker';
import { DatePickerEditorController } from '@ibiz-template/controller'; import { ref, watch, defineComponent } from 'vue';
import { ref, watch, defineComponent, PropType } from 'vue'; import {
import { useNamespace } from '@ibiz-template/vue-util'; getDatePickerProps,
getEditorEmits,
useNamespace,
} from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-date-picker/ibiz-date-picker.scss'; import '@ibiz-template/theme/style/components/editor/ibiz-date-picker/ibiz-date-picker.scss';
import dayjs from 'dayjs';
export const IBizDatePicker = defineComponent({ export const IBizDatePicker = defineComponent({
name: 'IBizDatePicker', name: 'IBizDatePicker',
props: { props: getDatePickerProps(),
value: { emits: getEditorEmits(),
type: String,
},
controller: {
type: DatePickerEditorController,
required: true,
},
data: {
type: Object as PropType<IData>,
},
disabled: {
type: Boolean,
},
},
emits: {
change: (_value: string) => true,
},
setup(props, { emit }) { setup(props, { emit }) {
const ns = useNamespace('date-picker'); const ns = useNamespace('date-picker');
const c = props.controller; const c = props.controller;
...@@ -33,53 +21,19 @@ export const IBizDatePicker = defineComponent({ ...@@ -33,53 +21,19 @@ export const IBizDatePicker = defineComponent({
const format = ref('yyyy-MM-dd'); const format = ref('yyyy-MM-dd');
switch (editorModel.editorType) { switch (editorModel.editorType) {
// 时间选择器
case 'DATEPICKER':
type.value = 'datetime';
format.value = 'yyyy-MM-dd HH:mm:ss';
break;
// 时间选择控件
case 'DATEPICKEREX': case 'DATEPICKEREX':
type.value = 'date';
format.value = 'yyyy-MM-dd HH:mm:ss';
break;
// 时间选择控件_无小时
case 'DATEPICKEREX_NOTIME': case 'DATEPICKEREX_NOTIME':
type.value = 'date'; type.value = 'date';
format.value = 'yyyy-MM-dd';
break; break;
// 时间选择控件_小时
case 'DATEPICKEREX_HOUR': case 'DATEPICKEREX_HOUR':
type.value = 'datetime';
format.value = 'yyyy-MM-dd HH';
break;
// 时间选择控件_分钟
case 'DATEPICKEREX_MINUTE': case 'DATEPICKEREX_MINUTE':
type.value = 'datetime';
format.value = 'yyyy-MM-dd HH:mm';
break;
// 时间选择控件_秒钟
case 'DATEPICKEREX_SECOND': case 'DATEPICKEREX_SECOND':
type.value = 'datetime';
format.value = 'yyyy-MM-dd HH:mm:ss';
break;
// 时间选择控件_无日期
case 'DATEPICKEREX_NODAY': case 'DATEPICKEREX_NODAY':
type.value = 'datetime';
format.value = 'HH:mm:ss';
break;
// 时间选择控件_无日期无秒钟
case 'DATEPICKEREX_NODAY_NOSECOND': case 'DATEPICKEREX_NODAY_NOSECOND':
type.value = 'datetime';
format.value = 'HH:mm';
break;
// 时间选择控件_无秒钟
case 'DATEPICKEREX_NOSECOND': case 'DATEPICKEREX_NOSECOND':
type.value = 'datetime'; case 'DATEPICKER':
format.value = 'yyyy-MM-dd HH:mm';
break;
default: default:
break; type.value = 'datetime';
} }
// 值格式化 // 值格式化
const valueFormat = c!.valueFormat; const valueFormat = c!.valueFormat;
...@@ -89,12 +43,12 @@ export const IBizDatePicker = defineComponent({ ...@@ -89,12 +43,12 @@ export const IBizDatePicker = defineComponent({
.replace('DD', 'dd'); .replace('DD', 'dd');
format.value = tempFormat; format.value = tempFormat;
} }
const currentVal = ref(); const formatValue = ref();
watch( watch(
() => props.value, () => props.value,
(newVal, oldVal) => { (newVal, oldVal) => {
if (newVal !== oldVal) { if (newVal !== oldVal) {
currentVal.value = newVal || null; formatValue.value = dayjs(newVal).format(valueFormat);
} }
}, },
{ immediate: true }, { immediate: true },
...@@ -103,20 +57,24 @@ export const IBizDatePicker = defineComponent({ ...@@ -103,20 +57,24 @@ export const IBizDatePicker = defineComponent({
const handleChange = (date: string, _dateType: IData) => { const handleChange = (date: string, _dateType: IData) => {
emit('change', date); emit('change', date);
}; };
return { ns, c, editorModel, type, format, currentVal, handleChange }; return { ns, c, editorModel, type, format, formatValue, handleChange };
}, },
render() { render() {
return ( return (
<div class={this.ns.b()}> <div class={this.ns.b()}>
<i-CalendarPicker {this.infoMode ? (
type={this.type} this.formatValue
format={this.format} ) : (
placeholder={this.c!.placeHolder} <i-CalendarPicker
value={this.currentVal} type={this.type}
readonly={this.c!.model.readOnly} format={this.format}
on-on-change={this.handleChange} placeholder={this.c!.placeHolder}
disabled={this.disabled} value={this.value}
></i-CalendarPicker> readonly={this.c!.model.readOnly}
on-on-change={this.handleChange}
disabled={this.disabled}
></i-CalendarPicker>
)}
</div> </div>
); );
}, },
......
import { defineComponent } from 'vue';
import {
getGridDatePickerProps,
useGridCellEditor,
useNamespace,
} from '@ibiz-template/vue-util';
export const IBizGridDatePicker = defineComponent({
name: 'IBizGridDatePicker',
props: getGridDatePickerProps(),
setup(props) {
const ns = useNamespace('grid-date-picker');
const { isInfoMode, componentRef, onOperateChange, onChange } =
useGridCellEditor(props.rowDataChange, props.rowSave, {
isDelaySave: true,
});
return {
ns,
isInfoMode,
componentRef,
onOperateChange,
onChange,
};
},
render(h) {
return (
<div
ref='componentRef'
class={`${this.ns.b()} ibiz-grid-editor`}
onDblclick={evt => evt.stopPropagation()}
onClick={evt => evt.stopPropagation()}
>
{h('IBizDatePicker', {
props: {
...this.$props,
infoMode: this.isInfoMode,
},
on: {
change: this.onChange,
operate: this.onOperateChange,
},
})}
</div>
);
},
});
export { IBizDatePicker } from './ibiz-date-picker/ibiz-date-picker'; export { IBizDatePicker } from './ibiz-date-picker/ibiz-date-picker';
export { IBizGridDatePicker } from './ibiz-grid-date-picker/ibiz-grid-date-picker';
import { ref, Ref, defineComponent, computed } from 'vue';
import {
getDropdownProps,
getEditorEmits,
useNamespace,
} from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-dropdown/ibiz-dropdown.scss';
export const IBizDropdown = defineComponent({
name: 'IBizDropdown',
props: getDropdownProps(),
emits: getEditorEmits(),
setup(props, { emit }) {
const ns = useNamespace('dropdown');
const c = props.controller;
// 是否是树形
const hasChildren = ref(false);
// 代码表
const items: Ref<readonly IData[]> = ref([]);
c!.loadCodeList(props.data!).then((codeList: readonly IData[]) => {
items.value = codeList;
for (let i = 0; i < codeList.length; i++) {
const _item = codeList[i];
if (_item.children) {
hasChildren.value = true;
break;
}
}
});
// 当前值
const curValue: Ref<Array<string> | string | undefined> = computed({
get() {
if (props.value) {
return c!.multiple ? props.value?.split(',') : props.value;
}
return props.value;
},
set(select: string | Array<string> | undefined) {
if (Array.isArray(select)) {
emit('change', select.length === 0 ? null : select.join(','));
} else {
emit('change', select);
}
},
});
const valueText = computed(() => {
const valueArr = Array.isArray(curValue.value)
? curValue.value
: [curValue.value];
return items.value
.filter(item => valueArr.includes(item.value))
.map(item => item.text)
.join(',');
});
return { ns, c, curValue, items, valueText, hasChildren };
},
render() {
// 编辑态内容
const editContent = this.hasChildren ? (
<app-select-tree
class={this.ns.e('tree-select')}
value={this.curValue}
nodes-data={this.items}
multiple={this.c!.multiple}
></app-select-tree>
) : (
<i-select
v-model={this.curValue}
allow-clear
clearable
class={this.ns.e('select')}
multiple={this.c!.multiple}
placeholder={this.c!.placeHolder}
disabled={this.disabled}
>
{this.items.map(item => {
return <i-option value={item.value}>{item.text}</i-option>;
})}
</i-select>
);
return (
<div class={this.ns.b()}>
{this.infoMode ? this.valueText : editContent}
</div>
);
},
});
import { defineComponent } from 'vue';
import {
getGridDropdownProps,
useGridCellEditor,
useNamespace,
} from '@ibiz-template/vue-util';
export const IBizGridDropdown = defineComponent({
name: 'IBizGridDropdown',
props: getGridDropdownProps(),
setup(props) {
const ns = useNamespace('grid-dropdown');
const { isInfoMode, componentRef, onOperateChange, onChange } =
useGridCellEditor(props.rowDataChange, props.rowSave, {
isDelaySave: props.controller.multiple,
});
return {
ns,
isInfoMode,
componentRef,
onOperateChange,
onChange,
};
},
render(h) {
return (
<div
ref='componentRef'
class={`${this.ns.b()} ibiz-grid-editor`}
onDblclick={evt => evt.stopPropagation()}
onClick={evt => evt.stopPropagation()}
>
{h('IBizDropdown', {
props: {
...this.$props,
infoMode: this.isInfoMode,
},
on: {
change: this.onChange,
operate: this.onOperateChange,
},
})}
</div>
);
},
});
export { IBizDropDownList } from './ibiz-dropdown-list/ibiz-dropdown-list'; export { IBizDropdown } from './ibiz-dropdown/ibiz-dropdown';
export { IBizGridDropdown } from './ibiz-grid-dropdown/ibiz-grid-dropdown';
import { defineComponent } from 'vue';
import {
getGridRadioProps,
useGridCellEditor,
useNamespace,
} from '@ibiz-template/vue-util';
export const IBizGridRadio = defineComponent({
name: 'IBizGridRadio',
props: getGridRadioProps(),
setup(props) {
const ns = useNamespace('grid-radio');
const { isInfoMode, componentRef, onOperateChange, onChange } =
useGridCellEditor(props.rowDataChange, props.rowSave, {
isDelaySave: false,
});
return {
ns,
isInfoMode,
componentRef,
onOperateChange,
onChange,
};
},
render(h) {
return (
<div
ref='componentRef'
class={`${this.ns.b()} ibiz-grid-editor`}
onDblclick={evt => evt.stopPropagation()}
onClick={evt => evt.stopPropagation()}
>
{h('IBizRadio', {
props: {
...this.$props,
infoMode: this.isInfoMode,
},
on: {
change: this.onChange,
operate: this.onOperateChange,
},
})}
</div>
);
},
});
import { RadioButtonListEditorController } from '@ibiz-template/controller';
import { computed, defineComponent, ref } from 'vue'; import { computed, defineComponent, ref } from 'vue';
import type { PropType } from 'vue'; import {
import { useNamespace } from '@ibiz-template/vue-util'; getEditorEmits,
getRadioProps,
useNamespace,
} from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-radio/ibiz-radio.scss'; import '@ibiz-template/theme/style/components/editor/ibiz-radio/ibiz-radio.scss';
export const IBizRadio = defineComponent({ export const IBizRadio = defineComponent({
name: 'IBizRadio', name: 'IBizRadio',
props: { props: getRadioProps(),
value: [String, Number], emits: getEditorEmits(),
controller: {
type: RadioButtonListEditorController,
required: true,
},
data: {
type: Object as PropType<IData>,
required: true,
},
},
emits: {
change: (_value: string | number) => true,
},
setup(props, { emit }) { setup(props, { emit }) {
const ns = useNamespace('radio'); const ns = useNamespace('radio');
...@@ -27,17 +17,8 @@ export const IBizRadio = defineComponent({ ...@@ -27,17 +17,8 @@ export const IBizRadio = defineComponent({
const editorModel = c.model; const editorModel = c.model;
const selectValue = computed({
get() {
return props.value || '';
},
set(newValue: string | number) {
emit('change', newValue);
},
});
const onSelectValueChange = (value: string | number) => { const onSelectValueChange = (value: string | number) => {
selectValue.value = value; emit('change', value);
}; };
// 代码表 // 代码表
...@@ -47,32 +28,40 @@ export const IBizRadio = defineComponent({ ...@@ -47,32 +28,40 @@ export const IBizRadio = defineComponent({
items.value = codeList; items.value = codeList;
}); });
const valueText = computed(() => {
return items.value.find(item => item.value === props.value)?.text || '';
});
return { return {
ns, ns,
editorModel, editorModel,
selectValue,
items, items,
valueText,
onSelectValueChange, onSelectValueChange,
}; };
}, },
render() { render() {
return ( return (
<div class={this.ns.b()}> <div class={this.ns.b()}>
<i-radio-group {this.infoMode ? (
class={this.ns.b('group')} this.valueText
value={this.selectValue} ) : (
on-on-change={this.onSelectValueChange} <i-radio-group
> class={this.ns.e('group')}
{this.items.map((_item, index: number) => ( value={this.value}
<i-radio on-on-change={this.onSelectValueChange}
key={index} >
label={_item.value} {this.items.map((_item, index: number) => (
readonly={this.editorModel.readOnly} <i-radio
> key={index}
<span class={this.ns.be('group', 'text')}>{_item.text}</span> label={_item.value}
</i-radio> readonly={this.editorModel.readOnly}
))} >
</i-radio-group> <span class={this.ns.e('text')}>{_item.text}</span>
</i-radio>
))}
</i-radio-group>
)}
</div> </div>
); );
}, },
......
export { IBizRadio } from './ibiz-radio/ibiz-radio'; export { IBizRadio } from './ibiz-radio/ibiz-radio';
export { IBizGridRadio } from './ibiz-grid-radio/ibiz-grid-radio';
import { defineComponent } from 'vue';
import { getGridSpanProps, useNamespace } from '@ibiz-template/vue-util';
export const IBizGridSpan = defineComponent({
name: 'IBizGridSpan',
props: getGridSpanProps(),
setup() {
const ns = useNamespace('grid-span');
return { ns };
},
render(h) {
return (
<div
class={`${this.ns.b()} ibiz-grid-editor`}
onDblclick={evt => evt.stopPropagation()}
onClick={evt => evt.stopPropagation()}
>
{h('IBizSpan', {
props: {
...this.$props,
},
})}
</div>
);
},
});
import { ref, defineComponent, Ref, watch } from 'vue'; import { ref, defineComponent, Ref, watch } from 'vue';
import type { PropType } from 'vue'; import { getSpanProps, useNamespace } from '@ibiz-template/vue-util';
import { SpanEditorController } from '@ibiz-template/controller';
import { useNamespace } from '@ibiz-template/vue-util';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import '@ibiz-template/theme/style/components/editor/ibiz-span/ibiz-span.scss'; import '@ibiz-template/theme/style/components/editor/ibiz-span/ibiz-span.scss';
export const IBizSpan = defineComponent({ export const IBizSpan = defineComponent({
name: 'IBizSpan', name: 'IBizSpan',
props: { props: getSpanProps(),
value: String,
controller: {
type: SpanEditorController,
required: true,
},
data: {
type: Object as PropType<IData>,
required: true,
},
},
setup(props) { setup(props) {
const ns = useNamespace('span'); const ns = useNamespace('span');
const c = props.controller; const c = props.controller;
......
export { IBizSpan } from './ibiz-span/ibiz-span'; export { IBizSpan } from './ibiz-span/ibiz-span';
export { IBizGridSpan } from './ibiz-grid-span/ibiz-grid-span';
import { defineComponent } from 'vue';
import {
getGridInputNumberProps,
useGridCellEditor,
useNamespace,
} from '@ibiz-template/vue-util';
export const IBizGridInputNumber = defineComponent({
name: 'IBizGridInputNumber',
props: getGridInputNumberProps(),
setup(props) {
const ns = useNamespace('grid-input-number');
const { isInfoMode, componentRef, onOperateChange, onChange } =
useGridCellEditor(props.rowDataChange, props.rowSave, {
isDelaySave: true,
});
return {
ns,
isInfoMode,
componentRef,
onOperateChange,
onChange,
};
},
render(h) {
return (
<div
ref='componentRef'
class={`${this.ns.b()} ibiz-grid-editor`}
onDblclick={evt => evt.stopPropagation()}
onClick={evt => evt.stopPropagation()}
>
{h('IBizInputNumber', {
props: {
...this.$props,
infoMode: this.isInfoMode,
},
on: {
change: this.onChange,
operate: this.onOperateChange,
},
})}
</div>
);
},
});
...@@ -4,7 +4,6 @@ import { ...@@ -4,7 +4,6 @@ import {
useGridCellEditor, useGridCellEditor,
useNamespace, useNamespace,
} from '@ibiz-template/vue-util'; } from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-input/ibiz-input.scss';
export const IBizGridInput = defineComponent({ export const IBizGridInput = defineComponent({
name: 'IBizGridInput', name: 'IBizGridInput',
...@@ -12,8 +11,8 @@ export const IBizGridInput = defineComponent({ ...@@ -12,8 +11,8 @@ export const IBizGridInput = defineComponent({
setup(props) { setup(props) {
const ns = useNamespace('grid-input'); const ns = useNamespace('grid-input');
const { isInfoMode, componentRef, onOperateChange, onChange } = const { isInfoMode, componentRef, onOperateChange, onChange } =
useGridCellEditor(props.rowDataChange, { useGridCellEditor(props.rowDataChange, props.rowSave, {
isCacheValue: true, isDelaySave: true,
}); });
return { return {
......
import { defineComponent, ref, watch } from 'vue'; import { defineComponent, ref, watch } from 'vue';
import type { PropType } from 'vue'; import {
import { TextBoxEditorController } from '@ibiz-template/controller'; getEditorEmits,
import { useNamespace } from '@ibiz-template/vue-util'; getInputNumberProps,
useNamespace,
} from '@ibiz-template/vue-util';
export const IBizInputNumber = defineComponent({ export const IBizInputNumber = defineComponent({
name: 'IBizInputNumber', name: 'IBizInputNumber',
props: { props: getInputNumberProps(),
value: Number, emits: getEditorEmits(),
controller: {
type: TextBoxEditorController,
required: true,
},
data: {
type: Object as PropType<IData>,
required: true,
},
},
emits: {
change: (_value: number | null) => true,
},
setup(props, { emit }) { setup(props, { emit }) {
const ns = useNamespace('input-number'); const ns = useNamespace('input-number');
......
...@@ -37,16 +37,16 @@ export const IBizInput = defineComponent({ ...@@ -37,16 +37,16 @@ export const IBizInput = defineComponent({
} }
}); });
const currentVal = ref<string | number>(''); const currentVal = ref<string>('');
watch( watch(
() => props.value, () => props.value,
(newVal, oldVal) => { (newVal, oldVal) => {
if (newVal !== oldVal) { if (newVal !== oldVal) {
if (newVal === null) { if (!newVal) {
currentVal.value = ''; currentVal.value = '';
} else { } else {
currentVal.value = newVal as string | number; currentVal.value = newVal;
} }
} }
}, },
......
export { IBizInput } from './ibiz-input/ibiz-input'; export { IBizInput } from './ibiz-input/ibiz-input';
export { IBizGridInput } from './ibiz-grid-input/ibiz-grid-input'; export { IBizGridInput } from './ibiz-grid-input/ibiz-grid-input';
export { IBizInputNumber } from './ibiz-input-number/ibiz-input-number'; export { IBizInputNumber } from './ibiz-input-number/ibiz-input-number';
export { IBizGridInputNumber } from './ibiz-grid-input-number/ibiz-grid-input-number';
import { UploadEditorController } from '@ibiz-template/controller';
import { getCookie } from 'qx-util'; import { getCookie } from 'qx-util';
import { onMounted, ref, Ref, watch, defineComponent, PropType } from 'vue'; import { onMounted, ref, Ref, watch, defineComponent } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util'; import {
getEditorEmits,
getUploadProps,
useNamespace,
} from '@ibiz-template/vue-util';
import { RuntimeError } from '@ibiz-template/core'; import { RuntimeError } from '@ibiz-template/core';
import '@ibiz-template/theme/style/components/editor/ibiz-file-upload/ibiz-file-upload.scss'; import '@ibiz-template/theme/style/components/editor/ibiz-file-upload/ibiz-file-upload.scss';
export const IBizFileUpload = defineComponent({ export const IBizFileUpload = defineComponent({
name: 'IBizFileUpload', name: 'IBizFileUpload',
props: { props: getUploadProps(),
value: { emits: getEditorEmits(),
type: String,
},
controller: {
type: UploadEditorController,
require: true,
},
data: {
type: Object as PropType<IData>,
},
},
emits: {
change: (_value: string | null) => true,
},
setup(props, { emit }) { setup(props, { emit }) {
const ns = useNamespace('file-upload'); const ns = useNamespace('file-upload');
const c = props.controller as UploadEditorController; const c = props.controller;
// 文件列表 // 文件列表
const files: Ref<IData[]> = ref([]); const files: Ref<IData[]> = ref([]);
...@@ -305,33 +295,35 @@ export const IBizFileUpload = defineComponent({ ...@@ -305,33 +295,35 @@ export const IBizFileUpload = defineComponent({
render(h) { render(h) {
return ( return (
<div class={this.ns.b()}> <div class={this.ns.b()}>
{h( {this.infoMode
'IUpload', ? this.value
{ : h(
ref: 'fileUpload', 'IUpload',
props: { {
action: this.uploadUrl, ref: 'fileUpload',
headers: this.headers, props: {
'default-file-list': this.files, action: this.uploadUrl,
multiple: this.c.multiple, headers: this.headers,
type: this.c.isDrag ? 'drag' : 'select', 'default-file-list': this.files,
accept: this.c.accept, multiple: this.c.multiple,
'before-upload': this.beforeUpload, type: this.c.isDrag ? 'drag' : 'select',
'on-success': this.onSuccess, accept: this.c.accept,
'on-error': this.onError, 'before-upload': this.beforeUpload,
'on-remove': this.onRemove, 'on-success': this.onSuccess,
'on-preview': this.onDownload, 'on-error': this.onError,
}, 'on-remove': this.onRemove,
}, 'on-preview': this.onDownload,
[ },
<i-button },
icon='ios-cloud-upload-outline' [
class={this.ns.b('button')} <i-button
> icon='ios-cloud-upload-outline'
上传文件 class={this.ns.b('button')}
</i-button>, >
], 上传文件
)} </i-button>,
],
)}
</div> </div>
); );
}, },
......
import { UploadEditorController } from '@ibiz-template/controller';
import { defineComponent, onMounted, ref, watch } from 'vue'; import { defineComponent, onMounted, ref, watch } from 'vue';
import type { PropType } from 'vue'; import { getGridUploadProps, useNamespace } from '@ibiz-template/vue-util';
import { useNamespace } from '@ibiz-template/vue-util';
import { getCookie } from 'qx-util'; import { getCookie } from 'qx-util';
import { RuntimeError } from '@ibiz-template/core'; import { RuntimeError } from '@ibiz-template/core';
export const IBizGridFileUpload = defineComponent({ export const IBizGridFileUpload = defineComponent({
name: 'IBizGridFileUpload', name: 'IBizGridFileUpload',
props: { props: getGridUploadProps(),
value: String, setup(props) {
controller: {
type: UploadEditorController,
required: true,
},
data: {
type: Object as PropType<IData>,
required: true,
},
},
emits: {
change: (_value: string | null) => true,
},
setup(props, { emit }) {
const ns = useNamespace('grid-file-upload'); const ns = useNamespace('grid-file-upload');
const c = props.controller; const c = props.controller;
...@@ -174,7 +159,7 @@ export const IBizGridFileUpload = defineComponent({ ...@@ -174,7 +159,7 @@ export const IBizGridFileUpload = defineComponent({
// 抛出值变更事件 // 抛出值变更事件
const value: string | null = const value: string | null =
result.length > 0 ? JSON.stringify(result) : null; result.length > 0 ? JSON.stringify(result) : null;
emit('change', value); props.rowDataChange(value);
// 清空缓存的文件数据 // 清空缓存的文件数据
uploadCache.cacheFiles = []; uploadCache.cacheFiles = [];
} }
...@@ -195,7 +180,7 @@ export const IBizGridFileUpload = defineComponent({ ...@@ -195,7 +180,7 @@ export const IBizGridFileUpload = defineComponent({
} }
}); });
const value: string | null = arr.length > 0 ? JSON.stringify(arr) : null; const value: string | null = arr.length > 0 ? JSON.stringify(arr) : null;
emit('change', value); props.rowDataChange(value);
}; };
// 计算文件mime类型 // 计算文件mime类型
...@@ -333,7 +318,7 @@ export const IBizGridFileUpload = defineComponent({ ...@@ -333,7 +318,7 @@ export const IBizGridFileUpload = defineComponent({
}} }}
> >
查看 查看
<badge count={this.files.length}></badge> <i-badge count={this.files.length}></i-badge>
</i-button> </i-button>
</i-col> </i-col>
) : null} ) : null}
......
import { UploadEditorController } from '@ibiz-template/controller';
import { defineComponent, onMounted, ref, watch } from 'vue'; import { defineComponent, onMounted, ref, watch } from 'vue';
import type { PropType } from 'vue'; import {
import { useNamespace } from '@ibiz-template/vue-util'; getEditorEmits,
getUploadProps,
useNamespace,
} from '@ibiz-template/vue-util';
import { getCookie } from 'qx-util'; import { getCookie } from 'qx-util';
import { RuntimeError } from '@ibiz-template/core'; import { RuntimeError } from '@ibiz-template/core';
import '@ibiz-template/theme/style/components/editor/ibiz-image-upload/ibiz-image-upload.scss'; import '@ibiz-template/theme/style/components/editor/ibiz-image-upload/ibiz-image-upload.scss';
export const IBizImageUpload = defineComponent({ export const IBizImageUpload = defineComponent({
name: 'IBizImageUpload', name: 'IBizImageUpload',
props: { props: getUploadProps(),
value: String, emits: getEditorEmits(),
controller: {
type: UploadEditorController,
required: true,
},
data: {
type: Object as PropType<IData>,
required: true,
},
},
emits: {
change: (_value: string | null) => true,
},
setup(props, { emit }) { setup(props, { emit }) {
const ns = useNamespace('image-upload'); const ns = useNamespace('image-upload');
...@@ -329,53 +319,57 @@ export const IBizImageUpload = defineComponent({ ...@@ -329,53 +319,57 @@ export const IBizImageUpload = defineComponent({
render(h) { render(h) {
return ( return (
<div class={this.ns.b()}> <div class={this.ns.b()}>
<div class={this.ns.e('image-upload-list')}> {this.infoMode && this.value}
{this.files.map(item => ( {!this.infoMode && (
<div key={item.id} class={this.ns.e('list-item')}> <div class={this.ns.e('image-upload-list')}>
<img src={item.url} /> {this.files.map(item => (
<div class={this.ns.e('list-item-cover')}> <div key={item.id} class={this.ns.e('list-item')}>
<i-icon <img src={item.url} />
type='ios-eye-outline' <div class={this.ns.e('list-item-cover')}>
on-click={() => this.onPreview(item)} <i-icon
></i-icon> type='ios-eye-outline'
<i-icon on-click={() => this.onPreview(item)}
type='ios-download-outline' ></i-icon>
on-click={() => this.onDownload(item)} <i-icon
></i-icon> type='ios-download-outline'
<i-icon on-click={() => this.onDownload(item)}
type='ios-trash-outline' ></i-icon>
on-click={() => this.onRemove(item, this.files)} <i-icon
></i-icon> type='ios-trash-outline'
on-click={() => this.onRemove(item, this.files)}
></i-icon>
</div>
</div> </div>
</div> ))}
))} </div>
</div> )}
{h( {!this.infoMode &&
'IUpload', h(
{ 'IUpload',
ref: 'imageUpload', {
props: { ref: 'imageUpload',
action: this.uploadUrl, props: {
headers: this.headers, action: this.uploadUrl,
'default-file-list': this.files, headers: this.headers,
multiple: this.c.multiple, 'default-file-list': this.files,
type: 'drag', multiple: this.c.multiple,
accept: this.c.accept, type: 'drag',
'show-upload-list': false, accept: this.c.accept,
'before-upload': this.beforeUpload, 'show-upload-list': false,
'on-success': this.onSuccess, 'before-upload': this.beforeUpload,
'on-error': this.onError, 'on-success': this.onSuccess,
'on-remove': this.onRemove, 'on-error': this.onError,
'on-preview': this.onDownload, 'on-remove': this.onRemove,
'on-preview': this.onDownload,
},
}, },
}, [
[ <div class={this.ns.e('btn')}>
<div class={this.ns.e('btn')}> <i-icon type='ios-add' size='30'></i-icon>
<i-icon type='ios-add' size='30'></i-icon> </div>,
</div>, ],
], )}
)}
<i-modal <i-modal
class-name={this.ns.b('modal')} class-name={this.ns.b('modal')}
......
...@@ -2,9 +2,9 @@ import { ...@@ -2,9 +2,9 @@ import {
GridEditItemController, GridEditItemController,
GridRowController, GridRowController,
} from '@ibiz-template/controller'; } from '@ibiz-template/controller';
import { defineComponent } from 'vue'; import { defineComponent, getCurrentInstance } from 'vue';
import '@ibiz-template/theme/style/components/widgets/grid/grid-edit-item.scss'; import '@ibiz-template/theme/style/components/widgets/grid/grid-edit-item.scss';
import { useNamespace } from '@ibiz-template/vue-util'; import { useForce, useNamespace } from '@ibiz-template/vue-util';
export const GridEditItem = defineComponent({ export const GridEditItem = defineComponent({
name: 'GridEditItem', name: 'GridEditItem',
...@@ -20,23 +20,24 @@ export const GridEditItem = defineComponent({ ...@@ -20,23 +20,24 @@ export const GridEditItem = defineComponent({
}, },
setup(props) { setup(props) {
const ns = useNamespace('grid-edit-item'); const ns = useNamespace('grid-edit-item');
const force = useForce(getCurrentInstance()!.proxy);
// 编辑器值变更事件 // 编辑器值变更事件
const rowDataChange = async (val: unknown, name?: string) => { const rowDataChange = async (val: unknown, name?: string) => {
const _name = name || props.controller.model.codeName;
// 值不变则无后续,也不保存
if (props.row.data[_name] === val) {
return;
}
await props.controller.setRowValue(props.row, val, name); await props.controller.setRowValue(props.row, val, name);
// 保存时机由界面控制 force();
await props.controller.grid.save(props.row.data); };
// 行数据保存
const rowSave = async () => {
return props.controller.grid.save(props.row.data);
}; };
const onStopPropagation = (e: MouseEvent) => { const onStopPropagation = (e: MouseEvent) => {
e.stopPropagation(); e.stopPropagation();
}; };
return { ns, rowDataChange, onStopPropagation }; return { ns, rowDataChange, rowSave, onStopPropagation };
}, },
render(h) { render(h) {
const codeName = this.controller.model.codeName; const codeName = this.controller.model.codeName;
...@@ -55,6 +56,7 @@ export const GridEditItem = defineComponent({ ...@@ -55,6 +56,7 @@ export const GridEditItem = defineComponent({
controller: this.controller.editor, controller: this.controller.editor,
disabled: this.row.columnState[codeName]!.disabled, disabled: this.row.columnState[codeName]!.disabled,
rowDataChange: this.rowDataChange.bind(this), rowDataChange: this.rowDataChange.bind(this),
rowSave: this.rowSave.bind(this),
}, },
})} })}
</appGridEditItem> </appGridEditItem>
......
...@@ -41,6 +41,7 @@ import { ...@@ -41,6 +41,7 @@ import {
// 绑在原型上 // 绑在原型上
LoadingBar, LoadingBar,
Notice, Notice,
Badge,
} from 'view-design'; } from 'view-design';
const components = [ const components = [
...@@ -82,6 +83,7 @@ const components = [ ...@@ -82,6 +83,7 @@ const components = [
AutoComplete, AutoComplete,
InputNumber, InputNumber,
Drawer, Drawer,
Badge,
]; ];
export const IViewRegister = { export const IViewRegister = {
......
...@@ -34,7 +34,7 @@ export class DataPickerEditorProvider implements IEditorProvider { ...@@ -34,7 +34,7 @@ export class DataPickerEditorProvider implements IEditorProvider {
default: default:
} }
this.formEditor = componentName; this.formEditor = componentName;
this.gridEditor = componentName; this.gridEditor = 'IBizGridPicker';
} }
async createController( async createController(
......
...@@ -18,7 +18,7 @@ import { ...@@ -18,7 +18,7 @@ import {
export class DatePickerEditorProvider implements IEditorProvider { export class DatePickerEditorProvider implements IEditorProvider {
formEditor: string = 'IBizDatePicker'; formEditor: string = 'IBizDatePicker';
gridEditor: string = 'IBizDatePicker'; gridEditor: string = 'IBizGridDatePicker';
async createController( async createController(
editorModel: DatePickerEditorModel, editorModel: DatePickerEditorModel,
......
...@@ -15,9 +15,9 @@ import { ...@@ -15,9 +15,9 @@ import {
* @implements {EditorProvider} * @implements {EditorProvider}
*/ */
export class DropDownListEditorProvider implements IEditorProvider { export class DropDownListEditorProvider implements IEditorProvider {
formEditor: string = 'IBizDropDownList'; formEditor: string = 'IBizDropdown';
gridEditor: string = 'IBizDropDownList'; gridEditor: string = 'IBizGridDropdown';
async createController( async createController(
editorModel: DropDownListModel, editorModel: DropDownListModel,
......
...@@ -17,7 +17,7 @@ import { ...@@ -17,7 +17,7 @@ import {
export class RadioButtonListEditorProvider implements IEditorProvider { export class RadioButtonListEditorProvider implements IEditorProvider {
formEditor: string = 'IBizRadio'; formEditor: string = 'IBizRadio';
gridEditor: string = 'IBizRadio'; gridEditor: string = 'IBizGridRadio';
async createController( async createController(
editorModel: RadioButtonListModel, editorModel: RadioButtonListModel,
......
...@@ -17,7 +17,7 @@ import { ...@@ -17,7 +17,7 @@ import {
export class SpanEditorProvider implements IEditorProvider { export class SpanEditorProvider implements IEditorProvider {
formEditor: string = 'IBizSpan'; formEditor: string = 'IBizSpan';
gridEditor: string = 'IBizSpan'; gridEditor: string = 'IBizGridSpan';
async createController( async createController(
editorModel: SpanEditorModel, editorModel: SpanEditorModel,
......
...@@ -485,60 +485,60 @@ ...@@ -485,60 +485,60 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
"@ibiz-template/command@^0.0.1-alpha.37": "@ibiz-template/command@^0.0.1-alpha.41":
version "0.0.1-alpha.37" version "0.0.1-alpha.41"
resolved "https://registry.npmmirror.com/@ibiz-template/command/-/command-0.0.1-alpha.37.tgz#2d7bee06d96a596cde290d1f2f9c1709624f0faf" resolved "http://npm.zhr.icu/@ibiz-template%2fcommand/-/command-0.0.1-alpha.41.tgz#1875c65123ac046c131df8573a004e0a4bab193b"
integrity sha512-7KPS16osgsOHgPekTC8W2SKMtVIF4lsY6XP5IPttkQiZU6nhBDLs4MoRyRvhHPA30aKHzgxmYT/Whl186apoqg== integrity sha512-zT43FCKM343d4rpfRx2YhcoymriTdAn3Ujb598U39hxLltJZpEp4LkqR4HqCVB0MazpfWA4QRviifPbQPA+3jw==
dependencies: dependencies:
qx-util "^0.4.4" qx-util "^0.4.4"
"@ibiz-template/controller@^0.0.1-alpha.40": "@ibiz-template/controller@^0.0.1-alpha.41":
version "0.0.1-alpha.40" version "0.0.1-alpha.41"
resolved "https://registry.yarnpkg.com/@ibiz-template/controller/-/controller-0.0.1-alpha.40.tgz#f59f42c28b7633ccaccb37fd63ad1b64a0c5fd0f" resolved "http://npm.zhr.icu/@ibiz-template%2fcontroller/-/controller-0.0.1-alpha.41.tgz#4a1ca8f4dfdc4341710f2bbc8d23446617428dcc"
integrity sha512-s9xXqRStODQBPvam7UVKx/U7oqj1yM/qHhZH+K0RMMLVEn/IoCp3ir1asjbgPSqBWxwJ4JM5ZIfvWm4dyyJxkg== integrity sha512-NOeX2Kf4qgx6LUR9KUrt+/Dm8RJPXRk81UBL0mDQw5eQFy11GFPQhVoY5Ls/xQk8Wrxn6IOYOiu/JrLNxp3heg==
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-alpha.40": "@ibiz-template/core@^0.0.1-alpha.41":
version "0.0.1-alpha.40" version "0.0.1-alpha.41"
resolved "https://registry.yarnpkg.com/@ibiz-template/core/-/core-0.0.1-alpha.40.tgz#83773519c2befa453e5944516941f2553de67d7a" resolved "http://npm.zhr.icu/@ibiz-template%2fcore/-/core-0.0.1-alpha.41.tgz#014411a468d6479f565e52af3e38d4385d8e1518"
integrity sha512-8O411O3StgmbohRkOhh1GkdSln3xH4CEIqBqc/sVtPw/1YuTP/LaLr8g/qfCiuq8KriVOk1IDkKMZrPrVqG7Qg== integrity sha512-zrrt/cCGFj4eOYSjmhqc7D9v8rPQ71CbE6UJjvOuDrTu4BSjktqNC5L1tX/fl+mt8V0x1FkaZH1vrSSktwstKw==
dependencies: dependencies:
axios "^1.1.3" axios "^1.1.3"
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-alpha.39": "@ibiz-template/model@^0.0.1-alpha.41":
version "0.0.1-alpha.39" version "0.0.1-alpha.41"
resolved "https://registry.yarnpkg.com/@ibiz-template/model/-/model-0.0.1-alpha.39.tgz#75dae9cb4486758eb7ac3f0b085f109313cbe3de" resolved "http://npm.zhr.icu/@ibiz-template%2fmodel/-/model-0.0.1-alpha.41.tgz#f4b5c61926768bb3c5138628fd39d921902457d7"
integrity sha512-HPpCR8W6enEjWxGdYdDKJJdirO4Qx5dIpYNfZVrmhHX7dd+Ov9OnpunnIXeTLk8RFzFfQEf9ZuOTziU7QX5dfg== integrity sha512-aakOQlZNTS7lIl0J3vICitswVN3xqACDSNj1HBLoM/mYshyjtpcwyY84/6KurAoGWI9y0KVGpBJjLufGsVevhA==
dependencies: dependencies:
"@ibiz/dynamic-model-api" "^2.1.5" "@ibiz/dynamic-model-api" "^2.1.5"
pluralize "^8.0.0" pluralize "^8.0.0"
"@ibiz-template/runtime@^0.0.1-alpha.40": "@ibiz-template/runtime@^0.0.1-alpha.41":
version "0.0.1-alpha.40" version "0.0.1-alpha.41"
resolved "https://registry.yarnpkg.com/@ibiz-template/runtime/-/runtime-0.0.1-alpha.40.tgz#3b60fb3d777d744037f2bc0c8492088e69d497e9" resolved "http://npm.zhr.icu/@ibiz-template%2fruntime/-/runtime-0.0.1-alpha.41.tgz#dc50d155bcb97ab8e2882ebc0cc201b5b59a5497"
integrity sha512-QnGZ9A32caNbPUyhHP3+rNJBM6HdxKxJh4FgNvtlpuiNga9Cw8vG0OHmM9LkMZFs4u6Gu79fationwJIBducqA== integrity sha512-b9ALOMwVJxPsadqiD+Z/+c/v7kBuVRHqKuYwLYKLe64jEnFwi+KA3PARfQhSw9ntKGvg+9s9uiehC058ti4c6Q==
dependencies: dependencies:
"@ibiz-template/command" "^0.0.1-alpha.37" "@ibiz-template/command" "^0.0.1-alpha.41"
"@ibiz-template/service@^0.0.1-alpha.40": "@ibiz-template/service@^0.0.1-alpha.41":
version "0.0.1-alpha.40" version "0.0.1-alpha.41"
resolved "https://registry.yarnpkg.com/@ibiz-template/service/-/service-0.0.1-alpha.40.tgz#94bb0df2619e195e340a33a5db1fe058918e3bbb" resolved "http://npm.zhr.icu/@ibiz-template%2fservice/-/service-0.0.1-alpha.41.tgz#f97221fc3e3f4c3b07cc53e69ed29a2a8f35c5b9"
integrity sha512-DAcha7xUwxmpdC0fuL4InGlDAy2L9sABmoP3n5er8SXMzfGRKxlCt6cOtwwC5+P/4igCb/Uqv80Is8XWuqNDbg== integrity sha512-g/P9mqu/uem+V70JFpIWag8IysjmiwcBNCO5dsRjaxRpUg7BIZob6elHfucyPth0z3iXXooO9cng/eqLsZUvHA==
"@ibiz-template/theme@^0.0.1-alpha.40": "@ibiz-template/theme@^0.0.1-alpha.41":
version "0.0.1-alpha.40" version "0.0.1-alpha.41"
resolved "https://registry.yarnpkg.com/@ibiz-template/theme/-/theme-0.0.1-alpha.40.tgz#fc0c891f651d4ce25d780c2152654b31521570e9" resolved "http://npm.zhr.icu/@ibiz-template%2ftheme/-/theme-0.0.1-alpha.41.tgz#177c16d649413f536491d94a7944d9485a97897a"
integrity sha512-e3R5XAhG23QgwZheW92vzZGf+CklnvE18UG+NJ2XsIORWVJfwxA3ix89/oFmA0sXUVX7+iI4SuhubhvbWu787A== integrity sha512-SP/u1HlPIGK0t/TG2WrHdf63EPd78eW3rKq/nlWZmPNBlpRiYZgE6c3iR0ZR6iUd++tkMryuD5ptpSjUodfCww==
"@ibiz-template/vue-util@^0.0.1-alpha.40": "@ibiz-template/vue-util@^0.0.1-alpha.41":
version "0.0.1-alpha.40" version "0.0.1-alpha.41"
resolved "https://registry.yarnpkg.com/@ibiz-template/vue-util/-/vue-util-0.0.1-alpha.40.tgz#0080298397aff172a0f0ae5c4dcc853912f91236" resolved "http://npm.zhr.icu/@ibiz-template%2fvue-util/-/vue-util-0.0.1-alpha.41.tgz#d33ba98009f28d42f429669f4d3989f995517e37"
integrity sha512-dSLVzVA0b3bHe2Y4eOvcCCauCawYE0L2PTimgeYieVK36KGSk5wbA75JLaDJJyXhNYU3tbtK3TV9fS0EvU9upw== integrity sha512-oyfyldxjELlYx9u/PHxaPJNrCgvjeQmWRdy547wrCeEYPcJrAGQB80LQJ8SdzBq68CPuEfX0ZuX99m82RNT6SQ==
"@ibiz/dynamic-model-api@^2.1.5": "@ibiz/dynamic-model-api@^2.1.5":
version "2.1.5" version "2.1.5"
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册