three-trees-ui 1.0.69 → 1.0.70
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/three-trees-ui.common.js +16707 -15963
- package/lib/three-trees-ui.css +1 -1
- package/lib/three-trees-ui.umd.js +16707 -15963
- package/lib/three-trees-ui.umd.min.js +1 -1
- package/package.json +1 -1
- package/packages/CustomDialog/src/customDialog.vue +74 -12
- package/packages/DataLists/src/main.vue +2 -3
- package/packages/QuerySqlPreview/src/QuerySqlPreview.vue +43 -1
- package/packages/TableSearchField/src/main.vue +5 -0
- package/packages/TemplatePreview/src/TemplatePreview.vue +43 -0
- package/src/mixins/querySqlPreview.js +299 -21
- package/src/mixins/templatePreview.js +518 -42
package/package.json
CHANGED
|
@@ -1137,8 +1137,11 @@
|
|
|
1137
1137
|
}
|
|
1138
1138
|
const pInst = utils.getOnlineFormInstance(this)
|
|
1139
1139
|
this.selectOrgs = this.convertComment2Field(str, field)
|
|
1140
|
-
|
|
1141
|
-
|
|
1140
|
+
this.custdialog.custDialog.mappingConf.forEach((con) => {
|
|
1141
|
+
let val = ''
|
|
1142
|
+
let bindValue = ''
|
|
1143
|
+
//改造,绑定值,表单列表查询字段绑定对话框时,新增的绑定字段选项
|
|
1144
|
+
const bindValueField = con.bindValue && con.bindValue.toLowerCase()
|
|
1142
1145
|
str.forEach((item, index) => {
|
|
1143
1146
|
// 此处添加url跳转参数保存逻辑
|
|
1144
1147
|
if (
|
|
@@ -1159,6 +1162,10 @@
|
|
|
1159
1162
|
},`
|
|
1160
1163
|
} else {
|
|
1161
1164
|
val += item[con.from] + ','
|
|
1165
|
+
//绑定字段处理
|
|
1166
|
+
if (bindValueField) {
|
|
1167
|
+
bindValue += item[bindValueField] + ','
|
|
1168
|
+
}
|
|
1162
1169
|
}
|
|
1163
1170
|
})
|
|
1164
1171
|
if (this.modelName == 'data.' + con['target'][0]) {
|
|
@@ -1169,12 +1176,29 @@
|
|
|
1169
1176
|
thisIndex
|
|
1170
1177
|
)
|
|
1171
1178
|
} else if (this.modelName == 'searchForm.' + con['target'][0]) {
|
|
1179
|
+
const bInst = pInst['searchForm'] ? pInst: pInst.data
|
|
1172
1180
|
utils.setValueByPath(
|
|
1173
|
-
|
|
1181
|
+
bInst,
|
|
1174
1182
|
'searchForm.' + con['target'][0],
|
|
1175
1183
|
val.substring(0, val.length - 1),
|
|
1176
1184
|
thisIndex
|
|
1177
1185
|
)
|
|
1186
|
+
//绑定字段值处理,bindValue: {target: {id: xxx}}, bindKey: {target: id }
|
|
1187
|
+
if (bindValue && bindValueField) {
|
|
1188
|
+
const bindValueObj = {}
|
|
1189
|
+
//显示value对象
|
|
1190
|
+
bindValueObj[bindValueField] = bindValue.substring(0, bindValue.length - 1)
|
|
1191
|
+
|
|
1192
|
+
const anInst = pInst['searchForm'] ? pInst['searchForm'] : pInst.data.searchForm
|
|
1193
|
+
//若bindKey不存在,则默认空对象,若存在,则取出bindKey
|
|
1194
|
+
anInst.bindKey = anInst.bindKey || {}
|
|
1195
|
+
//格式 {target: id }
|
|
1196
|
+
anInst.bindKey[con['target'][0]] = bindValueField
|
|
1197
|
+
//若bindValue不存在,则默认空对象,若存在,则取出bindValue
|
|
1198
|
+
anInst.bindValue = anInst.bindValue || {}
|
|
1199
|
+
//格式 {target: {id: xxx}}
|
|
1200
|
+
anInst.bindValue[con['target'][0]] = bindValueObj
|
|
1201
|
+
}
|
|
1178
1202
|
} else {
|
|
1179
1203
|
let configAttr = con['target'][0].split('.')
|
|
1180
1204
|
let path = con['target'][0]
|
|
@@ -1199,10 +1223,26 @@
|
|
|
1199
1223
|
}
|
|
1200
1224
|
utils.setValueByPath(
|
|
1201
1225
|
pInst,
|
|
1202
|
-
`${pInst.data ? 'data.' : 'model.'}${path}`,
|
|
1226
|
+
`${pInst.data ? 'data.' : 'model.'}${this.modelName.includes('searchForm') ? `searchForm.${path}` : path}`,
|
|
1203
1227
|
_val,
|
|
1204
1228
|
thisIndex
|
|
1205
1229
|
)
|
|
1230
|
+
//绑定字段值处理,bindValue: {target: {id: xxx}}, bindKey: {target: id }
|
|
1231
|
+
if (bindValue && bindValueField) {
|
|
1232
|
+
const bindValueObj = {}
|
|
1233
|
+
//显示value对象
|
|
1234
|
+
bindValueObj[bindValueField] = bindValue.substring(0, bindValue.length - 1)
|
|
1235
|
+
|
|
1236
|
+
const anInst = pInst['searchForm'] ? pInst['searchForm'] : pInst.data.searchForm
|
|
1237
|
+
//若bindKey不存在,则默认空对象,若存在,则取出bindKey
|
|
1238
|
+
anInst.bindKey = anInst.bindKey || {}
|
|
1239
|
+
//格式 {target: id }
|
|
1240
|
+
anInst.bindKey[con['target'][0]] = bindValueField
|
|
1241
|
+
//若bindValue不存在,则默认空对象,若存在,则取出bindValue
|
|
1242
|
+
anInst.bindValue = anInst.bindValue || {}
|
|
1243
|
+
//格式 {target: {id: xxx}}
|
|
1244
|
+
anInst.bindValue[con['target'][0]] = bindValueObj
|
|
1245
|
+
}
|
|
1206
1246
|
}
|
|
1207
1247
|
}
|
|
1208
1248
|
})
|
|
@@ -1856,8 +1896,11 @@
|
|
|
1856
1896
|
}
|
|
1857
1897
|
const pInst = utils.getOnlineFormInstance(this)
|
|
1858
1898
|
this.custdialog.custDialog.mappingConf.forEach((con) => {
|
|
1859
|
-
|
|
1860
|
-
|
|
1899
|
+
let val = ''
|
|
1900
|
+
let bindValue = ''
|
|
1901
|
+
const from = con.from.toLowerCase()
|
|
1902
|
+
//改造,绑定值,表单列表查询字段绑定对话框时,新增的绑定字段选项
|
|
1903
|
+
const bindValueField = con.bindValue && con.bindValue.toLowerCase()
|
|
1861
1904
|
str.forEach((item) => {
|
|
1862
1905
|
// 如果有绑定url跳转参数 需获取跳转参数的key
|
|
1863
1906
|
if (item) {
|
|
@@ -1885,6 +1928,10 @@
|
|
|
1885
1928
|
)}¯${jumpParamKey}:${decodeURIComponent(item[returnMapKey])},`
|
|
1886
1929
|
} else {
|
|
1887
1930
|
val += decodeURIComponent(item[from]) + ','
|
|
1931
|
+
//绑定字段处理
|
|
1932
|
+
if (bindValueField) {
|
|
1933
|
+
bindValue += decodeURIComponent(item[bindValueField]) + ','
|
|
1934
|
+
}
|
|
1888
1935
|
}
|
|
1889
1936
|
}
|
|
1890
1937
|
})
|
|
@@ -1900,13 +1947,28 @@
|
|
|
1900
1947
|
this.modelName &&
|
|
1901
1948
|
this.modelName.startsWith('searchForm.')
|
|
1902
1949
|
) {
|
|
1950
|
+
const currentValue = val.substring(0, val.length - 1)
|
|
1951
|
+
if (this.modelName && this.modelName.endsWith(con['target'][0])) {
|
|
1952
|
+
this.$emit('updateInput', currentValue);
|
|
1953
|
+
}
|
|
1903
1954
|
let prePath = pInst['searchForm'] ? '' : 'data.'
|
|
1904
|
-
utils.setValueByPath(
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1955
|
+
utils.setValueByPath(pInst, prePath + 'searchForm.' + con['target'][0], currentValue, thisIndex)
|
|
1956
|
+
//绑定字段值处理,bindValue: {target: {id: xxx}}, bindKey: {target: id }
|
|
1957
|
+
if (bindValue && bindValueField) {
|
|
1958
|
+
const bindValueObj = {}
|
|
1959
|
+
//显示value对象
|
|
1960
|
+
bindValueObj[bindValueField] = bindValue.substring(0, bindValue.length - 1)
|
|
1961
|
+
|
|
1962
|
+
const anInst = pInst['searchForm'] ? pInst['searchForm'] : pInst.data.searchForm
|
|
1963
|
+
//若bindKey不存在,则默认空对象,若存在,则取出bindKey
|
|
1964
|
+
anInst.bindKey = anInst.bindKey || {}
|
|
1965
|
+
//格式 {target: id }
|
|
1966
|
+
anInst.bindKey[con['target'][0]] = bindValueField
|
|
1967
|
+
//若bindValue不存在,则默认空对象,若存在,则取出bindValue
|
|
1968
|
+
anInst.bindValue = anInst.bindValue || {}
|
|
1969
|
+
//格式 {target: {id: xxx}}
|
|
1970
|
+
anInst.bindValue[con['target'][0]] = bindValueObj
|
|
1971
|
+
}
|
|
1910
1972
|
} else {
|
|
1911
1973
|
let configAttr = con['target'][0].split('.')
|
|
1912
1974
|
let path = con['target'][0]
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
</template>
|
|
34
34
|
<script>
|
|
35
35
|
import permission from '@/mixins/permission.js'
|
|
36
|
-
export default {
|
|
36
|
+
export default {
|
|
37
37
|
name: 'HtDataLists',
|
|
38
38
|
mixins: [permission],
|
|
39
39
|
props: {
|
|
@@ -56,7 +56,6 @@ export default {
|
|
|
56
56
|
watch: {
|
|
57
57
|
options: {
|
|
58
58
|
handler(val) {
|
|
59
|
-
debugger
|
|
60
59
|
if (val) {
|
|
61
60
|
this.tabPaneList = JSON.parse(val)
|
|
62
61
|
this.activeName = this.tabPaneList[0].dataTemplateKey
|
|
@@ -114,4 +113,4 @@ export default {
|
|
|
114
113
|
margin-top: 24px;
|
|
115
114
|
}
|
|
116
115
|
}
|
|
117
|
-
</style>
|
|
116
|
+
</style>
|
|
@@ -163,4 +163,46 @@ export default {
|
|
|
163
163
|
font-weight: bold;
|
|
164
164
|
color: #f56c6c;
|
|
165
165
|
}
|
|
166
|
-
|
|
166
|
+
::v-deep .page-btn-count {
|
|
167
|
+
margin: 0 24px;
|
|
168
|
+
float: left;
|
|
169
|
+
padding: 10px 0;
|
|
170
|
+
}
|
|
171
|
+
::v-deep .page-btn-total {
|
|
172
|
+
margin: 5px 0px;
|
|
173
|
+
float: left;
|
|
174
|
+
padding: 11px 0px;
|
|
175
|
+
color: #606266;
|
|
176
|
+
font-weight: normal;
|
|
177
|
+
font-size: 13px;
|
|
178
|
+
}
|
|
179
|
+
::v-deep .pagination {
|
|
180
|
+
display: flex;
|
|
181
|
+
justify-content: flex-end;
|
|
182
|
+
padding: 10px 0;
|
|
183
|
+
float: right;
|
|
184
|
+
.el-select {
|
|
185
|
+
width: 100px;
|
|
186
|
+
}
|
|
187
|
+
.page-btn {
|
|
188
|
+
margin: 0 24px;
|
|
189
|
+
}
|
|
190
|
+
.target-page {
|
|
191
|
+
display: flex;
|
|
192
|
+
align-items: center;
|
|
193
|
+
color: #606266;
|
|
194
|
+
font-weight: normal;
|
|
195
|
+
font-size: 13px;
|
|
196
|
+
.el-input {
|
|
197
|
+
width: 50px;
|
|
198
|
+
margin: 0 3px;
|
|
199
|
+
}
|
|
200
|
+
//::v-deep input::-webkit-outer-spin-button, ::v-deep input::-webkit-inner-spin-button {
|
|
201
|
+
// -webkit-appearance: none !important;
|
|
202
|
+
//}
|
|
203
|
+
//::v-deep input[type='number'] {
|
|
204
|
+
// -moz-appearnce: textfield !important
|
|
205
|
+
//}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
</style>
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
:class="{ 'is-align-right': isAlignRight }"
|
|
16
16
|
>
|
|
17
17
|
<label v-if="label" v-ellipsis :title="label" class="search-field-label">
|
|
18
|
+
<span v-if="isRequired" class="red-color">*</span>
|
|
18
19
|
{{ label }}
|
|
19
20
|
</label>
|
|
20
21
|
</div>
|
|
@@ -167,6 +168,7 @@
|
|
|
167
168
|
type: Boolean,
|
|
168
169
|
default: false,
|
|
169
170
|
},
|
|
171
|
+
isRequired: Boolean,
|
|
170
172
|
},
|
|
171
173
|
data() {
|
|
172
174
|
return {
|
|
@@ -317,6 +319,9 @@
|
|
|
317
319
|
display: inline-block;
|
|
318
320
|
max-width: calc(100% - 10px);
|
|
319
321
|
line-height: 100%;
|
|
322
|
+
.red-color {
|
|
323
|
+
color: #f56c6c;
|
|
324
|
+
}
|
|
320
325
|
|
|
321
326
|
&::after {
|
|
322
327
|
content: ':';
|
|
@@ -223,6 +223,49 @@
|
|
|
223
223
|
margin: 0;
|
|
224
224
|
padding: 0;
|
|
225
225
|
}
|
|
226
|
+
::v-deep .page-btn-count {
|
|
227
|
+
margin: 0 24px;
|
|
228
|
+
float: left;
|
|
229
|
+
padding: 10px 0;
|
|
230
|
+
}
|
|
231
|
+
::v-deep .page-btn-total {
|
|
232
|
+
margin: 5px 0px;
|
|
233
|
+
float: left;
|
|
234
|
+
padding: 11px 0px;
|
|
235
|
+
color: #606266;
|
|
236
|
+
font-weight: normal;
|
|
237
|
+
font-size: 13px;
|
|
238
|
+
}
|
|
239
|
+
::v-deep .pagination {
|
|
240
|
+
display: flex;
|
|
241
|
+
justify-content: flex-end;
|
|
242
|
+
padding: 10px 0;
|
|
243
|
+
float: right;
|
|
244
|
+
.el-select {
|
|
245
|
+
width: 100px;
|
|
246
|
+
}
|
|
247
|
+
.page-btn {
|
|
248
|
+
margin: 0 24px;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.target-page {
|
|
252
|
+
display: flex;
|
|
253
|
+
align-items: center;
|
|
254
|
+
color: #606266;
|
|
255
|
+
font-weight: normal;
|
|
256
|
+
font-size: 13px;
|
|
257
|
+
.el-input {
|
|
258
|
+
width: 50px;
|
|
259
|
+
margin: 0 3px;
|
|
260
|
+
}
|
|
261
|
+
//::v-deep input::-webkit-outer-spin-button, ::v-deep input::-webkit-inner-spin-button {
|
|
262
|
+
// -webkit-appearance: none !important;
|
|
263
|
+
//}
|
|
264
|
+
//::v-deep input[type='number'] {
|
|
265
|
+
// -moz-appearnce: textfield !important
|
|
266
|
+
//}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
226
269
|
</style>
|
|
227
270
|
<style lang="scss">
|
|
228
271
|
.template-dropdown {
|