vue2-client 1.16.3 → 1.16.5
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/.claude/settings.local.json +16 -14
- package/.env.revenue +1 -2
- package/package.json +2 -1
- package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +10 -13
- package/src/base-client/components/common/HIS/HTab/HTab.vue +6 -5
- package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +3 -0
- package/src/base-client/components/common/XForm/XFormItem.vue +2 -1
- package/src/base-client/components/common/XFormTable/XFormTable.vue +69 -41
- package/src/base-client/components/common/XFormTable/demo.vue +5 -2
- package/src/base-client/components/common/XTree/XTreePro.vue +1 -1
- package/src/base-client/components/his/XHisEditor/XHisEditor.vue +12 -12
- package/src/router/async/router.map.js +1 -0
- package/vue.config.js +2 -2
@@ -1,14 +1,16 @@
|
|
1
|
-
{
|
2
|
-
"permissions": {
|
3
|
-
"allow": [
|
4
|
-
"WebSearch",
|
5
|
-
"WebFetch(domain:context7.com)",
|
6
|
-
"Bash(npm run lint)",
|
7
|
-
"mcp__context7__resolve-library-id",
|
8
|
-
"mcp__context7__get-library-docs"
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
"
|
13
|
-
|
14
|
-
|
1
|
+
{
|
2
|
+
"permissions": {
|
3
|
+
"allow": [
|
4
|
+
"WebSearch",
|
5
|
+
"WebFetch(domain:context7.com)",
|
6
|
+
"Bash(npm run lint)",
|
7
|
+
"mcp__context7__resolve-library-id",
|
8
|
+
"mcp__context7__get-library-docs",
|
9
|
+
"WebFetch(domain:github.com)",
|
10
|
+
"Bash(npm run serve:*)"
|
11
|
+
],
|
12
|
+
"deny": [],
|
13
|
+
"ask": [],
|
14
|
+
"defaultMode": "acceptEdits"
|
15
|
+
}
|
16
|
+
}
|
package/.env.revenue
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
VUE_APP_PUBLIC_PATH=/
|
1
|
+
VUE_APP_PUBLIC_PATH=/
|
2
2
|
VUE_APP_NAME=Admin
|
3
3
|
VUE_APP_ROUTES_KEY=admin.routes
|
4
4
|
VUE_APP_PERMISSIONS_KEY=admin.permissions
|
@@ -16,4 +16,3 @@ VUE_APP_WEB_CONFIG_KEY=admin.webconfig
|
|
16
16
|
VUE_APP_API_BASE_URL=http://123.60.214.109:8405
|
17
17
|
VUE_APP_SYSTEM_NAME=af-revenue
|
18
18
|
VUE_APP_LOGIN_VERSION=V4
|
19
|
-
VUE_APP_SINGLE_PAPER=TRUE
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "vue2-client",
|
3
|
-
"version": "1.16.
|
3
|
+
"version": "1.16.5",
|
4
4
|
"private": false,
|
5
5
|
"scripts": {
|
6
6
|
"serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
|
@@ -56,6 +56,7 @@
|
|
56
56
|
"nprogress": "^0.2.0",
|
57
57
|
"qs": "^6.11.2",
|
58
58
|
"regenerator-runtime": "^0.14.0",
|
59
|
+
"splitpanes": "^2.4.1",
|
59
60
|
"videojs-contrib-hls": "^5.15.0",
|
60
61
|
"viser-vue": "^2.4.8",
|
61
62
|
"vue": "^2.7.14",
|
@@ -117,7 +117,7 @@ export default {
|
|
117
117
|
// 生成地址串中省市区街道信息禁止修改
|
118
118
|
readOnlyDivisions: false,
|
119
119
|
// cur 位置
|
120
|
-
curPosition:
|
120
|
+
curPosition: null,
|
121
121
|
searchFlag: false,
|
122
122
|
}
|
123
123
|
},
|
@@ -153,6 +153,13 @@ export default {
|
|
153
153
|
return { address: 'address', coords: 'coords' }
|
154
154
|
}
|
155
155
|
},
|
156
|
+
// 地图渲染初始值
|
157
|
+
address: {
|
158
|
+
type: Object,
|
159
|
+
default: () => {
|
160
|
+
return { }
|
161
|
+
}
|
162
|
+
},
|
156
163
|
readOnly: {
|
157
164
|
type: Boolean,
|
158
165
|
default: false
|
@@ -182,8 +189,10 @@ export default {
|
|
182
189
|
}, 200)()
|
183
190
|
},
|
184
191
|
initMap (aMap) {
|
192
|
+
const center = (this.address?.coords || '108.878703, 34.223701').split(',')
|
185
193
|
this.map = new (aMap).Map('addressSearchCombobox_map', { // 设置地图容器id
|
186
194
|
resizeEnable: true, // 是否监控地图容器尺寸变化
|
195
|
+
center: center, // 设置初始中心
|
187
196
|
zoom: 10, // 初始化地图层级
|
188
197
|
})
|
189
198
|
this.geocoder = new (aMap).Geocoder({
|
@@ -438,18 +447,6 @@ export default {
|
|
438
447
|
})
|
439
448
|
}
|
440
449
|
},
|
441
|
-
attr: {
|
442
|
-
handler (newValue) {
|
443
|
-
console.log('监听事件触发:', { new: newValue })
|
444
|
-
if (newValue.type === 'coordinateSearch') {
|
445
|
-
this.addressInput = newValue.formDefault_lng_lat
|
446
|
-
} else if (newValue.type === 'addressSearch') {
|
447
|
-
this.addressInput = newValue.formDefault
|
448
|
-
}
|
449
|
-
},
|
450
|
-
deep: true, // 深度监听对象内部变化
|
451
|
-
immediate: true
|
452
|
-
}
|
453
450
|
}
|
454
451
|
}
|
455
452
|
</script>
|
@@ -35,11 +35,12 @@ defineExpose({
|
|
35
35
|
</script>
|
36
36
|
|
37
37
|
<template>
|
38
|
-
<div
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
<div
|
39
|
+
class="h-tab-wrapper"
|
40
|
+
:class="{ 'h-tab-has-top-margin': hasTopMargin,
|
41
|
+
'h-tab-style7': useStyle7,
|
42
|
+
'h-tab-cycle': useStyle7 && useCycle,
|
43
|
+
'h-tab-style8': useStyle8}">
|
43
44
|
<x-tab
|
44
45
|
ref="xTabRef"
|
45
46
|
v-bind="$attrs"
|
@@ -583,6 +583,9 @@ export default {
|
|
583
583
|
if (item.formDefault === 'curUserId') {
|
584
584
|
formData[item.model] = item.type === 'select' ? this.currUser.id : [this.currUser.id]
|
585
585
|
}
|
586
|
+
} else if (['addressSearch'].includes(item.type)) {
|
587
|
+
formData[item.model] = item.formDefault
|
588
|
+
formData[`${item.model}_lng_lat`] = item.formDefault_lng_lat
|
586
589
|
} else {
|
587
590
|
formData[item.model] = item.formDefault
|
588
591
|
}
|
@@ -463,7 +463,8 @@
|
|
463
463
|
:emitFunc="emitFunc"
|
464
464
|
:attr="attr"
|
465
465
|
:read-only="readOnly"
|
466
|
-
|
466
|
+
:searchResult="form[attr.model]"
|
467
|
+
:address="{ address: form[attr.model], coords: form[`${attr.model}_lng_lat`] }"
|
467
468
|
:resultKeys="{ address: attr.model, coords: `${attr.model}_lng_lat` }"
|
468
469
|
ref="addressSearchCombobox"
|
469
470
|
searchResultType="Object"
|
@@ -1,14 +1,14 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
:
|
9
|
-
:
|
10
|
-
|
11
|
-
|
2
|
+
<splitpanes
|
3
|
+
class="default-theme"
|
4
|
+
:horizontal="false"
|
5
|
+
@resized="storePaneSize"
|
6
|
+
>
|
7
|
+
<pane
|
8
|
+
:size="treeSize"
|
9
|
+
:min-size="15"
|
10
|
+
:max-size="40"
|
11
|
+
v-if="xTreeConfigName">
|
12
12
|
<x-tree-pro
|
13
13
|
:config-name="xTreeConfigName"
|
14
14
|
:env="env"
|
@@ -17,14 +17,10 @@
|
|
17
17
|
@treeOnChecked="treeOnChecked"
|
18
18
|
ref="xtree"
|
19
19
|
></x-tree-pro>
|
20
|
-
</
|
21
|
-
<
|
22
|
-
:
|
23
|
-
|
24
|
-
:md="xTreeConfigName ? 12 : 24"
|
25
|
-
:lg="xTreeConfigName ? 15 : 24"
|
26
|
-
:xl="xTreeConfigName ? 18 : 24"
|
27
|
-
:xxl="xTreeConfigName ? 19 : 24">
|
20
|
+
</pane>
|
21
|
+
<pane
|
22
|
+
:size="100 - treeSize"
|
23
|
+
>
|
28
24
|
<a-skeleton :loading="loading" :paragraph="{ rows: 4 }"/>
|
29
25
|
<a-row style="height: 12px" v-if="xTreeConfigName"></a-row>
|
30
26
|
<div v-show="!loading">
|
@@ -118,9 +114,9 @@
|
|
118
114
|
</a-empty>
|
119
115
|
</template>
|
120
116
|
</div>
|
121
|
-
</
|
117
|
+
</pane>
|
122
118
|
<UserInfoDetailManage ref="userInfo" @close="refresh(false)"/>
|
123
|
-
</
|
119
|
+
</splitpanes>
|
124
120
|
</template>
|
125
121
|
<script>
|
126
122
|
import XForm from '@vue2-client/base-client/components/common/XForm'
|
@@ -129,6 +125,8 @@ import XAddReport from '@vue2-client/base-client/components/common/XAddReport'
|
|
129
125
|
import XTable from '@vue2-client/base-client/components/common/XTable'
|
130
126
|
import XTree from '@vue2-client/base-client/components/common/XTree'
|
131
127
|
import XImportExcel from '@vue2-client/base-client/components/common/XImportExcel'
|
128
|
+
import { Splitpanes, Pane } from 'splitpanes'
|
129
|
+
import 'splitpanes/dist/splitpanes.css'
|
132
130
|
import {
|
133
131
|
getConfigByName,
|
134
132
|
getConfigByLogic,
|
@@ -151,7 +149,9 @@ export default {
|
|
151
149
|
XTree,
|
152
150
|
XAddForm,
|
153
151
|
XAddReport,
|
154
|
-
XImportExcel
|
152
|
+
XImportExcel,
|
153
|
+
Splitpanes,
|
154
|
+
Pane
|
155
155
|
},
|
156
156
|
provide () {
|
157
157
|
return {
|
@@ -239,7 +239,8 @@ export default {
|
|
239
239
|
table_selectedRows: [],
|
240
240
|
// 数据只有一页时是否展示分页,true:展示,auto:隐藏
|
241
241
|
showPagination: true,
|
242
|
-
isMounted: false
|
242
|
+
isMounted: false,
|
243
|
+
treeSize: localStorage.getItem('CURD::' + this.xTreeConfigName + '::TreeSize') ?? 25
|
243
244
|
}
|
244
245
|
},
|
245
246
|
computed: {
|
@@ -439,6 +440,9 @@ export default {
|
|
439
440
|
getRealKeyData,
|
440
441
|
getConfigByNameAsync,
|
441
442
|
getConfigByName,
|
443
|
+
storePaneSize (treeSize) {
|
444
|
+
localStorage.setItem('CURD::' + this.xTreeConfigName + '::TreeSize', treeSize[0].size)
|
445
|
+
},
|
442
446
|
customEvent (func, data) {
|
443
447
|
this.$emit(func, data)
|
444
448
|
},
|
@@ -456,14 +460,14 @@ export default {
|
|
456
460
|
|
457
461
|
// 遍历 rows 的每一项,提取符合条件的数据
|
458
462
|
rows.forEach(row => {
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
463
|
+
const itemResult = {}
|
464
|
+
Object.keys(row).forEach(key => {
|
465
|
+
if (key.startsWith(prefix)) {
|
466
|
+
const newKey = key.slice(prefix.length) // 去掉前缀
|
467
|
+
itemResult[newKey] = row[key] // 添加到结果对象中
|
468
|
+
}
|
469
|
+
})
|
470
|
+
result.push(itemResult) // 将处理后的项添加到结果数组中
|
467
471
|
})
|
468
472
|
|
469
473
|
return result // 返回去掉前缀后的对象数组
|
@@ -471,17 +475,17 @@ export default {
|
|
471
475
|
|
472
476
|
// 给数据区域添加主表数据,给的数据没有主表别名,放着时添加主表别名
|
473
477
|
pushPrimaryData (rows) {
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
})
|
481
|
-
return itemResult // 返回添加了主表别名的数据
|
478
|
+
const alias = this.realQueryConfig.tableAliasName // 获取主表的别名
|
479
|
+
const prefix = `${alias}_` // 构建前缀
|
480
|
+
const result = rows.map(row => {
|
481
|
+
const itemResult = {}
|
482
|
+
Object.keys(row).forEach(key => {
|
483
|
+
itemResult[prefix + key] = row[key] // 复制原始数据
|
482
484
|
})
|
483
|
-
//
|
484
|
-
|
485
|
+
return itemResult // 返回添加了主表别名的数据
|
486
|
+
})
|
487
|
+
// 把结果添加到数据区
|
488
|
+
this.getTableData().push(...result)
|
485
489
|
},
|
486
490
|
|
487
491
|
// 设置固定查询条件,主表别名自动带
|
@@ -852,7 +856,7 @@ export default {
|
|
852
856
|
* 设置表格数据
|
853
857
|
*/
|
854
858
|
setTableData (data) {
|
855
|
-
|
859
|
+
this.$refs.xTable.setTableData(data)
|
856
860
|
},
|
857
861
|
/**
|
858
862
|
* 表单本地提交
|
@@ -943,3 +947,27 @@ export default {
|
|
943
947
|
margin-bottom: 12px;
|
944
948
|
}
|
945
949
|
</style>
|
950
|
+
<style>
|
951
|
+
|
952
|
+
.splitpanes.default-theme .splitpanes__splitter {
|
953
|
+
border: 0;
|
954
|
+
width: 1rem;
|
955
|
+
position: relative;
|
956
|
+
|
957
|
+
&:before {
|
958
|
+
content: '';
|
959
|
+
position: absolute;
|
960
|
+
left: 50%;
|
961
|
+
top: 50%;
|
962
|
+
transform: translate(-50%, -50%);
|
963
|
+
width: 2px;
|
964
|
+
height: 30px;
|
965
|
+
border-radius: 1px;
|
966
|
+
}
|
967
|
+
}
|
968
|
+
|
969
|
+
.splitpanes.default-theme .splitpanes__pane {
|
970
|
+
overflow: visible;
|
971
|
+
background-color: transparent;
|
972
|
+
}
|
973
|
+
</style>
|
@@ -4,11 +4,12 @@
|
|
4
4
|
title="示例表单"
|
5
5
|
:queryParamsName="queryParamsName"
|
6
6
|
:fixedAddForm="fixedAddForm"
|
7
|
+
:x-tree-config-name="xTreeConfigName"
|
7
8
|
:externalSelectedRowKeys="selectedKeys"
|
8
9
|
@action="action"
|
9
10
|
@selectRow="selectRow"
|
10
11
|
@columnClick="columnClick"
|
11
|
-
serviceName="af-
|
12
|
+
serviceName="af-revenue"
|
12
13
|
ref="xFormTable">
|
13
14
|
</x-form-table>
|
14
15
|
</a-card>
|
@@ -26,7 +27,9 @@ export default {
|
|
26
27
|
data () {
|
27
28
|
return {
|
28
29
|
// 查询配置文件名
|
29
|
-
queryParamsName: '
|
30
|
+
queryParamsName: 'address_management',
|
31
|
+
// 查询配置左侧tree
|
32
|
+
xTreeConfigName: 'addressType',
|
30
33
|
// 新增表单固定值
|
31
34
|
fixedAddForm: {},
|
32
35
|
// 是否显示详情抽屉
|
@@ -221,7 +221,7 @@ export default {
|
|
221
221
|
this.expandedKeys = this.expandedKeys.filter(item => item !== node[this.replaceFields.key])
|
222
222
|
},
|
223
223
|
highlightKeyword (label, keyword) {
|
224
|
-
const maxLen =
|
224
|
+
const maxLen = 12
|
225
225
|
|
226
226
|
if (!keyword) {
|
227
227
|
return maxLen && label.length > maxLen ? label.substring(0, maxLen) + '...' : label
|
@@ -14,9 +14,9 @@
|
|
14
14
|
>
|
15
15
|
<a-select-option v-for="item of resListCp" :key="item.value" :value="item.value">{{ item.label }}</a-select-option>
|
16
16
|
</a-select>
|
17
|
-
<!-- <template v-if="this.modeType !== 'readonly' && this.resId !== -1">-->
|
18
|
-
<!-- <a-button icon="plus" @click="addRes"/>-->
|
19
|
-
<!-- </template>-->
|
17
|
+
<!-- <template v-if="this.modeType !== 'readonly' && this.resId !== -1">-->
|
18
|
+
<!-- <a-button icon="plus" @click="addRes"/>-->
|
19
|
+
<!-- </template>-->
|
20
20
|
</template>
|
21
21
|
<a-radio-group
|
22
22
|
v-show="showModeChoose"
|
@@ -32,15 +32,15 @@
|
|
32
32
|
<a-col class="editor-action">
|
33
33
|
<a-space>
|
34
34
|
<template v-if="this.modeType !== 'readonly'">
|
35
|
-
<!-- <a-button-->
|
36
|
-
<!-- type="primary"-->
|
37
|
-
<!-- v-if = "userTemplateVisible"-->
|
38
|
-
<!-- @click="useTemplateData"-->
|
39
|
-
<!-- >-->
|
40
|
-
<!-- 使用-->
|
41
|
-
<!-- </a-button>-->
|
35
|
+
<!-- <a-button-->
|
36
|
+
<!-- type="primary"-->
|
37
|
+
<!-- v-if = "userTemplateVisible"-->
|
38
|
+
<!-- @click="useTemplateData"-->
|
39
|
+
<!-- >-->
|
40
|
+
<!-- 使用-->
|
41
|
+
<!-- </a-button>-->
|
42
42
|
<a-button type="primary" @click="Recording" v-if="canRecord" v-model="recording">
|
43
|
-
{{recording? '停止' : '录音'}}
|
43
|
+
{{ recording? '停止' : '录音' }}
|
44
44
|
</a-button>
|
45
45
|
<a-button type="primary" @click="openRenameModal" v-if="this.resId !== -1">
|
46
46
|
重命名
|
@@ -78,7 +78,7 @@
|
|
78
78
|
<a-modal
|
79
79
|
title="保存"
|
80
80
|
:visible="saveVisible"
|
81
|
-
:confirm-loading
|
81
|
+
:confirm-loading="false"
|
82
82
|
@ok="handleSaveConfirm"
|
83
83
|
@cancel="saveVisible = false"
|
84
84
|
>
|
@@ -88,6 +88,7 @@ routerResource.XReportView = () => import('@vue2-client/pages/XReportView')
|
|
88
88
|
routerResource.XReportGrid = () => import('@vue2-client/base-client/components/common/XReportGrid/XReportDemo')
|
89
89
|
|
90
90
|
routerResource.XTab = () => import('@vue2-client/base-client/components/common/XTab/XTabDemo')
|
91
|
+
routerResource.addressManage = () => import('@vue2-client/base-client/components/common/XFormTable/demo.vue')
|
91
92
|
|
92
93
|
// 基础路由组件注册
|
93
94
|
const routerMap = {
|
package/vue.config.js
CHANGED
@@ -11,11 +11,11 @@ const productionGzipExtensions = ['js', 'css']
|
|
11
11
|
const isProd = process.env.NODE_ENV === 'production'
|
12
12
|
|
13
13
|
// v4 产品演示
|
14
|
-
const v3Server = 'http://
|
14
|
+
const v3Server = 'http://123.180.154.5:31467'
|
15
15
|
// const gateway = 'http://192.168.50.67:31467'
|
16
16
|
// const testUpload = 'http://123.60.214.109:8406'
|
17
17
|
const OSSServerDev = 'http://192.168.50.67:30351'
|
18
|
-
const revenue = 'http://
|
18
|
+
const revenue = 'http://123.180.154.5:31467'
|
19
19
|
// const revenue = 'http://127.0.0.1:31467'
|
20
20
|
// const OSSServerProd = 'http://192.168.50.67:31351'
|
21
21
|
// const testUploadLocal = 'http://127.0.0.1:9001'
|