agilebuilder-ui 1.1.10 → 1.1.12-tmp1
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/lib/super-ui.css +1 -1
- package/lib/super-ui.js +18680 -18550
- package/lib/super-ui.umd.cjs +78 -72
- package/package.json +1 -1
- package/packages/department-tree/src/department-tree.vue +2 -0
- package/packages/department-tree-mobile/src/department-tree-app.vue +1 -1
- package/packages/department-user-tree/src/department-user-multiple-tree.vue +1 -0
- package/packages/department-user-tree-inline/src/department-user-multiple-tree-inline.vue +704 -750
- package/packages/department-user-tree-mobile/src/department-user-tree-app.vue +1 -1
- package/packages/department-user-tree-mobile/src/department-user-tree-inline-app.vue +1 -1
- package/packages/fs-upload-list/src/fs-upload-list.vue +1 -1
- package/packages/fs-upload-new/src/file-upload-mobile/file-upload-app.vue +16 -2
- package/packages/fs-upload-new/src/file-upload-mobile/file-upload-browser.vue +9 -9
- package/packages/fs-upload-new/src/file-upload-mobile/file-upload-component.vue +3 -3
- package/packages/fs-upload-new/src/file-upload-mobile/file-upload-input.vue +1 -0
- package/packages/fs-upload-new/src/fs-preview-new.vue +3 -2
- package/packages/organization-input/src/organization-input.vue +13 -8
- package/packages/row-form/index.vue +68 -4
- package/packages/row-form/operation.vue +151 -0
- package/packages/super-grid/src/dynamic-input.vue +11 -0
- package/packages/super-grid/src/normal-column-content.vue +1 -7
- package/packages/super-grid/src/row-operation.vue +1 -0
- package/packages/super-grid/src/super-grid-service.js +1 -0
- package/packages/super-grid/src/super-grid.vue +19 -3
- package/packages/workgroup-tree/src/workgroup-tree.vue +2 -0
- package/packages/workgroup-tree-mobile/src/workgroup-tree-app.vue +1 -1
- package/packages/workgroup-user-tree/src/workgroup-user-tree.vue +2 -0
- package/packages/workgroup-user-tree-mobile/src/workgroup-user-tree-app.vue +1 -1
- package/packages/workgroup-user-tree-mobile/src/workgroup-user-tree-inline-app.vue +1 -1
- package/src/styles/index.scss +32 -0
- package/src/styles/theme/tiffany-blue-mobile/drawer.scss +6 -2
- package/src/utils/calculator/calculator-factory.js +18 -30
- package/src/utils/common-util.js +23 -1
- package/src/views/dsc-component/Sidebar/SidebarItem.vue +32 -61
- package/vite.config.js +0 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<el-drawer v-model="isShowForm" direction="btt" size="100%" class="organization-tree" @close="closeTree()">
|
|
2
|
+
<el-drawer v-model="isShowForm" append-to-body :close-on-click-modal="false" :close-on-press-escape="false" direction="btt" size="100%" class="organization-tree" @close="closeTree()">
|
|
3
3
|
<template #header>
|
|
4
4
|
<div style="text-align: center;">
|
|
5
5
|
{{$t('imatrixUIMessage.pleaseSelect')}}
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
<div v-if="data.nodeType && data.nodeType === 'USER'" class="item-label">{{ data.showName }}
|
|
40
40
|
<span style="color:#999">({{ data.loginName }}{{ getUserMainDeptName(data) ? '/'+getUserMainDeptName(data): ''}})</span>
|
|
41
41
|
</div>
|
|
42
|
-
<div v-else class="item-label">{{ data.showName }}<span v-if="data.parentNodeId !== '-1' && getDeptNamePath(data)" style="color:#999">({{ getDeptNamePath(data) }})</span></div>
|
|
42
|
+
<div v-else class="item-label" @click="loadChildren(data,false)">{{ data.showName }}<span v-if="data.parentNodeId !== '-1' && getDeptNamePath(data)" style="color:#999">({{ getDeptNamePath(data) }})</span></div>
|
|
43
43
|
<div v-if="!data.nodeType || data.nodeType !== 'USER'" class="item-side" @click="loadChildren(data,false)">
|
|
44
44
|
<el-icon><ArrowRight /></el-icon>
|
|
45
45
|
</div>
|
|
@@ -138,7 +138,7 @@ import { getSystemFrontendUrl, isPlateSys, isMobileBrowser } from '../../../src/
|
|
|
138
138
|
import FsPreview from '../../fs-preview/src/fs-preview.vue'
|
|
139
139
|
import { packageFile } from '../../super-grid/src/utils'
|
|
140
140
|
import FileUploadInputMobile from '../../fs-upload-new/src/file-upload-mobile/file-upload-input.vue'
|
|
141
|
-
|
|
141
|
+
import { Base64 } from 'js-base64'
|
|
142
142
|
export default {
|
|
143
143
|
name: 'FsUploadList',
|
|
144
144
|
props: {
|
|
@@ -156,7 +156,7 @@ const emits = defineEmits(['remove', 'uploadend'])
|
|
|
156
156
|
|
|
157
157
|
// 表示点击了选择文件按钮
|
|
158
158
|
function pickBrowserFiles() {
|
|
159
|
-
|
|
159
|
+
console.log('---点击了选择文件按钮---')
|
|
160
160
|
const message = {
|
|
161
161
|
type: 'pickFiles',
|
|
162
162
|
multiple: props.multiple,
|
|
@@ -166,7 +166,21 @@ function pickBrowserFiles() {
|
|
|
166
166
|
token: getToken(),
|
|
167
167
|
listCode: props.listCode
|
|
168
168
|
}
|
|
169
|
-
window.parent.
|
|
169
|
+
if(window.parent && window.parent.parent && window.parent.parent.parent ) {
|
|
170
|
+
console.log('---点击了选择文件按钮111---')
|
|
171
|
+
message.myCustom = 'window.parent.parent.parent'
|
|
172
|
+
// 加上uniapp中的iframe,一共是4层iframe嵌套时.最多支持4层iframe嵌套。
|
|
173
|
+
window.parent.parent.parent.postMessage(JSON.stringify(message), '*')
|
|
174
|
+
} else if(window.parent && window.parent.parent) {
|
|
175
|
+
console.log('---点击了选择文件按钮222---')
|
|
176
|
+
message.myCustom = 'window.parent.parent'
|
|
177
|
+
// 加上uniapp中的iframe,一共是3层iframe嵌套时
|
|
178
|
+
window.parent.parent.postMessage(JSON.stringify(message), '*')
|
|
179
|
+
} else {
|
|
180
|
+
console.log('---点击了选择文件按钮444---')
|
|
181
|
+
message.myCustom = 'window.parent'
|
|
182
|
+
window.parent.postMessage(JSON.stringify(message), '*')
|
|
183
|
+
}
|
|
170
184
|
}
|
|
171
185
|
|
|
172
186
|
function pickFileDone(data) {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
@chooseFile="pickBrowserFiles"
|
|
16
16
|
@remove="removeFile"
|
|
17
17
|
/>
|
|
18
|
-
<template v-if="openCameraOrChoosePhoto && openCameraOrChoosePhoto === 'openCamera'">
|
|
18
|
+
<!-- <template v-if="openCameraOrChoosePhoto && openCameraOrChoosePhoto === 'openCamera'"> -->
|
|
19
19
|
<!-- 由于直接打开capture相机属性的设置为空或者不是user/environment其中的任意一项时会打开的本地捕获音频 麦克风-->
|
|
20
20
|
<!-- 所有使用 template 可查看 https://w3c.github.io/html-media-capture/#introduction -->
|
|
21
21
|
<input
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
:accept="myAccept"
|
|
40
40
|
@change="uploadFiles"
|
|
41
41
|
/>
|
|
42
|
-
</template>
|
|
42
|
+
<!-- </template>
|
|
43
43
|
<template v-else>
|
|
44
44
|
<input
|
|
45
45
|
v-if="multiple && !disabled"
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
:accept="myAccept"
|
|
61
61
|
@change="uploadFiles"
|
|
62
62
|
/>
|
|
63
|
-
</template>
|
|
63
|
+
</template> -->
|
|
64
64
|
<el-drawer v-model="fileTypeFlag" direction="btt" @close="fileTypeFlag = false">
|
|
65
65
|
<div><el-button
|
|
66
66
|
link
|
|
@@ -261,17 +261,17 @@ function removeFile(param) {
|
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
263
|
function pickBrowserFiles() {
|
|
264
|
-
if (props.openCameraOrChoosePhoto && props.openCameraOrChoosePhoto === 'openCamera') {
|
|
264
|
+
// if (props.openCameraOrChoosePhoto && props.openCameraOrChoosePhoto === 'openCamera') {
|
|
265
265
|
// 只打开相机
|
|
266
266
|
myAccept.value = 'image/*'
|
|
267
267
|
setTimeout(() => {
|
|
268
268
|
fileRef.value.click()
|
|
269
269
|
})
|
|
270
|
-
} else {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
}
|
|
270
|
+
// } else {
|
|
271
|
+
// // 相机和文件都可以选
|
|
272
|
+
// myAccept.value = '*'
|
|
273
|
+
// fileTypeFlag.value = true
|
|
274
|
+
// }
|
|
275
275
|
}
|
|
276
276
|
|
|
277
277
|
function confirmFileType(fileType: string) {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<div class="file-name-container" >
|
|
14
14
|
{{file.name}}
|
|
15
15
|
</div></div>
|
|
16
|
-
<img v-else class="el-upload-list__item-thumbnail" :src="getPreviewSrc(file.name, file.serverPath)" alt="" />
|
|
16
|
+
<img v-else class="el-upload-list__item-thumbnail" :src="getPreviewSrc(file.showName?file.showName: file.name, file.serverPath)" alt="" />
|
|
17
17
|
<fs-preview-new :disabled="disabled" :file-list="fileListResult" :file="file" :system-code="systemCode" :before-remove="beforeRemove" :on-remove="onRemove" :before-download="beforeDownload" @remove="removeFile"/>
|
|
18
18
|
|
|
19
19
|
</div>
|
|
@@ -81,7 +81,7 @@ let baseURL = props.baseURL
|
|
|
81
81
|
const baseAPI = window.$vueApp.config.globalProperties.baseAPI
|
|
82
82
|
|
|
83
83
|
const fileListResult = ref(props.fileList)
|
|
84
|
-
console.log('file-upload-component---fileListResult=', fileListResult.value)
|
|
84
|
+
console.log('file-upload-component---fileListResult=', fileListResult.value?JSON.stringify(fileListResult.value):fileListResult.value)
|
|
85
85
|
function changeFileList(fileList: any) {
|
|
86
86
|
fileListResult.value = fileList
|
|
87
87
|
}
|
|
@@ -90,7 +90,7 @@ const chooseFile = ()=>{
|
|
|
90
90
|
emits('chooseFile')
|
|
91
91
|
}
|
|
92
92
|
const isImg = (file: Object) =>{
|
|
93
|
-
return isImage(file.name)
|
|
93
|
+
return isImage(file.showName?file.showName:file.name)
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
function getPreviewSrc(showName: string, serverPath: string) {
|
|
@@ -179,6 +179,7 @@ const props = defineProps({
|
|
|
179
179
|
const emits = defineEmits(['remove', 'uploadend'])
|
|
180
180
|
const annexUploadFlag = ref(false)
|
|
181
181
|
const fileNames = ref(null)
|
|
182
|
+
fileNames.value = props.fileList && props.fileList.length > 0 ? props.fileList.map((item: any) => item.showName).join(','): null
|
|
182
183
|
|
|
183
184
|
const openAnnexUpload = ()=>{
|
|
184
185
|
console.log('点击选择文件按钮---')
|
|
@@ -52,6 +52,7 @@ import { ref, defineProps } from 'vue'
|
|
|
52
52
|
import { getSystemFrontendUrl, isPlateSys, isMobileBrowser, getReplaceUrlDomain } from '../../../src/utils/common-util'
|
|
53
53
|
import { getToken } from '../../../src/utils/auth'
|
|
54
54
|
import { isImage } from '../../../src/utils/util'
|
|
55
|
+
import { Base64 } from 'js-base64'
|
|
55
56
|
const props = defineProps({
|
|
56
57
|
systemCode: {
|
|
57
58
|
type: String,
|
|
@@ -223,8 +224,8 @@ const previweDoc = (showName: string, serverPath: string) => {
|
|
|
223
224
|
const myPreviewUrl = originUrl + '&fullfilename=' + showName
|
|
224
225
|
console.log('myPreviewUrl====', myPreviewUrl)
|
|
225
226
|
// http://127.0.0.1:8012/onlinePreview
|
|
226
|
-
previewUrl =
|
|
227
|
-
|
|
227
|
+
previewUrl =
|
|
228
|
+
window.$vueApp.config.globalProperties.kkFileViewUrl + '?url=' + encodeURIComponent(Base64.encode(myPreviewUrl))
|
|
228
229
|
console.log('previewUrl====', previewUrl)
|
|
229
230
|
} else {
|
|
230
231
|
previewUrl = baseUrl + '/common/fs-upload/preview?jwt=' + token
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<span style="width: 100%">
|
|
2
|
+
<span style="width: 100%" class="organization-input">
|
|
3
3
|
<template v-if="disabled">
|
|
4
4
|
<el-input
|
|
5
5
|
:disabled="true"
|
|
@@ -221,7 +221,7 @@ export default {
|
|
|
221
221
|
getPropName(prop, isJoinTable, tableName) {
|
|
222
222
|
if (prop && prop.startsWith('${')) {
|
|
223
223
|
// 格式是:${page.xxx} 或 ${data.xxx}
|
|
224
|
-
prop = prop.substring(prop.indexOf('.')+1, prop.length - 1)
|
|
224
|
+
prop = prop.substring(prop.indexOf('.') + 1, prop.length - 1)
|
|
225
225
|
}
|
|
226
226
|
return getPropNameWhenJoinTable(prop, isJoinTable, tableName)
|
|
227
227
|
},
|
|
@@ -296,7 +296,7 @@ export default {
|
|
|
296
296
|
},
|
|
297
297
|
getModelValue(model, propType) {
|
|
298
298
|
let models = this.models
|
|
299
|
-
if(propType && propType === 'page') {
|
|
299
|
+
if (propType && propType === 'page') {
|
|
300
300
|
models = this.pageModels
|
|
301
301
|
}
|
|
302
302
|
let modelValue = ''
|
|
@@ -305,8 +305,8 @@ export default {
|
|
|
305
305
|
modelValue = parentObj[model.substring(model.lastIndexOf('.') + 1)]
|
|
306
306
|
} else {
|
|
307
307
|
const name = this.getPropName(model)
|
|
308
|
-
if(propType && propType === 'page') {
|
|
309
|
-
modelValue = models?models[name]: null
|
|
308
|
+
if (propType && propType === 'page') {
|
|
309
|
+
modelValue = models ? models[name] : null
|
|
310
310
|
} else {
|
|
311
311
|
modelValue = models[name]
|
|
312
312
|
}
|
|
@@ -520,11 +520,11 @@ export default {
|
|
|
520
520
|
}
|
|
521
521
|
},
|
|
522
522
|
setValue(model, finallyOrgResult, propType) {
|
|
523
|
-
if(!propType) {
|
|
524
|
-
|
|
523
|
+
if (!propType) {
|
|
524
|
+
propType = this.getPropType(model)
|
|
525
525
|
}
|
|
526
526
|
let models = this.models
|
|
527
|
-
if(propType && propType === 'page') {
|
|
527
|
+
if (propType && propType === 'page') {
|
|
528
528
|
models = this.pageModels
|
|
529
529
|
}
|
|
530
530
|
this.setEntityValue(model, finallyOrgResult, models)
|
|
@@ -579,3 +579,8 @@ export default {
|
|
|
579
579
|
emits: ['replace', 'setValue', 'clear', 'focus', 'update:value', 'change']
|
|
580
580
|
}
|
|
581
581
|
</script>
|
|
582
|
+
<style lang="css">
|
|
583
|
+
.organization-input .el-input-group__append {
|
|
584
|
+
padding: 0 10px;
|
|
585
|
+
}
|
|
586
|
+
</style>
|
|
@@ -13,6 +13,19 @@
|
|
|
13
13
|
</div>
|
|
14
14
|
</template>
|
|
15
15
|
<template #default>
|
|
16
|
+
<operation
|
|
17
|
+
v-if="operationColumn"
|
|
18
|
+
:column="operationColumn"
|
|
19
|
+
:list-code="listCode"
|
|
20
|
+
:currentPage="currentPage"
|
|
21
|
+
:grid-data="gridData"
|
|
22
|
+
:page-grid-data="pageGridData"
|
|
23
|
+
:row="gridData[realEditIndex]"
|
|
24
|
+
:rowIndex="realEditIndex"
|
|
25
|
+
:parentFormData="parentFormData"
|
|
26
|
+
@refreshList="refreshList"
|
|
27
|
+
@afterClick="afterClickBtn"
|
|
28
|
+
/>
|
|
16
29
|
<el-form label-width="auto">
|
|
17
30
|
<template v-for="(column, index) in columns" >
|
|
18
31
|
<el-form-item :key="index" v-if="column.prop != '$index' && column.prop != '$selection' && column.prop != 'operation'" :label="getMyHeaderLable(column)" >
|
|
@@ -57,6 +70,7 @@
|
|
|
57
70
|
</template>
|
|
58
71
|
<script lang="ts">
|
|
59
72
|
export default {
|
|
73
|
+
components: { operation },
|
|
60
74
|
name: 'RowForm'
|
|
61
75
|
}
|
|
62
76
|
</script>
|
|
@@ -66,6 +80,9 @@ import {
|
|
|
66
80
|
getHeaderLable
|
|
67
81
|
} from '../super-grid/src/utils'
|
|
68
82
|
import { reactive, ref, onMounted, defineEmits, nextTick } from 'vue'
|
|
83
|
+
import RowOperation from '../super-grid/src/row-operation.vue'
|
|
84
|
+
import store from '../super-grid/src/store'
|
|
85
|
+
import operation from './operation.vue'
|
|
69
86
|
const props = defineProps<{
|
|
70
87
|
columns: {
|
|
71
88
|
type: Array<any>
|
|
@@ -124,6 +141,16 @@ const props = defineProps<{
|
|
|
124
141
|
type: Object
|
|
125
142
|
default: null
|
|
126
143
|
}
|
|
144
|
+
// 是否显示分页
|
|
145
|
+
showPage: {
|
|
146
|
+
type: Boolean
|
|
147
|
+
default: false
|
|
148
|
+
}
|
|
149
|
+
// 每页显示多少条
|
|
150
|
+
pageSize: {
|
|
151
|
+
type: Number,
|
|
152
|
+
default: null
|
|
153
|
+
}
|
|
127
154
|
}>()
|
|
128
155
|
const emits = defineEmits([
|
|
129
156
|
'open-page',
|
|
@@ -132,11 +159,37 @@ const emits = defineEmits([
|
|
|
132
159
|
'refresData',
|
|
133
160
|
'refresPortData',
|
|
134
161
|
'refresPortsData',
|
|
135
|
-
'refresMainTableFields'
|
|
162
|
+
'refresMainTableFields',
|
|
163
|
+
'refreshList'
|
|
136
164
|
])
|
|
137
|
-
const realEditIndex: any = ref(
|
|
165
|
+
const realEditIndex: any = ref(getCurrentRowIndex())
|
|
166
|
+
|
|
138
167
|
const isShowForm = ref(true)
|
|
139
168
|
const reload = ref(true)
|
|
169
|
+
let parentFormData:any
|
|
170
|
+
const gridParams = store.get(props.listCode)
|
|
171
|
+
const options = gridParams.options
|
|
172
|
+
if (gridParams.options.extraParam && gridParams.options.extraParam.entityMap) {
|
|
173
|
+
parentFormData = gridParams.options.extraParam.entityMap
|
|
174
|
+
}
|
|
175
|
+
const operationColumn = ref(null)
|
|
176
|
+
const operationCols = props.columns?props.columns.filter(item=>item.prop&&item.prop==='operation'):null
|
|
177
|
+
if(operationCols && operationCols.length > 0) {
|
|
178
|
+
operationColumn.value= operationCols[0]
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function getCurrentRowIndex() {
|
|
182
|
+
let realRowIndex:any = props.rowIndex
|
|
183
|
+
if(props.showPage){
|
|
184
|
+
if(props.rowIndex < props.pageSize) {
|
|
185
|
+
realRowIndex = ((props.currentPage-1) * props.pageSize) + props.rowIndex
|
|
186
|
+
} else {
|
|
187
|
+
realRowIndex = (props.currentPage * props.pageSize)-1
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return realRowIndex
|
|
191
|
+
}
|
|
192
|
+
|
|
140
193
|
function getMyHeaderLable(column) {
|
|
141
194
|
return getHeaderLable(column)
|
|
142
195
|
}
|
|
@@ -146,7 +199,6 @@ function prevRow() {
|
|
|
146
199
|
nextTick(() => {
|
|
147
200
|
reload.value = true
|
|
148
201
|
})
|
|
149
|
-
console.log(realEditIndex.value)
|
|
150
202
|
}
|
|
151
203
|
function nextRow() {
|
|
152
204
|
reload.value = false
|
|
@@ -154,7 +206,6 @@ function nextRow() {
|
|
|
154
206
|
nextTick(() => {
|
|
155
207
|
reload.value = true
|
|
156
208
|
})
|
|
157
|
-
console.log(realEditIndex.value)
|
|
158
209
|
}
|
|
159
210
|
function isShowColumn(column) {
|
|
160
211
|
let hidden = true
|
|
@@ -208,4 +259,17 @@ function refresPortsData(map) {
|
|
|
208
259
|
function refresMainTableFields(map) {
|
|
209
260
|
emits('refresMainTableFields', map)
|
|
210
261
|
}
|
|
262
|
+
|
|
263
|
+
function refreshList() {
|
|
264
|
+
emits('refreshList')
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
function afterClickBtn(params) {
|
|
268
|
+
console.log('afterClickBtn----params=', params)
|
|
269
|
+
reload.value = false
|
|
270
|
+
realEditIndex.value=props.gridData.length - 1
|
|
271
|
+
nextTick(() => {
|
|
272
|
+
reload.value = true
|
|
273
|
+
})
|
|
274
|
+
}
|
|
211
275
|
</script>
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div v-if="column.operations" class="grid-operation-buttons operation-area">
|
|
3
|
+
<span
|
|
4
|
+
v-for="(operation, operationIndex) in column.operations"
|
|
5
|
+
:key="operationIndex"
|
|
6
|
+
:class="isShowForm ? '' : 'cell--span'"
|
|
7
|
+
>
|
|
8
|
+
<el-dropdown
|
|
9
|
+
v-if="operation.isGroup"
|
|
10
|
+
:size="operation.buttons && operation.buttons.length > 0 ? operation.buttons[0].props.size : 'small'"
|
|
11
|
+
split-button
|
|
12
|
+
style="padding-left: 10px"
|
|
13
|
+
@command="handleCommand"
|
|
14
|
+
>
|
|
15
|
+
{{ $escapeHtml(operation.label) }}
|
|
16
|
+
<template v-slot:dropdown>
|
|
17
|
+
<el-dropdown-menu>
|
|
18
|
+
<span
|
|
19
|
+
v-for="(buttonChild, buttonChildIndex) in operation.buttons"
|
|
20
|
+
:key="buttonChild.props.code + buttonChildIndex"
|
|
21
|
+
>
|
|
22
|
+
<el-dropdown-item
|
|
23
|
+
v-permission="buttonChild.props.permission"
|
|
24
|
+
:command="beforeHandleCommand(buttonChild.props.code, row, rowIndex)"
|
|
25
|
+
:disabled="preventReclick"
|
|
26
|
+
>
|
|
27
|
+
{{ $escapeHtml(buttonChild.props.label) }}
|
|
28
|
+
</el-dropdown-item>
|
|
29
|
+
</span>
|
|
30
|
+
</el-dropdown-menu>
|
|
31
|
+
</template>
|
|
32
|
+
</el-dropdown>
|
|
33
|
+
<component
|
|
34
|
+
:is="operation.props.customControl"
|
|
35
|
+
v-else-if="operation.props.customControl"
|
|
36
|
+
v-permission="operation.props.permission"
|
|
37
|
+
:key="column.prop + '_' + rowIndex + '_' + currentPage"
|
|
38
|
+
:disabled="true"
|
|
39
|
+
:row="pageGridData[rowIndex]"
|
|
40
|
+
:entity="pageGridData[rowIndex]"
|
|
41
|
+
:prop="column.prop"
|
|
42
|
+
:parent="parentFormData"
|
|
43
|
+
:row-index="rowIndex"
|
|
44
|
+
:grid-data="gridData"
|
|
45
|
+
:page-grid-data="pageGridData"
|
|
46
|
+
:current-page="currentPage"
|
|
47
|
+
@refresh-list="refreshList"
|
|
48
|
+
/>
|
|
49
|
+
<row-operation
|
|
50
|
+
v-else
|
|
51
|
+
:column="column"
|
|
52
|
+
:editing="row.$editing"
|
|
53
|
+
:entity="row"
|
|
54
|
+
:is-show="operation.isShow"
|
|
55
|
+
:label="operation.props.label ? operation.props.label : row[column.prop]"
|
|
56
|
+
:on-click="operation.onClick"
|
|
57
|
+
:operation-index="operationIndex"
|
|
58
|
+
:operation-setting="operation.props"
|
|
59
|
+
:row-index="rowIndex"
|
|
60
|
+
:list-code="listCode"
|
|
61
|
+
:parent-form-data="parentFormData"
|
|
62
|
+
@afterClick="afterClickBtn"
|
|
63
|
+
/>
|
|
64
|
+
</span>
|
|
65
|
+
</div>
|
|
66
|
+
</template>
|
|
67
|
+
<script lang="ts">
|
|
68
|
+
export default {
|
|
69
|
+
name: 'RowForm'
|
|
70
|
+
}
|
|
71
|
+
</script>
|
|
72
|
+
<script setup lang="ts">
|
|
73
|
+
import NormalColumnContent from '../super-grid/src/normal-column-content.vue'
|
|
74
|
+
import { getHeaderLable } from '../super-grid/src/utils'
|
|
75
|
+
import { reactive, ref, onMounted, defineEmits, nextTick } from 'vue'
|
|
76
|
+
import RowOperation from '../super-grid/src/row-operation.vue'
|
|
77
|
+
import customFormatter from '../super-grid/src/custom-formatter'
|
|
78
|
+
const props = defineProps<{
|
|
79
|
+
column: {
|
|
80
|
+
type: Object,
|
|
81
|
+
default: null
|
|
82
|
+
}
|
|
83
|
+
listCode: {
|
|
84
|
+
type: String
|
|
85
|
+
default: null
|
|
86
|
+
}
|
|
87
|
+
currentPage: {
|
|
88
|
+
type: Number
|
|
89
|
+
default: 1
|
|
90
|
+
}
|
|
91
|
+
gridData: {
|
|
92
|
+
type: Array<any>
|
|
93
|
+
default: null
|
|
94
|
+
}
|
|
95
|
+
pageGridData: {
|
|
96
|
+
type: Array<any>
|
|
97
|
+
default: null
|
|
98
|
+
}
|
|
99
|
+
// 行记录序号
|
|
100
|
+
rowIndex: {
|
|
101
|
+
type: Number
|
|
102
|
+
default: 0
|
|
103
|
+
}
|
|
104
|
+
// 父表单实体
|
|
105
|
+
parentFormData: {
|
|
106
|
+
type: Object
|
|
107
|
+
default: null
|
|
108
|
+
}
|
|
109
|
+
row: {
|
|
110
|
+
type: Object
|
|
111
|
+
default: null
|
|
112
|
+
}
|
|
113
|
+
}>()
|
|
114
|
+
const emits = defineEmits([
|
|
115
|
+
'refreshList',
|
|
116
|
+
'afterClick'
|
|
117
|
+
])
|
|
118
|
+
const realEditIndex: any = ref(props.rowIndex)
|
|
119
|
+
const isShowForm = ref(true)
|
|
120
|
+
const reload = ref(true)
|
|
121
|
+
function beforeHandleCommand(comman, row, rowIndex) {
|
|
122
|
+
return {
|
|
123
|
+
comman: comman,
|
|
124
|
+
row: row,
|
|
125
|
+
rowIndex: rowIndex
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function handleCommand(comman) {
|
|
129
|
+
let prop = null
|
|
130
|
+
props.column.operations.forEach((item) => {
|
|
131
|
+
if (item.isGroup) {
|
|
132
|
+
item.buttons.forEach((button) => {
|
|
133
|
+
if (button.props.code === comman.comman) {
|
|
134
|
+
prop = button
|
|
135
|
+
}
|
|
136
|
+
})
|
|
137
|
+
}
|
|
138
|
+
})
|
|
139
|
+
if (prop) {
|
|
140
|
+
customFormatter.onClickFun(comman.row, props.column, prop.onClick, comman.rowIndex)
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function refreshList() {
|
|
145
|
+
emits('refreshList')
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function afterClickBtn() {
|
|
149
|
+
emits('afterClick',{row: props.row, column: props.column, rowIndex: props.rowIndex})
|
|
150
|
+
}
|
|
151
|
+
</script>
|
|
@@ -1022,15 +1022,26 @@ export default {
|
|
|
1022
1022
|
}
|
|
1023
1023
|
}
|
|
1024
1024
|
},
|
|
1025
|
+
orgTreeSetSort() {
|
|
1026
|
+
// 设值排下序,否则出现所有映射还没设值完毕,就触发了change事件问题
|
|
1027
|
+
const columnPropIndex = this.fields.findIndex((filed) => filed.model === this.column.prop)
|
|
1028
|
+
if (columnPropIndex > -1) {
|
|
1029
|
+
const tempFiled = this.fields[columnPropIndex]
|
|
1030
|
+
this.fields.splice(columnPropIndex, 1)
|
|
1031
|
+
this.fields.push(tempFiled)
|
|
1032
|
+
}
|
|
1033
|
+
},
|
|
1025
1034
|
// 显示组织树时需要计算指定部门
|
|
1026
1035
|
showOrganizationTree() {
|
|
1027
1036
|
if (this.column.orgTreeSet) {
|
|
1028
1037
|
const orgTreeSet = JSON.parse(this.column.orgTreeSet)
|
|
1029
1038
|
if (orgTreeSet.length) {
|
|
1030
1039
|
this.fields = orgTreeSet
|
|
1040
|
+
this.orgTreeSetSort()
|
|
1031
1041
|
} else {
|
|
1032
1042
|
if (orgTreeSet.orgTreeSetArr) {
|
|
1033
1043
|
this.fields = orgTreeSet.orgTreeSetArr
|
|
1044
|
+
this.orgTreeSetSort()
|
|
1034
1045
|
}
|
|
1035
1046
|
if (orgTreeSet.specifyType) {
|
|
1036
1047
|
if (orgTreeSet.specifyType === 'dataTable') {
|
|
@@ -59,13 +59,7 @@
|
|
|
59
59
|
:disabled="preventReclick"
|
|
60
60
|
>
|
|
61
61
|
{{
|
|
62
|
-
$escapeHtml(
|
|
63
|
-
buttonChild.props.label
|
|
64
|
-
? buttonChild.props.label
|
|
65
|
-
: buttonChild.props.code === 'search'
|
|
66
|
-
? $t('superPageMessage.searchButtonLabel')
|
|
67
|
-
: ''
|
|
68
|
-
)
|
|
62
|
+
$escapeHtml(buttonChild.props.label)
|
|
69
63
|
}}
|
|
70
64
|
</el-dropdown-item>
|
|
71
65
|
</span>
|
|
@@ -176,6 +176,7 @@ const superGridService = {
|
|
|
176
176
|
gridParams.pagination = this.pagination
|
|
177
177
|
gridParams.pageContext = this.pageContext
|
|
178
178
|
gridParams.configureObj = this.configureObj
|
|
179
|
+
this.tableName = this.basicInfo.tableName
|
|
179
180
|
gridParams.hiddenColumns = this.options.hiddenColumns?JSON.parse(JSON.stringify(this.options.hiddenColumns)):[]
|
|
180
181
|
if (this.pagination) {
|
|
181
182
|
// 监控每行显示多少条变量使用
|
|
@@ -229,6 +229,8 @@
|
|
|
229
229
|
:grid-data="isSubTableShowPage ? subTableData : gridData"
|
|
230
230
|
:page-grid-data="isSubTableShowPage ? getSubTableGridData(subTableData) : gridData"
|
|
231
231
|
:line-edit="lineEdit"
|
|
232
|
+
:show-page="pagination && isShowPage"
|
|
233
|
+
:page-size="pagination?pagination.pageSize: null"
|
|
232
234
|
@close="closeRowForm"
|
|
233
235
|
@refresData="refresData"
|
|
234
236
|
@refresPortData="refresPortData"
|
|
@@ -236,6 +238,7 @@
|
|
|
236
238
|
@refresMainTableFields="refresMainTableFields"
|
|
237
239
|
@open-page="openPageDialog"
|
|
238
240
|
@prohibitToEdit="prohibitToEdit"
|
|
241
|
+
@refreshList="refreshList"
|
|
239
242
|
/>
|
|
240
243
|
</div>
|
|
241
244
|
</template>
|
|
@@ -2161,7 +2164,8 @@ export default {
|
|
|
2161
2164
|
},
|
|
2162
2165
|
getSearchParam() {
|
|
2163
2166
|
const searchParam = {
|
|
2164
|
-
code: this.code
|
|
2167
|
+
code: this.code,
|
|
2168
|
+
tableName: this.tableName
|
|
2165
2169
|
}
|
|
2166
2170
|
const gridParams = store.get(this.code)
|
|
2167
2171
|
const pagination = this.getPaginationInfo()
|
|
@@ -2343,12 +2347,24 @@ export default {
|
|
|
2343
2347
|
},
|
|
2344
2348
|
packageSummaryColumnProps() {
|
|
2345
2349
|
const summaryColumnProps = []
|
|
2346
|
-
this.visibleColumns.forEach((item) => {
|
|
2350
|
+
// this.visibleColumns.forEach((item) => {
|
|
2351
|
+
// if (item.total !== undefined && item.total === true) {
|
|
2352
|
+
// summaryColumnProps.push(item.prop)
|
|
2353
|
+
// } else if (item.groupHeader && item.children && item.children.length > 0) {
|
|
2354
|
+
// setGroupHeaderChildernSummary(item.children, summaryColumnProps)
|
|
2355
|
+
// }
|
|
2356
|
+
// })
|
|
2357
|
+
this.setGroupHeaderChildernSummary(this.visibleColumns, summaryColumnProps)
|
|
2358
|
+
return summaryColumnProps
|
|
2359
|
+
},
|
|
2360
|
+
setGroupHeaderChildernSummary(columns, summaryColumnProps) {
|
|
2361
|
+
columns.forEach((item) => {
|
|
2347
2362
|
if (item.total !== undefined && item.total === true) {
|
|
2348
2363
|
summaryColumnProps.push(item.prop)
|
|
2364
|
+
} else if (item.groupHeader && item.children && item.children.length > 0) {
|
|
2365
|
+
this.setGroupHeaderChildernSummary(item.children, summaryColumnProps)
|
|
2349
2366
|
}
|
|
2350
2367
|
})
|
|
2351
|
-
return summaryColumnProps
|
|
2352
2368
|
},
|
|
2353
2369
|
getSummaries(param) {
|
|
2354
2370
|
// 后台返回时需要处理好序号列和多选列
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<el-drawer v-model="isShowForm" :close-on-click-modal="false" :close-on-press-escape="false"
|
|
2
|
+
<el-drawer v-model="isShowForm" append-to-body :close-on-click-modal="false" :close-on-press-escape="false" direction="btt" size="100%" class="organization-tree" @close="closeTree()">
|
|
3
3
|
<template #header>
|
|
4
4
|
<div style="text-align: center;">
|
|
5
5
|
{{$t('imatrixUIMessage.pleaseSelect')}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<el-drawer v-model="isShowForm" direction="btt" size="100%" class="organization-tree" @close="closeTree()">
|
|
2
|
+
<el-drawer v-model="isShowForm" append-to-body :close-on-click-modal="false" :close-on-press-escape="false" direction="btt" size="100%" class="organization-tree" @close="closeTree()">
|
|
3
3
|
<template #header>
|
|
4
4
|
<div style="text-align: center;">
|
|
5
5
|
{{$t('imatrixUIMessage.pleaseSelect')}}
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
<div v-if="data.nodeType && data.nodeType === 'USER'" class="item-label">{{ data.showName }}
|
|
40
40
|
<span style="color:#999">({{ data.loginName }}{{ getUserMainDeptName(data) ? '/'+getUserMainDeptName(data): ''}})</span>
|
|
41
41
|
</div>
|
|
42
|
-
<div v-else class="item-label">{{ data.name }}</div>
|
|
42
|
+
<div v-else class="item-label" @click="loadChildren(data,false)">{{ data.name }}</div>
|
|
43
43
|
<div v-if="!data.nodeType || data.nodeType !== 'USER'" class="item-side" @click="loadChildren(data,false)">
|
|
44
44
|
<el-icon><ArrowRight /></el-icon>
|
|
45
45
|
</div>
|