vue2-client 1.9.45 → 1.9.48
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/package.json +1 -1
- package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +105 -15
- package/src/base-client/components/common/XAddNativeForm/demo.vue +2 -1
- package/src/base-client/components/common/XForm/XFormItem.vue +22 -0
- package/src/base-client/components/common/XFormGroup/demo.vue +40 -40
- package/src/base-client/components/common/XFormTable/XFormTable.vue +8 -0
- package/src/base-client/components/common/XFormTable/demo.vue +0 -1
- package/src/base-client/components/common/XReport/index.js +3 -3
- package/src/base-client/components/common/XTable/XTable.vue +26 -2
- package/src/pages/DynamicStatistics/FavoriteList.vue +50 -51
- package/src/pages/NewDynamicStatistics/FavoriteList.vue +0 -1
- package/src/router/async/router.map.js +2 -2
- package/src/router/guards.js +0 -1
- package/src/services/api/entity.js +18 -18
- package/src/services/api/workFlow.js +63 -63
- package/src/utils/formatter.js +3 -9
- package/src/utils/request.js +1 -1
- package/src/utils/util.js +29 -0
- package/src/utils/waterMark.js +31 -31
- package/vue.config.js +3 -0
package/package.json
CHANGED
|
@@ -76,25 +76,57 @@
|
|
|
76
76
|
/>
|
|
77
77
|
</a-card>
|
|
78
78
|
</a-row>
|
|
79
|
+
<a-row :gutter="16" v-for="(item, key) in childTableData" :key="'childTableRow' + key">
|
|
80
|
+
<a-card :title="item.name" :bordered="false" size="small">
|
|
81
|
+
<x-form-table
|
|
82
|
+
:key="'childTable_' + item.model"
|
|
83
|
+
:title="item.name"
|
|
84
|
+
:queryParamsName="item.childTableConfigName"
|
|
85
|
+
:localEditMode="true"
|
|
86
|
+
:fixed-query-form="childTableFixedQueryForm(item)"
|
|
87
|
+
:service-name="serviceName"
|
|
88
|
+
:ref="'childXFormTable_' + item.model">
|
|
89
|
+
</x-form-table>
|
|
90
|
+
</a-card>
|
|
91
|
+
</a-row>
|
|
79
92
|
<a-row type="flex" justify="end">
|
|
80
93
|
<a-button v-if="showSubmitBtn" :loading="loading" type="primary" @click="onSubmit()">提交</a-button>
|
|
81
94
|
</a-row>
|
|
82
95
|
</a-form-model>
|
|
96
|
+
<a-modal
|
|
97
|
+
v-model="listSelectData.show"
|
|
98
|
+
:closable="false"
|
|
99
|
+
:centered="true"
|
|
100
|
+
:destroyOnClose="true"
|
|
101
|
+
@ok="listSelectHandle"
|
|
102
|
+
width="75vw"
|
|
103
|
+
okText="确认"
|
|
104
|
+
>
|
|
105
|
+
<x-form-table
|
|
106
|
+
title="请选择一条数据"
|
|
107
|
+
:queryParamsName="listSelectData.configName"
|
|
108
|
+
:listSelectMode="true"
|
|
109
|
+
:service-name="serviceName"
|
|
110
|
+
ref="listSelectTable">
|
|
111
|
+
</x-form-table>
|
|
112
|
+
</a-modal>
|
|
83
113
|
</div>
|
|
84
114
|
</template>
|
|
85
115
|
<script>
|
|
86
116
|
import XFormItem from '@vue2-client/base-client/components/common/XForm/XFormItem'
|
|
87
|
-
import { formatDate } from '@vue2-client/utils/util'
|
|
117
|
+
import { formatDate, setDataByRealKey } from '@vue2-client/utils/util'
|
|
88
118
|
import { mapState } from 'vuex'
|
|
89
119
|
import { addOrModify, getConfigByName, getConfigByNameAsync, runLogic } from '@vue2-client/services/api/common'
|
|
90
120
|
import { checkIdNumber, REG_EMAIL, REG_LANDLINE, REG_PHONE } from '@vue2-client/utils/reg'
|
|
91
121
|
import moment from 'moment/moment'
|
|
92
122
|
import { executeStrFunction } from '@vue2-client/utils/runEvalFunction'
|
|
123
|
+
import util from '@/utils/util'
|
|
93
124
|
|
|
94
125
|
export default {
|
|
95
126
|
name: 'XAddNativeForm',
|
|
96
127
|
components: {
|
|
97
|
-
XFormItem
|
|
128
|
+
XFormItem,
|
|
129
|
+
XFormTable: () => import('@vue2-client/base-client/components/common/XFormTable/XFormTable.vue')
|
|
98
130
|
},
|
|
99
131
|
props: {},
|
|
100
132
|
data () {
|
|
@@ -130,8 +162,6 @@ export default {
|
|
|
130
162
|
rules: {},
|
|
131
163
|
// 调用logic获取数据源的追加参数
|
|
132
164
|
getDataParams: {},
|
|
133
|
-
// 是否处理表单key
|
|
134
|
-
isKeyHandle: true,
|
|
135
165
|
// 动态简易表单集合
|
|
136
166
|
simpleFormJsonData: {},
|
|
137
167
|
// 待修改的数据集
|
|
@@ -139,7 +169,13 @@ export default {
|
|
|
139
169
|
// 当前环境
|
|
140
170
|
env: 'prod',
|
|
141
171
|
// 表单模式 horizontal | vertical | inline
|
|
142
|
-
layout: 'horizontal'
|
|
172
|
+
layout: 'horizontal',
|
|
173
|
+
// 列表选择框数据暂存
|
|
174
|
+
listSelectData: {
|
|
175
|
+
show: false,
|
|
176
|
+
configName: '',
|
|
177
|
+
dataChangeFunc: ''
|
|
178
|
+
}
|
|
143
179
|
}
|
|
144
180
|
},
|
|
145
181
|
computed: {
|
|
@@ -167,6 +203,12 @@ export default {
|
|
|
167
203
|
}
|
|
168
204
|
)
|
|
169
205
|
},
|
|
206
|
+
// 过滤出用于子表数据新增/修改场景的表单项
|
|
207
|
+
childTableData: function () {
|
|
208
|
+
return this.formItems.filter((item) => {
|
|
209
|
+
return item.type === 'childTable'
|
|
210
|
+
})
|
|
211
|
+
},
|
|
170
212
|
// 过滤出用于静默新增场景的表单项
|
|
171
213
|
silenceAddJsonData: function () {
|
|
172
214
|
return this.formItems.filter(function (item) {
|
|
@@ -203,7 +245,7 @@ export default {
|
|
|
203
245
|
init (params) {
|
|
204
246
|
const {
|
|
205
247
|
configName, configContent, formItems, formJson, viewMode, isHandleFormKey = true,
|
|
206
|
-
showSubmitBtn = true, serviceName,
|
|
248
|
+
showSubmitBtn = true, serviceName,
|
|
207
249
|
modifyModelData = {}, businessType, title, fixedAddForm = {}, getDataParams = {},
|
|
208
250
|
simpleFormJsonData = {}, env = 'prod', layout, xAddFormLayout = 'horizontal'
|
|
209
251
|
} = params
|
|
@@ -226,9 +268,8 @@ export default {
|
|
|
226
268
|
this.getDataParams = getDataParams
|
|
227
269
|
this.simpleFormJsonData = simpleFormJsonData
|
|
228
270
|
this.env = env
|
|
229
|
-
this.isKeyHandle = isKeyHandle
|
|
230
271
|
// 如果 fixedAddForm 有 selected_id 值,并且设置了处理表单key值,则多给 selected_id 加前缀 避免处理错误
|
|
231
|
-
if (fixedAddForm.selected_id && this.
|
|
272
|
+
if (fixedAddForm.selected_id && this.isHandleFormKey) {
|
|
232
273
|
fixedAddForm._selected_id = fixedAddForm.selected_id
|
|
233
274
|
delete fixedAddForm.selected_id
|
|
234
275
|
}
|
|
@@ -553,16 +594,29 @@ export default {
|
|
|
553
594
|
async onSubmit () {
|
|
554
595
|
const valid = await this.validateForm()
|
|
555
596
|
if (!valid) return false
|
|
597
|
+
if (this.viewMode) {
|
|
598
|
+
this.$message.info('预览模式禁止新增和修改')
|
|
599
|
+
return false
|
|
600
|
+
}
|
|
556
601
|
this.loading = true
|
|
557
602
|
const requestForm = this.prepareForm()
|
|
558
603
|
await this.appendSilenceAddFields(requestForm)
|
|
559
|
-
|
|
560
604
|
const realForm = this.handleFormKeys(requestForm)
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
605
|
+
// 增加子表数据
|
|
606
|
+
if (this.childTableData.length > 0) {
|
|
607
|
+
for (const item of this.childTableData) {
|
|
608
|
+
const childModel = item.model
|
|
609
|
+
const childData = this.$refs['childXFormTable_' + item.model][0].getTableData()
|
|
610
|
+
for (let i = 0; i < childData.length; i++) {
|
|
611
|
+
childData[i] = this.handleFormKeys(childData[i])
|
|
612
|
+
// 外键不需要带表别名,所以此处放到表单处理后赋值
|
|
613
|
+
if (realForm.id) {
|
|
614
|
+
childData[i][item.childTableForeignKeyName] = realForm.id
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
realForm[childModel] = childData
|
|
618
|
+
}
|
|
564
619
|
}
|
|
565
|
-
|
|
566
620
|
if (this.$listeners.onSubmit) {
|
|
567
621
|
// 交由父级处理
|
|
568
622
|
this.$emit('onSubmit', {
|
|
@@ -610,6 +664,15 @@ export default {
|
|
|
610
664
|
})
|
|
611
665
|
},
|
|
612
666
|
|
|
667
|
+
childTableFixedQueryForm (item) {
|
|
668
|
+
if (this.modifyModelData?.primaryKeyData) {
|
|
669
|
+
const fixedForm = {}
|
|
670
|
+
fixedForm[item.childTableForeignKeyName] = Object.values(this.modifyModelData.primaryKeyData)[0]
|
|
671
|
+
return fixedForm
|
|
672
|
+
}
|
|
673
|
+
return null
|
|
674
|
+
},
|
|
675
|
+
|
|
613
676
|
prepareForm () {
|
|
614
677
|
const form = { ...this.form }
|
|
615
678
|
for (const key of Object.keys(form)) {
|
|
@@ -667,7 +730,7 @@ export default {
|
|
|
667
730
|
}
|
|
668
731
|
realForm[extraFormKey][realKey] = value
|
|
669
732
|
} else {
|
|
670
|
-
const realKey = this.
|
|
733
|
+
const realKey = this.isHandleFormKey ? this.getRealKey(key) : key
|
|
671
734
|
// 如果发生重名,不覆盖,把key的别名带上
|
|
672
735
|
if (realForm[realKey]) {
|
|
673
736
|
realForm[key] = value
|
|
@@ -722,7 +785,7 @@ export default {
|
|
|
722
785
|
}
|
|
723
786
|
// 对动态简易表单项特殊处理
|
|
724
787
|
for (const key in modifyModelData.data) {
|
|
725
|
-
const realKey = this.
|
|
788
|
+
const realKey = this.isHandleFormKey ? this.getRealKey(key) : key
|
|
726
789
|
if (this.simpleFormJsonData[realKey]) {
|
|
727
790
|
const extraForm = JSON.parse(modifyModelData.data[key])
|
|
728
791
|
for (const key in extraForm) {
|
|
@@ -766,10 +829,37 @@ export default {
|
|
|
766
829
|
}
|
|
767
830
|
}
|
|
768
831
|
},
|
|
832
|
+
async listSelectHandle () {
|
|
833
|
+
if (this.$refs?.listSelectTable?.table_selectedRows?.length) {
|
|
834
|
+
// 如果配置了自定义函数
|
|
835
|
+
if (this.listSelectData.dataChangeFunc) {
|
|
836
|
+
await executeStrFunction(this.listSelectData.dataChangeFunc, [this.form, this.setForm, {
|
|
837
|
+
...this.attr,
|
|
838
|
+
selectRows: this.$refs.listSelectTable.table_selectedRows
|
|
839
|
+
}, util, this.mode, runLogic, getConfigByNameAsync])
|
|
840
|
+
} else {
|
|
841
|
+
if (this.$refs?.listSelectTable?.table_selectedRows?.length !== 1) {
|
|
842
|
+
this.$message.warning('请选择一条数据')
|
|
843
|
+
return
|
|
844
|
+
}
|
|
845
|
+
setDataByRealKey(this.form, this.$refs.listSelectTable.table_selectedRows[0])
|
|
846
|
+
}
|
|
847
|
+
this.listSelectData.show = false
|
|
848
|
+
} else {
|
|
849
|
+
this.$message.warning('请选择一条数据')
|
|
850
|
+
}
|
|
851
|
+
},
|
|
769
852
|
setForm (obj) {
|
|
770
853
|
this.form = Object.assign(this.form, obj)
|
|
771
854
|
},
|
|
772
855
|
emitFunc (func, data) {
|
|
856
|
+
// 打开列表选择框逻辑
|
|
857
|
+
if (func === 'openSelectCRUDFrom') {
|
|
858
|
+
this.listSelectData.show = true
|
|
859
|
+
this.listSelectData.configName = data.keyName.split('@')[data.keyName.split('@').length - 1]
|
|
860
|
+
this.listSelectData.dataChangeFunc = data.dataChangeFunc
|
|
861
|
+
return
|
|
862
|
+
}
|
|
773
863
|
if (data?.model) {
|
|
774
864
|
this.$emit(func, data, this.form[data.model])
|
|
775
865
|
} else {
|
|
@@ -6,7 +6,8 @@ export default {
|
|
|
6
6
|
name: 'Demo',
|
|
7
7
|
components: { XAddNativeForm },
|
|
8
8
|
mounted () {
|
|
9
|
-
getConfigByNameAsync('
|
|
9
|
+
getConfigByNameAsync('formtestForm', 'af-system').then(res => {
|
|
10
|
+
console.log('===res', res)
|
|
10
11
|
this.$refs.xAddFrom.init(res)
|
|
11
12
|
})
|
|
12
13
|
},
|
|
@@ -487,6 +487,28 @@
|
|
|
487
487
|
ref="xTreeSelect">
|
|
488
488
|
</x-tree-select>
|
|
489
489
|
</x-form-col>
|
|
490
|
+
<!-- 列表选择框 -->
|
|
491
|
+
<x-form-col
|
|
492
|
+
v-else-if="attr.type === 'listSelect' && show"
|
|
493
|
+
:flex="attr.flex">
|
|
494
|
+
<a-form-model-item
|
|
495
|
+
:ref="attr.model"
|
|
496
|
+
:label="showLabel?attr.name:undefined"
|
|
497
|
+
:labelCol="layout === 'inline' && attr.occupyCol ? labelAndWrapperCol[attr.occupyCol].labelCol:undefined"
|
|
498
|
+
:wrapperCol="layout === 'inline'&& attr.occupyCol ? labelAndWrapperCol[attr.occupyCol].wrapperCol:undefined"
|
|
499
|
+
:style="layout === 'inline'&& attr.occupyCol && attr.occupyCol > 1? {width:`calc(100% - ${attr.occupyCol * 1.533}rem)`}:{}"
|
|
500
|
+
:prop="attr.prop ? attr.prop : attr.model">
|
|
501
|
+
<!-- 如果配置了后置按钮插槽 -->
|
|
502
|
+
<a-input
|
|
503
|
+
v-model="form[attr.model]"
|
|
504
|
+
@click="emitFunc('openSelectCRUDFrom',attr)"
|
|
505
|
+
:whitespace="true"
|
|
506
|
+
:read-only="true"
|
|
507
|
+
style="width:100%"
|
|
508
|
+
:placeholder="attr.placeholder ? attr.placeholder : '请选择'+attr.name.replace(/\s*/g, '')"
|
|
509
|
+
:ref="`${attr.model}listSelect`"/>
|
|
510
|
+
</a-form-model-item>
|
|
511
|
+
</x-form-col>
|
|
490
512
|
<!-- 评分框 -->
|
|
491
513
|
<x-form-col
|
|
492
514
|
v-else-if="attr.type === 'rate' && show"
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import XFormGroup from '@vue2-client/base-client/components/common/XFormGroup/XFormGroup.vue'
|
|
3
|
-
import { getConfigByNameAsync } from '@vue2-client/services/api/common'
|
|
4
|
-
|
|
5
|
-
export default {
|
|
6
|
-
name: 'Demo',
|
|
7
|
-
components: { XFormGroup },
|
|
8
|
-
created () {
|
|
9
|
-
getConfigByNameAsync('addUserGeneralInfoFrom', 'af-revenue').then(res => {
|
|
10
|
-
this.$refs.xFormGroupDemo.init({
|
|
11
|
-
...res,
|
|
12
|
-
serviceName: 'af-revenue',
|
|
13
|
-
showLeftTab: true,
|
|
14
|
-
})
|
|
15
|
-
})
|
|
16
|
-
},
|
|
17
|
-
methods: {
|
|
18
|
-
submitForm () {
|
|
19
|
-
this.$refs.xFormGroupDemo.onSubmit().then(res => {
|
|
20
|
-
console.log('所有表单的结果', res)
|
|
21
|
-
})
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
</script>
|
|
26
|
-
|
|
27
|
-
<template>
|
|
28
|
-
<a-modal
|
|
29
|
-
:visible="true"
|
|
30
|
-
:bodyStyle="{height:'70vh'}"
|
|
31
|
-
title="测试表单组"
|
|
32
|
-
@ok="submitForm"
|
|
33
|
-
width="85vw">
|
|
34
|
-
<x-form-group ref="xFormGroupDemo"></x-form-group>
|
|
35
|
-
</a-modal>
|
|
36
|
-
</template>
|
|
37
|
-
|
|
38
|
-
<style scoped lang="less">
|
|
39
|
-
|
|
40
|
-
</style>
|
|
1
|
+
<script>
|
|
2
|
+
import XFormGroup from '@vue2-client/base-client/components/common/XFormGroup/XFormGroup.vue'
|
|
3
|
+
import { getConfigByNameAsync } from '@vue2-client/services/api/common'
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
name: 'Demo',
|
|
7
|
+
components: { XFormGroup },
|
|
8
|
+
created () {
|
|
9
|
+
getConfigByNameAsync('addUserGeneralInfoFrom', 'af-revenue').then(res => {
|
|
10
|
+
this.$refs.xFormGroupDemo.init({
|
|
11
|
+
...res,
|
|
12
|
+
serviceName: 'af-revenue',
|
|
13
|
+
showLeftTab: true,
|
|
14
|
+
})
|
|
15
|
+
})
|
|
16
|
+
},
|
|
17
|
+
methods: {
|
|
18
|
+
submitForm () {
|
|
19
|
+
this.$refs.xFormGroupDemo.onSubmit().then(res => {
|
|
20
|
+
console.log('所有表单的结果', res)
|
|
21
|
+
})
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<template>
|
|
28
|
+
<a-modal
|
|
29
|
+
:visible="true"
|
|
30
|
+
:bodyStyle="{height:'70vh'}"
|
|
31
|
+
title="测试表单组"
|
|
32
|
+
@ok="submitForm"
|
|
33
|
+
width="85vw">
|
|
34
|
+
<x-form-group ref="xFormGroupDemo"></x-form-group>
|
|
35
|
+
</a-modal>
|
|
36
|
+
</template>
|
|
37
|
+
|
|
38
|
+
<style scoped lang="less">
|
|
39
|
+
|
|
40
|
+
</style>
|
|
@@ -229,6 +229,13 @@ export default {
|
|
|
229
229
|
return false
|
|
230
230
|
}
|
|
231
231
|
},
|
|
232
|
+
// 是否作为选择列表
|
|
233
|
+
listSelectMode: {
|
|
234
|
+
type: Boolean,
|
|
235
|
+
default: () => {
|
|
236
|
+
return false
|
|
237
|
+
}
|
|
238
|
+
},
|
|
232
239
|
// 环境
|
|
233
240
|
env: {
|
|
234
241
|
type: String,
|
|
@@ -384,6 +391,7 @@ export default {
|
|
|
384
391
|
title: this.title,
|
|
385
392
|
viewMode: this.viewMode,
|
|
386
393
|
localEditMode: this.localEditMode,
|
|
394
|
+
listSelectMode: this.listSelectMode,
|
|
387
395
|
tableSummaryMap: res.tableSummaryMap,
|
|
388
396
|
serviceName: this.serviceName,
|
|
389
397
|
env: this.env,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import XReport from './XReport'
|
|
2
|
-
|
|
3
|
-
export default XReport
|
|
1
|
+
import XReport from './XReport'
|
|
2
|
+
|
|
3
|
+
export default XReport
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div v-show="tableColumns.length > 0">
|
|
3
|
-
<a-row :gutter="48">
|
|
4
|
-
<a-col>
|
|
3
|
+
<a-row :gutter="48" v-show="shouOperaBtn || showRightTools">
|
|
4
|
+
<a-col v-show="shouOperaBtn">
|
|
5
5
|
<span :style="{ float: 'left', overflow: 'hidden', marginBottom: '8px' }">
|
|
6
6
|
<a-space>
|
|
7
7
|
<slot name="leftButton" :selectedRowKeys="selectedRowKeys" :selectedRows="selectedRows"></slot>
|
|
@@ -304,8 +304,12 @@ export default {
|
|
|
304
304
|
localEditMode: false,
|
|
305
305
|
// 本地编辑模式所用数据源
|
|
306
306
|
localEditModeDataSource: [],
|
|
307
|
+
// 本地编辑模式数据源是否已由外部加载
|
|
308
|
+
isLocalDataSourceLoadedExternally: false,
|
|
307
309
|
// 是否展示右侧工具栏
|
|
308
310
|
showRightTools: true,
|
|
311
|
+
// 是否展示左边按钮栏
|
|
312
|
+
shouOperaBtn: true,
|
|
309
313
|
// 加载数据方法 必须为 Promise 对象
|
|
310
314
|
loadData: parameter => {
|
|
311
315
|
// 取到表格携带的表单参数
|
|
@@ -563,6 +567,7 @@ export default {
|
|
|
563
567
|
customTableSummaryArray = [],
|
|
564
568
|
viewMode,
|
|
565
569
|
localEditMode,
|
|
570
|
+
listSelectMode,
|
|
566
571
|
formItems,
|
|
567
572
|
env = 'prod',
|
|
568
573
|
createdQuery = true,
|
|
@@ -609,10 +614,16 @@ export default {
|
|
|
609
614
|
this.primaryKey = primaryKey
|
|
610
615
|
this.buttonState = buttonState
|
|
611
616
|
if (this.localEditMode) {
|
|
617
|
+
this.localEditModeDataSource = []
|
|
618
|
+
this.isLocalDataSourceLoadedExternally = false
|
|
612
619
|
this.buttonState.import = false
|
|
613
620
|
this.buttonState.export = false
|
|
614
621
|
this.showRightTools = false
|
|
615
622
|
}
|
|
623
|
+
if (listSelectMode) {
|
|
624
|
+
this.showRightTools = false
|
|
625
|
+
this.shouOperaBtn = false
|
|
626
|
+
}
|
|
616
627
|
this.buttonPermissions = buttonPermissions
|
|
617
628
|
this.editButtonStateData = editButtonStateData
|
|
618
629
|
this.title = title
|
|
@@ -670,6 +681,19 @@ export default {
|
|
|
670
681
|
async loadTableData (requestParameters) {
|
|
671
682
|
let result
|
|
672
683
|
if (this.localEditMode) {
|
|
684
|
+
if (!this.isLocalDataSourceLoadedExternally && requestParameters?.conditionParams && Object.keys(requestParameters?.conditionParams).length > 0) {
|
|
685
|
+
const result = await query(Object.assign(requestParameters, { userId: this.currUser?.id }),
|
|
686
|
+
this.serviceName, this.env === 'dev')
|
|
687
|
+
if (result.data) {
|
|
688
|
+
let no = 0
|
|
689
|
+
this.localEditModeDataSource = result.data.map(item => {
|
|
690
|
+
item['序号'] = no
|
|
691
|
+
no++
|
|
692
|
+
return item
|
|
693
|
+
})
|
|
694
|
+
}
|
|
695
|
+
this.isLocalDataSourceLoadedExternally = true
|
|
696
|
+
}
|
|
673
697
|
result = new Promise((resolve) => {
|
|
674
698
|
resolve({
|
|
675
699
|
data: this.localEditModeDataSource
|
|
@@ -1,51 +1,50 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<a-list v-show="!loading" size="small" :data-source="data">
|
|
4
|
-
<a-list-item slot="renderItem" slot-scope="item">
|
|
5
|
-
<div>
|
|
6
|
-
<p><a @click="$emit('openFavorites', item.uuid)">{{ item.question }} </a></p>
|
|
7
|
-
<p>{{ item.date }}</p>
|
|
8
|
-
</div>
|
|
9
|
-
<a class="delete_item">
|
|
10
|
-
<a-icon type="close" @click="$emit('saveToFavorites', item.uuid)"/>
|
|
11
|
-
</a>
|
|
12
|
-
</a-list-item>
|
|
13
|
-
</a-list>
|
|
14
|
-
</div>
|
|
15
|
-
</template>
|
|
16
|
-
|
|
17
|
-
<script>
|
|
18
|
-
import { indexedDB } from '@vue2-client/utils/indexedDB'
|
|
19
|
-
|
|
20
|
-
export default {
|
|
21
|
-
name: 'FavoriteList',
|
|
22
|
-
data () {
|
|
23
|
-
return {
|
|
24
|
-
data: [],
|
|
25
|
-
loading: false
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
mounted () {
|
|
29
|
-
this.loadData()
|
|
30
|
-
},
|
|
31
|
-
methods: {
|
|
32
|
-
loadData () {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<a-list v-show="!loading" size="small" :data-source="data">
|
|
4
|
+
<a-list-item slot="renderItem" slot-scope="item">
|
|
5
|
+
<div>
|
|
6
|
+
<p><a @click="$emit('openFavorites', item.uuid)">{{ item.question }} </a></p>
|
|
7
|
+
<p>{{ item.date }}</p>
|
|
8
|
+
</div>
|
|
9
|
+
<a class="delete_item">
|
|
10
|
+
<a-icon type="close" @click="$emit('saveToFavorites', item.uuid)"/>
|
|
11
|
+
</a>
|
|
12
|
+
</a-list-item>
|
|
13
|
+
</a-list>
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script>
|
|
18
|
+
import { indexedDB } from '@vue2-client/utils/indexedDB'
|
|
19
|
+
|
|
20
|
+
export default {
|
|
21
|
+
name: 'FavoriteList',
|
|
22
|
+
data () {
|
|
23
|
+
return {
|
|
24
|
+
data: [],
|
|
25
|
+
loading: false
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
mounted () {
|
|
29
|
+
this.loadData()
|
|
30
|
+
},
|
|
31
|
+
methods: {
|
|
32
|
+
loadData () {
|
|
33
|
+
indexedDB.getAll((data) => {
|
|
34
|
+
const realData = data.filter(item => item.data && item.data.uuid)
|
|
35
|
+
.map(item => item.data)
|
|
36
|
+
this.data = realData
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
</script>
|
|
42
|
+
<style lang="less" scoped>
|
|
43
|
+
.delete_item {
|
|
44
|
+
margin-left: 8px;
|
|
45
|
+
color: #333;
|
|
46
|
+
}
|
|
47
|
+
p {
|
|
48
|
+
margin: 0
|
|
49
|
+
}
|
|
50
|
+
</style>
|
|
@@ -83,9 +83,9 @@ routerResource.example = {
|
|
|
83
83
|
{
|
|
84
84
|
path: 'default',
|
|
85
85
|
name: '示例页面',
|
|
86
|
-
|
|
86
|
+
component: () => import('@vue2-client/base-client/components/common/XAddNativeForm/demo.vue'),
|
|
87
87
|
// component: () => import('@vue2-client/base-client/components/common/XReport/XReportDemo.vue'),
|
|
88
|
-
component: () => import('@vue2-client/base-client/components/common/XFormTable/demo.vue'),
|
|
88
|
+
// component: () => import('@vue2-client/base-client/components/common/XFormTable/demo.vue'),
|
|
89
89
|
// component: () => import('@vue2-client/base-client/components/common/XTab/XTabDemo.vue'),
|
|
90
90
|
// component: () => import('@vue2-client/base-client/components/common/XReportGrid/XReportDemo.vue'),
|
|
91
91
|
// component: () => import('@vue2-client/pages/WorkflowDetail/WorkFlowDemo.vue'),
|
package/src/router/guards.js
CHANGED
|
@@ -169,7 +169,6 @@ const loginGuard = (to, from, next, options) => {
|
|
|
169
169
|
r: v4LoginData.r
|
|
170
170
|
}
|
|
171
171
|
Vue.$store.commit('account/setLogin', login)
|
|
172
|
-
console.log('Vue.$store.state?.setting?.menuData', JSON.stringify(Vue.$store.state?.setting?.menuData))
|
|
173
172
|
if (!Vue.$store.state?.setting?.menuData || Vue.$store.state?.setting?.menuData?.length === 0) {
|
|
174
173
|
loadRoutes(funcToRouter(v4LoginData.functions))
|
|
175
174
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { post } from '@vue2-client/services/api/restTools'
|
|
2
|
-
|
|
3
|
-
const entityApi = {
|
|
4
|
-
// 根据ID查询数据
|
|
5
|
-
getById: (entityName, id, data = {}, serviceName = process.env.VUE_APP_SYSTEM_NAME) => {
|
|
6
|
-
return post(`/api/${serviceName}/entity/query/${entityName}/${id}`, data)
|
|
7
|
-
},
|
|
8
|
-
// 根据ID集合查询所有数据
|
|
9
|
-
findAllByIds: (entityName, data, serviceName = process.env.VUE_APP_SYSTEM_NAME) => {
|
|
10
|
-
return post(`/api/${serviceName}/entity/query/${entityName}`, data)
|
|
11
|
-
},
|
|
12
|
-
// 查询实体的总数量
|
|
13
|
-
getCount: (entityName, serviceName = process.env.VUE_APP_SYSTEM_NAME) => {
|
|
14
|
-
return post(`/api/${serviceName}/entity/queryCount/${entityName}`, {})
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export { entityApi }
|
|
1
|
+
import { post } from '@vue2-client/services/api/restTools'
|
|
2
|
+
|
|
3
|
+
const entityApi = {
|
|
4
|
+
// 根据ID查询数据
|
|
5
|
+
getById: (entityName, id, data = {}, serviceName = process.env.VUE_APP_SYSTEM_NAME) => {
|
|
6
|
+
return post(`/api/${serviceName}/entity/query/${entityName}/${id}`, data)
|
|
7
|
+
},
|
|
8
|
+
// 根据ID集合查询所有数据
|
|
9
|
+
findAllByIds: (entityName, data, serviceName = process.env.VUE_APP_SYSTEM_NAME) => {
|
|
10
|
+
return post(`/api/${serviceName}/entity/query/${entityName}`, data)
|
|
11
|
+
},
|
|
12
|
+
// 查询实体的总数量
|
|
13
|
+
getCount: (entityName, serviceName = process.env.VUE_APP_SYSTEM_NAME) => {
|
|
14
|
+
return post(`/api/${serviceName}/entity/queryCount/${entityName}`, {})
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { entityApi }
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
// 工单专用api
|
|
2
|
-
const workFlowViewApi = {
|
|
3
|
-
// 查询:获取工作流基本数据
|
|
4
|
-
getWorkFlowBasicInfo: '/logic/getWorkFlowBasicInfo',
|
|
5
|
-
// 保存工作流流程定义
|
|
6
|
-
saveWorkFlowWorkflowDefine: '/logic/saveWorkFlowWorkflowDefine',
|
|
7
|
-
// 获取工作流流程定义
|
|
8
|
-
getWorkFlowDefine: '/logic/getWorkFlowDefine',
|
|
9
|
-
// 获取工作流当前步骤
|
|
10
|
-
getWorkFlowCurrentSubState: '/logic/getWorkFlowCurrentSubState',
|
|
11
|
-
// 保存用户每一步输入的表单内容
|
|
12
|
-
saveWorkFlowStepFormData: '/logic/saveWorkFlowStepFormData',
|
|
13
|
-
// 获取已经完成步骤的用户填写数据
|
|
14
|
-
getWorkFlowCompletedStepData: '/logic/getWorkFlowCompletedStepData',
|
|
15
|
-
// 改变工作流进度
|
|
16
|
-
updateWorkFlowState: '/logic/updateWorkFlowState',
|
|
17
|
-
// 完工确认后更改工作流状态
|
|
18
|
-
afterWorkFlowFinalStepSubmit: '/logic/afterWorkFlowFinalStepSubmit',
|
|
19
|
-
// 获取步骤留言和表单填写人姓名
|
|
20
|
-
getStepNoteAndHandler: '/logic/getStepNoteAndHandler',
|
|
21
|
-
// 更新步骤信息
|
|
22
|
-
updateWorkFlowStepData: '/logic/updateWorkFlowStepData',
|
|
23
|
-
// 保存工作流日志
|
|
24
|
-
saveWorkFlowLog: '/logic/saveWorkFlowLog',
|
|
25
|
-
// 获取工作流日志
|
|
26
|
-
getWorkFlowLog: '/logic/getWorkFlowLog',
|
|
27
|
-
// 获取员工任务详情信息
|
|
28
|
-
getEmployeeTaskDetail: '/logic/getEmployeeTaskDetail',
|
|
29
|
-
// 根据条件查询任务
|
|
30
|
-
getWorkFlowListByCondition: '/logic/getWorkFlowListByCondition',
|
|
31
|
-
// 根据流程名称获取所有步骤名称
|
|
32
|
-
getWorkFlowStepNames: '/logic/getWorkFlowStepNames',
|
|
33
|
-
// 获取工作流任务留言
|
|
34
|
-
getWorkFlowLeaveMessage: '/logic/getWorkFlowLeaveMessage',
|
|
35
|
-
// 更新任务完成时间
|
|
36
|
-
updateWorkFlowCompleteTime: '/logic/updateWorkFlowCompleteTime',
|
|
37
|
-
// 获取任务完成时间更改记录
|
|
38
|
-
getWorkFlowCompleteTimeChange: '/logic/getWorkFlowCompleteTimeChange',
|
|
39
|
-
// 修改工单
|
|
40
|
-
updateWorkFlow: '/logic/updateWorkFlow',
|
|
41
|
-
// 获取工作流流程图设计
|
|
42
|
-
getWorkFlowPaintWorkFlowDefine: '/logic/getWorkFlowPaintWorkFlowDefine',
|
|
43
|
-
// 简单添加字典项
|
|
44
|
-
simpleInsertIntoDictionary: '/logic/simpleInsertIntoDictionary',
|
|
45
|
-
// 删除工作流项目
|
|
46
|
-
deleteWorkFlow: '/logic/deleteWorkFlow',
|
|
47
|
-
// 获取流程分类数据
|
|
48
|
-
getWorkFlowCategoryTree: '/logic/getWorkFlowCategoryTree',
|
|
49
|
-
// 创建任务
|
|
50
|
-
createWorkflowTask: '/logic/createWorkflowTask',
|
|
51
|
-
// 获取部门选择框数据
|
|
52
|
-
getDepartmentList: '/logic/getDepartmentList',
|
|
53
|
-
// 获取人员任务汇总数据
|
|
54
|
-
getEmployeeSummary: '/logic/getEmployeeSummary',
|
|
55
|
-
// 获取逾期任务排行榜
|
|
56
|
-
getOverdueRanking: '/logic/getOverdueRanking',
|
|
57
|
-
// 根据人查询对应的t_workflow_step中字段f_workflow_id的数据组
|
|
58
|
-
getWorkFlowStepWorkFlowId: '/logic/getWorkFlowStepWorkFlowId',
|
|
59
|
-
// 表单提交到下一步
|
|
60
|
-
submitToNextStep: '/logic/submitToNextStep'
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export { workFlowViewApi }
|
|
1
|
+
// 工单专用api
|
|
2
|
+
const workFlowViewApi = {
|
|
3
|
+
// 查询:获取工作流基本数据
|
|
4
|
+
getWorkFlowBasicInfo: '/logic/getWorkFlowBasicInfo',
|
|
5
|
+
// 保存工作流流程定义
|
|
6
|
+
saveWorkFlowWorkflowDefine: '/logic/saveWorkFlowWorkflowDefine',
|
|
7
|
+
// 获取工作流流程定义
|
|
8
|
+
getWorkFlowDefine: '/logic/getWorkFlowDefine',
|
|
9
|
+
// 获取工作流当前步骤
|
|
10
|
+
getWorkFlowCurrentSubState: '/logic/getWorkFlowCurrentSubState',
|
|
11
|
+
// 保存用户每一步输入的表单内容
|
|
12
|
+
saveWorkFlowStepFormData: '/logic/saveWorkFlowStepFormData',
|
|
13
|
+
// 获取已经完成步骤的用户填写数据
|
|
14
|
+
getWorkFlowCompletedStepData: '/logic/getWorkFlowCompletedStepData',
|
|
15
|
+
// 改变工作流进度
|
|
16
|
+
updateWorkFlowState: '/logic/updateWorkFlowState',
|
|
17
|
+
// 完工确认后更改工作流状态
|
|
18
|
+
afterWorkFlowFinalStepSubmit: '/logic/afterWorkFlowFinalStepSubmit',
|
|
19
|
+
// 获取步骤留言和表单填写人姓名
|
|
20
|
+
getStepNoteAndHandler: '/logic/getStepNoteAndHandler',
|
|
21
|
+
// 更新步骤信息
|
|
22
|
+
updateWorkFlowStepData: '/logic/updateWorkFlowStepData',
|
|
23
|
+
// 保存工作流日志
|
|
24
|
+
saveWorkFlowLog: '/logic/saveWorkFlowLog',
|
|
25
|
+
// 获取工作流日志
|
|
26
|
+
getWorkFlowLog: '/logic/getWorkFlowLog',
|
|
27
|
+
// 获取员工任务详情信息
|
|
28
|
+
getEmployeeTaskDetail: '/logic/getEmployeeTaskDetail',
|
|
29
|
+
// 根据条件查询任务
|
|
30
|
+
getWorkFlowListByCondition: '/logic/getWorkFlowListByCondition',
|
|
31
|
+
// 根据流程名称获取所有步骤名称
|
|
32
|
+
getWorkFlowStepNames: '/logic/getWorkFlowStepNames',
|
|
33
|
+
// 获取工作流任务留言
|
|
34
|
+
getWorkFlowLeaveMessage: '/logic/getWorkFlowLeaveMessage',
|
|
35
|
+
// 更新任务完成时间
|
|
36
|
+
updateWorkFlowCompleteTime: '/logic/updateWorkFlowCompleteTime',
|
|
37
|
+
// 获取任务完成时间更改记录
|
|
38
|
+
getWorkFlowCompleteTimeChange: '/logic/getWorkFlowCompleteTimeChange',
|
|
39
|
+
// 修改工单
|
|
40
|
+
updateWorkFlow: '/logic/updateWorkFlow',
|
|
41
|
+
// 获取工作流流程图设计
|
|
42
|
+
getWorkFlowPaintWorkFlowDefine: '/logic/getWorkFlowPaintWorkFlowDefine',
|
|
43
|
+
// 简单添加字典项
|
|
44
|
+
simpleInsertIntoDictionary: '/logic/simpleInsertIntoDictionary',
|
|
45
|
+
// 删除工作流项目
|
|
46
|
+
deleteWorkFlow: '/logic/deleteWorkFlow',
|
|
47
|
+
// 获取流程分类数据
|
|
48
|
+
getWorkFlowCategoryTree: '/logic/getWorkFlowCategoryTree',
|
|
49
|
+
// 创建任务
|
|
50
|
+
createWorkflowTask: '/logic/createWorkflowTask',
|
|
51
|
+
// 获取部门选择框数据
|
|
52
|
+
getDepartmentList: '/logic/getDepartmentList',
|
|
53
|
+
// 获取人员任务汇总数据
|
|
54
|
+
getEmployeeSummary: '/logic/getEmployeeSummary',
|
|
55
|
+
// 获取逾期任务排行榜
|
|
56
|
+
getOverdueRanking: '/logic/getOverdueRanking',
|
|
57
|
+
// 根据人查询对应的t_workflow_step中字段f_workflow_id的数据组
|
|
58
|
+
getWorkFlowStepWorkFlowId: '/logic/getWorkFlowStepWorkFlowId',
|
|
59
|
+
// 表单提交到下一步
|
|
60
|
+
submitToNextStep: '/logic/submitToNextStep'
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export { workFlowViewApi }
|
package/src/utils/formatter.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
const util = require('@vue2-client/utils/util')
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* 把对象按照 js配置文件的格式进行格式化
|
|
3
5
|
* @param obj 格式化的对象
|
|
@@ -66,15 +68,7 @@ function formatConfig (obj, dep) {
|
|
|
66
68
|
}
|
|
67
69
|
|
|
68
70
|
function getRealKeyData (data) {
|
|
69
|
-
|
|
70
|
-
Object.keys(data).forEach(k => {
|
|
71
|
-
if (k.indexOf('_') >= 0) {
|
|
72
|
-
obj[k.substring(k.indexOf('_') + 1)] = data[k]
|
|
73
|
-
} else {
|
|
74
|
-
obj[k] = data[k]
|
|
75
|
-
}
|
|
76
|
-
})
|
|
77
|
-
return obj
|
|
71
|
+
return util.getRealKeyData(data)
|
|
78
72
|
}
|
|
79
73
|
|
|
80
74
|
module.exports = { formatConfig, getRealKeyData }
|
package/src/utils/request.js
CHANGED
package/src/utils/util.js
CHANGED
|
@@ -278,4 +278,33 @@ export function compareRows (beforeRow, afterRow) {
|
|
|
278
278
|
return changeItem
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
+
export function getRealKeyData (data) {
|
|
282
|
+
return Object.keys(data).reduce((obj, key) => {
|
|
283
|
+
const realKey = key.includes('_') ? key.split('_').pop() : key
|
|
284
|
+
obj[realKey] = data[key] // 赋值
|
|
285
|
+
return obj
|
|
286
|
+
}, {})
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
export function setDataByRealKey (form, data) {
|
|
290
|
+
// 创建一个映射 realKey -> formKey
|
|
291
|
+
const realFormMap = {}
|
|
292
|
+
|
|
293
|
+
// 遍历 form,建立真实键名和 form 键的映射
|
|
294
|
+
Object.keys(form).forEach(key => {
|
|
295
|
+
const realKey = key.includes('_') ? key.split('_').pop() : key // 获取真实键名
|
|
296
|
+
realFormMap[realKey] = key // 存储映射关系
|
|
297
|
+
})
|
|
298
|
+
|
|
299
|
+
// 遍历 data,更新 form 中的值
|
|
300
|
+
Object.keys(data).forEach(key => {
|
|
301
|
+
const realKey = key.includes('_') ? key.split('_').pop() : key // 获取真实键名
|
|
302
|
+
if (realFormMap[realKey]) {
|
|
303
|
+
form[realFormMap[realKey]] = data[key] // 根据映射关系赋值
|
|
304
|
+
}
|
|
305
|
+
})
|
|
306
|
+
|
|
307
|
+
return form
|
|
308
|
+
}
|
|
309
|
+
|
|
281
310
|
const _toString = Object.prototype.toString
|
package/src/utils/waterMark.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description: createWaterMark.js 加水印功能
|
|
3
|
-
*/
|
|
4
|
-
let waterMarkDOM
|
|
5
|
-
|
|
6
|
-
const clearWaterMark = () => {
|
|
7
|
-
if (waterMarkDOM) waterMarkDOM.remove()
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* @description: 创建水印
|
|
11
|
-
* @param waterMarkName 水印内容
|
|
12
|
-
*/
|
|
13
|
-
export default function createWaterMark (waterMarkName) {
|
|
14
|
-
clearWaterMark()
|
|
15
|
-
if (!waterMarkName) {
|
|
16
|
-
return
|
|
17
|
-
}
|
|
18
|
-
const width = window.parseInt(document.body.clientWidth)
|
|
19
|
-
const canvasWidth = width / window.parseInt(width / 320)
|
|
20
|
-
const fontFamily = window.getComputedStyle(document.body)['font-family']
|
|
21
|
-
const fragment = document.createDocumentFragment()
|
|
22
|
-
waterMarkDOM = document.createElement('div')
|
|
23
|
-
waterMarkDOM.className = 'water-mark-wrap'
|
|
24
|
-
let spanStr = ''
|
|
25
|
-
for (let i = 0; i < 100; i++) {
|
|
26
|
-
spanStr += `<span class="water-word" style=width:${canvasWidth}px;height:200px;font: ${fontFamily}>${waterMarkName}</span>`
|
|
27
|
-
}
|
|
28
|
-
waterMarkDOM.innerHTML = spanStr
|
|
29
|
-
fragment.appendChild(waterMarkDOM)
|
|
30
|
-
document.body.appendChild(fragment)
|
|
31
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* @description: createWaterMark.js 加水印功能
|
|
3
|
+
*/
|
|
4
|
+
let waterMarkDOM
|
|
5
|
+
|
|
6
|
+
const clearWaterMark = () => {
|
|
7
|
+
if (waterMarkDOM) waterMarkDOM.remove()
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @description: 创建水印
|
|
11
|
+
* @param waterMarkName 水印内容
|
|
12
|
+
*/
|
|
13
|
+
export default function createWaterMark (waterMarkName) {
|
|
14
|
+
clearWaterMark()
|
|
15
|
+
if (!waterMarkName) {
|
|
16
|
+
return
|
|
17
|
+
}
|
|
18
|
+
const width = window.parseInt(document.body.clientWidth)
|
|
19
|
+
const canvasWidth = width / window.parseInt(width / 320)
|
|
20
|
+
const fontFamily = window.getComputedStyle(document.body)['font-family']
|
|
21
|
+
const fragment = document.createDocumentFragment()
|
|
22
|
+
waterMarkDOM = document.createElement('div')
|
|
23
|
+
waterMarkDOM.className = 'water-mark-wrap'
|
|
24
|
+
let spanStr = ''
|
|
25
|
+
for (let i = 0; i < 100; i++) {
|
|
26
|
+
spanStr += `<span class="water-word" style=width:${canvasWidth}px;height:200px;font: ${fontFamily}>${waterMarkName}</span>`
|
|
27
|
+
}
|
|
28
|
+
waterMarkDOM.innerHTML = spanStr
|
|
29
|
+
fragment.appendChild(waterMarkDOM)
|
|
30
|
+
document.body.appendChild(fragment)
|
|
31
|
+
}
|
package/vue.config.js
CHANGED
|
@@ -15,6 +15,7 @@ const v3Server = 'http://aote-office.8866.org:31567'
|
|
|
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://aote-office.8866.org:31567'
|
|
18
19
|
const revenue = 'http://aote-office.8866.org:31567'
|
|
19
20
|
// const OSSServerProd = 'http://192.168.50.67:31351'
|
|
20
21
|
// const testUploadLocal = 'http://127.0.0.1:9001'
|
|
@@ -65,12 +66,14 @@ module.exports = {
|
|
|
65
66
|
'/api': {
|
|
66
67
|
// v3用
|
|
67
68
|
// pathRewrite: { '^/api/af-system/': '/rs/', '^/api/af-iot/': '/rs/' },
|
|
69
|
+
// pathRewrite: { '^/api/': '/' },
|
|
68
70
|
target: revenue,
|
|
69
71
|
changeOrigin: true
|
|
70
72
|
},
|
|
71
73
|
'/devApi': {
|
|
72
74
|
// v3用
|
|
73
75
|
// pathRewrite: { '^/api/af-system/': '/rs/', '^/api/af-iot/': '/rs/' },
|
|
76
|
+
pathRewrite: { '^/api/': '/' },
|
|
74
77
|
target: revenue,
|
|
75
78
|
changeOrigin: true
|
|
76
79
|
},
|