Skip to content

Commit 7fd6dc5

Browse files
fix(model): Updating the Model-Driven UI and Performing Interface Joint Commissioning (opentiny#1764)
1 parent 19cec51 commit 7fd6dc5

15 files changed

Lines changed: 404 additions & 221 deletions

File tree

packages/builtinComponent/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
"preview": "vite preview"
2323
},
2424
"dependencies": {
25-
"@opentiny/tiny-engine-meta-register": "workspace:*",
26-
"vite-plugin-css-injected-by-js": "^3.3.1"
25+
"vite-plugin-css-injected-by-js": "^3.3.1",
26+
"axios": "~0.28.0"
2727
},
2828
"devDependencies": {
2929
"@vitejs/plugin-vue": "^5.1.2",

packages/builtinComponent/src/components/BaseForm.vue

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ import {
6262
Row as TinyRow,
6363
Col as TinyCol
6464
} from '@opentiny/vue'
65-
import { getMetaApi, META_SERVICE } from '@opentiny/tiny-engine-meta-register'
65+
import axios from 'axios'
6666
6767
const props = defineProps({
6868
style: {
@@ -115,11 +115,9 @@ const insertApi = (data = modelData.value) => {
115115
if (!apiInfo) {
116116
return undefined
117117
}
118-
return getMetaApi(META_SERVICE.Http)
119-
.post(apiInfo.url, { nameEn: formModel.value.nameEn, params: data })
120-
.catch((err) => {
121-
throw new Error(err)
122-
})
118+
return axios.post(apiInfo.url, { nameEn: formModel.value.nameEn, params: data }).catch((err) => {
119+
throw new Error(err)
120+
})
123121
}
124122
125123
const updateApi = (data = modelData.value) => {
@@ -129,7 +127,7 @@ const updateApi = (data = modelData.value) => {
129127
}
130128
const id = data.id
131129
delete data.id
132-
return getMetaApi(META_SERVICE.Http)
130+
return axios
133131
.post(apiInfo.url, {
134132
nameEn: formModel.value.nameEn,
135133
data: data,
@@ -147,7 +145,7 @@ const queryApi = ({ currentPage, pageSize, data } = {}) => {
147145
}
148146
// 处理查询参数
149147
const params = Object.fromEntries(formModel.value.parameters.map((item) => [item.prop, null]))
150-
return getMetaApi(META_SERVICE.Http)
148+
return axios
151149
.post(apiInfo.url, {
152150
currentPage: currentPage || 1,
153151
pageSize: pageSize || 10,
@@ -168,11 +166,9 @@ const deleteApi = () => {
168166
if (!apiInfo) {
169167
return undefined
170168
}
171-
return getMetaApi(META_SERVICE.Http)
172-
.post(apiInfo.url, { id: modelData.value?.id, nameEn: formModel.value.nameEn })
173-
.catch((err) => {
174-
throw new Error(err)
175-
})
169+
return axios.post(apiInfo.url, { id: modelData.value?.id, nameEn: formModel.value.nameEn }).catch((err) => {
170+
throw new Error(err)
171+
})
176172
}
177173
178174
const initFormData = () => {

packages/builtinComponent/src/components/BasePage.vue

Lines changed: 54 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
</tiny-col>
5656
</tiny-row>
5757
</tiny-form>
58-
<div>
58+
<div class="operator-group">
5959
<tiny-button type="primary" :size="pageState?.size" @click="addRow"> 新增 </tiny-button>
6060
<tiny-button :size="pageState?.size" @click="search"> 搜索 </tiny-button>
6161
<tiny-button :size="pageState?.size" @click="resetSearchForm"> 重置 </tiny-button>
@@ -179,7 +179,7 @@ import {
179179
Notify
180180
} from '@opentiny/vue'
181181
import * as tinyVueIcon from '@opentiny/vue-icon'
182-
import { getMetaApi, META_SERVICE } from '@opentiny/tiny-engine-meta-register'
182+
import axios from 'axios'
183183
184184
const props = defineProps({
185185
style: {
@@ -302,9 +302,17 @@ const insertApi = (data = addFormData.value) => {
302302
if (!apiInfo) {
303303
return undefined
304304
}
305-
return getMetaApi(META_SERVICE.Http)
305+
return axios
306306
.post(apiInfo.url, { nameEn: pageModel.value.nameEn, params: data })
307307
.then((res) => {
308+
if (res.data.error) {
309+
Notify({
310+
type: 'error',
311+
message: res.data.error.message,
312+
position: 'top-right'
313+
})
314+
return
315+
}
308316
Notify({
309317
type: 'success',
310318
message: '新增成功',
@@ -322,15 +330,27 @@ const updateApi = (data = addFormData.value) => {
322330
if (!apiInfo) {
323331
return undefined
324332
}
325-
const id = data.id
326-
delete data.id
327-
return getMetaApi(META_SERVICE.Http)
333+
const requestData = {}
334+
pageModel.value.parameters.forEach((item) => {
335+
if (data[item.prop]) {
336+
requestData[item.prop] = data[item.prop]
337+
}
338+
})
339+
return axios
328340
.post(apiInfo.url, {
329341
nameEn: pageModel.value.nameEn,
330-
data: data,
331-
params: { id }
342+
data: requestData,
343+
params: { id: data.id }
332344
})
333345
.then((res) => {
346+
if (res.data.error) {
347+
Notify({
348+
type: 'error',
349+
message: res.data.error.message,
350+
position: 'top-right'
351+
})
352+
return
353+
}
334354
Notify({
335355
type: 'success',
336356
message: '修改成功',
@@ -350,7 +370,7 @@ const queryApi = (data = formData.value) => {
350370
}
351371
// 处理查询参数
352372
const params = Object.fromEntries(pageModel.value.parameters.map((item) => [item.prop, null]))
353-
return getMetaApi(META_SERVICE.Http)
373+
return axios
354374
.post(apiInfo.url, {
355375
currentPage: pagerState.currentPage || 1,
356376
pageSize: pagerState.pageSize || 10,
@@ -362,8 +382,16 @@ const queryApi = (data = formData.value) => {
362382
}
363383
})
364384
.then((res) => {
365-
tableData.value = res.list
366-
pagerState.total = res.total
385+
if (res.data.error) {
386+
Notify({
387+
type: 'error',
388+
message: res.data.error.message,
389+
position: 'top-right'
390+
})
391+
return
392+
}
393+
tableData.value = res.data.data.list
394+
pagerState.total = res.data.data.total
367395
emit('update:tableData', tableData.value)
368396
return res
369397
})
@@ -377,14 +405,23 @@ const deleteApi = (evidence) => {
377405
if (!apiInfo) {
378406
return undefined
379407
}
380-
return getMetaApi(META_SERVICE.Http)
408+
return axios
381409
.post(apiInfo.url, { ...evidence, nameEn: pageModel.value.nameEn })
382410
.then((res) => {
411+
if (res.data.error) {
412+
Notify({
413+
type: 'error',
414+
message: res.data.error.message,
415+
position: 'top-right'
416+
})
417+
return
418+
}
383419
Notify({
384420
type: 'success',
385421
message: '已删除',
386422
position: 'top-right'
387423
})
424+
queryApi()
388425
return res
389426
})
390427
.catch((err) => {
@@ -440,6 +477,7 @@ const initEditFormData = () => {
440477
441478
const resetSearchForm = () => {
442479
initSearchFormData()
480+
queryApi()
443481
}
444482
445483
const addRow = () => {
@@ -534,4 +572,8 @@ defineExpose({
534572
text-align: center;
535573
line-height: 40px;
536574
}
575+
576+
.operator-group {
577+
margin-bottom: 10px;
578+
}
537579
</style>

packages/builtinComponent/src/components/BaseTable.vue

Lines changed: 74 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,11 @@ import {
6060
DatePicker as TinyDatePicker,
6161
Numeric as TinyNumeric,
6262
Pager as TinyPager,
63-
Popover as TinyPopover
63+
Popover as TinyPopover,
64+
Notify
6465
} from '@opentiny/vue'
6566
import * as tinyVueIcon from '@opentiny/vue-icon'
66-
import { getMetaApi, META_SERVICE } from '@opentiny/tiny-engine-meta-register'
67+
import axios from 'axios'
6768
6869
const props = defineProps({
6970
style: {
@@ -169,52 +170,79 @@ const insertApi = (data = {}) => {
169170
if (!apiInfo) {
170171
return undefined
171172
}
172-
return getMetaApi(META_SERVICE.Http)
173-
.post(apiInfo.url, { nameEn: tableModel.value.nameEn, params: data })
174-
.catch((err) => {
175-
throw new Error(err)
176-
})
173+
return axios.post(apiInfo.url, { nameEn: tableModel.value.nameEn, params: data }).catch((err) => {
174+
throw new Error(err)
175+
})
177176
}
178177
179-
const updateApi = (data) => {
180-
const apiInfo = props.modelApis.find((api) => api.nameEn === 'updateApi')
178+
const queryApi = (data = {}) => {
179+
const apiInfo = props.modelApis.find((api) => api.nameEn === 'queryApi')
181180
if (!apiInfo) {
182181
return undefined
183182
}
184-
const id = data.id
185-
delete data.id
186-
return getMetaApi(META_SERVICE.Http)
183+
// 处理查询参数
184+
const params = Object.fromEntries(tableModel.value.parameters.map((item) => [item.prop, null]))
185+
return axios
187186
.post(apiInfo.url, {
187+
currentPage: pagerState.currentPage || 1,
188+
pageSize: pagerState.pageSize || 10,
188189
nameEn: tableModel.value.nameEn,
189-
data: data,
190-
params: { id }
190+
nameCn: tableModel.value.nameCn,
191+
params: {
192+
...params,
193+
...data
194+
}
195+
})
196+
.then((res) => {
197+
if (res.data.error) {
198+
Notify({
199+
type: 'error',
200+
message: res.data.error.message,
201+
position: 'top-right'
202+
})
203+
return
204+
}
205+
tableData.value = res.data.data.list
206+
pagerState.total = res.data.data.total
207+
return res
191208
})
192209
.catch((err) => {
193210
throw new Error(err)
194211
})
195212
}
196213
197-
const queryApi = (data) => {
198-
const apiInfo = props.modelApis.find((api) => api.nameEn === 'queryApi')
214+
const updateApi = (data) => {
215+
const apiInfo = props.modelApis.find((api) => api.nameEn === 'updateApi')
199216
if (!apiInfo) {
200217
return undefined
201218
}
202-
// 处理查询参数
203-
const params = Object.fromEntries(tableModel.value.parameters.map((item) => [item.prop, null]))
204-
return getMetaApi(META_SERVICE.Http)
219+
const requestData = {}
220+
tableModel.value.parameters.forEach((item) => {
221+
if (data[item.prop]) {
222+
requestData[item.prop] = data[item.prop]
223+
}
224+
})
225+
return axios
205226
.post(apiInfo.url, {
206-
currentPage: pagerState.currentPage || 1,
207-
pageSize: pagerState.pageSize || 10,
208227
nameEn: tableModel.value.nameEn,
209-
nameCn: tableModel.value.nameCn,
210-
params: {
211-
...params,
212-
...data
213-
}
228+
data: requestData,
229+
params: { id: data.id }
214230
})
215231
.then((res) => {
216-
tableData.value = res.list
217-
pagerState.total = res.total
232+
if (res.data.error) {
233+
Notify({
234+
type: 'error',
235+
message: res.data.error.message,
236+
position: 'top-right'
237+
})
238+
return
239+
}
240+
Notify({
241+
type: 'success',
242+
message: '修改成功',
243+
position: 'top-right'
244+
})
245+
queryApi()
218246
return res
219247
})
220248
.catch((err) => {
@@ -227,8 +255,25 @@ const deleteApi = (evidence) => {
227255
if (!apiInfo) {
228256
return undefined
229257
}
230-
return getMetaApi(META_SERVICE.Http)
258+
return axios
231259
.post(apiInfo.url, { ...evidence, nameEn: tableModel.value.nameEn })
260+
.then((res) => {
261+
if (res.data.error) {
262+
Notify({
263+
type: 'error',
264+
message: res.data.error.message,
265+
position: 'top-right'
266+
})
267+
return
268+
}
269+
Notify({
270+
type: 'success',
271+
message: '已删除',
272+
position: 'top-right'
273+
})
274+
queryApi()
275+
return res
276+
})
232277
.catch((err) => {
233278
throw new Error(err)
234279
})

packages/builtinComponent/src/meta/BasePage.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1659,7 +1659,8 @@
16591659
"itemVisible": true
16601660
}
16611661
]
1662-
}
1662+
},
1663+
"rowOperationEnabled": true
16631664
}
16641665
}
16651666
}

packages/builtinComponent/src/meta/BaseTable.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1785,7 +1785,8 @@
17851785
"rowOperations": {
17861786
"type": "object",
17871787
"value": []
1788-
}
1788+
},
1789+
"rowOperationEnabled": true
17891790
}
17901791
}
17911792
}

packages/common/js/import-map.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"@vueuse/shared": "${VITE_CDN_DOMAIN}/@vueuse/shared${versionDelimiter}9.6.0${fileDelimiter}/index.mjs",
1010
"axios": "${VITE_CDN_DOMAIN}/axios${versionDelimiter}1.0.0${fileDelimiter}/dist/esm/axios.js",
1111
"@opentiny/tiny-engine-i18n-host": "${VITE_CDN_DOMAIN}/@opentiny/tiny-engine-i18n-host${versionDelimiter}^2${fileDelimiter}/dist/lowcode-design-i18n-host.es.js",
12-
"@opentiny/tiny-engine-builtin-component": "${VITE_CDN_DOMAIN}/@opentiny/tiny-engine-builtin-component${versionDelimiter}^2.9.0${fileDelimiter}/dist/index.mjs",
12+
"@opentiny/tiny-engine-builtin-component": "${VITE_CDN_DOMAIN}/@opentiny/tiny-engine-builtin-component${versionDelimiter}^2.10.0-alpha.2${fileDelimiter}/dist/index.mjs",
1313
"vue-demi": "${VITE_CDN_DOMAIN}/vue-demi${versionDelimiter}0.13.11${fileDelimiter}/lib/index.mjs",
1414
"pinia": "${VITE_CDN_DOMAIN}/pinia${versionDelimiter}2.0.22${fileDelimiter}/dist/pinia.esm-browser.js",
1515
"@opentiny/vue": "${VITE_CDN_DOMAIN}/@opentiny/vue-runtime${versionDelimiter}~3.20${fileDelimiter}/dist3/tiny-vue-pc.mjs",

0 commit comments

Comments
 (0)