Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
self-support
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李俊赕
self-support
Commits
c3a4cfce
Commit
c3a4cfce
authored
May 20, 2021
by
刘用法
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
https://git.banshouhui.com/lijundan/self-support
into dev
parents
3b42c6ed
172d2b29
Changes
20
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
306 additions
and
396 deletions
+306
-396
.env.dev.js
.env.dev.js
+2
-1
.env.prod.js
.env.prod.js
+2
-1
.env.test.js
.env.test.js
+2
-1
App.vue
src/App.vue
+1
-1
XhFiles.vue
src/components/createCom/XhFiles.vue
+26
-31
XhSelect.vue
src/components/createCom/XhSelect.vue
+5
-4
XhServiceMeasure.vue
src/components/createCom/XhServiceMeasure.vue
+1
-1
XhTime.vue
src/components/createCom/XhTime.vue
+1
-2
readme.md
src/components/take/readme.md
+8
-1
index.js
src/components/upload/index.js
+6
-4
index.js
src/config/index.js
+1
-1
learn.vue
src/pages/index/learn.vue
+1
-1
answer.vue
src/pages/learn/answer.vue
+34
-9
assessment.vue
src/pages/learn/assessment.vue
+30
-104
result.vue
src/pages/learn/result.vue
+0
-1
addSite.vue
src/pages/mine/address/addSite.vue
+28
-74
index.vue
src/pages/mine/address/index.vue
+3
-31
index.vue
src/pages/mine/deposit/index.vue
+1
-1
complete.vue
src/pages/order/complete.vue
+139
-119
list.vue
src/pages/photo/list.vue
+15
-8
No files found.
.env.dev.js
View file @
c3a4cfce
...
@@ -9,6 +9,7 @@ const UNI_APP = {
...
@@ -9,6 +9,7 @@ const UNI_APP = {
// apiUrl: 'http://apidoc.banshouhui.com:3000/mock/31', // mock端域名请求头
// apiUrl: 'http://apidoc.banshouhui.com:3000/mock/31', // mock端域名请求头
},
},
qn_base_url
:
'https://qn-static.banshouhui.com/self-support/'
,
qn_base_url
:
'https://qn-static.banshouhui.com/self-support/'
,
qn_asset_url
:
'http://deudn.c.pp.cc/'
,
qn_asset_url
:
'http://deudn.c.pp.cc/'
,
argoDebugMode
:
1
}
}
module
.
exports
=
UNI_APP
;
module
.
exports
=
UNI_APP
;
.env.prod.js
View file @
c3a4cfce
...
@@ -8,7 +8,8 @@ const UNI_APP = {
...
@@ -8,7 +8,8 @@ const UNI_APP = {
apiUrl
:
'https://system.banshouhui.com'
,
//java端域名请求头
apiUrl
:
'https://system.banshouhui.com'
,
//java端域名请求头
},
},
qn_base_url
:
'https://qn-static.banshouhui.com/self-support/'
,
qn_base_url
:
'https://qn-static.banshouhui.com/self-support/'
,
qn_asset_url
:
'https://qn-static.banshouhui.com'
qn_asset_url
:
'https://qn-static.banshouhui.com'
,
argoDebugMode
:
0
}
}
module
.
exports
=
UNI_APP
;
module
.
exports
=
UNI_APP
;
.env.test.js
View file @
c3a4cfce
...
@@ -8,6 +8,7 @@ const UNI_APP = {
...
@@ -8,6 +8,7 @@ const UNI_APP = {
apiUrl
:
'https://system.dev.banshouhui.com'
,
//java端域名请求头
apiUrl
:
'https://system.dev.banshouhui.com'
,
//java端域名请求头
},
},
qn_base_url
:
'https://qn-static.banshouhui.com/self-support/'
,
qn_base_url
:
'https://qn-static.banshouhui.com/self-support/'
,
qn_asset_url
:
'https://qn-static.banshouhui.com'
qn_asset_url
:
'https://qn-static.banshouhui.com'
,
argoDebugMode
:
1
}
}
module
.
exports
=
UNI_APP
;
module
.
exports
=
UNI_APP
;
src/App.vue
View file @
c3a4cfce
...
@@ -245,7 +245,7 @@ export default {
...
@@ -245,7 +245,7 @@ export default {
let
userInfo
=
{
let
userInfo
=
{
mobile
:
user
.
mobile
,
mobile
:
user
.
mobile
,
userfrom_id
:
user
.
uid
,
userfrom_id
:
user
.
uid
,
userfrom
:
"
家维广场
"
,
userfrom
:
"
自营平台
"
,
avatar
:
user
.
avatar
,
avatar
:
user
.
avatar
,
nickname
:
user
.
nickname
,
nickname
:
user
.
nickname
,
username
:
user
.
username
,
username
:
user
.
username
,
...
...
src/components/createCom/XhFiles.vue
View file @
c3a4cfce
...
@@ -2,10 +2,6 @@
...
@@ -2,10 +2,6 @@
<
template
>
<
template
>
<view>
<view>
<view
class=
"file-box"
>
<view
class=
"file-box"
>
<!--
<view
class=
"u-flex"
>
<view
class=
"txt u-flex-1"
>
{{
item
.
fieldsTitle
}}
</view>
<u-icon
name=
"arrow-right"
color=
"#666"
size=
"28"
></u-icon>
</view>
-->
<view
class=
"pics u-flex u-flex-wrap"
>
<view
class=
"pics u-flex u-flex-wrap"
>
<view
class=
"img-list"
v-for=
"(item,index) in imgList"
:key=
"index"
>
<view
class=
"img-list"
v-for=
"(item,index) in imgList"
:key=
"index"
>
<u-image
class=
"pic"
width=
"160"
height=
"160"
:src=
"item.path ? item.path : item.src + '?imageView2/1/w/100/h/100/q/75'"
:border-radius=
"10"
@
click
.
stop=
"prviewImage(item,index)"
></u-image>
<u-image
class=
"pic"
width=
"160"
height=
"160"
:src=
"item.path ? item.path : item.src + '?imageView2/1/w/100/h/100/q/75'"
:border-radius=
"10"
@
click
.
stop=
"prviewImage(item,index)"
></u-image>
...
@@ -14,13 +10,14 @@
...
@@ -14,13 +10,14 @@
<view
class=
"icon-del rotate"
></view>
<view
class=
"icon-del rotate"
></view>
</view>
</view>
</view>
</view>
<view
class=
"img-list"
>
<slot></slot>
<!--
<view
class=
"img-list"
>
<u-image
class=
"pic"
width=
"160rpx"
height=
"160rpx"
:border-radius=
"10"
@
click=
"selectUpload"
:src=
"uploadImage"
></u-image>
<u-image
class=
"pic"
width=
"160rpx"
height=
"160rpx"
:border-radius=
"10"
@
click=
"selectUpload"
:src=
"uploadImage"
></u-image>
</view>
</view>
-->
</view>
</view>
<
u-action-sheet
:list=
"list"
v-model=
"maskShow"
:cancel-btn=
"true"
@
click=
"uploadSelect"
></u-action-sheet
>
<
!--
<u-action-sheet
:list=
"list"
v-model=
"maskShow"
:cancel-btn=
"true"
@
click=
"uploadSelect"
></u-action-sheet>
--
>
</view>
</view>
<
take-photo
v-if=
"takeStatus"
@
close=
"closeTake"
:upload=
"false"
:currentItem=
"currentItemDate"
></take-photo
>
<
!--
<take-photo
v-if=
"takeStatus"
@
close=
"closeTake"
:upload=
"false"
:currentItem=
"currentItemDate"
></take-photo>
--
>
</view>
</view>
</
template
>
</
template
>
...
@@ -86,6 +83,26 @@
...
@@ -86,6 +83,26 @@
}
}
},
},
methods
:
{
methods
:
{
setTmpValue
(
values
)
{
this
.
imgList
=
this
.
imgList
.
concat
(
values
)
const
dataValue
=
this
.
imgList
.
map
(
v
=>
v
.
src
)
this
.
valueChange
(
dataValue
)
},
setValue
()
{
const
dataValue
=
this
.
imgList
.
map
(
item
=>
item
.
src
)
this
.
valueChange
(
dataValue
)
},
prviewImage
(
item
,
index
)
{
uni
.
previewImage
({
urls
:
[
item
.
path
?
item
.
path
:
item
.
src
],
current
:
index
});
},
delFile
(
index
)
{
this
.
imgList
.
splice
(
index
,
1
)
this
.
setValue
()
},
/*
selectUpload(){
selectUpload(){
if (this.imgList.length === 10) {
if (this.imgList.length === 10) {
return this.$refs.uToast.show({
return this.$refs.uToast.show({
...
@@ -122,18 +139,6 @@
...
@@ -122,18 +139,6 @@
this.photograph()
this.photograph()
this.getWatermark()
this.getWatermark()
},
},
setTmpValue
(
values
)
{
this
.
imgList
=
this
.
imgList
.
concat
(
values
)
const
dataValue
=
values
.
map
(
v
=>
v
.
key
)
this
.
valueChange
(
dataValue
)
},
setValue
()
{
const
dataValue
=
[]
this
.
imgList
.
map
(
item
=>
{
dataValue
.
push
(
item
.
src
)
})
this
.
valueChange
(
dataValue
)
},
closeTake(val) {
closeTake(val) {
if(val && val.length > 0){
if(val && val.length > 0){
// val.forEach(item=>{
// val.forEach(item=>{
...
@@ -164,16 +169,6 @@
...
@@ -164,16 +169,6 @@
// }
// }
// uploader.qnFileUpload(options)
// uploader.qnFileUpload(options)
},
},
prviewImage
(
item
,
index
)
{
uni
.
previewImage
({
urls
:
[
item
.
path
?
item
.
path
:
item
.
src
],
current
:
index
});
},
delFile
(
index
)
{
this
.
imgList
.
splice
(
index
,
1
)
this
.
setValue
()
},
photograph(){// 获取拍照规范接口
photograph(){// 获取拍照规范接口
let self = this
let self = this
let param = {"partnerCompanyId":self.partnerCompanyId,
let param = {"partnerCompanyId":self.partnerCompanyId,
...
@@ -201,7 +196,7 @@
...
@@ -201,7 +196,7 @@
console.log("获取水印备注异常",res.data.message)
console.log("获取水印备注异常",res.data.message)
}
}
});
});
}
}
*/
}
}
}
}
</
script
>
</
script
>
...
...
src/components/createCom/XhSelect.vue
View file @
c3a4cfce
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<view
class=
"u-flex u-row-between picker-common"
>
<view
class=
"u-flex u-row-between picker-common"
>
<picker
mode=
"selector"
:value=
"index"
range-key=
"label"
:range=
"settings"
@
click=
"show = true"
@
change=
"pickerChange"
class=
"u-flex-1"
>
<picker
mode=
"selector"
:value=
"index"
range-key=
"label"
:range=
"settings"
@
click=
"show = true"
@
change=
"pickerChange"
class=
"u-flex-1"
>
<view
class=
"txt"
>
{{
text
}}
</view>
<view
class=
"txt"
>
{{
text
||
'请选择'
}}
</view>
</picker>
</picker>
<u-icon
class=
"input-icon"
color=
"#2272FF"
:name=
"show ? 'arrow-up' : 'arrow-down'"
></u-icon>
<u-icon
class=
"input-icon"
color=
"#2272FF"
:name=
"show ? 'arrow-up' : 'arrow-down'"
></u-icon>
</view>
</view>
...
@@ -33,7 +33,8 @@
...
@@ -33,7 +33,8 @@
},
},
data
()
{
data
()
{
return
{
return
{
show
:
false
show
:
false
,
index
:
''
}
}
},
},
computed
:
{
computed
:
{
...
@@ -89,8 +90,8 @@
...
@@ -89,8 +90,8 @@
this
.
valueChange
(
id
)
this
.
valueChange
(
id
)
},
},
pickerChange
(
data
)
{
pickerChange
(
data
)
{
const
index
=
data
.
detail
.
value
this
.
index
=
data
.
detail
.
value
const
id
=
this
.
item
.
fieldsOptions
[
index
].
key
const
id
=
this
.
item
.
fieldsOptions
[
this
.
index
].
key
this
.
dataValue
=
id
this
.
dataValue
=
id
this
.
valueChange
(
id
)
this
.
valueChange
(
id
)
},
},
...
...
src/components/createCom/XhServiceMeasure.vue
View file @
c3a4cfce
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<u-picker
v-model=
"showPicker"
range-key=
"label"
@
columnchange=
"columnchange"
:mode=
"isNotMulti?'selector':'multiSelector'"
@
confirm=
"pickerConfirm"
:range=
"settings"
></u-picker>
-->
<u-picker
v-model=
"showPicker"
range-key=
"label"
@
columnchange=
"columnchange"
:mode=
"isNotMulti?'selector':'multiSelector'"
@
confirm=
"pickerConfirm"
:range=
"settings"
></u-picker>
-->
<view
class=
"u-flex u-row-between picker-common"
>
<view
class=
"u-flex u-row-between picker-common"
>
<picker
:mode=
"isNotMulti?'selector':'multiSelector'"
:value=
"index"
range-key=
"label"
:range=
"settings"
@
click=
"showPicker = true"
@
change=
"pickerChange"
class=
"txt u-flex-1"
>
<picker
:mode=
"isNotMulti?'selector':'multiSelector'"
:value=
"index"
range-key=
"label"
:range=
"settings"
@
click=
"showPicker = true"
@
change=
"pickerChange"
class=
"txt u-flex-1"
>
<view>
{{
text
}}
</view>
<view>
{{
text
||
'请选择'
}}
</view>
</picker>
</picker>
<u-icon
class=
"input-icon"
color=
"#2272FF"
:name=
"showPicker ? 'arrow-up' : 'arrow-down'"
></u-icon>
<u-icon
class=
"input-icon"
color=
"#2272FF"
:name=
"showPicker ? 'arrow-up' : 'arrow-down'"
></u-icon>
</view>
</view>
...
...
src/components/createCom/XhTime.vue
View file @
c3a4cfce
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<!--
<u-picker
:params=
"params"
v-model=
"showPicker"
mode=
"time"
@
confirm=
"pickerConfirm"
></u-picker>
-->
<!--
<u-picker
:params=
"params"
v-model=
"showPicker"
mode=
"time"
@
confirm=
"pickerConfirm"
></u-picker>
-->
<view
class=
"u-flex u-row-between"
>
<view
class=
"u-flex u-row-between"
>
<picker
mode=
"date"
:value=
"dataValue"
@
change=
"bindDateChange"
class=
"txt u-flex-1"
>
<picker
mode=
"date"
:value=
"dataValue"
@
change=
"bindDateChange"
class=
"txt u-flex-1"
>
<view>
{{
dataValue
}}
</view>
<view>
{{
dataValue
||
'请选择时间'
}}
</view>
</picker>
</picker>
<u-icon
name=
"arrow-right"
color=
"#666"
size=
"28"
></u-icon>
<u-icon
name=
"arrow-right"
color=
"#666"
size=
"28"
></u-icon>
</view>
</view>
...
@@ -18,7 +18,6 @@
...
@@ -18,7 +18,6 @@
<
script
>
<
script
>
import
stringMixin
from
'./stringMixin'
import
stringMixin
from
'./stringMixin'
export
default
{
export
default
{
name
:
'XhInput'
,
// 新建 input
components
:
{},
components
:
{},
mixins
:
[
stringMixin
],
mixins
:
[
stringMixin
],
props
:
{},
props
:
{},
...
...
src/components/take/readme.md
View file @
c3a4cfce
...
@@ -17,7 +17,7 @@ uni.hideTabBar()
...
@@ -17,7 +17,7 @@ uni.hideTabBar()
### Props
### Props
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| 属性名 | 类型 | 默认值 | 可选值 | 说明 |
| :-: | :-: | :-: | :-: | :-: |
| :-: | :-: | :-: | :-: | :-: |
| up
date
| Boolean | true | true/false | 是否默认上传 true:会自动上传好图片并返回绝对路径 false: 只返回临时路径,需要在父组件做上传动作 |
| up
load
| Boolean | true | true/false | 是否默认上传 true:会自动上传好图片并返回绝对路径 false: 只返回临时路径,需要在父组件做上传动作 |
| num | Number | 10 | 1-10 | 拍照数量,只能传1-10的正整数 |
| num | Number | 10 | 1-10 | 拍照数量,只能传1-10的正整数 |
| currentItem | Object | - | - | 对应的规范数据,用于获取示意图和水印,以及保存图片所需的ID
**格式见下文**
|
| currentItem | Object | - | - | 对应的规范数据,用于获取示意图和水印,以及保存图片所需的ID
**格式见下文**
|
...
@@ -67,10 +67,12 @@ uni.hideTabBar()
...
@@ -67,10 +67,12 @@ uni.hideTabBar()
```
javascript
```
javascript
import
takePhoto
from
'@/components/take/index.vue'
import
takePhoto
from
'@/components/take/index.vue'
import
baseFile
from
'@/components/upload/index'
// upload为false时需加上
export
default
{
export
default
{
components
:
{
components
:
{
'take-photo'
:
takePhoto
'take-photo'
:
takePhoto
},
},
mixins
:
[
baseFile
],
// upload为false时需加上
data
()
{
data
()
{
return
{
return
{
takeStatus
:
false
,
takeStatus
:
false
,
...
@@ -86,6 +88,11 @@ export default {
...
@@ -86,6 +88,11 @@ export default {
// 拍照完成或关闭相机
// 拍照完成或关闭相机
closeTake
(
images
)
{
closeTake
(
images
)
{
this
.
takeStatus
=
false
this
.
takeStatus
=
false
// upload为false时处理
const
files
=
images
.
map
(
v
=>
v
.
path
)
const
value
=
await
this
.
saveToTask
(
files
)
console
.
log
(
"value"
,
value
)
}
}
}
}
}
}
...
...
src/components/upload/index.js
View file @
c3a4cfce
...
@@ -48,10 +48,11 @@ export default {
...
@@ -48,10 +48,11 @@ export default {
async
saveToTask
(
files
)
{
async
saveToTask
(
files
)
{
// 生成key返回,然后把key放到异步上传的任务队列
// 生成key返回,然后把key放到异步上传的任务队列
let
lists
=
files
.
map
(
v
=>
{
let
lists
=
files
.
map
(
v
=>
{
const
key
=
randomChar
(
10
)
return
{
return
{
key
:
randomChar
(
10
)
,
key
:
key
,
path
:
v
,
path
:
v
,
src
:
''
src
:
key
}
}
})
})
// for (let i = 0; i < files.length; i++) {
// for (let i = 0; i < files.length; i++) {
...
@@ -92,10 +93,11 @@ export default {
...
@@ -92,10 +93,11 @@ export default {
tempFilePath
:
path
,
tempFilePath
:
path
,
success
(
e
)
{
success
(
e
)
{
const
{
savedFilePath
}
=
e
const
{
savedFilePath
}
=
e
const
key
=
randomChar
(
10
)
const
img
=
{
const
img
=
{
key
:
randomChar
(
10
)
,
key
:
key
,
path
:
savedFilePath
,
path
:
savedFilePath
,
src
:
''
src
:
key
}
}
resolve
(
img
)
resolve
(
img
)
},
},
...
...
src/config/index.js
View file @
c3a4cfce
...
@@ -7,7 +7,7 @@ let argo ={
...
@@ -7,7 +7,7 @@ let argo ={
1 开启调试模式,数据不入库。类型:Number。
1 开启调试模式,数据不入库。类型:Number。
2 开启调试模式,数据入库。类型:Number。
2 开启调试模式,数据入库。类型:Number。
*/
*/
debugMode
:
0
,
debugMode
:
process
.
uniEnv
.
argoDebugMode
,
autoTrack
:
true
,
autoTrack
:
true
,
uploadURL
:
'https://argo.banshouhui.com/'
uploadURL
:
'https://argo.banshouhui.com/'
}
}
...
...
src/pages/index/learn.vue
View file @
c3a4cfce
...
@@ -674,7 +674,7 @@ export default {
...
@@ -674,7 +674,7 @@ export default {
}
}
if
(
res
.
data
.
examStatus
==
1
)
{
if
(
res
.
data
.
examStatus
==
1
)
{
that
.
examList
[
i
].
isComplete
=
that
.
examList
[
i
].
isComplete
=
this
.
examList
[
i
].
status
==
"通过"
;
this
.
examList
[
i
].
status
==
"
已
通过"
;
that
.
examScore
=
res
.
data
.
examScore
;
that
.
examScore
=
res
.
data
.
examScore
;
return
;
return
;
}
}
...
...
src/pages/learn/answer.vue
View file @
c3a4cfce
<
template
>
<
template
>
<view
class=
"backView"
>
<view
class=
"backView"
>
<Examine
:index=
"3"
>
<Examine
:index=
"3"
>
<view
class=
"bottom-padding"
v-if=
"currentItem"
>
<view
class=
"bottom-padding"
>
<view
class=
"title-view"
>
<view
class=
"title-view"
>
<view
:class=
"['title-text',
{'radio': currentItem.question ? currentItem.question.answerType == 1 : true}]">
<view
:class=
"['title-text',
{'radio': currentItem.question ? currentItem.question.answerType == 1 : true}]">
<text>
{{
titleText
[
Math
.
max
(
0
,
currentItem
.
question
?
currentItem
.
question
.
answerType
-
1
:
0
)]
}}
</text>
<text>
{{
titleText
[
Math
.
max
(
0
,
currentItem
.
question
?
currentItem
.
question
.
answerType
-
1
:
0
)]
}}
</text>
...
@@ -70,7 +70,13 @@ export default {
...
@@ -70,7 +70,13 @@ export default {
userAnswerIds
:
""
,
userAnswerIds
:
""
,
isStart
:
true
,
isStart
:
true
,
currentNumber
:
1
,
currentNumber
:
1
,
currentItem
:
null
,
currentItem
:
{
question
:
{
answerType
:
1
,
content
:
""
},
answerList
:
{}
},
isSelect
:
false
,
isSelect
:
false
,
timeDefine
:
{
timeDefine
:
{
"time-id-2"
:
1800
,
"time-id-2"
:
1800
,
...
@@ -89,6 +95,7 @@ export default {
...
@@ -89,6 +95,7 @@ export default {
timer
:
null
,
timer
:
null
,
isComplete
:
false
,
// 是否已经考试完成判定
isComplete
:
false
,
// 是否已经考试完成判定
examInfo
:
null
,
examInfo
:
null
,
isLoadQuestion
:
true
};
};
},
},
computed
:
{
computed
:
{
...
@@ -107,11 +114,15 @@ export default {
...
@@ -107,11 +114,15 @@ export default {
},
},
onLoad
(
e
)
{
onLoad
(
e
)
{
this
.
examId
=
e
.
examId
;
this
.
examId
=
e
.
examId
;
this
.
applyExam
();
this
.
userExamId
=
e
.
userExamId
;
this
.
getNext
();
// this.applyExam();
// this.getUserExamInfo();
// this.getUserExamInfo();
},
},
onUnload
()
{
onUnload
()
{
clearTimeout
(
this
.
timer
);
clearTimeout
(
this
.
timer
);
let
key
=
'exma-'
+
this
.
examId
;
uni
.
setStorageSync
(
key
,
this
.
endTime
);
},
},
methods
:
{
methods
:
{
formatTimeToMini
(
timestamp
)
{
formatTimeToMini
(
timestamp
)
{
...
@@ -335,11 +346,6 @@ export default {
...
@@ -335,11 +346,6 @@ export default {
(
this
.
userAnswerIds
||
"9999"
)
+
(
this
.
userAnswerIds
||
"9999"
)
+
","
,
// 9999超时自动下一题
","
,
// 9999超时自动下一题
method
:
"POST"
,
method
:
"POST"
,
data
:
{
// userExamId:this.userExamId,
// questionId:this.currentItem.question.id,
// userAnswerIds:this.userAnswerIds,
},
header
:
{
header
:
{
"Content-Type"
:
"application/x-www-form-urlencoded"
,
"Content-Type"
:
"application/x-www-form-urlencoded"
,
},
},
...
@@ -359,6 +365,20 @@ export default {
...
@@ -359,6 +365,20 @@ export default {
if
(
res
.
data
.
code
==
200
)
{
if
(
res
.
data
.
code
==
200
)
{
that
.
currentItem
=
res
.
data
.
data
;
that
.
currentItem
=
res
.
data
.
data
;
that
.
progress
=
res
.
data
.
data
.
progress
;
that
.
progress
=
res
.
data
.
data
.
progress
;
if
(
this
.
isLoadQuestion
){
this
.
isLoadQuestion
=
false
;
if
(
!
res
.
data
.
data
.
isQuestion
){
this
.
applyExam
()
return
}
let
key
=
'exma-'
+
this
.
examId
;
let
limitTime
=
uni
.
getStorageSync
(
key
);
console
.
log
(
limitTime
);
// let limitTime = this.getLimitTime(that.progress);
// console.log(limitTime);
this
.
endTime
=
parseInt
(
limitTime
);
this
.
currentTime
=
parseInt
(
limitTime
*
1000
);
}
if
(
res
.
data
.
data
.
isQuestion
)
{
if
(
res
.
data
.
data
.
isQuestion
)
{
let
str
=
res
.
data
.
data
.
question
.
content
;
let
str
=
res
.
data
.
data
.
question
.
content
;
var
wz
=
str
.
indexOf
(
"."
);
var
wz
=
str
.
indexOf
(
"."
);
...
@@ -397,7 +417,12 @@ export default {
...
@@ -397,7 +417,12 @@ export default {
},
},
});
});
},
},
getLimitTime
(
progress
){
let
arr
=
progress
.
split
(
'/'
);
let
how
=
arr
[
0
].
replace
(
/
[^
0-9
]
/ig
,
""
);
let
total
=
arr
[
1
].
replace
(
/
[^
0-9
]
/ig
,
""
);
return
(
total
-
how
+
1
)
*
this
.
currentTime
;
},
handleData
:
function
()
{
handleData
:
function
()
{
this
.
currentItem
.
answerList
.
forEach
((
item
,
index
)
=>
{
this
.
currentItem
.
answerList
.
forEach
((
item
,
index
)
=>
{
item
.
isSelect
=
false
;
item
.
isSelect
=
false
;
...
...
src/pages/learn/assessment.vue
View file @
c3a4cfce
...
@@ -7,13 +7,13 @@
...
@@ -7,13 +7,13 @@
这是一场严肃的考试,请认真查看 规则,预祝您顺利通过考试!
这是一场严肃的考试,请认真查看 规则,预祝您顺利通过考试!
</view>
</view>
<view
class=
"text"
>
<view
class=
"text"
>
<text
class=
"left"
>
考试科目:
</text><text
style=
"color: #007aff"
>
{{
desc
.
title
}}
</text>
<text
class=
"left"
>
考试科目:
</text><text
style=
"color: #007aff"
>
{{
title
}}
</text>
</view>
</view>
<view
class=
"text"
>
<view
class=
"text"
>
<text
class=
"left"
>
合格条件:
</text><text>
{{
desc
.
score
}}
</text>
<text
class=
"left"
>
合格条件:
</text><text>
{{
score
}}
</text>
</view>
</view>
<view
class=
"text"
>
<view
class=
"text"
>
<text
class=
"left"
>
考试时间:
</text><text>
{{
desc
.
time
}}
</text>
<text
class=
"left"
>
考试时间:
</text><text>
{{
time
}}
</text>
</view>
</view>
<view
class=
"text"
>
<view
class=
"text"
>
<text
class=
"left"
>
题目来源:
</text><text>
{{
ruleDisc
}}
</text>
<text
class=
"left"
>
题目来源:
</text><text>
{{
ruleDisc
}}
</text>
...
@@ -24,122 +24,46 @@
...
@@ -24,122 +24,46 @@
</
template
>
</
template
>
<
script
>
<
script
>
let
condition
=
{
dev
:
{
"id-2"
:
{
score
:
"60分"
,
time
:
"30分钟"
,
number
:
"20"
,
title
:
"服务规范"
,
},
"id-3"
:
{
score
:
"30分"
,
time
:
"15分钟"
,
number
:
"10"
,
title
:
"服务规范"
,
},
"id-4"
:
{
score
:
"15分"
,
time
:
"6分钟"
,
number
:
"4"
,
title
:
"交付规范"
,
},
},
test
:
{
"id-2"
:
{
score
:
"60分"
,
time
:
"30分钟"
,
number
:
"20"
,
title
:
"服务规范"
,
},
"id-3"
:
{
score
:
"30分"
,
time
:
"15分钟"
,
number
:
"10"
,
title
:
"服务规范"
,
},
"id-4"
:
{
score
:
"15分"
,
time
:
"6分钟"
,
number
:
"4"
,
title
:
"交付规范"
,
},
},
prod
:
{
"id-2"
:
{
score
:
"60分"
,
time
:
"30分钟"
,
number
:
"20"
,
title
:
"服务规范"
,
},
"id-3"
:
{
score
:
"30分"
,
time
:
"15分钟"
,
number
:
"10"
,
title
:
"服务规范"
,
},
"id-4"
:
{
score
:
"15分"
,
time
:
"6分钟"
,
number
:
"4"
,
title
:
"交付规范"
,
},
},
};
let
env
=
process
.
uniEnv
.
node_env
;
let
desc
=
condition
[
env
];
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
desc
:
null
,
title
:
""
,
score
:
""
,
time
:
""
,
ruleDisc
:
""
,
examId
:
null
,
examId
:
null
,
exam
:
null
,
exam
:
null
,
userExamId
:
null
,
userExamId
:
null
ruleDisc
:
""
,
};
};
},
},
onLoad
(
param
)
{
onLoad
(
param
)
{
this
.
examId
=
param
.
examId
;
this
.
examId
=
param
.
examId
;
this
.
desc
=
desc
[
"id-"
+
this
.
examId
];
this
.
getExamResult
();
this
.
getExamResult
();
// this.getUserExamInfo();
// this.getUserExamInfo();
},
},
onUnload
()
{
uni
.
switchTab
({
url
:
'/pages/index/learn'
});
},
methods
:
{
methods
:
{
//申请考试获取userExamId
//申请考试获取userExamId
getUserExamId
:
function
()
{
getUserExamId
:
function
()
{
let
examId
=
this
.
examId
;
let
examId
=
this
.
examId
;
let
userExamId
=
this
.
userExamId
;
let
routes
=
getCurrentPages
();
// 获取当前打开过的页面路由数组
let
length
=
routes
.
length
if
(
length
>
8
){
uni
.
showToast
({
icon
:
"none"
,
title
:
"打开页面过多,请返回后再操作"
,
});
return
;
}
console
.
log
(
length
);
wx
.
navigateTo
({
wx
.
navigateTo
({
url
:
"/pages/learn/answer?examId="
+
examId
,
url
:
"/pages/learn/answer?examId="
+
examId
+
"&userExamId="
+
userExamId
,
});
},
getUserExamInfo
()
{
uni
.
request
({
url
:
process
.
uniEnv
.
systemUrl
.
apiUrl
+
"/wxh-worker-rest/rest/exam/serviceRule/"
+
this
.
vuex_token
+
"?examId="
+
this
.
examId
,
method
:
"POST"
,
header
:
{
"Content-Type"
:
"application/x-www-from-urlencoded"
,
},
success
:
(
res
)
=>
{
uni
.
hideLoading
();
if
(
res
.
data
.
code
==
200
)
{
if
(
res
.
data
.
data
.
userExamId
)
{
this
.
userExamId
=
res
.
data
.
data
.
userExamId
;
}
}
},
});
});
setTimeout
(()
=>
{
wx
.
navigateTo
({
url
:
"/pages/learn/answer?userExamId="
+
this
.
userExamId
,
});
},
1000
);
},
},
getExamResult
()
{
getExamResult
()
{
uni
.
request
({
uni
.
request
({
...
@@ -158,10 +82,12 @@ export default {
...
@@ -158,10 +82,12 @@ export default {
if
(
res
.
data
.
code
==
200
)
{
if
(
res
.
data
.
code
==
200
)
{
if
(
res
.
data
.
data
.
ruleDisc
)
{
if
(
res
.
data
.
data
.
ruleDisc
)
{
var
str
=
res
.
data
.
data
.
ruleDisc
;
var
str
=
res
.
data
.
data
.
ruleDisc
;
this
.
userExamId
=
res
.
data
.
data
.
id
;
let
strArr
=
str
.
split
(
"("
)[
0
].
split
(
","
);
let
strArr
=
str
.
split
(
"("
)[
0
].
split
(
","
);
this
.
desc
.
title
=
strArr
[
0
];
this
.
title
=
strArr
[
0
];
this
.
desc
.
score
=
strArr
[
1
];
this
.
score
=
strArr
[
1
];
this
.
desc
.
time
=
strArr
[
2
];
this
.
time
=
strArr
[
2
];
this
.
ruleDisc
=
strArr
[
3
];
this
.
ruleDisc
=
strArr
[
3
];
}
}
}
}
...
...
src/pages/learn/result.vue
View file @
c3a4cfce
...
@@ -77,7 +77,6 @@ export default {
...
@@ -77,7 +77,6 @@ export default {
//再次考试
//再次考试
getAgain
:
function
()
{
getAgain
:
function
()
{
let
examId
=
this
.
examId
;
let
examId
=
this
.
examId
;
let
routes
=
getCurrentPages
();
// 获取当前打开过的页面路由数组
uni
.
navigateTo
({
uni
.
navigateTo
({
url
:
"/pages/learn/assessment?examId="
+
examId
,
url
:
"/pages/learn/assessment?examId="
+
examId
,
});
});
...
...
src/pages/mine/address/addSite.vue
View file @
c3a4cfce
...
@@ -10,25 +10,20 @@
...
@@ -10,25 +10,20 @@
<view
class=
"left"
>
电话
</view>
<view
class=
"left"
>
电话
</view>
<input
disabled
v-model=
"mobile"
type=
"text"
placeholder-class=
"line"
placeholder=
"请填写电话"
/>
<input
disabled
v-model=
"mobile"
type=
"text"
placeholder-class=
"line"
placeholder=
"请填写电话"
/>
</view>
</view>
<u-field
<view
class=
"item address"
>
v-model=
"address"
<view
class=
"left label"
>
地址
</view>
label=
"地址"
<textarea
v-model=
"address"
type=
"text"
placeholder-class=
"line"
placeholder=
"请填写地址"
/>
label-width=
"88"
<view
class=
"right"
@
tap=
"autoLocation"
>
type=
"textarea"
<u-icon
:border-bottom=
"false"
name=
"map"
placeholder=
"请填写地址"
>
color=
"#2272FF"
<view
slot=
"right"
class=
"right"
@
tap=
"autoLocation"
>
size=
"30"
<u-icon
name=
"map"
color=
"#2272FF"
size=
"30"
></u-icon>
label=
"自动定位"
<text>
自动定位
</text>
label-size=
"24"
label-color=
"#2272FF"
></u-icon>
</view>
</view>
</u-field>
</view>
<!--
<view
class=
"site-clipboard"
>
<textarea
placeholder-class=
"line"
value=
""
placeholder=
"粘贴文本,可自动识别姓名和地址等"
/>
<view
class=
"clipboard"
>
地址粘贴板
<u-icon
name=
"arrow-down"
class=
"icon"
:size=
"20"
></u-icon>
</view>
</view>
-->
</view>
</view>
<view
class=
"bottom"
>
<view
class=
"bottom"
>
<button
class=
"btn, bottom-btn"
@
click=
"show = true"
>
<button
class=
"btn, bottom-btn"
@
click=
"show = true"
>
...
@@ -70,7 +65,6 @@
...
@@ -70,7 +65,6 @@
<
script
>
<
script
>
let
r
=
require
(
"libs/bmap-wx.min.js"
);
let
r
=
require
(
"libs/bmap-wx.min.js"
);
let
h
=
new
r
.
BMapWX
({
let
h
=
new
r
.
BMapWX
({
// ak: "rpVq5d3yxaRCoKzVwmFMo0o4iC524CAG",
ak
:
"lF1HoyXdiv4uZx6TrGQEZs48F5y8kEHI"
ak
:
"lF1HoyXdiv4uZx6TrGQEZs48F5y8kEHI"
});
});
export
default
{
export
default
{
...
@@ -142,8 +136,6 @@ export default {
...
@@ -142,8 +136,6 @@ export default {
};
};
if
(
lat
&&
long
)
{
if
(
lat
&&
long
)
{
let
e
=
lat
+
","
+
long
let
e
=
lat
+
","
+
long
// let e = "113.88308" + ',' + "22.55329"
// let e = "22.55329" + ',' + "113.88308"
t
.
location
=
e
;
t
.
location
=
e
;
}
}
h
.
regeocoding
(
t
);
h
.
regeocoding
(
t
);
...
@@ -176,14 +168,11 @@ export default {
...
@@ -176,14 +168,11 @@ export default {
address
:
self
.
address
address
:
self
.
address
}
}
let
res
=
await
self
.
$u
.
api
.
syncAddress
(
params
)
let
res
=
await
self
.
$u
.
api
.
syncAddress
(
params
)
const
callback
=
(
vm
,
res
)
=>
{
vm
.
$u
.
route
({
type
:
'back'
})
}
if
(
res
&&
res
.
code
==
200
)
{
if
(
res
&&
res
.
code
==
200
)
{
self
.
$u
.
route
({
getApp
().
getBaseInfo
(
this
,
callback
);
type
:
'redirect'
,
url
:
"pages/mine/address/index"
,
params
:
{
sync
:
true
}
})
}
}
}
}
}
}
...
@@ -218,59 +207,24 @@ export default {
...
@@ -218,59 +207,24 @@ export default {
text-align
:
left
;
text-align
:
left
;
}
}
}
}
/
deep
/
.u-field
{
.address
{
padding
:
24rpx
0
;
padding
:
24rpx
0
;
border-bottom
:
solid
2rpx
$u-border-color
;
align-items
:
flex-start
;
.u-label-text
{
font-weight
:
400
;
color
:
#999999
;
}
textarea
{
textarea
{
line-height
:
40rpx
;
height
:
2
40rpx
;
}
background-color
:
#f7f7f7
;
.u-button-wrap
{
line-height
:
60rpx
;
align-self
:
flex-start
;
padding
:
20rpx
;
margin-left
:
42
rpx
;
width
:
400
rpx
;
}
}
.right
{
.right
{
text-align
:
right
;
width
:
160rpx
;
font-size
:
24rpx
;
font-size
:
24rpx
;
font-weight
:
400
;
font-weight
:
400
;
color
:
#2272FF
;
color
:
#2272FF
;
line-height
:
40rpx
;
line-height
:
88rpx
;
}
}
.address
{
padding
:
20rpx
0
;
textarea
{
// width: 100%;
height
:
150rpx
;
background-color
:
#f7f7f7
;
line-height
:
60rpx
;
margin
:
40rpx
auto
;
padding
:
20rpx
;
}
}
.site-clipboard
{
padding-right
:
40rpx
;
textarea
{
// width: 100%;
height
:
150rpx
;
background-color
:
#f7f7f7
;
line-height
:
60rpx
;
margin
:
40rpx
auto
;
padding
:
20rpx
;
}
.clipboard
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
font-size
:
26rpx
;
color
:
$u-tips-color
;
height
:
80rpx
;
.icon
{
margin-top
:
6rpx
;
margin-left
:
10rpx
;
}
}
}
}
}
}
}
...
...
src/pages/mine/address/index.vue
View file @
c3a4cfce
<
template
>
<
template
>
<view
class=
"address-wrap"
>
<view
class=
"address-wrap"
>
<w-navbar
title=
"收货地址"
></w-navbar>
<w-navbar
title=
"收货地址"
></w-navbar>
<view
class=
"item"
v-if=
"hasAdderss"
>
<view
class=
"item"
v-if=
"hasAdderss"
@
tap=
"toAddSite('修改地址')"
>
<view
class=
"top"
>
<view
class=
"top"
>
<view
class=
"name"
>
{{
settled
.
id_card_name
||
settled
.
nickname
||
settled
.
name
||
'--'
}}
</view>
<view
class=
"name"
>
{{
settled
.
id_card_name
||
settled
.
nickname
||
settled
.
name
||
'--'
}}
</view>
<view
class=
"phone"
>
{{
settled
.
mobile
}}
</view>
<view
class=
"phone"
>
{{
settled
.
mobile
}}
</view>
</view>
</view>
<view
class=
"bottom"
>
<view
class=
"bottom"
>
<view
class=
"address"
>
{{
settled
.
address
}}
</view>
<view
class=
"address"
>
{{
settled
.
address
}}
</view>
<u-icon
:name=
"editPen"
:size=
"32"
color=
"#999999"
@
tap=
"toAddSite('修改地址')"
></u-icon>
<u-icon
:name=
"editPen"
:size=
"32"
color=
"#999999"
></u-icon>
</view>
</view>
<view
class=
"default"
v-show=
"true"
>
<view
class=
"default"
v-show=
"true"
>
<u-icon
name=
"checkmark-circle"
color=
"#2272FF"
size=
"32"
></u-icon>
<u-icon
name=
"checkmark-circle"
color=
"#2272FF"
size=
"32"
></u-icon>
<text
class=
"txt"
>
默认地址
</text>
<text
class=
"txt"
>
默认地址
</text>
</view>
</view>
</view>
</view>
<!--
<view
class=
"addSite"
@
tap=
"toAddSite('新增地址')"
>
<view
class=
"add"
>
<u-icon
name=
"plus"
color=
"#ffffff"
class=
"icon"
:size=
"30"
></u-icon>
新建收货地址
</view>
</view>
-->
</view>
</view>
</
template
>
</
template
>
...
@@ -45,11 +40,9 @@ export default {
...
@@ -45,11 +40,9 @@ export default {
return
this
.
settled
&&
this
.
settled
.
address
&&
this
.
settled
.
id_card_name
return
this
.
settled
&&
this
.
settled
.
address
&&
this
.
settled
.
id_card_name
},
},
},
},
on
Load
(
e
)
{
on
Show
(
)
{
if
(
!
this
.
vuex_token
)
{
if
(
!
this
.
vuex_token
)
{
this
.
$u
.
route
({
url
:
'pages/login/index'
})
this
.
$u
.
route
({
url
:
'pages/login/index'
})
}
else
if
(
e
&&
e
.
sync
)
{
this
.
getData
();
}
else
if
(
!
this
.
settled
)
{
}
else
if
(
!
this
.
settled
)
{
this
.
getData
();
this
.
getData
();
}
}
...
@@ -61,7 +54,6 @@ export default {
...
@@ -61,7 +54,6 @@ export default {
},
},
toAddSite
(
title
){
toAddSite
(
title
){
this
.
$u
.
route
({
this
.
$u
.
route
({
type
:
'redirect'
,
url
:
'pages/mine/address/addSite'
,
url
:
'pages/mine/address/addSite'
,
params
:
{
params
:
{
title
:
title
title
:
title
...
@@ -120,24 +112,4 @@ export default {
...
@@ -120,24 +112,4 @@ export default {
}
}
}
}
}
}
.addSite
{
display
:
flex
;
justify-content
:
space-around
;
width
:
600rpx
;
line-height
:
100rpx
;
position
:
absolute
;
bottom
:
30rpx
;
left
:
80rpx
;
background-color
:
red
;
border-radius
:
60rpx
;
font-size
:
30rpx
;
.add
{
display
:
flex
;
align-items
:
center
;
color
:
#ffffff
;
.icon
{
margin-right
:
10rpx
;
}
}
}
</
style
>
</
style
>
src/pages/mine/deposit/index.vue
View file @
c3a4cfce
...
@@ -45,7 +45,7 @@
...
@@ -45,7 +45,7 @@
},
},
computed
:
{
computed
:
{
amount
()
{
amount
()
{
return
this
.
settled
&&
this
.
settled
.
deposit
||
'0.00'
;
return
this
.
vuex_settled
&&
this
.
vuex_settled
.
hasPaid
||
'0.00'
;
},
},
settled
()
{
settled
()
{
return
this
.
vuex_settled
&&
this
.
vuex_settled
.
record
||
null
return
this
.
vuex_settled
&&
this
.
vuex_settled
.
record
||
null
...
...
src/pages/order/complete.vue
View file @
c3a4cfce
This diff is collapsed.
Click to expand it.
src/pages/photo/list.vue
View file @
c3a4cfce
...
@@ -29,7 +29,7 @@
...
@@ -29,7 +29,7 @@
</view>
</view>
</
template
>
</
template
>
</scroll-view>
</scroll-view>
<take-photo
type=
"test"
v-if=
"takeStatus
"
:currentItem=
"currentItemDate"
@
close=
"closeTake"
></take-photo>
<take-photo
type=
"test"
v-if=
"takeStatus"
:upload=
"false
"
:currentItem=
"currentItemDate"
@
close=
"closeTake"
></take-photo>
<!-- <u-button v-if="activeTop + 1 === dataList.length" class="ph-list-button" type="error" shape="circle"
<!-- <u-button v-if="activeTop + 1 === dataList.length" class="ph-list-button" type="error" shape="circle"
:disabled="buttonDisabled" :custom-style="buttonStyle" @click="isPopShow = true">一键清空展示图片</u-button> -->
:disabled="buttonDisabled" :custom-style="buttonStyle" @click="isPopShow = true">一键清空展示图片</u-button> -->
</view>
</view>
...
@@ -57,6 +57,7 @@
...
@@ -57,6 +57,7 @@
<
script
>
<
script
>
import
takePhoto
from
'@/components/take/index.vue'
import
takePhoto
from
'@/components/take/index.vue'
import
baseFile
from
'@/components/upload/index'
;
export
default
{
export
default
{
components
:
{
components
:
{
'take-photo'
:
takePhoto
'take-photo'
:
takePhoto
...
@@ -81,6 +82,7 @@
...
@@ -81,6 +82,7 @@
title
:
'全部'
title
:
'全部'
}
}
},
},
mixins
:
[
baseFile
],
onLoad
(
e
)
{
onLoad
(
e
)
{
getApp
().
trackPage
(
'照片规范列表页'
)
getApp
().
trackPage
(
'照片规范列表页'
)
if
(
e
&&
e
.
brandId
)
{
if
(
e
&&
e
.
brandId
)
{
...
@@ -242,22 +244,27 @@
...
@@ -242,22 +244,27 @@
uni
.
hideTabBar
()
uni
.
hideTabBar
()
this
.
takeStatus
=
true
this
.
takeStatus
=
true
},
},
closeTake
(
img
)
{
async
closeTake
(
img
)
{
if
(
img
!==
undefined
){
if
(
img
!==
undefined
){
const
files
=
img
.
map
(
v
=>
v
.
path
)
const
value
=
await
this
.
saveToTask
(
files
)
if
(
!
this
.
currentItemDate
.
orderImages
)
this
.
currentItemDate
.
orderImages
=
[]
if
(
!
this
.
currentItemDate
.
orderImages
)
this
.
currentItemDate
.
orderImages
=
[]
// step1 添加图片
// 复制一份 用于保存
img
.
forEach
(
v
=>
{
let
saveList
=
this
.
currentItemDate
.
orderImages
.
concat
();
this
.
currentItemDate
.
orderImages
.
push
(
v
.
key
)
value
.
map
(
item
=>
{
// step1 添加缓存图片 到显示
this
.
currentItemDate
.
orderImages
.
push
(
item
.
path
)
// 文件key添加保存数组中
saveList
.
push
(
item
.
key
)
})
})
// step2 保存图片
// step2 保存图片
var
data
=
{
var
data
=
{
type
:
this
.
currentItemDate
.
type
,
type
:
this
.
currentItemDate
.
type
,
images
:
Array
.
from
(
this
.
currentItemDate
.
orderImages
),
images
:
Array
.
from
(
saveList
),
fieldsName
:
this
.
currentItemDate
.
fieldName
fieldsName
:
this
.
currentItemDate
.
fieldName
}
}
this
.
$u
.
api
.
saveImage
(
data
,
this
.
orderId
).
then
((
res
)
=>
{
this
.
$u
.
api
.
saveImage
(
data
,
this
.
orderId
).
then
((
res
)
=>
{
if
(
res
.
code
==
200
)
{
if
(
res
.
code
==
200
)
{
console
.
log
(
"==="
,
res
.
data
)
}
else
{
}
else
{
console
.
log
(
"保存图片异常"
,
res
.
data
.
message
)
console
.
log
(
"保存图片异常"
,
res
.
data
.
message
)
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment