vue2-client 1.8.45 → 1.8.47
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/CHANGELOG.md +3 -0
- package/package.json +1 -1
- package/public/img/dynamicStatistics/dynamicStatisticsBack.jpg +0 -0
- package/public/img/service/sendword.png +0 -0
- package/src/App.vue +1 -0
- package/src/assets/img/logo.png +0 -0
- package/src/assets/img/querySlotDemo.svg +15 -15
- package/src/base-client/components/common/CitySelect/index.js +3 -3
- package/src/base-client/components/common/CitySelect/index.md +109 -109
- package/src/base-client/components/common/PersonSetting/index.js +3 -3
- package/src/base-client/components/common/Upload/index.js +3 -3
- package/src/font-style/PingFang.ttf +0 -0
- package/src/font-style/font.css +6 -0
- package/src/pages/DynamicStatistics/ChartSelector.vue +155 -0
- package/src/pages/DynamicStatistics/DataTabs.vue +112 -0
- package/src/pages/DynamicStatistics/DynamicTable.vue +76 -0
- package/src/pages/DynamicStatistics/EvaluationArea.vue +54 -0
- package/src/pages/DynamicStatistics/FavoriteList.vue +51 -0
- package/src/pages/DynamicStatistics/SearchBar.vue +130 -0
- package/src/pages/DynamicStatistics/index.vue +201 -0
- package/src/pages/ServiceReview/index.vue +284 -0
- package/src/pages/login/Login.vue +11 -2
- package/src/router/async/config.async.js +2 -0
- package/src/router/async/router.map.js +4 -0
- package/src/router/index.js +1 -1
- package/src/router.js +1 -0
- package/src/services/api/restTools.js +24 -24
- package/src/utils/indexedDB.js +16 -0
- package/src/utils/map-utils.js +1 -1
- package/src/utils/routerUtil.js +3 -3
- package/src/utils/waterMark.js +31 -31
- package/vue.config.js +6 -1
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div :class="isWidth800? 'ServiceReviewPhone':'ServiceReviewPc'">
|
|
3
|
+
<div id="ServiceWarp" :class="!isWidth800?'ServiceWarpPC':''">
|
|
4
|
+
<div id="ServiceHeader" v-if="!isWidth800">
|
|
5
|
+
服务评价
|
|
6
|
+
</div>
|
|
7
|
+
<div id="ServiceContext" :class="!isWidth800?'ServiceContext':''" v-if="!submittedStatus">
|
|
8
|
+
<a-row id="ServiceContextTitle" v-if="!isWidth800">
|
|
9
|
+
<a-col :span="8">
|
|
10
|
+
<span class="ServiceContextLabel">业务名称</span>
|
|
11
|
+
<span>入户安检</span>
|
|
12
|
+
</a-col>
|
|
13
|
+
<a-col :span="8" style="text-align: center">
|
|
14
|
+
<span class="ServiceContextLabel">办理时间</span>
|
|
15
|
+
<span>2023-12-12</span>
|
|
16
|
+
</a-col>
|
|
17
|
+
<a-col :span="8" style="text-align: right">
|
|
18
|
+
<span class="ServiceContextLabel">办理人员</span>
|
|
19
|
+
<span>某某某</span>
|
|
20
|
+
</a-col>
|
|
21
|
+
</a-row>
|
|
22
|
+
<a-row id="ServiceContextTitle" v-if="isWidth800">
|
|
23
|
+
<a-col :span="24" style="margin: 15px auto">
|
|
24
|
+
<span class="ServiceContextLabelPhone">业务名称</span>
|
|
25
|
+
<span>入户安检</span>
|
|
26
|
+
</a-col>
|
|
27
|
+
<a-col :span="24" style="margin: 15px auto">
|
|
28
|
+
<span class="ServiceContextLabelPhone">办理时间</span>
|
|
29
|
+
<span>2023-12-12</span>
|
|
30
|
+
</a-col>
|
|
31
|
+
<a-col :span="24" style="margin: 15px auto">
|
|
32
|
+
<span class="ServiceContextLabelPhone ">办理人员</span>
|
|
33
|
+
<span>某某某</span>
|
|
34
|
+
</a-col>
|
|
35
|
+
</a-row>
|
|
36
|
+
<a-row id="Context">
|
|
37
|
+
<span id="ContextTitle">服务评价内容</span>
|
|
38
|
+
</a-row>
|
|
39
|
+
<a-row class="Satisfaction">
|
|
40
|
+
<a-col :span="isWidth800?7:6"><span>人员服务满意度</span></a-col>
|
|
41
|
+
<a-col :span="isWidth800?17:18">
|
|
42
|
+
<a-radio-group style="width:100%" v-model="model.personSatisfaction">
|
|
43
|
+
<a-space style="display: flex;justify-content: space-between;">
|
|
44
|
+
<a-radio value="满意">满意</a-radio>
|
|
45
|
+
<a-radio value="一般">一般</a-radio>
|
|
46
|
+
<a-radio value="不满意">不满意</a-radio>
|
|
47
|
+
</a-space>
|
|
48
|
+
</a-radio-group>
|
|
49
|
+
</a-col>
|
|
50
|
+
</a-row>
|
|
51
|
+
<a-row class="Satisfaction">
|
|
52
|
+
<a-col :span="isWidth800?7:6"><span>业务办理满意度</span></a-col>
|
|
53
|
+
<a-col :span="isWidth800?17:18">
|
|
54
|
+
<a-radio-group style="width:100%" v-model="model.personSatisfaction">
|
|
55
|
+
<a-space style="display: flex;justify-content: space-between;">
|
|
56
|
+
<a-radio value="满意">满意</a-radio>
|
|
57
|
+
<a-radio value="一般">一般</a-radio>
|
|
58
|
+
<a-radio value="不满意">不满意</a-radio>
|
|
59
|
+
</a-space>
|
|
60
|
+
</a-radio-group>
|
|
61
|
+
</a-col>
|
|
62
|
+
</a-row>
|
|
63
|
+
<a-row class="Satisfaction">
|
|
64
|
+
<a-col :span="isWidth800?7:6"><span>整体满意度</span></a-col>
|
|
65
|
+
<a-col :span="isWidth800?17:18">
|
|
66
|
+
<a-radio-group style="width:100%" v-model="model.personSatisfaction">
|
|
67
|
+
<a-space style="display: flex;justify-content: space-between;">
|
|
68
|
+
<a-radio value="满意">满意</a-radio>
|
|
69
|
+
<a-radio value="一般">一般</a-radio>
|
|
70
|
+
<a-radio value="不满意">不满意</a-radio>
|
|
71
|
+
</a-space>
|
|
72
|
+
</a-radio-group>
|
|
73
|
+
</a-col>
|
|
74
|
+
</a-row>
|
|
75
|
+
<a-row class="Satisfaction">
|
|
76
|
+
<a-textarea
|
|
77
|
+
class="textarea"
|
|
78
|
+
:showCount="true"
|
|
79
|
+
v-model="model.content"
|
|
80
|
+
placeholder="请填写对我们的建议..."
|
|
81
|
+
:auto-size="{ minRows: 4, maxRows: 5 }"
|
|
82
|
+
/>
|
|
83
|
+
</a-row>
|
|
84
|
+
<a-row class="Satisfaction">
|
|
85
|
+
<a-col :span="isWidth800?7:6"><span>是否匿名</span></a-col>
|
|
86
|
+
<a-col :span="isWidth800?17:18">
|
|
87
|
+
<a-radio-group style="width:100%" v-model="model.personSatisfaction">
|
|
88
|
+
<a-space style="display: flex;justify-content: space-between;">
|
|
89
|
+
<a-radio value="是">是 </a-radio>
|
|
90
|
+
<a-radio value="否">否 </a-radio>
|
|
91
|
+
<div>     </div>
|
|
92
|
+
</a-space>
|
|
93
|
+
</a-radio-group>
|
|
94
|
+
</a-col>
|
|
95
|
+
</a-row>
|
|
96
|
+
<a-row class="Satisfaction_onsubmit">
|
|
97
|
+
<a-button class="submit" @click="submit" type="primary" shape="round">
|
|
98
|
+
提交
|
|
99
|
+
</a-button>
|
|
100
|
+
</a-row>
|
|
101
|
+
</div>
|
|
102
|
+
<div id="submitResult" v-if="submittedStatus">
|
|
103
|
+
<a-row style="text-align: center;margin-top: 8%;margin-bottom:5%">
|
|
104
|
+
<img src="../../../public/img/service/sendword.png" alt="" style="zoom:1.2">
|
|
105
|
+
</a-row>
|
|
106
|
+
<a-row style="text-align: center">
|
|
107
|
+
<span style="width:100%;font-weight: 600" >提交成功!感谢您提出的宝贵建议我们会继续改进我们的服务. . .</span>
|
|
108
|
+
</a-row>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
</template>
|
|
113
|
+
|
|
114
|
+
<script>
|
|
115
|
+
|
|
116
|
+
export default {
|
|
117
|
+
name: 'ServiceReview',
|
|
118
|
+
data () {
|
|
119
|
+
return {
|
|
120
|
+
model: {
|
|
121
|
+
// 人员满意度
|
|
122
|
+
personSatisfaction: '',
|
|
123
|
+
// 业务办理满意度
|
|
124
|
+
businessSatisfaction: '',
|
|
125
|
+
// 整体满意度
|
|
126
|
+
overallSatisfaction: '',
|
|
127
|
+
// 评价内容
|
|
128
|
+
content: '',
|
|
129
|
+
// 是否匿名
|
|
130
|
+
isAnonymous: false
|
|
131
|
+
},
|
|
132
|
+
plainOptions: [{ label: '满意', value: '满意' },
|
|
133
|
+
{ label: '一般', value: '一般' },
|
|
134
|
+
{ label: '不满意', value: '不满意' },],
|
|
135
|
+
submittedStatus: false,
|
|
136
|
+
windowWidth: window.innerWidth,
|
|
137
|
+
isWidth800: false,
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
created () {
|
|
141
|
+
// TODO 接受 url 的参数并且查询 服务信息 然后给 model 赋值展示
|
|
142
|
+
},
|
|
143
|
+
mounted () {
|
|
144
|
+
this.checkWidth()
|
|
145
|
+
window.addEventListener('resize', this.checkWidth)
|
|
146
|
+
},
|
|
147
|
+
updated () {
|
|
148
|
+
this.checkWidth()
|
|
149
|
+
},
|
|
150
|
+
beforeDestroy () {
|
|
151
|
+
window.removeEventListener('resize', this.checkWidth)
|
|
152
|
+
},
|
|
153
|
+
methods: {
|
|
154
|
+
checkWidth () {
|
|
155
|
+
this.windowWidth = window.innerWidth
|
|
156
|
+
this.isWidth800 = this.windowWidth <= 800
|
|
157
|
+
},
|
|
158
|
+
submit () {
|
|
159
|
+
// TODO 提交评价
|
|
160
|
+
this.submittedStatus = true
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
</script>
|
|
165
|
+
<style lang="less" scoped>
|
|
166
|
+
.ServiceReviewPc {
|
|
167
|
+
background-image: url('/public/img/login/background.webp');
|
|
168
|
+
background-size: cover;
|
|
169
|
+
background-position: center;
|
|
170
|
+
height: 100%;
|
|
171
|
+
width: 100%;
|
|
172
|
+
display: flex;
|
|
173
|
+
justify-content: center;
|
|
174
|
+
align-items: center;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.ServiceWarpPC {
|
|
178
|
+
width: 70%;
|
|
179
|
+
height: 80%;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
#ServiceWarp {
|
|
183
|
+
background-color: white;
|
|
184
|
+
border-radius: 20px;
|
|
185
|
+
overflow: hidden;
|
|
186
|
+
|
|
187
|
+
#ServiceHeader {
|
|
188
|
+
height: 18%;
|
|
189
|
+
background-color: #ECF6FF;
|
|
190
|
+
display: flex;
|
|
191
|
+
justify-content: center;
|
|
192
|
+
align-items: center;
|
|
193
|
+
color: #5290FF;
|
|
194
|
+
font-size: 2rem;
|
|
195
|
+
letter-spacing: 0.4em;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
#submitResult {
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.ServiceContext {
|
|
202
|
+
padding: 10px 40px;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
#ServiceContext {
|
|
206
|
+
height: 82%;
|
|
207
|
+
overflow: auto;
|
|
208
|
+
|
|
209
|
+
#ServiceContextTitle {
|
|
210
|
+
|
|
211
|
+
// 底部边框灰色虚线
|
|
212
|
+
border-bottom: 1px dashed #eee;
|
|
213
|
+
padding-bottom: 20px;
|
|
214
|
+
|
|
215
|
+
.ServiceContextLabel {
|
|
216
|
+
font-size: 1.1rem;
|
|
217
|
+
font-weight: 500;
|
|
218
|
+
color: #555;
|
|
219
|
+
margin: 0 20px;
|
|
220
|
+
white-space: nowrap;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.ServiceContextLabel + span {
|
|
224
|
+
font-size: 1rem;
|
|
225
|
+
font-weight: 400;
|
|
226
|
+
color: #555;
|
|
227
|
+
margin: 0 20px;
|
|
228
|
+
white-space: nowrap;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.ServiceContextLabelPhone {
|
|
233
|
+
font-size: 1.1rem;
|
|
234
|
+
font-weight: 500;
|
|
235
|
+
color: #555;
|
|
236
|
+
margin: 20px;
|
|
237
|
+
white-space: nowrap;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.ServiceContextLabelPhone + span {
|
|
241
|
+
font-size: 1rem;
|
|
242
|
+
font-weight: 400;
|
|
243
|
+
color: #555;
|
|
244
|
+
margin: 0 20px;
|
|
245
|
+
white-space: nowrap;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
#Context {
|
|
249
|
+
padding-top: 20px;
|
|
250
|
+
padding-left: 20px;
|
|
251
|
+
|
|
252
|
+
#ContextTitle {
|
|
253
|
+
font-size: 1.1rem;
|
|
254
|
+
font-weight: 600;
|
|
255
|
+
color: #5290FF;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.Satisfaction {
|
|
260
|
+
padding-top: 20px;
|
|
261
|
+
padding-left: 20px;
|
|
262
|
+
|
|
263
|
+
textarea {
|
|
264
|
+
resize: none;
|
|
265
|
+
height: 30%;
|
|
266
|
+
background-color: #F5F6F8;
|
|
267
|
+
border: 0
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.Satisfaction_onsubmit{
|
|
272
|
+
padding-top: 20px;
|
|
273
|
+
padding-left: 20px;
|
|
274
|
+
display: flex;
|
|
275
|
+
justify-content: center;
|
|
276
|
+
align-items: center;
|
|
277
|
+
.submit {
|
|
278
|
+
width : 40%;
|
|
279
|
+
background: linear-gradient(90deg, #60B5EC 0%, #4F90EA 100%);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
</style>
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
import CommonLayout from '@vue2-client/layouts/CommonLayout'
|
|
57
57
|
import { getRoutesConfig, login, V4Login } from '@vue2-client/services/user'
|
|
58
58
|
import { setAuthorization } from '@vue2-client/utils/request'
|
|
59
|
-
import { loadRoutes, funcToRouterOA } from '@vue2-client/utils/routerUtil'
|
|
59
|
+
import { loadRoutes, funcToRouterOA, funcToRouter } from '@vue2-client/utils/routerUtil'
|
|
60
60
|
import { mapMutations, mapState } from 'vuex'
|
|
61
61
|
import JSEncrypt from 'jsencrypt'
|
|
62
62
|
import { ACCESS_TOKEN } from '@vue2-client/store/mutation-types'
|
|
@@ -200,7 +200,16 @@ export default {
|
|
|
200
200
|
this.setUser(user)
|
|
201
201
|
this.setPermissions([{ id: 'queryForm', operation: ['add', 'edit'] }])
|
|
202
202
|
this.setRoles([{ id: 'admin', operation: ['add', 'edit', 'delete'] }])
|
|
203
|
-
|
|
203
|
+
let func
|
|
204
|
+
switch (this.compatible) {
|
|
205
|
+
case 'OA' :
|
|
206
|
+
func = funcToRouterOA(user.functions)
|
|
207
|
+
break
|
|
208
|
+
default:
|
|
209
|
+
func = funcToRouter(user.functions)
|
|
210
|
+
break
|
|
211
|
+
}
|
|
212
|
+
loadRoutes(func)
|
|
204
213
|
// 每次重新登录时,清除indexedDB缓存
|
|
205
214
|
indexedDB.clear()
|
|
206
215
|
this.$message.success(timeFix().CN + `,${result.name} 欢迎回来`, 3)
|
|
@@ -29,12 +29,16 @@ routerResource.loginInfor = () => import('@vue2-client/pages/system/monitor/logi
|
|
|
29
29
|
routerResource.operLog = () => import('@vue2-client/pages/system/monitor/operLog')
|
|
30
30
|
// 系统问题反馈工单
|
|
31
31
|
routerResource.submitTicket = () => import('@vue2-client/pages/system/ticket')
|
|
32
|
+
// 通用服务评价
|
|
33
|
+
routerResource.ServiceReview = () => import('@vue2-client/pages/ServiceReview')
|
|
32
34
|
// 系统设置
|
|
33
35
|
routerResource.settings = () => import('@vue2-client/pages/system/settings')
|
|
34
36
|
// 查询配置生成工具
|
|
35
37
|
routerResource.createQuery = () => import('@vue2-client/pages/CreateQueryPage')
|
|
36
38
|
// AMIS示例页面
|
|
37
39
|
routerResource.amisDemo = () => import('@vue2-client/pages/AMisDemo/AMisDemo')
|
|
40
|
+
// 数据检索
|
|
41
|
+
routerResource.dynamicStatistics = () => import('@vue2-client/pages/DynamicStatistics')
|
|
38
42
|
|
|
39
43
|
// 基础路由组件注册
|
|
40
44
|
const routerMap = {
|
package/src/router/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { formatRoutes } from '@vue2-client/utils/routerUtil'
|
|
|
3
3
|
// 不需要登录拦截的路由配置
|
|
4
4
|
const loginIgnore = {
|
|
5
5
|
names: ['404', '403'], // 根据路由名称匹配
|
|
6
|
-
paths: ['/login', '/submitTicket'], // 根据路由fullPath匹配
|
|
6
|
+
paths: ['/login', '/submitTicket', '/ServiceReview', '/DynamicStatistics'], // 根据路由fullPath匹配
|
|
7
7
|
/**
|
|
8
8
|
* 判断路由是否包含在该配置中
|
|
9
9
|
* @param route vue-router 的 route 对象
|
package/src/router.js
CHANGED
|
@@ -10,6 +10,7 @@ const routes = [
|
|
|
10
10
|
{ path: '/XStepView', component: loadView('XStepView') },
|
|
11
11
|
{ path: '/Amis', component: () => import('@vue2-client/pages/AMisDemo/AMisDemo') },
|
|
12
12
|
{ path: '/Amis2', component: () => import('@vue2-client/pages/AMisDemo/AMisDemo2') },
|
|
13
|
+
{ path: '/DynamicStatistics', component: () => import('@vue2-client/pages/DynamicStatistics/index') },
|
|
13
14
|
// ... 其他路由
|
|
14
15
|
]
|
|
15
16
|
export default routes
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { METHOD, request } from '@vue2-client/utils/request'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* GET请求
|
|
5
|
-
* @param url 请求地址
|
|
6
|
-
* @param parameter 路径参数
|
|
7
|
-
* @returns {Promise<AxiosResponse<T>>}
|
|
8
|
-
*/
|
|
9
|
-
function get (url, parameter) {
|
|
10
|
-
return request(url, METHOD.GET, parameter)
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* POST请求
|
|
15
|
-
* @param url 请求地址
|
|
16
|
-
* @param parameter 请求参数
|
|
17
|
-
* @param config
|
|
18
|
-
* @returns {Promise<AxiosResponse<T>>}
|
|
19
|
-
*/
|
|
20
|
-
function post (url, parameter, config = {}) {
|
|
21
|
-
return request(url, METHOD.POST, parameter, config)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export { get, post }
|
|
1
|
+
import { METHOD, request } from '@vue2-client/utils/request'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* GET请求
|
|
5
|
+
* @param url 请求地址
|
|
6
|
+
* @param parameter 路径参数
|
|
7
|
+
* @returns {Promise<AxiosResponse<T>>}
|
|
8
|
+
*/
|
|
9
|
+
function get (url, parameter) {
|
|
10
|
+
return request(url, METHOD.GET, parameter)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* POST请求
|
|
15
|
+
* @param url 请求地址
|
|
16
|
+
* @param parameter 请求参数
|
|
17
|
+
* @param config
|
|
18
|
+
* @returns {Promise<AxiosResponse<T>>}
|
|
19
|
+
*/
|
|
20
|
+
function post (url, parameter, config = {}) {
|
|
21
|
+
return request(url, METHOD.POST, parameter, config)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { get, post }
|
package/src/utils/indexedDB.js
CHANGED
|
@@ -92,6 +92,22 @@ export const indexedDB = {
|
|
|
92
92
|
}
|
|
93
93
|
})
|
|
94
94
|
},
|
|
95
|
+
getAll: function (callback) {
|
|
96
|
+
const self = this
|
|
97
|
+
self.openDB((res) => {
|
|
98
|
+
const store = res.transaction('metaCache', 'readwrite').objectStore('metaCache')
|
|
99
|
+
const request = store.getAll()
|
|
100
|
+
request.onerror = function () {
|
|
101
|
+
console.log('读取数据失败')
|
|
102
|
+
}
|
|
103
|
+
request.onsuccess = function (e) {
|
|
104
|
+
const result = e.target.result
|
|
105
|
+
if (typeof (callback) === 'function') {
|
|
106
|
+
callback(result)
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
})
|
|
110
|
+
},
|
|
95
111
|
getByWeb: function (key, url, params, callback, processFun) {
|
|
96
112
|
const self = this
|
|
97
113
|
self.openDB((res) => {
|
package/src/utils/map-utils.js
CHANGED
|
@@ -11,7 +11,7 @@ async function GetGDMap (secretKey, key) {
|
|
|
11
11
|
key: key, // 申请好的Web端开发者Key,首次调用 load 时必填
|
|
12
12
|
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
|
|
13
13
|
plugins: ['AMap.IndexCluster', 'AMP.MarkerCluster', 'AMap.InfoWindow', 'AMap.HeatMap', 'AMap.HawkEye', 'AMap.DistrictSearch',
|
|
14
|
-
'AMap.ToolBar', 'AMap.Geolocation',
|
|
14
|
+
'AMap.ToolBar', 'AMap.Geolocation', 'AMap.MouseTool',
|
|
15
15
|
'AMap.Geocoder', 'AMap.MarkerClusterer', 'AMap.AutoComplete'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
|
|
16
16
|
AMapUI: {
|
|
17
17
|
version: '1.1', // AMapUI 缺省 1.1
|
package/src/utils/routerUtil.js
CHANGED
|
@@ -383,14 +383,14 @@ function positionRouter (r) {
|
|
|
383
383
|
return router
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
-
function funcToRouterOA(func) {
|
|
386
|
+
function funcToRouterOA (func) {
|
|
387
387
|
return [{
|
|
388
388
|
router: 'root',
|
|
389
389
|
children: positionRouterOA(parsefuncOA(func))
|
|
390
390
|
}]
|
|
391
391
|
}
|
|
392
392
|
|
|
393
|
-
function positionRouterOA(r) {
|
|
393
|
+
function positionRouterOA (r) {
|
|
394
394
|
let router = []
|
|
395
395
|
for (const row of r) {
|
|
396
396
|
router[row.position] = row
|
|
@@ -399,7 +399,7 @@ function positionRouterOA(r) {
|
|
|
399
399
|
return router
|
|
400
400
|
}
|
|
401
401
|
|
|
402
|
-
function parsefuncOA(func) {
|
|
402
|
+
function parsefuncOA (func) {
|
|
403
403
|
const router = []
|
|
404
404
|
for (const row of func) {
|
|
405
405
|
const route = {
|
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
|
@@ -43,7 +43,12 @@ module.exports = {
|
|
|
43
43
|
pathRewrite: { '^/resource': '/' },
|
|
44
44
|
target: 'http://127.0.0.1:4789',
|
|
45
45
|
changeOrigin: true
|
|
46
|
-
}
|
|
46
|
+
},
|
|
47
|
+
'/ai': {
|
|
48
|
+
target: 'http://192.168.50.67:31761',
|
|
49
|
+
pathRewrite: { '^/ai': '/' },
|
|
50
|
+
changeOrigin: true
|
|
51
|
+
},
|
|
47
52
|
},
|
|
48
53
|
client: {
|
|
49
54
|
overlay: false
|