Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0d1a04da81 | ||
|
|
513464cc74 | ||
|
|
5664dfc7b6 | ||
|
|
e4feb9f9f0 | ||
|
|
bc382a5533 | ||
|
|
44935b095e | ||
|
|
5b8dccc61e | ||
|
|
5c85b93dd3 | ||
|
|
a2558c0e29 | ||
|
|
2cc23d70c4 | ||
|
|
84ee84777d | ||
|
|
fe831c1549 | ||
|
|
d74a057fe7 | ||
|
|
52ae542c27 | ||
|
|
38d8681f00 | ||
|
|
2b4973d00a | ||
|
|
f20d8160f0 | ||
|
|
3932bce353 | ||
|
|
9346ff344c | ||
|
|
f9c89cf57a | ||
|
|
096457e28e | ||
|
|
31b4b33e59 | ||
|
|
b4540c687b | ||
|
|
766a60a887 | ||
|
|
a51a93a86c | ||
|
|
78b4a8b717 | ||
|
|
40780e403d | ||
|
|
e16107be27 | ||
|
|
3e7df4eae5 | ||
|
|
4a2a9ed7b3 | ||
|
|
bd877defee | ||
|
|
ba382fa291 | ||
|
|
3e8354dfdf | ||
|
|
8111c269ef | ||
|
|
471323a6cf | ||
|
|
64718de258 | ||
|
|
3588bed039 | ||
|
|
2341d73a42 | ||
|
|
3ad1294df8 | ||
|
|
9357c9b092 | ||
|
|
0a342627c3 | ||
|
|
913fe6b504 | ||
|
|
9200cdf3fd | ||
|
|
66c10a9fce | ||
|
|
fe3c7a8735 | ||
|
|
dafdbb54e2 | ||
|
|
5238ea3db4 | ||
|
|
79fc068424 | ||
|
|
49b7b543a1 | ||
|
|
653476fb99 | ||
|
|
a82b2dd8ff | ||
|
|
1fa7c2bb34 | ||
|
|
397ccdff56 | ||
|
|
ab5047788c | ||
|
|
07daf8223b | ||
|
|
cd8dc6b383 | ||
|
|
57cf84d9e3 | ||
|
|
886d90f94f | ||
|
|
9810ddbf0c | ||
|
|
8d9bcc7a13 | ||
|
|
c6c3848842 | ||
|
|
97328632cb | ||
|
|
c1af7ab47b | ||
|
|
835dbac9cd | ||
|
|
aca849d8a4 | ||
|
|
90dd2066b2 | ||
|
|
fe85f97991 | ||
|
|
b453630387 | ||
|
|
24a80a9a62 | ||
|
|
1b051f637d | ||
|
|
c1e80f293e | ||
|
|
11bfc07a1e | ||
|
|
ac0a1da090 | ||
|
|
9916f048c4 | ||
|
|
8a97ba1409 | ||
|
|
dc63c97059 | ||
|
|
d0a455a078 | ||
|
|
0ace11d1d5 | ||
|
|
a5d3073292 | ||
|
|
83f6a92d84 | ||
|
|
72fbe84e9e | ||
|
|
abf59037fc | ||
|
|
de7bafd256 | ||
|
|
744fadb48f | ||
|
|
b831a8ed4c | ||
|
|
c8a6c4edfa | ||
|
|
806c6fc27d | ||
|
|
2ea35c9d4b | ||
|
|
b51eefa11d | ||
|
|
21241eedb9 | ||
|
|
5eaafb34dc | ||
|
|
1731eee332 | ||
|
|
737646fcad | ||
|
|
47600d3316 | ||
|
|
408cdcedd5 | ||
|
|
04c7a80f25 | ||
|
|
48058d19fe | ||
|
|
e988fe6407 | ||
|
|
400653c061 | ||
|
|
fb2022a7a0 | ||
|
|
2caffc8f05 | ||
|
|
7f03e28448 | ||
|
|
e00184fc1d | ||
|
|
77f89d9545 | ||
|
|
35ae67a7e0 | ||
|
|
35ac818dd1 | ||
|
|
decd8e6edb | ||
|
|
b7cae96eb5 | ||
|
|
accf8e8c3f | ||
|
|
629b23c27a | ||
|
|
765ff75818 | ||
|
|
5a3e011496 | ||
|
|
cf048ba3c2 | ||
|
|
36c8efced7 | ||
|
|
a0dcbc1cba | ||
|
|
13bc3dde98 | ||
|
|
d20ace32aa | ||
|
|
70d2764a44 | ||
|
|
e3774c9a28 | ||
|
|
755de3b7e9 | ||
|
|
f75b134aa3 | ||
|
|
25811cf479 | ||
|
|
45890cea4a | ||
|
|
8aaf9271e1 | ||
|
|
27232abf9c | ||
|
|
70e12e5618 | ||
|
|
fec7d4626c | ||
|
|
28b31b6241 | ||
|
|
29ef938a40 | ||
|
|
6ed2a3dbc1 | ||
|
|
3266a2bbbb | ||
|
|
7f39210d23 | ||
|
|
064d2cb318 | ||
|
|
bb88b62951 | ||
|
|
a9207db70c | ||
|
|
fa8062185c | ||
|
|
7ce4cc8ef9 | ||
|
|
04381fd07c | ||
|
|
af36fc5919 | ||
|
|
3fc9b2000a | ||
|
|
732e830c86 | ||
|
|
f02f0a9e08 | ||
|
|
58a7ad1a45 | ||
|
|
da590d703b | ||
|
|
13fb050dac | ||
|
|
02dd304ded | ||
|
|
11073925cd | ||
|
|
8533c355e1 | ||
|
|
ddf7d568a7 | ||
|
|
49b1676825 | ||
|
|
8038a93865 | ||
|
|
fff88a393b | ||
|
|
9e98f71d38 | ||
|
|
1702d6dd85 | ||
|
|
daafc8a6b3 | ||
|
|
61bf1f5b61 | ||
|
|
cf0107deb4 | ||
|
|
71c6c030ee | ||
|
|
ce726e8794 | ||
|
|
de15e61e13 | ||
|
|
74608b05ab | ||
|
|
4a7d00fa82 | ||
|
|
43d93d5822 | ||
|
|
d4b5667bfb | ||
|
|
290399dd31 | ||
|
|
713ed23c2e | ||
|
|
0f2c6eb4fb | ||
|
|
5a19c68a6d | ||
|
|
561110d582 | ||
|
|
67d777de4d | ||
|
|
7b3b512004 |
@@ -2,6 +2,10 @@
|
|||||||
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
|
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
|
||||||
"version": "0.0",
|
"version": "0.0",
|
||||||
"configurations": [{
|
"configurations": [{
|
||||||
|
"app-plus" :
|
||||||
|
{
|
||||||
|
"launchtype" : "local"
|
||||||
|
},
|
||||||
"default" :
|
"default" :
|
||||||
{
|
{
|
||||||
"launchtype" : "local"
|
"launchtype" : "local"
|
||||||
|
|||||||
@@ -1,34 +1,44 @@
|
|||||||
<script>
|
<script>
|
||||||
import config from './config'
|
import config from './config'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import { getToken } from '@/utils/auth'
|
import {
|
||||||
|
getToken
|
||||||
export default {
|
} from '@/utils/auth'
|
||||||
onLaunch: function() {
|
import {
|
||||||
this.initApp()
|
initEid
|
||||||
},
|
} from './mp_ecard_sdk/main';
|
||||||
methods: {
|
export default {
|
||||||
// 初始化应用
|
globalData: {
|
||||||
initApp() {
|
// requestUrl: 'https://api.xayunmei.com/zhongcaiapi',
|
||||||
// 初始化应用配置
|
requestUrl: 'http://121.40.189.20:9001',
|
||||||
this.initConfig()
|
},
|
||||||
// 检查用户登录状态
|
onLaunch: function() {
|
||||||
//#ifdef H5
|
this.initApp();
|
||||||
this.checkLogin()
|
initEid();
|
||||||
//#endif
|
uni.setStorageSync('certificationStatus', '未认证')
|
||||||
},
|
},
|
||||||
initConfig() {
|
methods: {
|
||||||
this.globalData.config = config
|
// 初始化应用
|
||||||
},
|
initApp() {
|
||||||
checkLogin() {
|
// 初始化应用配置
|
||||||
if (!getToken()) {
|
this.initConfig()
|
||||||
this.$tab.reLaunch('/pages/login')
|
// 检查用户登录状态
|
||||||
}
|
//#ifdef H5
|
||||||
}
|
this.checkLogin()
|
||||||
}
|
//#endif
|
||||||
}
|
},
|
||||||
|
initConfig() {
|
||||||
|
this.globalData.config = config
|
||||||
|
},
|
||||||
|
checkLogin() {
|
||||||
|
if (!getToken()) {
|
||||||
|
this.$tab.reLaunch('/pages/switchSystem')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
@import '@/static/scss/index.scss'
|
@import '@/static/scss/index.scss'
|
||||||
</style>
|
</style>
|
||||||
@@ -0,0 +1,195 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 查询被申请人案件列表
|
||||||
|
export function respondentList(data) {
|
||||||
|
return request({
|
||||||
|
'url': '/evidence/all',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询详情
|
||||||
|
export function respondentDetail(data) {
|
||||||
|
return request({
|
||||||
|
'url': `/evidence/${data}`,
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询仲裁员列表
|
||||||
|
export function arbitratorList(data) {
|
||||||
|
return request({
|
||||||
|
'url': `/caseApplication/listMediator`,
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 确认证据
|
||||||
|
export function evidenceConfirm() {
|
||||||
|
return request({
|
||||||
|
'url': `/evidence/confirm`,
|
||||||
|
method: 'put',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 案件质证
|
||||||
|
export function evidenceCrossexami(data) {
|
||||||
|
return request({
|
||||||
|
'url': `/evidence/crossexami`,
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询物流信息
|
||||||
|
export function logistics(data) {
|
||||||
|
return request({
|
||||||
|
'url': `/adjudication/logistics`,
|
||||||
|
method: 'get',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询案件列表
|
||||||
|
export function caseApplicationList(data) {
|
||||||
|
return request({
|
||||||
|
'url': `/caseApplication/list`,
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 调解系统查看相关案件
|
||||||
|
export function caseApplicationTj(data) {
|
||||||
|
return request({
|
||||||
|
'url': `/caseApplication/list`,
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 调解系统查看相关案件详情
|
||||||
|
export function selectById(data) {
|
||||||
|
return request({
|
||||||
|
'url': `/caseApplication/selectById`,
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 调解系统选择仲裁员时间
|
||||||
|
export function updateBooking(data) {
|
||||||
|
return request({
|
||||||
|
'url': `/caseApplication/updateBooking`,
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询按钮列表
|
||||||
|
export function queryCaseFlowInfo(data) {
|
||||||
|
return request({
|
||||||
|
'url': `/case/flow/queryCaseFlowInfo`,
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据机构id查询模板
|
||||||
|
export function getTemplate(data) {
|
||||||
|
return request({
|
||||||
|
url: `/deptIdentify/getTemplate`,
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据身份证获取生日和性别
|
||||||
|
export function getInfoByIdCard(query) {
|
||||||
|
return request({
|
||||||
|
url: '/caseApplication/getInfoByIdCard',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 新增案件 */
|
||||||
|
export function caseApplicationInsert(data) {
|
||||||
|
return request({
|
||||||
|
url: '/caseApplication/insert',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 修改立案申请接口
|
||||||
|
export function updateComfire(data) {
|
||||||
|
return request({
|
||||||
|
url: "/caseApplication/update",
|
||||||
|
method: "post",
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//提交案件
|
||||||
|
export function caseAppSubmit(data) {
|
||||||
|
return request({
|
||||||
|
url: '/caseApplication/submit',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/** 根据id查询案件信息 */
|
||||||
|
export function caseApplicationSelectById(data) {
|
||||||
|
return request({
|
||||||
|
url: '/caseApplication/selectById',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 删除案件
|
||||||
|
export function caseDelete(data) {
|
||||||
|
return request({
|
||||||
|
url: '/caseApplication/delete',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 案件id查询缴费清单
|
||||||
|
export function selectPaymentDetail(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pay/selectPaymentDetail',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 申请人缴费确认
|
||||||
|
export function confirmPaid(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pay/confirmPaid',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//默认新增显示
|
||||||
|
export function getUserInfo(data) {
|
||||||
|
return request({
|
||||||
|
url: '/caseApplication/getUserInfo',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 被申请人缴费确认
|
||||||
|
export function resConfirmPaid(data) {
|
||||||
|
return request({
|
||||||
|
url: '/pay/resConfirmPaid',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//申请人和被申请人签收调解书
|
||||||
|
export function msCaseSign(data) {
|
||||||
|
return request({
|
||||||
|
url: "/mssignSeal/msCaseSign",
|
||||||
|
method: "post",
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//证件类型
|
||||||
|
export function idType(data) {
|
||||||
|
return request({
|
||||||
|
url: '/system/dict/data/type/id_type',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 调解首页数据
|
||||||
|
export function todoCount(data) {
|
||||||
|
return request({
|
||||||
|
'url': '/caseApplication/todoCount',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 仲裁调解首页数据
|
||||||
|
export function toDoCountReferee(data) {
|
||||||
|
return request({
|
||||||
|
'url': '/caseApplication/toDoCount',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
+83
-38
@@ -2,58 +2,103 @@ import request from '@/utils/request'
|
|||||||
|
|
||||||
// 登录方法
|
// 登录方法
|
||||||
export function login(username, password, code, uuid) {
|
export function login(username, password, code, uuid) {
|
||||||
const data = {
|
const data = {
|
||||||
username,
|
username,
|
||||||
password,
|
password,
|
||||||
code,
|
code,
|
||||||
uuid
|
uuid
|
||||||
}
|
}
|
||||||
return request({
|
return request({
|
||||||
'url': '/login',
|
'url': '/login',
|
||||||
headers: {
|
headers: {
|
||||||
isToken: false
|
isToken: false
|
||||||
},
|
},
|
||||||
'method': 'post',
|
'method': 'post',
|
||||||
'data': data
|
'data': data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 注册方法
|
// 注册方法
|
||||||
export function register(data) {
|
export function register(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/register',
|
url: '/register',
|
||||||
headers: {
|
headers: {
|
||||||
isToken: false
|
isToken: false
|
||||||
},
|
},
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取用户详细信息
|
// 获取用户详细信息
|
||||||
export function getInfo() {
|
export function getInfo() {
|
||||||
return request({
|
return request({
|
||||||
'url': '/getInfo',
|
'url': '/getInfo',
|
||||||
'method': 'get'
|
'method': 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 退出方法
|
// 退出方法
|
||||||
export function logout() {
|
export function logout() {
|
||||||
return request({
|
return request({
|
||||||
'url': '/logout',
|
'url': '/logout',
|
||||||
'method': 'post'
|
'method': 'post'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取验证码
|
// 获取验证码
|
||||||
export function getCodeImg() {
|
export function getCodeImg() {
|
||||||
return request({
|
return request({
|
||||||
'url': '/captchaImage',
|
'url': '/captchaImage',
|
||||||
headers: {
|
headers: {
|
||||||
isToken: false
|
isToken: false
|
||||||
},
|
},
|
||||||
method: 'get',
|
method: 'get',
|
||||||
timeout: 20000
|
timeout: 20000
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取eidtoken
|
||||||
|
export function getEidtoken() {
|
||||||
|
return request({
|
||||||
|
'url': '/identityAuthentication/selectIdentityAuthenticaEIDtoken',
|
||||||
|
method: 'post',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 发送人脸认证之后的eidtoken
|
||||||
|
export function sendEidtoken(data) {
|
||||||
|
return request({
|
||||||
|
'url': '/identityAuthentication/selectIdentityAuthenticaRespon',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取手机验证码
|
||||||
|
export function sendCode(data) {
|
||||||
|
return request({
|
||||||
|
'url': '/weChatUser/sendCode',
|
||||||
|
method: 'get',
|
||||||
|
params:data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 注册方法
|
||||||
|
export function wxregister(data) {
|
||||||
|
return request({
|
||||||
|
url: '/weChatUser/registerUser',
|
||||||
|
headers: {
|
||||||
|
isToken: false
|
||||||
|
},
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取证件类型
|
||||||
|
export function idType(data){
|
||||||
|
return request({
|
||||||
|
url: '/system/dict/data/type/id_type',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
/** 获取支付二维码 */
|
||||||
|
export function casePay(data) {
|
||||||
|
return request({
|
||||||
|
'url': '/pay/casePay',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/**确认缴费*/
|
||||||
|
export function confirmPayment(data) {
|
||||||
|
return request({
|
||||||
|
'url': '/pay/confirmPayment',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
uploadImage:`/evidence/upload`, // 图片上传
|
||||||
|
}
|
||||||
@@ -0,0 +1,192 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<view class="Rboy-box">
|
||||||
|
<view class="Rboy-obverse">
|
||||||
|
<image class="obverseimg" :src="obverseUrl ? obverseUrl : obverse" @click="obverse_btn" mode="">
|
||||||
|
</image>
|
||||||
|
<image class="del_btn" :src="del" mode="" v-if="obverseUrl" @click="del_btn('obverse')"></image>
|
||||||
|
<view class="bottom">
|
||||||
|
<text>身份证正面照</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="Rboy-reverse">
|
||||||
|
<image class="reverseimg" :src="reverseUrl ? reverseUrl : reverse" @click="reverse_btn" mode="">
|
||||||
|
</image>
|
||||||
|
<image class="del_btn" :src="del" mode="" v-if="reverseUrl" @click="del_btn('reverse')"></image>
|
||||||
|
<view class="bottom">
|
||||||
|
<text>身份证反面照</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import file from "./file.js"
|
||||||
|
export default {
|
||||||
|
name: "Rboy-upload-sfz",
|
||||||
|
props: {
|
||||||
|
// 正面
|
||||||
|
obverseUrl: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
// 反面
|
||||||
|
reverseUrl: {
|
||||||
|
type: String,
|
||||||
|
default: ""
|
||||||
|
},
|
||||||
|
// album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
|
||||||
|
sourceType: {
|
||||||
|
type: Array || Object,
|
||||||
|
default: () => {
|
||||||
|
return ['album', 'camera']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
obverse: file.obverse,
|
||||||
|
reverse: file.reverse,
|
||||||
|
del: file.del,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
obverse_btn() {
|
||||||
|
if (this.obverseUrl) {
|
||||||
|
// 预览
|
||||||
|
this.previewImage(this.obverseUrl)
|
||||||
|
} else {
|
||||||
|
// 上传
|
||||||
|
this.select_change("obverse")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
reverse_btn() {
|
||||||
|
if (this.reverseUrl) {
|
||||||
|
// 预览
|
||||||
|
this.previewImage(this.reverseUrl)
|
||||||
|
} else {
|
||||||
|
// 上传
|
||||||
|
this.select_change("reverse")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 上传
|
||||||
|
select_change(name) {
|
||||||
|
uni.chooseImage({
|
||||||
|
count: 1, //默认9
|
||||||
|
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
|
||||||
|
sourceType: this.sourceType, // 从相册选择
|
||||||
|
success: (res) => {
|
||||||
|
this.$emit("selectChange", {
|
||||||
|
msg: `${name}Image:ok`,
|
||||||
|
name,
|
||||||
|
tempFilePath: res.tempFilePaths[0],
|
||||||
|
tempFile: res.tempFiles[0]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 预览
|
||||||
|
previewImage(current = 0) {
|
||||||
|
uni.previewImage({
|
||||||
|
current,
|
||||||
|
urls: [this.obverseUrl, this.reverseUrl],
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 删除
|
||||||
|
del_btn(name) {
|
||||||
|
console.log(name)
|
||||||
|
this.$emit("del", {
|
||||||
|
name,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@imgWidth: 345rpx;
|
||||||
|
@imgheight: 220rpx;
|
||||||
|
@boxheight: 280rpx;
|
||||||
|
|
||||||
|
.Rboy-box {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
// align-items: center;
|
||||||
|
|
||||||
|
.Rboy-obverse {
|
||||||
|
border-radius: 10rpx;
|
||||||
|
width: @imgWidth;
|
||||||
|
height: @boxheight;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.obverseimg {
|
||||||
|
width: @imgWidth;
|
||||||
|
height: @imgheight;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom {
|
||||||
|
text-align: center;
|
||||||
|
height: calc(@boxheight - @imgheight);
|
||||||
|
background-color: #B7D7FF;
|
||||||
|
color: #3B5FD2;
|
||||||
|
font-size: 28rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.del_btn {
|
||||||
|
position: absolute;
|
||||||
|
top: 5rpx;
|
||||||
|
right: 5rpx;
|
||||||
|
width: 50rpx;
|
||||||
|
height: 50rpx;
|
||||||
|
border-radius: 50%;
|
||||||
|
z-index: 20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.Rboy-reverse {
|
||||||
|
border-radius: 10rpx;
|
||||||
|
width: @imgWidth;
|
||||||
|
height: @boxheight;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.reverseimg {
|
||||||
|
width: @imgWidth;
|
||||||
|
height: @imgheight;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom {
|
||||||
|
text-align: center;
|
||||||
|
height: calc(@boxheight - @imgheight);
|
||||||
|
background-color: #B7D7FF;
|
||||||
|
color: #3B5FD2;
|
||||||
|
font-size: 28rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.del_btn {
|
||||||
|
position: absolute;
|
||||||
|
top: 5rpx;
|
||||||
|
right: 5rpx;
|
||||||
|
width: 50rpx;
|
||||||
|
height: 50rpx;
|
||||||
|
border-radius: 50%;
|
||||||
|
z-index: 20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,64 @@
|
|||||||
|
|
||||||
|
|
||||||
|
## RboyUploadSfz 身份证正反面上传
|
||||||
|
|
||||||
|
> **组件名:Rboy-upload-sfz**
|
||||||
|
> 代码块: `Rboy-upload-sfz`
|
||||||
|
|
||||||
|
|
||||||
|
## 属性
|
||||||
|
- obverse-url 身份证正面图片地址
|
||||||
|
- reverse-url 身份证反面图片地址
|
||||||
|
- source-type 控制相机和相册(album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项)
|
||||||
|
- @selectChange 身份证图片上传成功事件
|
||||||
|
- @del 身份证图片删除事件
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
1. 引入
|
||||||
|
```js
|
||||||
|
import RboyUploadSfz from "@/components/Rboy-upload-sfz/Rboy-upload-sfz.vue"
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 注册组件
|
||||||
|
```js
|
||||||
|
components: {
|
||||||
|
RboyUploadSfz,
|
||||||
|
},
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 应用
|
||||||
|
```html
|
||||||
|
<Rboy-upload-sfz :obverse-url="formData.obverseUrl" :reverse-url="formData.reverseUrl" @selectChange="sfz_chagne" @del="del_btn"></Rboy-upload-sfz>
|
||||||
|
```
|
||||||
|
```js
|
||||||
|
// 表单
|
||||||
|
formData: {
|
||||||
|
// 正面
|
||||||
|
obverseUrl: "",
|
||||||
|
// 反面
|
||||||
|
reverseUrl: "",
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 身份证
|
||||||
|
// 上传
|
||||||
|
sfz_chagne(e) {
|
||||||
|
if (e.name == "obverse") {
|
||||||
|
this.formData.obverseUrl = e.tempFilePath
|
||||||
|
} else if (e.name == "reverse") {
|
||||||
|
this.formData.reverseUrl = e.tempFilePath
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 删除
|
||||||
|
del_btn(e) {
|
||||||
|
if (e.name == "obverse") {
|
||||||
|
this.formData.obverseUrl = ""
|
||||||
|
} else if (e.name == "reverse") {
|
||||||
|
this.formData.reverseUrl = ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,780 @@
|
|||||||
|
<template>
|
||||||
|
<view class="uni-stat__select">
|
||||||
|
<!-- hide-on-phone -->
|
||||||
|
<span v-if="label" class="uni-label-text">{{label + ':'}}</span>
|
||||||
|
<view class="uni-stat-box" :class="{'uni-stat__actived': current}">
|
||||||
|
<view class="uni-select" :style="{height:multiple?'100%':' 35px'}"
|
||||||
|
:class="{'uni-select--disabled':disabled}">
|
||||||
|
<view class="uni-select__input-box" :style="{height:multiple?'100%':'35px'}" @click="toggleSelector">
|
||||||
|
<view class="" style="display: flex;flex-wrap: wrap;width: 100%;" v-if="multiple&¤t.length>0">
|
||||||
|
<view class="tag-calss"
|
||||||
|
v-for="(item,index) in collapseTags?current.slice(0,collapseTagsNum):current"
|
||||||
|
:key="item[dataValue]">
|
||||||
|
<span class="text">{{item[dataKey]}}</span>
|
||||||
|
<view class="" @click.stop="delItem(item)">
|
||||||
|
<uni-icons type="clear" style="margin-left: 4px;" color="#c0c4cc" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view v-if="current.length>collapseTagsNum&&collapseTags" class="tag-calss">
|
||||||
|
<span class="text">+{{current.length-collapseTagsNum}}</span>
|
||||||
|
</view>
|
||||||
|
<input v-if="filterable&&!disabled" @input="inputChange" class="uni-select__input-text"
|
||||||
|
type="text" style="font-size: 12px;height: 52rpx;margin-left: 6px;width: auto;"
|
||||||
|
placeholder="请输入" v-model="filterInput">
|
||||||
|
</view>
|
||||||
|
<view v-else-if="current&¤t.length>0&&!showSelector" class="uni-select__input-text">
|
||||||
|
{{current}}
|
||||||
|
</view>
|
||||||
|
<input v-else-if="filterable&&showSelector" :focus="isFocus" @input="inputChange"
|
||||||
|
:disabled="disabled" @click.stop="" class="uni-select__input-text" type="text"
|
||||||
|
style="font-size: 12px;position: absolute;z-index: 1;" :placeholder="placeholderOld"
|
||||||
|
v-model="filterInput">
|
||||||
|
<view v-else class="uni-select__input-text uni-select__input-placeholder">{{typePlaceholder}}</view>
|
||||||
|
<uni-icons v-if="(current.length>0 && clear&&!disabled)||(currentArr.length>0&&clear&&!disabled)"
|
||||||
|
type="clear" color="#c0c4cc" size="24" style="position: absolute;right: 0;" @click="clearVal" />
|
||||||
|
<uni-icons style="right: 0;position: absolute;" v-else :type="showSelector? 'top' : 'bottom'"
|
||||||
|
size="14" color="#999" />
|
||||||
|
</view>
|
||||||
|
<view class="uni-select--mask" v-if="showSelector" @click="toggleSelector" />
|
||||||
|
<view class="uni-select__selector" v-if="showSelector">
|
||||||
|
<view class="uni-popper__arrow"></view>
|
||||||
|
<scroll-view scroll-y="true" class="uni-select__selector-scroll">
|
||||||
|
<view class="uni-select__selector-empty" v-if="filterMixinDatacomResData.length === 0">
|
||||||
|
<span>{{emptyTips}}</span>
|
||||||
|
</view>
|
||||||
|
<view v-else :class="['uni-select__selector-item', {'uni-select_selector-item_active' :multiple
|
||||||
|
&& currentArr.includes(item[dataValue])}]"
|
||||||
|
style="display: flex;justify-content: space-between;align-items: center;"
|
||||||
|
v-for="(item,index) in filterMixinDatacomResData" :key="index" @click="change(item)">
|
||||||
|
<span
|
||||||
|
:class="{'uni-select__selector__disabled': item.disable}">{{formatItemName(item)}}</span>
|
||||||
|
<uni-icons v-if="multiple&¤tArr.includes(item[dataValue])" type="checkmarkempty"
|
||||||
|
color="#007aff" />
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
/**
|
||||||
|
* DataChecklist 数据选择器
|
||||||
|
* @description 通过数据渲染的下拉框组件
|
||||||
|
* @tutorial https://uniapp.dcloud.io/component/uniui/uni-data-select
|
||||||
|
* @property {String} value 默认值
|
||||||
|
* @property {Array} localdata 本地数据 ,格式 [{text:'',value:''}]
|
||||||
|
* @property {Boolean} clear 是否可以清空已选项
|
||||||
|
* @property {Boolean} emptyText 没有数据时显示的文字 ,本地数据无效
|
||||||
|
* @property {String} label 左侧标题
|
||||||
|
* @property {String} placeholder 输入框的提示文字
|
||||||
|
* @property {Boolean} disabled 是否禁用
|
||||||
|
* @event {Function} change 选中发生变化触发
|
||||||
|
*/
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "uni-stat-select",
|
||||||
|
mixins: [uniCloud.mixinDatacom || {}],
|
||||||
|
props: {
|
||||||
|
collapseTagsNum: {
|
||||||
|
type: Number,
|
||||||
|
default: 1
|
||||||
|
},
|
||||||
|
collapseTags: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
dataKey: {
|
||||||
|
type: [String],
|
||||||
|
default: 'text'
|
||||||
|
},
|
||||||
|
dataValue: {
|
||||||
|
type: [String],
|
||||||
|
default: 'value'
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
filterable: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
localdata: {
|
||||||
|
type: Array,
|
||||||
|
default () {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// #ifndef VUE3
|
||||||
|
value: {
|
||||||
|
type: [String, Number, Array],
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
// #endif
|
||||||
|
// #ifdef VUE3
|
||||||
|
modelValue: {
|
||||||
|
type: [String, Number, Array],
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
// #endif
|
||||||
|
label: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
placeholder: {
|
||||||
|
type: String,
|
||||||
|
default: '请选择'
|
||||||
|
},
|
||||||
|
emptyTips: {
|
||||||
|
type: String,
|
||||||
|
default: '无选项'
|
||||||
|
},
|
||||||
|
clear: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
defItem: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
// 格式化输出 用法 field="_id as value, version as text, uni_platform as label" format="{label} - {text}"
|
||||||
|
format: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
showSelector: false,
|
||||||
|
current: [],
|
||||||
|
mixinDatacomResData: [],
|
||||||
|
apps: [],
|
||||||
|
channels: [],
|
||||||
|
cacheKey: "uni-data-select-lastSelectedValue",
|
||||||
|
placeholderOld: "",
|
||||||
|
currentArr: [],
|
||||||
|
filterInput: "",
|
||||||
|
isFocus: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
if (this.multiple) {
|
||||||
|
// #ifndef VUE3
|
||||||
|
this.currentArr = this.value || []
|
||||||
|
// #endif
|
||||||
|
// #ifdef VUE3
|
||||||
|
this.currentArr = this.modelValue || []
|
||||||
|
// #endif
|
||||||
|
if (this.current.length > 0) {
|
||||||
|
this.current = []
|
||||||
|
}
|
||||||
|
// #ifndef VUE3
|
||||||
|
if (this.value && this.value.length > 0 && this.filterMixinDatacomResData.length > 0) {
|
||||||
|
this.current = this.value.map(item => {
|
||||||
|
let current = this.mixinDatacomResData.find(e =>
|
||||||
|
e[this.dataValue] == item
|
||||||
|
)
|
||||||
|
return {
|
||||||
|
...current
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
|
// #ifdef VUE3
|
||||||
|
if (this.modelValue && this.modelValue.length > 0 && this.filterMixinDatacomResData.length > 0) {
|
||||||
|
this.current = this.modelValue.map(item => {
|
||||||
|
let current = this.mixinDatacomResData.find(e =>
|
||||||
|
e[this.dataValue] == item
|
||||||
|
)
|
||||||
|
return {
|
||||||
|
...current
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// #ifndef VUE3
|
||||||
|
if (this.value || this.value == 0) {
|
||||||
|
this.current = this.formatItemName(this.filterMixinDatacomResData.find(e =>
|
||||||
|
e[this.dataValue] == this.value
|
||||||
|
))
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
|
// #ifdef VUE3
|
||||||
|
if (this.modelValue || this.value == 0) {
|
||||||
|
this.current = this.formatItemName(this.filterMixinDatacomResData.find(e =>
|
||||||
|
e[this.dataValue] == this.modelValue
|
||||||
|
))
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
|
}
|
||||||
|
this.placeholderOld = this.placeholder
|
||||||
|
this.debounceGet = this.debounce(() => {
|
||||||
|
this.query();
|
||||||
|
}, 300);
|
||||||
|
if (this.collection && !this.localdata.length) {
|
||||||
|
this.debounceGet();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
filterMixinDatacomResData() {
|
||||||
|
if (this.filterable && this.filterInput) {
|
||||||
|
return this.mixinDatacomResData.filter(e => e[this.dataKey].includes(this.filterInput))
|
||||||
|
} else {
|
||||||
|
return this.mixinDatacomResData
|
||||||
|
}
|
||||||
|
},
|
||||||
|
typePlaceholder() {
|
||||||
|
const text = {
|
||||||
|
'opendb-stat-app-versions': '版本',
|
||||||
|
'opendb-app-channels': '渠道',
|
||||||
|
'opendb-app-list': '应用'
|
||||||
|
}
|
||||||
|
const common = this.placeholder
|
||||||
|
const placeholder = text[this.collection]
|
||||||
|
return placeholder ?
|
||||||
|
common + placeholder :
|
||||||
|
common
|
||||||
|
},
|
||||||
|
valueCom() {
|
||||||
|
// #ifdef VUE3
|
||||||
|
return this.modelValue;
|
||||||
|
// #endif
|
||||||
|
// #ifndef VUE3
|
||||||
|
return this.value;
|
||||||
|
// #endif
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
localdata: {
|
||||||
|
immediate: true,
|
||||||
|
handler(val, old) {
|
||||||
|
if (Array.isArray(val) && old !== val) {
|
||||||
|
this.mixinDatacomResData = val || []
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
valueCom: {
|
||||||
|
handler(newVal, oldVal) {
|
||||||
|
// console.log(newVal, oldVal);
|
||||||
|
this.initDefVal()
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true
|
||||||
|
},
|
||||||
|
mixinDatacomResData: {
|
||||||
|
immediate: true,
|
||||||
|
handler(val) {
|
||||||
|
if (val.length) {
|
||||||
|
this.initDefVal()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
debounce(fn, time = 100) {
|
||||||
|
let timer = null
|
||||||
|
return function(...args) {
|
||||||
|
if (timer) clearTimeout(timer)
|
||||||
|
timer = setTimeout(() => {
|
||||||
|
fn.apply(this, args)
|
||||||
|
}, time)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 执行数据库查询
|
||||||
|
query() {
|
||||||
|
this.mixinDatacomEasyGet();
|
||||||
|
},
|
||||||
|
// 监听查询条件变更事件
|
||||||
|
onMixinDatacomPropsChange() {
|
||||||
|
if (this.collection) {
|
||||||
|
this.debounceGet();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
initDefVal() {
|
||||||
|
let defValue = ''
|
||||||
|
if ((this.valueCom || this.valueCom === 0) && !this.isDisabled(this.valueCom)) {
|
||||||
|
defValue = this.valueCom
|
||||||
|
} else {
|
||||||
|
let strogeValue
|
||||||
|
if (this.collection) {
|
||||||
|
strogeValue = this.getCache()
|
||||||
|
}
|
||||||
|
if (strogeValue || strogeValue === 0) {
|
||||||
|
defValue = strogeValue
|
||||||
|
} else {
|
||||||
|
let defItem = ''
|
||||||
|
if (this.defItem > 0 && this.defItem <= this.mixinDatacomResData.length) {
|
||||||
|
defItem = this.mixinDatacomResData[this.defItem - 1][this.dataValue]
|
||||||
|
}
|
||||||
|
defValue = defItem
|
||||||
|
}
|
||||||
|
if (defValue || defValue === 0) {
|
||||||
|
this.emit(defValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.multiple) {
|
||||||
|
const mixinDatacomResData = this.mixinDatacomResData || []
|
||||||
|
if (!defValue) defValue = []
|
||||||
|
this.current = defValue.map(item => {
|
||||||
|
const current = mixinDatacomResData.find(e => {
|
||||||
|
return e[this.dataValue] == item
|
||||||
|
})
|
||||||
|
return {
|
||||||
|
...current
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.currentArr = this.current.map(e => e[this.dataValue])
|
||||||
|
if (defValue.length < 1) {
|
||||||
|
this.currentArr = []
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const def = this.mixinDatacomResData.find(item => item[this.dataValue] === defValue)
|
||||||
|
this.current = def ? this.formatItemName(def) : ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @param {[String, Number]} value
|
||||||
|
* 判断用户给的 value 是否同时为禁用状态
|
||||||
|
*/
|
||||||
|
isDisabled(value) {
|
||||||
|
let isDisabled = false;
|
||||||
|
|
||||||
|
this.mixinDatacomResData.forEach(item => {
|
||||||
|
if (item[this.dataValue] === value) {
|
||||||
|
isDisabled = item.disable
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return isDisabled;
|
||||||
|
},
|
||||||
|
inputChange(e) {
|
||||||
|
this.$emit('inputChange', e.detail.value)
|
||||||
|
},
|
||||||
|
clearVal() {
|
||||||
|
if (this.disabled) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.multiple) {
|
||||||
|
this.current = []
|
||||||
|
this.currentArr = []
|
||||||
|
this.emit([])
|
||||||
|
} else {
|
||||||
|
this.current = ""
|
||||||
|
this.currentArr = []
|
||||||
|
this.emit('')
|
||||||
|
}
|
||||||
|
if (this.collection) {
|
||||||
|
this.removeCache()
|
||||||
|
}
|
||||||
|
this.placeholderOld = this.placeholder
|
||||||
|
this.filterInput = ""
|
||||||
|
},
|
||||||
|
change(item) {
|
||||||
|
if (!item.disable) {
|
||||||
|
this.showSelector = false
|
||||||
|
if (this.multiple) {
|
||||||
|
if (!this.current) {
|
||||||
|
this.current = []
|
||||||
|
}
|
||||||
|
if (!this.currentArr) {
|
||||||
|
this.currentArr = []
|
||||||
|
}
|
||||||
|
if (this.currentArr.includes(item[this.dataValue])) {
|
||||||
|
let index = this.current.findIndex(e => {
|
||||||
|
return e[this.dataValue] == item[this.dataValue]
|
||||||
|
})
|
||||||
|
this.current.splice(index, 1)
|
||||||
|
this.currentArr.splice(index, 1)
|
||||||
|
this.emit(this.current)
|
||||||
|
} else {
|
||||||
|
this.current.push(item)
|
||||||
|
this.currentArr.push(item[this.dataValue])
|
||||||
|
this.emit(this.current)
|
||||||
|
|
||||||
|
}
|
||||||
|
this.filterInput = ""
|
||||||
|
} else {
|
||||||
|
this.current = this.formatItemName(item)
|
||||||
|
if (this.filterable) {
|
||||||
|
this.filterInput = item[this.dataKey]
|
||||||
|
}
|
||||||
|
this.emit(item[this.dataValue])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
delItem(item) {
|
||||||
|
if (this.disabled) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.currentArr.includes(item[this.dataValue])) {
|
||||||
|
let index = this.current.findIndex(e => {
|
||||||
|
return e[this.dataValue] == item[this.dataValue]
|
||||||
|
})
|
||||||
|
this.current.splice(index, 1)
|
||||||
|
this.currentArr.splice(index, 1)
|
||||||
|
this.emit(this.current)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
emit(val) {
|
||||||
|
if (this.multiple) {
|
||||||
|
this.$emit('input', this.currentArr)
|
||||||
|
this.$emit('update:modelValue', this.currentArr)
|
||||||
|
const currentArr = this.mixinDatacomResData.filter(item => this.currentArr.includes(item[this
|
||||||
|
.dataValue]))
|
||||||
|
this.$emit('change', currentArr)
|
||||||
|
} else {
|
||||||
|
this.$emit('input', val)
|
||||||
|
this.$emit('update:modelValue', val)
|
||||||
|
const current = this.mixinDatacomResData.find(item => val == item[this.dataValue])
|
||||||
|
console.log(current);
|
||||||
|
this.$emit('change', current)
|
||||||
|
}
|
||||||
|
if (this.collection) {
|
||||||
|
this.setCache(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
toggleSelector() {
|
||||||
|
if (this.disabled) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// if (this.filterable && this.filterInput && this.mixinDatacomResData.findIndex(e => {
|
||||||
|
// return e[this.dataKey] == this
|
||||||
|
// .filterInput
|
||||||
|
// }) < 0) {
|
||||||
|
// if (!this.multiple) {
|
||||||
|
// this.filterInput = ""
|
||||||
|
// }
|
||||||
|
|
||||||
|
// }
|
||||||
|
this.showSelector = !this.showSelector
|
||||||
|
this.isFocus = this.showSelector
|
||||||
|
if (this.filterable && this.current && this.showSelector) {
|
||||||
|
if (!this.multiple) {
|
||||||
|
this.placeholderOld = this.current
|
||||||
|
// this.filterInput = ""
|
||||||
|
}
|
||||||
|
} else if (this.filterable && !this.current && !this.showSelector) {
|
||||||
|
if (this.placeholderOld != this.placeholder) {
|
||||||
|
if (!this.multiple) {
|
||||||
|
this.current = this.placeholderOld
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.filterInput = ""
|
||||||
|
|
||||||
|
},
|
||||||
|
formatItemName(item) {
|
||||||
|
if (!item) {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
let text = item[this.dataKey]
|
||||||
|
let value = item[this.dataValue]
|
||||||
|
let {
|
||||||
|
channel_code
|
||||||
|
} = item
|
||||||
|
channel_code = channel_code ? `(${channel_code})` : ''
|
||||||
|
if (this.format) {
|
||||||
|
// 格式化输出
|
||||||
|
let str = "";
|
||||||
|
str = this.format;
|
||||||
|
for (let key in item) {
|
||||||
|
str = str.replace(new RegExp(`{${key}}`, "g"), item[key]);
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
} else {
|
||||||
|
return this.collection.indexOf('app-list') > 0 ?
|
||||||
|
`${text}(${value})` :
|
||||||
|
(
|
||||||
|
text ?
|
||||||
|
text :
|
||||||
|
`未命名${channel_code}`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取当前加载的数据
|
||||||
|
getLoadData() {
|
||||||
|
return this.mixinDatacomResData;
|
||||||
|
},
|
||||||
|
// 获取当前缓存key
|
||||||
|
getCurrentCacheKey() {
|
||||||
|
return this.collection;
|
||||||
|
},
|
||||||
|
// 获取缓存
|
||||||
|
getCache(name = this.getCurrentCacheKey()) {
|
||||||
|
let cacheData = uni.getStorageSync(this.cacheKey) || {};
|
||||||
|
return cacheData[name];
|
||||||
|
},
|
||||||
|
// 设置缓存
|
||||||
|
setCache(value, name = this.getCurrentCacheKey()) {
|
||||||
|
let cacheData = uni.getStorageSync(this.cacheKey) || {};
|
||||||
|
cacheData[name] = value;
|
||||||
|
uni.setStorageSync(this.cacheKey, cacheData);
|
||||||
|
},
|
||||||
|
// 删除缓存
|
||||||
|
removeCache(name = this.getCurrentCacheKey()) {
|
||||||
|
let cacheData = uni.getStorageSync(this.cacheKey) || {};
|
||||||
|
delete cacheData[name];
|
||||||
|
uni.setStorageSync(this.cacheKey, cacheData);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
$uni-base-color: #6a6a6a !default;
|
||||||
|
$uni-main-color: #333 !default;
|
||||||
|
$uni-secondary-color: #909399 !default;
|
||||||
|
$uni-border-3: #e5e5e5;
|
||||||
|
|
||||||
|
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
@media screen and (max-width: 500px) {
|
||||||
|
.hide-on-phone {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* #endif */
|
||||||
|
.uni-stat__select {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
// padding: 15px;
|
||||||
|
cursor: pointer;
|
||||||
|
width: 100%;
|
||||||
|
flex: 1;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-stat-box {
|
||||||
|
width: 100%;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-stat__actived {
|
||||||
|
width: 100%;
|
||||||
|
flex: 1;
|
||||||
|
// outline: 1px solid #2979ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-label-text {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: $uni-base-color;
|
||||||
|
margin: auto 0;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select {
|
||||||
|
font-size: 14px;
|
||||||
|
border: 1px solid $uni-border-3;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 0 5px;
|
||||||
|
padding-left: 10px;
|
||||||
|
position: relative;
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
user-select: none;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
border-bottom: solid 1px $uni-border-3;
|
||||||
|
width: 100%;
|
||||||
|
flex: 1;
|
||||||
|
height: 35px;
|
||||||
|
min-height: 35px;
|
||||||
|
|
||||||
|
&--disabled {
|
||||||
|
background-color: #f5f7fa;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select__label {
|
||||||
|
font-size: 16px;
|
||||||
|
// line-height: 22px;
|
||||||
|
min-height: 35px;
|
||||||
|
height: 35px;
|
||||||
|
padding-right: 10px;
|
||||||
|
color: $uni-secondary-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select__input-box {
|
||||||
|
width: 100%;
|
||||||
|
height: 35px;
|
||||||
|
position: relative;
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex: 1;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.tag-calss {
|
||||||
|
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, SimSun, sans-serif;
|
||||||
|
font-weight: 400;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
font-size: 12px;
|
||||||
|
border: 1px solid #d9ecff;
|
||||||
|
border-radius: 4px;
|
||||||
|
white-space: nowrap;
|
||||||
|
height: 24px;
|
||||||
|
padding: 0 4px 0px 8px;
|
||||||
|
line-height: 22px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin: 2px 0 2px 6px;
|
||||||
|
display: flex;
|
||||||
|
max-width: 100%;
|
||||||
|
align-items: center;
|
||||||
|
background-color: #f4f4f5;
|
||||||
|
border-color: #e9e9eb;
|
||||||
|
color: #909399;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, SimSun, sans-serif;
|
||||||
|
font-weight: 400;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
font-size: 12px;
|
||||||
|
white-space: nowrap;
|
||||||
|
line-height: 22px;
|
||||||
|
color: #909399;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select__input {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 14px;
|
||||||
|
height: 22px;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select__input-plac {
|
||||||
|
font-size: 14px;
|
||||||
|
color: $uni-secondary-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select__selector {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
box-sizing: border-box;
|
||||||
|
/* #endif */
|
||||||
|
position: absolute;
|
||||||
|
top: calc(100% + 12px);
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
border: 1px solid #EBEEF5;
|
||||||
|
border-radius: 6px;
|
||||||
|
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
||||||
|
z-index: 3;
|
||||||
|
padding: 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select__selector-scroll {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
max-height: 200px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
/* #endif */
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select__selector-empty,
|
||||||
|
.uni-select__selector-item {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
cursor: pointer;
|
||||||
|
/* #endif */
|
||||||
|
line-height: 35px;
|
||||||
|
font-size: 14px;
|
||||||
|
text-align: center;
|
||||||
|
/* border-bottom: solid 1px $uni-border-3; */
|
||||||
|
padding: 0px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select__selector-item:hover {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select__selector-empty:last-child,
|
||||||
|
.uni-select__selector-item:last-child {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
border-bottom: none;
|
||||||
|
/* #endif */
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select_selector-item_active {
|
||||||
|
color: #409eff;
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: #f5f7fa;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select__selector__disabled {
|
||||||
|
opacity: 0.4;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* picker 弹出层通用的指示小三角 */
|
||||||
|
.uni-popper__arrow,
|
||||||
|
.uni-popper__arrow::after {
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border-color: transparent;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popper__arrow {
|
||||||
|
filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
|
||||||
|
top: -6px;
|
||||||
|
left: 10%;
|
||||||
|
margin-right: 3px;
|
||||||
|
border-top-width: 0;
|
||||||
|
border-bottom-color: #EBEEF5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popper__arrow::after {
|
||||||
|
content: " ";
|
||||||
|
top: 1px;
|
||||||
|
margin-left: -6px;
|
||||||
|
border-top-width: 0;
|
||||||
|
border-bottom-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select__input-text {
|
||||||
|
// width: 280px;
|
||||||
|
width: 90%;
|
||||||
|
color: $uni-main-color;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
-o-text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select__input-placeholder {
|
||||||
|
color: $uni-base-color;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-select--mask {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,26 +1,36 @@
|
|||||||
// 应用全局配置
|
// 应用全局配置
|
||||||
module.exports = {
|
module.exports = {
|
||||||
baseUrl: 'http://192.168.3.77:8080',
|
// baseUrlZC: 'https://api.xayunmei.com/zhongcaiapi',
|
||||||
// baseUrl: 'http://localhost:8080',
|
// baseUrl: 'https://api.xayunmei.com/zhongcaiapitest',
|
||||||
// 应用信息
|
// baseUrl: 'http://121.40.189.20:9001',
|
||||||
appInfo: {
|
baseUrlZC: 'https://api.xayunmei.com/zhongcaiapi',
|
||||||
// 应用名称
|
// baseUrlZC: 'https://api.xayunmei.com/zhongcaiapitest',
|
||||||
name: "ruoyi-app",
|
// baseUrlTJ: 'https://api.xayunmei.com/tiaojieapitest',
|
||||||
// 应用版本
|
baseUrlTJ: 'https://api.xayunmei.com/tiaojieapi',
|
||||||
version: "1.1.0",
|
// baseUrlZC: 'http://121.40.189.20:8001',
|
||||||
// 应用logo
|
// baseUrlTJ: 'http://172.16.1.43:6001',
|
||||||
logo: "/static/chuizi.png",
|
// baseUrl: 'http://172.16.1.24:8001',
|
||||||
// 官方网站
|
// baseUrl: 'http://localhost:8080',
|
||||||
site_url: "http://ruoyi.vip",
|
// baseUrl: 'http://192.168.3.18:9001',
|
||||||
// 政策协议
|
// 应用信息
|
||||||
agreements: [{
|
appInfo: {
|
||||||
title: "隐私政策",
|
// 应用名称
|
||||||
url: "https://ruoyi.vip/protocol.html"
|
name: "arbitrate-wx",
|
||||||
},
|
// 应用版本
|
||||||
{
|
version: "1.1.0",
|
||||||
title: "用户服务协议",
|
// 应用logo
|
||||||
url: "https://ruoyi.vip/protocol.html"
|
logo: "/static/chuizi.png",
|
||||||
}
|
// 官方网站
|
||||||
]
|
site_url: "http://ruoyi.vip",
|
||||||
}
|
// 政策协议
|
||||||
|
agreements: [{
|
||||||
|
title: "隐私政策",
|
||||||
|
url: "https://ruoyi.vip/protocol.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "用户服务协议",
|
||||||
|
url: "https://ruoyi.vip/protocol.html"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -3,15 +3,19 @@ import App from './App'
|
|||||||
import store from './store' // store
|
import store from './store' // store
|
||||||
import plugins from './plugins' // plugins
|
import plugins from './plugins' // plugins
|
||||||
import './permission' // permission
|
import './permission' // permission
|
||||||
|
import {
|
||||||
|
checkPermi
|
||||||
|
} from '@/utils/permission'
|
||||||
Vue.use(plugins)
|
Vue.use(plugins)
|
||||||
|
|
||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false
|
||||||
Vue.prototype.$store = store
|
Vue.prototype.$store = store
|
||||||
|
Vue.prototype.checkPermi = checkPermi
|
||||||
|
|
||||||
App.mpType = 'app'
|
App.mpType = 'app'
|
||||||
|
|
||||||
const app = new Vue({
|
const app = new Vue({
|
||||||
...App
|
...App
|
||||||
})
|
})
|
||||||
|
|
||||||
app.$mount()
|
app.$mount()
|
||||||
+70
-67
@@ -1,69 +1,72 @@
|
|||||||
{
|
{
|
||||||
"name" : "若依移动端",
|
"name": "智慧仲裁",
|
||||||
"appid" : "__UNI__25A9D80",
|
"appid": "__UNI__EB3D433",
|
||||||
"description" : "",
|
"description": "",
|
||||||
"versionName" : "1.1.0",
|
"versionName": "1.1.0",
|
||||||
"versionCode" : "100",
|
"versionCode": "100",
|
||||||
"transformPx" : false,
|
"transformPx": false,
|
||||||
"app-plus" : {
|
"app-plus": {
|
||||||
"usingComponents" : true,
|
"usingComponents": true,
|
||||||
"nvueCompiler" : "uni-app",
|
"nvueCompiler": "uni-app",
|
||||||
"splashscreen" : {
|
"splashscreen": {
|
||||||
"alwaysShowBeforeRender" : true,
|
"alwaysShowBeforeRender": true,
|
||||||
"waiting" : true,
|
"waiting": true,
|
||||||
"autoclose" : true,
|
"autoclose": true,
|
||||||
"delay" : 0
|
"delay": 0
|
||||||
},
|
},
|
||||||
"modules" : {},
|
"modules": {},
|
||||||
"distribute" : {
|
"distribute": {
|
||||||
"android" : {
|
"android": {
|
||||||
"permissions" : [
|
"permissions": [
|
||||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"ios" : {},
|
"ios": {},
|
||||||
"sdkConfigs" : {}
|
"sdkConfigs": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"quickapp" : {},
|
"quickapp": {},
|
||||||
"mp-weixin" : {
|
"mp-weixin": {
|
||||||
"appid" : "wx6d65ec24cf6b13af",
|
"appid": "wx91cb8459dca561b4",
|
||||||
"setting" : {
|
"setting": {
|
||||||
"urlCheck" : false,
|
"urlCheck": false,
|
||||||
"es6" : false,
|
"es6": false,
|
||||||
"minified" : true,
|
"minified": true,
|
||||||
"postcss" : true
|
"postcss": true
|
||||||
},
|
},
|
||||||
"optimization" : {
|
"optimization": {
|
||||||
"subPackages" : true
|
"subPackages": {
|
||||||
},
|
"subPackages": true
|
||||||
"usingComponents" : true
|
}
|
||||||
},
|
},
|
||||||
"vueVersion" : "2",
|
"usingComponents": true,
|
||||||
"h5" : {
|
"permission": {}
|
||||||
"template" : "static/index.html",
|
},
|
||||||
"devServer" : {
|
"vueVersion": "2",
|
||||||
"port" : 9090,
|
"h5": {
|
||||||
"https" : false
|
"template": "static/index.html",
|
||||||
},
|
"devServer": {
|
||||||
"title" : "RuoYi-App",
|
"port": 9090,
|
||||||
"router" : {
|
"https": false
|
||||||
"mode" : "hash",
|
},
|
||||||
"base" : "./"
|
"title": "RuoYi-App",
|
||||||
}
|
"router": {
|
||||||
}
|
"mode": "hash",
|
||||||
|
"base": "./"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
const Log={SourceType:"mp_sdk_uni",version:"1.0.0",initSdk:"INIT_SDK",getConfig:"GET_CONFIG",getConfigRetry:"GET_CONFIG_BY_RETRY",webViewResult:"WEBVIEW_RESULT",webViewError:"WEBVIEW_ERROR",navigateToEid:"NAVIGATE_TO_EID",navigateBackFromEid:"NAVIGATE_BACK_FROM_EID",navigateBackFromEidFail:"NAVIGATE_BACK_FROM_EID_FAIL",startEid:"START_EID",startEidFail:"START_EID_FAIL",eidVerifyDone:"EID_VERIFY_DONE",requestFail:"REQUEST_FAIL",requestCatch:"REQUEST_CATCH"};export default Log;
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
export default {
|
||||||
|
normalPath: ""
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
.auth{align-items:center;display:flex;flex-direction:column;margin-top:128rpx}.auth-logo{height:200rpx;width:200rpx}.auth-logo image{height:100%;width:100%}.title{font-size:36rpx;line-height:56rpx;margin-top:20rpx}.merchant-name{display:inline;font-weight:700}.sub-title{font-size:34rpx;line-height:52rpx;margin-top:8rpx}.agreement{color:#888;display:flex;font-size:28rpx;justify-content:center;line-height:40rpx;margin-top:96rpx}checkbox .wx-checkbox-input{border-radius:50%;height:24rpx;width:24rpx}checkbox .wx-checkbox-input.wx-checkbox-input-checked{background:#006eff}checkbox .wx-checkbox-input.wx-checkbox-input-checked:before{background:transparent;color:#fff;font-size:22rpx;height:28rpx;line-height:28rpx;text-align:center;width:28rpx}navigator{color:#006dff;display:inline}.button-area{margin-top:48rpx}button{background:#fff;border:2rpx solid #ddd;font-size:32rpx;font-weight:400;height:96rpx;line-height:96rpx;width:622rpx}.redirect{align-items:center;display:flex;flex-direction:column;margin-top:272rpx}.loading{height:160rpx;margin-bottom:32rpx;width:160rpx}.loading image{height:100%;width:100%}.title{font-size:34rpx;line-height:52rpx}.protocol{position:relative}.protocol .main{background:#f8f9fa;color:#3c3c3c;font-size:24rpx;padding:40rpx 40rpx 140rpx}.protocol .main view{margin:20rpx 0}.protocol .main .h1{font-size:36rpx;font-weight:700;line-height:2;margin:0 0 20rpx;text-align:center}.protocol .main .p{margin:4rpx 0;text-indent:2em}.protocol .main .strong{font-weight:700}.protocol .main .dl{margin-top:40rpx}.protocol .main .dt{margin-bottom:20rpx}.protocol .main .h2{font-size:28rpx;font-weight:700}.protocol .main .dd{margin-bottom:20rpx}.protocol .main .dd view{padding-left:2em}.protocol .pop-btn-line{background:#f8f9fa;bottom:0;box-sizing:border-box;left:0;padding:30rpx;position:fixed;width:100%}.protocol .pop-btn{background:transparent;background-color:#2787f3;border:none;border-radius:6rpx;color:#00a5e0;color:#fff;display:block;font-size:34rpx;height:90rpx;line-height:90rpx;min-width:5.6rem;outline:none;text-align:center}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export const a="dasd";
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import getParameterByName from"../utils/getParameterByName";import Log from"../constants/log.js";import{$http}from"../utils/http";export default{data:()=>({token:"",appName:"test",isAgree:!1,redirectUri:"",isNavigating:!1,showWebView:!0}),onLoad(e){const{token:t}=e;this.token=t,this.redirectUri=`${uni.eidBaseUrl}/api/v1/Redirect?token=${t}`,this.getConfig(t)},methods:{changeAgree(e){const t=!this.isAgree;this.isAgree=t},getConfig(e){const t=this;$http({url:`/api/v1/GetConfig?token=${e}`,token:e,method:"GET",reTry:{tryCount:3}},o=>{if(0!==o.ErrorCode)uni.reportLogToEid({token:e,event:Log.getConfigFail,errCode:"",errMsg:o.ErrorMsg}),uni.showModal({title:"提示",content:"网络失败,请点击重新尝试",showCancel:!1,success(){uni.navigateBack()}});else{if(uni.reportLogToEid({token:e,event:Log.getConfig,errCode:o.ErrorCode,errMsg:o.ErrorMsg}),o.Data)return void(t.appName=o.Data.AppName);const i=o.ErrorMsg;uni.showModal({title:"提示",content:i,showCancel:!1,success(){uni.navigateBack()}})}})},handleWebViewLoad(e){const t=getParameterByName("success",e.detail.src);"true"===t&&(this.showWebView=!1),uni.reportLogToEid({token:this.token,event:Log.webViewResult,errMsg:`success参数为${t}`})},handleWebViewError(e){this.showWebView=!1,uni.reportLogToEid({token:this.token,event:Log.webViewError,errMsg:e.detail.src})},navigateToEid(){const e=this.token;this.isNavigating=!0;const t=this;uni.navigateToMiniProgram({appId:"wx0e2cb0b052a91c92",path:"pages/huiyan/index",envVersion:uni.eidEnvVersion,extraData:{useHuiyan:!0,huiyanToken:e},success(){uni.eidTokenToCallback=e},complete(o){t.isNavigating=!1,uni.reportLogToEid({token:e,event:Log.navigateToEid,errMsg:o.errMsg})}})}}};
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<template>
|
||||||
|
<view v-if="showWebView">
|
||||||
|
<web-view :src="redirectUri" @load="handleWebViewLoad" @error="handleWebViewError"></web-view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="auth" v-else>
|
||||||
|
<view class="auth-logo">
|
||||||
|
<image src="https://faceid-ecard-1254418846.cos.ap-chengdu.myqcloud.com/eidLogo.png" />
|
||||||
|
</view>
|
||||||
|
<view class="title">
|
||||||
|
您正在授权
|
||||||
|
<view class="merchant-name">{{' '+ appName}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="sub-title">通过腾讯云E证通核验并获取您的身份信息</view>
|
||||||
|
<view class="agreement">
|
||||||
|
<checkbox-group @change="changeAgree">
|
||||||
|
<checkbox :value="agreement" :checked="isAgree" />
|
||||||
|
</checkbox-group>
|
||||||
|
<view>
|
||||||
|
<view>
|
||||||
|
<view @click="changeAgree" style="display:inline">已阅读并同意</view>
|
||||||
|
<navigator url="/mp_ecard_sdk/protocol/service/service">《腾讯云E证通服务使用协议》</navigator>和
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
<navigator url="/mp_ecard_sdk/protocol/eid/eid">《eID数字身份小程序服务协议》</navigator>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="button-area">
|
||||||
|
<button @click='navigateToEid' :disabled="!isAgree || isNavigating">
|
||||||
|
确认授权
|
||||||
|
</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import index from "./index";
|
||||||
|
export default index;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import url('../index.css');
|
||||||
|
</style>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import validate from"./utils/validate";import Log from"./constants/log";import globalConfig from"./globalConfig";function initEid(e="https://eid.faceid.qq.com",o="release",n="https://eid-enhance.faceid.qq.com"){uni.eidBaseUrl=e,uni.eidEnvVersion=o,uni.eidBackUpUrl=n,uni.onAppShow(e=>{console.log("!!!!!!监听onshow事件",e);const{scene:o}=e;if(1038!==o)return;const{referrerInfo:n}=e,{appId:i,extraData:t}=n;if("wx0e2cb0b052a91c92"!==i||!t)return;const{verifyDone:r,token:a}=t;r&&uni.handleEidVerifyDone?uni.eidTokenToCallback&&uni.eidTokenToCallback===a&&(uni.eidTokenToCallback="",uni.reportLogToEid({token:a,event:Log.navigateBackFromEid,errMsg:`从EID核身完成返回,token:${a},verifyDone:${r}`}),uni.handleEidVerifyDone(t)):uni.reportLogToEid({token:a,event:Log.navigateBackFromEidFail,errMsg:`核验未完成或者没有处理核验完成的函数,token:${a},verifyDone:${r}`})});const i=uni.getSystemInfoSync(),{version:t}=i;uni.reportLogToEid=function(e){const{token:o="",event:n="",errCode:i="",errMsg:r="",data:a={}}=e,s=new Date,d={Token:o,SourceType:Log.SourceType,SourceVersion:Log.version,EnvVersion:t,Timestamp:s.getTime(),Event:n,ErrorCode:"number"==typeof i?i.toString():i,ErrorMsg:r,Data:JSON.stringify(a)};console.log("开始上报日志:",d),uni.request({url:`${uni.eidBaseUrl}/api/common/ReportEvent`,method:"POST",data:d,success(e){console.log("上报日志完成:","payload:",d,"res:",e)}})}}function startEid(e){const{data:o,verifyDoneCallback:n}=e;if(!o||!n)return uni.reportLogToEid({token:i,event:Log.startEidFail,errMsg:"传入的参数有误"}),void uni.showModal({title:"提示",content:"传入的参数有误",showCancel:!1});const{token:i}=o;if(!validate.isValidateToken(i))return uni.reportLogToEid({token:i,event:Log.startEidFail,errMsg:`传入的token有误,token:${i}`}),void uni.showModal({title:"提示",content:"传入的token有误",showCancel:!1});uni.handleEidVerifyDone=(e=>{const{token:o}=e;uni.navigateBack({success(){uni.reportLogToEid({token:o,event:Log.EidVerifyDone,errMsg:`验证完成,token:${o}`}),n({token:o,verifyDone:!0})}})}),uni.navigateTo({url:`${globalConfig.normalPath}/mp_ecard_sdk/index/index?token=${i}`})}export{initEid,startEid};
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
<template>
|
||||||
|
<view class="protocol">
|
||||||
|
<view class="main">
|
||||||
|
<view class="h1">
|
||||||
|
<text>eID数字身份小程序服务协议</text>
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
<view style="display:inline" class="strong">
|
||||||
|
eID
|
||||||
|
</view>
|
||||||
|
数字身份小程序是公安部第三研究所提供的为用户签发的采用国产密码算法生成的中国公民数字身份标记,并就用户身份信息和人脸信息通过腾讯的人脸识别验证身份信息功能向权威机构核验与权威数据的相符性。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
我们特别提示您,
|
||||||
|
<view style="display:inline" class="strong">
|
||||||
|
您在页面点击“已阅读并同意《eID数字身份申请协议》”的行为视为您已经充分阅读并理解、同意本协议的内容并作出相关授权。
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="strong">一、eID数字身份说明</view>
|
||||||
|
<view>
|
||||||
|
eID数字身份是以公民身份号码为根,由公安部第三研究所(以下称“三所”)承建的“公安部公民网络身份识别系统”采用国产密码算法为中国公民生成的数字身份标记。eID数字身份具有以下特点:
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
1.1 eID数字身份以公民身份号码为根生成;
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
1.2 eID数字身份采用国产密码算法产生,从eID数字身份无法逆推出公民身份号码原文;
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
1.3 eID服务体系对于同一用户,在不同的互联网应用中产生的eID数字身份并不相同,即碎片化处理,防止被大数据技术追踪;
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
1.4 eID数字身份由“公安部公民网络身份识别系统”统一管理,碎片化处理后的eID数字身份可以有条件进行同一化处理。
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="strong">二、eID数字身份的签发</view>
|
||||||
|
<view>
|
||||||
|
2.1 三所通过eID数字身份小程序在向您签发eID数字身份之前,三所需要对您提供的姓名、身份号码、人脸信息通过腾讯提供的人脸识别验证身份功能与权威机构中的信息进行相符性比对,以确认您提供信息的真实性。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
2.2 在通过相符性比对后,三所为您签发eID数字身份。您的eID数字身份与您申请时提供的身份信息及人脸信息唯一关联。
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="strong">三、eID数字身份小程序的使用</view>
|
||||||
|
<view>
|
||||||
|
在接入了腾讯云E证通的应用场景中,向您提供服务的应用会请您使用腾讯云E证通证明您的身份,腾讯云E证通会跳转到eID数字身份小程序,小程序会拉起腾讯的人脸识别验证功能,提取您的现场人脸视频并通过向权威机构的相应数据进行相符性比对,并将比对结果反馈给eID数字身份小程序。比对通过后,小程序会签发您的eID数字身份,并通过腾讯云E证通转发给向您提供服务的应用,由其决定是否继续向您提供服务。
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="strong">四、个人信息收集、使用、处理</view>
|
||||||
|
<view>
|
||||||
|
4.1 为了使用eID数字身份小程序,
|
||||||
|
<view style="display:inline" class="strong">
|
||||||
|
您授权并同意三所收集、使用您的姓名、身份号码信息、人脸视频,并通过腾讯人脸识别验证身份功能与权威机构的相应数据进行相符性比对,比对通过之后,由三所为您签发eID数字身份并存储您的姓名、身份证号码、人脸照片信息。
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
4.2 您授权并同意三所基于您的姓名、身份号码生成您的eID数字身份,并将您的eID数字身份向为您提供服务的应用方提供以完成实名登记、实名认证要求。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
4.3 在您通过eID数字身份向为您提供服务的应用证明您的身份时,您授权并同意三所将相符性比对结果转发给向您提供服务的应用方,由其判断是否通过您的实名实人认证。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
4.4 某些应用方基于国家监管要求或法律要求,在向您提供服务时需要采集并保存您的姓名、身份号码、人脸图像身份信息证明您的身份,在得到您的同意后,三所会将您的身份信息向这些应用方提供。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
4.5 三所在后台存储收集到的个人信息,包括您的姓名、身份号码、人脸图像,对这些信息采取包括但不限于加密处理的技术安全措施进行妥善保管。三所未经您的授权或许可不会向第三方提供您的个人信息。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
4.6 如您希望访问、撤回授权、修改、删除您的个人信息,因eID数字身份小程序未单独为用户提供服务,您可以通过“关于腾讯云E证通-意见反馈”联系我们,并提供必要的身份证明。
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="strong">五、提示</view>
|
||||||
|
<view class="strong">
|
||||||
|
5.1 请您提供真实、准确的姓名、身份号码,否则,无法为您生成eID数字身份;
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
5.2 请您提供本人的姓名、身份号码、人脸图像,并申请本人的eID数字身份。冒用他人身份者将承担身份冒用带来的一切后果与责任。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
5.3 冒用他人身份给第三方或三所造成的任何损失,应当依法进行赔偿。
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="strong">六、免责</view>
|
||||||
|
<view class="strong">
|
||||||
|
您理解并同意,三所仅通过腾讯提供的人脸识别验证身份功能对用户提供的身份信息是否与权威机构的相应数据相符而提供技术服务以及签发eID数字身份,三所不承诺权威机构所提供的相符性验证结果的准确性,对可能导致的不利后果三所不承担责任。
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="strong">七、其它</view>
|
||||||
|
<view class="strong">
|
||||||
|
若您与三所发生任何纠纷或争议,您同意将纠纷或争议提交本协议签订地(即中国上海市徐汇区)有管辖权的人民法院管辖。本协议的成立、生效、履行、解释及纠纷解决,适用中华人民共和国大陆地区法律。
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import url('../../index.css');
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,195 @@
|
|||||||
|
<template>
|
||||||
|
<view class="protocol">
|
||||||
|
<view class="main">
|
||||||
|
<view class="h1">
|
||||||
|
<text>腾讯隐私政策</text>
|
||||||
|
</view>
|
||||||
|
<text>引言</text>
|
||||||
|
<view>
|
||||||
|
腾讯视用户信息安全与隐私保护为自己的“生命线”。我们秉承“一切以用户价值为依归”的理念,致力于提升信息处理透明度,增强您对信息管理的便捷性,保障您的信息及通信安全。
|
||||||
|
</view>
|
||||||
|
<view>腾讯严格遵守法律法规,遵循以下隐私保护原则,为您提供更加安全、可靠的服务:</view>
|
||||||
|
<view>1、安全可靠:我们竭尽全力通过合理有效的信息安全技术及管理流程,防止您的信息泄露、损毁、丢失。</view>
|
||||||
|
<view>2、自主选择:我们为您提供便利的信息管理选项,以便您做出合适的选择,管理您的个人信息。</view>
|
||||||
|
<view>3、保护通信秘密:我们严格遵照法律法规,保护您的通信秘密,为您提供安全的通信服务。</view>
|
||||||
|
<view>4、合理必要:为了向您和其他用户提供更好的服务,我们仅收集必要的信息。</view>
|
||||||
|
<view>5、清晰透明:我们努力使用简明易懂的表述,向您介绍隐私政策,以便您清晰地了解我们的信息处理方式。</view>
|
||||||
|
<view>6、将隐私保护融入产品设计:我们在产品或服务开发的各个环节,综合法律、产品、设计等多方因素,融入隐私保护的理念。</view>
|
||||||
|
<view>本《隐私政策》主要向您说明:</view>
|
||||||
|
<view>我们收集哪些信息;</view>
|
||||||
|
<view>我们收集信息的用途;</view>
|
||||||
|
<view>您所享有的权利。</view>
|
||||||
|
<view>希望您仔细阅读《隐私政策》(以下简称“本政策”),详细了解我们对信息的收集、使用方式,以便您更好地了解我们的服务并作出适当的选择。</view>
|
||||||
|
<view>若您使用腾讯服务,即表示您认同我们在本政策中所述内容。除另有约定外,本政策所用术语与《腾讯服务协议》中的术语具有相同的涵义。</view>
|
||||||
|
<view>如您有问题,请联系我们。</view>
|
||||||
|
<view class="strong">一、我们收集的信息</view>
|
||||||
|
<view>我们根据合法、正当、必要的原则,仅收集实现产品功能所必要的信息。</view>
|
||||||
|
<view>1.1 您在使用我们服务时主动提供的信息</view>
|
||||||
|
<view>1.1.1 您在注册帐户时填写的信息。</view>
|
||||||
|
<view>例如,您在注册QQ、微信帐户时所填写的昵称、手机号码。</view>
|
||||||
|
<view>1.1.2 您在使用服务时上传的信息。</view>
|
||||||
|
<view>例如,您在使用QQ、微信时,上传的头像、分享的照片。</view>
|
||||||
|
<view>1.1.3 您通过我们的客服或参加我们举办的活动时所提交的信息。</view>
|
||||||
|
<view>例如,您参与我们线上活动时填写的调查问卷中可能包含您的姓名、电话、家庭地址等信息。</view>
|
||||||
|
<view>
|
||||||
|
我们的部分服务可能需要您提供特定的个人敏感信息来实现特定功能。若您选择不提供该类信息,则可能无法正常使用服务中的特定功能,但不影响您使用服务中的其他功能。若您主动提供您的个人敏感信息,即表示您同意我们按本政策所述目的和方式来处理您的个人敏感信息。
|
||||||
|
</view>
|
||||||
|
<view>1.2我们在您使用服务时获取的信息</view>
|
||||||
|
<view>1.2.1 日志信息。当您使用我们的服务时,我们可能会自动收集相关信息并存储为服务日志信息。</view>
|
||||||
|
<view>(1) 设备信息。例如,设备型号、操作系统版本、唯一设备标识符、电池、信号强度等信息。</view>
|
||||||
|
<view>(2) 软件信息。例如,软件的版本号、浏览器类型。为确保操作环境的安全或提供服务所需,我们会收集有关您使用的移动应用和其他软件的信息。</view>
|
||||||
|
<view>(3) IP地址。</view>
|
||||||
|
<view>(4) 服务日志信息。例如,您在使用我们服务时搜索、查看的信息、服务故障信息、引荐网址等信息。</view>
|
||||||
|
<view>(5) 通讯日志信息。例如,您在使用我们服务时曾经通讯的账户、通讯时间和时长。</view>
|
||||||
|
<view>1.2.2 位置信息。当您使用与位置有关的服务时,我们可能会记录您设备所在的位置信息,以便为您提供相关服务。</view>
|
||||||
|
<view>(1) 在您使用服务时,我们可能会通过IP地址、GPS、WiFi或基站等途径获取您的地理位置信息;</view>
|
||||||
|
<view>
|
||||||
|
(2) 您或其他用户在使用服务时提供的信息中可能包含您所在地理位置信息,例如您提供的帐号信息中可能包含的您所在地区信息,您或其他人共享的照片包含的地理标记信息;
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
1.2.3
|
||||||
|
其他相关信息。为了帮助您更好地使用我们的产品或服务,我们会收集相关信息。例如,我们收集的好友列表、群列表信息、声纹特征值信息。为确保您使用我们服务时能与您认识的人进行联系,如您选择开启导入通讯录功能,我们可能对您联系人的姓名和电话号码进行加密,并仅收集加密后的信息。
|
||||||
|
</view>
|
||||||
|
<view>1.3 其他用户分享的信息中含有您的信息</view>
|
||||||
|
<view>例如,其他用户发布的照片或分享的视频中可能包含您的信息。</view>
|
||||||
|
<view>1.4 从第三方合作伙伴获取的信息</view>
|
||||||
|
<view>
|
||||||
|
我们可能会获得您在使用第三方合作伙伴服务时所产生或分享的信息。例如,您使用微信或QQ帐户登录第三方合作伙伴服务时,我们会获得您登录第三方合作伙伴服务的名称、登录时间,方便您进行授权管理。请您仔细阅读第三方合作伙伴服务的用户协议或隐私政策。
|
||||||
|
</view>
|
||||||
|
<view class="strong">二、我们如何使用收集的信息</view>
|
||||||
|
<view>我们严格遵守法律法规的规定及与用户的约定,将收集的信息用于以下用途。若我们超出以下用途使用您的信息,我们将再次向您进行说明,并征得您的同意。</view>
|
||||||
|
<view>2.1 向您提供服务。</view>
|
||||||
|
<view>2.2 满足您的个性化需求。例如,语言设定、位置设定、个性化的帮助服务。</view>
|
||||||
|
<view>2.3 产品开发和服务优化。例如,当我们的系统发生故障时,我们会记录和分析系统故障时产生的信息,优化我们的服务。</view>
|
||||||
|
<view>
|
||||||
|
2.4 安全保障。例如,我们会将您的信息用于身份验证、安全防范、反诈骗监测、存档备份、客户的安全服务等用途。例如,您下载或安装的安全软件会对恶意程序或病毒进行检测,或为您识别诈骗信息。
|
||||||
|
</view>
|
||||||
|
<view>2.5 向您推荐您可能感兴趣的广告、资讯等。</view>
|
||||||
|
<view>2.6 评估、改善我们的广告投放和其他促销及推广活动的效果。</view>
|
||||||
|
<view>2.7 管理软件。例如,进行软件认证、软件升级等。</view>
|
||||||
|
<view>2.8 邀请您参与有关我们服务的调查。</view>
|
||||||
|
<view>
|
||||||
|
为了让您有更好的体验、改善我们的服务或经您同意的其他用途,在符合相关法律法规的前提下,我们可能将通过某些服务所收集的信息用于我们的其他服务。例如,将您在使用我们某项服务时的信息,用于另一项服务中向您展示个性化的内容或广告、用于用户研究分析与统计等服务。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
为了确保服务的安全,帮助我们更好地了解我们应用程序的运行情况,我们可能记录相关信息,例如,您使用应用程序的频率、故障信息、总体使用情况、性能数据以及应用程序的来源。我们不会将我们存储在分析软件中的信息与您在应用程序中提供的个人身份信息相结合。
|
||||||
|
</view>
|
||||||
|
<view class="strong">三、我们如何使用Cookie及相关技术</view>
|
||||||
|
<view>
|
||||||
|
我们或我们的第三方合作伙伴,可能通过放置安全的Cookie及相关技术收集您的信息,目的是为您提供更个性化的用户体验和服务。我们会严格要求第三方合作伙伴遵守本政策的相关规定。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
您也可以通过浏览器设置管理Cookie。但请注意,如果停用Cookie,您可能无法享受最佳的服务体验,某些服务也可能无法正常使用。若您希望了解更多Cookie的安全性等信息,可参见《Cookie政策说明》。
|
||||||
|
</view>
|
||||||
|
<view class="strong">四、您分享的信息</view>
|
||||||
|
<view>
|
||||||
|
您可以通过我们的服务与您的好友、家人及其他用户分享您的相关信息。例如,您在微信朋友圈中公开分享的文字和照片。请注意,这其中可能包含您的个人身份信息、个人财产信息等敏感信息。请您谨慎考虑披露您的相关个人敏感信息。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
您可通过我们服务中的隐私设置来控制您分享信息的范围,也可通过服务中的设置或我们提供的指引删除您公开分享的信息。但请您注意,这些信息仍可能由其他用户或不受我们控制的非关联第三方独立地保存。
|
||||||
|
</view>
|
||||||
|
<view class="strong">五、您如何管理自己的信息</view>
|
||||||
|
<view>
|
||||||
|
5.1
|
||||||
|
您可以在使用我们服务的过程中,访问、修改和删除您提供的注册信息和其他个人信息,也可按照通知指引与我们联系。您访问、修改和删除个人信息的范围和方式将取决于您使用的具体服务。例如,若您在使用地理位置相关服务时,希望停止分享您的地理位置信息,您可通过手机定位关闭功能、软硬件服务商及通讯服务提供商的关闭方式停止分享,建议您仔细阅读相关指引。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
5.2
|
||||||
|
我们将按照本政策所述,仅为实现我们产品或服务的功能,收集、使用您的信息。如您发现我们违反法律、行政法规的规定或者双方的约定收集、使用您的个人信息,您可以要求我们删除。如您发现我们收集、存储的您的个人信息有错误的,您也可以要求我们更正。请通过本政策列明的联系方式与我们联系。
|
||||||
|
</view>
|
||||||
|
<view>5.3 在您访问、修改和删除相关信息时,我们可能会要求您进行身份验证,以保障帐号的安全。</view>
|
||||||
|
<view>5.4 请您理解,由于技术所限、法律或监管要求,我们可能无法满足您的所有要求,我们会在合理的期限内答复您的请求。</view>
|
||||||
|
<view class="strong">六、我们分享的信息</view>
|
||||||
|
<view>我们遵照法律法规的规定,对信息的分享进行严格的限制,例如:</view>
|
||||||
|
<view>6.1 经您事先同意,我们可能与第三方分享您的个人信息;</view>
|
||||||
|
<view>
|
||||||
|
6.2
|
||||||
|
仅为实现外部处理的目的,我们可能会与第三方合作伙伴(第三方服务供应商、承包商、代理、广告合作伙伴、应用开发者等,例如,代表我们发出电子邮件或推送通知的通讯服务提供商、为我们提供位置服务的地图服务供应商)(他们可能并非位于您所在的法域)分享您的个人信息,让他们按照我们的说明、隐私政策以及其他相关的保密和安全措施来为我们处理上述信息,并用于以下用途:
|
||||||
|
</view>
|
||||||
|
<view>6.2.1 向您提供我们的服务;</view>
|
||||||
|
<view>6.2.2 实现“我们如何使用收集的信息”部分所述目的;</view>
|
||||||
|
<view>6.2.3 履行我们在《腾讯服务协议》或本政策中的义务和行使我们的权利;</view>
|
||||||
|
<view>6.2.4 理解、维护和改善我们的服务。</view>
|
||||||
|
<view>如我们与上述第三方分享您的信息,我们将会采用加密、匿名化处理等手段保障您的信息安全。</view>
|
||||||
|
<view>
|
||||||
|
6.3
|
||||||
|
随着我们业务的持续发展,当发生合并、收购、资产转让等交易导致向第三方分享您的个人信息时,我们将通过推送通知、公告等形式告知您相关情形,按照法律法规及不低于本政策所要求的标准继续保护或要求新的管理者继续保护您的个人信息。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
6.4
|
||||||
|
我们会将所收集到的信息用于大数据分析。例如,我们将收集到的信息用于分析形成不包含任何个人信息的城市热力图或行业洞察报告。我们可能对外公开并与我们的合作伙伴分享经统计加工后不含身份识别内容的信息,用于了解用户如何使用我们服务或让公众了解我们服务的总体使用趋势。
|
||||||
|
</view>
|
||||||
|
<view>6.4 我们可能基于以下目的披露您的个人信息:</view>
|
||||||
|
<view>6.5.1 遵守适用的法律法规等有关规定;</view>
|
||||||
|
<view>6.5.2 遵守法院判决、裁定或其他法律程序的规定;</view>
|
||||||
|
<view>6.5.3 遵守相关政府机关或其他法定授权组织的要求;</view>
|
||||||
|
<view>6.5.4 我们有理由确信需要遵守法律法规等有关规定;</view>
|
||||||
|
<view>6.5.5 为执行相关服务协议或本政策、维护社会公共利益,为保护我们的客户、我们或我们的关联公司、其他用户或雇员的人身财产安全或其他合法权益合理且必要的用途。</view>
|
||||||
|
<view class="strong">七、我们可能向您发送的信息</view>
|
||||||
|
<view>7.1 信息推送</view>
|
||||||
|
<view>您在使用我们的服务时,我们可能向您发送电子邮件、短信、资讯或推送通知。您可以按照我们的相关提示,在设备上选择取消订阅。</view>
|
||||||
|
<view>7.2 与服务有关的公告</view>
|
||||||
|
<view>我们可能在必要时(例如,因系统维护而暂停某一项服务时)向您发出与服务有关的公告。您可能无法取消这些与服务有关、性质不属于广告的公告。</view>
|
||||||
|
<view class="strong">八、存储信息的地点和期限</view>
|
||||||
|
<view>8.1 存储信息的地点</view>
|
||||||
|
<view>我们遵守法律法规的规定,将境内收集的用户个人信息存储于境内。</view>
|
||||||
|
<view>8.2 存储信息的期限</view>
|
||||||
|
<view>一般而言,我们仅为实现目的所必需的最短时间保留您的个人信息。但在下列情况下,我们有可能因需符合法律要求,更改个人信息的存储时间:</view>
|
||||||
|
<view>8.2.1 为遵守适用的法律法规等有关规定;</view>
|
||||||
|
<view>8.2.2 为遵守法院判决、裁定或其他法律程序的规定;</view>
|
||||||
|
<view>8.2.3 为遵守相关政府机关或法定授权组织的要求;</view>
|
||||||
|
<view>8.2.4 我们有理由确信需要遵守法律法规等有关规定;</view>
|
||||||
|
<view>8.2.5 为执行相关服务协议或本政策、维护社会公共利益,为保护我们的客户、我们或我们的关联公司、其他用户或雇员的人身财产安全或其他合法权益所合理必需的用途。</view>
|
||||||
|
<view>当我们的产品或服务发生停止运营的情形时,我们将采取例如,推送通知、公告等形式通知您,并在合理的期限内删除或匿名化处理您的个人信息。</view>
|
||||||
|
<view class="strong">九、信息安全</view>
|
||||||
|
<view>我们为您的信息提供相应的安全保障,以防止信息的丢失、不当使用、未经授权访问或披露。</view>
|
||||||
|
<view>9.1 我们严格遵守法律法规保护用户的通信秘密。</view>
|
||||||
|
<view>9.2 我们将在合理的安全水平内使用各种安全保护措施以保障信息的安全。例如,我们使用加密技术(例如,TLS、SSL)、匿名化处理等手段来保护您的个人信息。</view>
|
||||||
|
<view>9.3 我们建立专门的管理制度、流程和组织确保信息安全。例如,我们严格限制访问信息的人员范围,要求他们遵守保密义务,并进行审查。</view>
|
||||||
|
<view>9.4 若发生个人信息泄露等安全事件,我们会启动应急预案,阻止安全事件扩大,并以推送通知、公告等形式告知您。</view>
|
||||||
|
<view class="strong">十、广告</view>
|
||||||
|
<view>我们可能使用您的相关信息,在相关网站、应用及其他渠道向您提供与您更加相关的广告。您可以在关于广告页面中了解更多。</view>
|
||||||
|
<view class="strong">十一、未成年人保护</view>
|
||||||
|
<view>
|
||||||
|
我们非常重视对未成年人个人信息的保护。根据相关法律法规的规定,若您是18周岁以下的未成年人,在使用腾讯的服务前,应事先取得您的家长或法定监护人的同意。若您是未成年人的监护人,当您对您所监护的未成年人的个人信息有相关疑问时,请通过第十三部分中的联系方式与我们联系。
|
||||||
|
</view>
|
||||||
|
<view class="strong">十二、适用范围</view>
|
||||||
|
<view>
|
||||||
|
我们的所有服务均适用本政策。但某些服务有其特定的隐私指引/声明,该特定隐私指引/声明更具体地说明我们在该服务中如何处理您的信息。如本政策与特定服务的隐私指引/声明有不一致之处,请以该特定隐私指引/声明为准。
|
||||||
|
</view>
|
||||||
|
<view>请您注意,本政策不适用由其他公司或个人提供的服务。例如,您通过使用微信帐号登录其他公司或个人提供的服务。</view>
|
||||||
|
<view>您使用该等第三方服务须受其隐私政策(而非本政策)约束,您需要仔细阅读其政策内容。</view>
|
||||||
|
<view class="strong">十三、联系我们</view>
|
||||||
|
<view>
|
||||||
|
如您对本政策或其他相关事宜有疑问,请通过 https://kf.qq.com/
|
||||||
|
与我们联系。您也可根据我们提供的指引,填写相关资料,将您的问题发送至Dataprivacy@tencent.com或寄到如下地址:
|
||||||
|
</view>
|
||||||
|
<view>地址:中国广东省深圳市南山区科技园科技中一路腾讯大厦 法务部 数据及隐私保护中心(收)</view>
|
||||||
|
<view>邮编:518057</view>
|
||||||
|
<view>我们将尽快审核所涉问题,并在验证您的用户身份后的三十天内予以回复。</view>
|
||||||
|
<view class="strong">十四、变更</view>
|
||||||
|
<view>
|
||||||
|
我们可能适时修订本政策内容。如该等变更会导致您在本政策项下权利的实质减损,我们将在变更生效前,通过在页面显著位置提示、向您发送电子邮件等方式通知您。在该种情况下,若您继续使用我们的服务,即表示同意受经修订的政策约束。
|
||||||
|
</view>
|
||||||
|
<view class="strong">更新日期: 2018年6月13日</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import url('../../index.css');
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,173 @@
|
|||||||
|
<template>
|
||||||
|
<view class="protocol">
|
||||||
|
<view class="main">
|
||||||
|
<view class="h1">
|
||||||
|
<text>腾讯E证通服务协议</text>
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
欢迎您使用腾讯云E证通服务!
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
为使用腾讯E证通服务,您应当阅读并遵守《腾讯E证通服务协议》(以下简称“本协议”)。本协议由您与深圳市腾讯计算机系统有限公司(以下简称“腾讯”或“我们”)签订,对您注册、使用腾讯E证通服务(以下亦可简称“本服务”)过程中的各方权利义务等具体内容进行约定
|
||||||
|
</view>
|
||||||
|
<view class="strong underline">
|
||||||
|
我们在此特别提醒您认真阅读、充分理解本协议各条款,特别是您同意及授权的条款、争议解决和法律适用等条款。为提醒您注意,我们已对这些条款予以加粗以特别提醒您加以注意,请您仔细阅读并自主决定接受或不接受。您使用腾讯E证通服务的行为(包括在我们合作的第三方产品及业务中使用腾讯E证通服务)即视为您已阅读、知悉、理解和完全同意本协议的约定。
|
||||||
|
</view>
|
||||||
|
<view class="strong underline">
|
||||||
|
我们特别提示您,您在前述页面点击“已阅读并同意《腾讯E证通服务协议》”以及点击按钮“申请并同意授权”的行为视为您已经充分阅读并理解、同意本协议的内容并作出相关授权。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
如果您是未成年人,请在法定监护人的陪同下阅读本协议及上述其他协议,并特别注意涉及未成年人使用本服务的相关条款。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
如果您在阅读本协议过程中有任何问题,请您联系我们,我们将对相关内容进行解释和说明,以使您能够充分理解并自主判断和决定是否接受本协议内容。
|
||||||
|
</view>
|
||||||
|
<view class="strong">一、服务内容</view>
|
||||||
|
<view>
|
||||||
|
腾讯E证通服务是深圳市腾讯计算机系统有限公司(以下简称“我们”或“腾讯”)通过与公安部第三研究所(以下简称“三所”)及其eID网络身份服务机构(以下简称“eID服务机构”)基于eID数字身份技术的合作、向您提供的eID数字身份服务
|
||||||
|
<view style="display:inline" class="strong">
|
||||||
|
,具体服务流程为:
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
您通过向您提供服务的应用输入姓名和身份号码并拉起腾讯E证通小程序,在您点击同意本协议和《eID数字身份小程序服务协议》后,您将在eID数字身份小程序内通过腾讯提供的人脸识别完成身份验证,您的身份信息与权威机构的相应数据进行相符性比对后,三所会签发您的eID数字身份,您的eID数字身份与您申请时提供的身份信息及人脸信息唯一关联。eID数字身份信息由本服务返回给为您提供服务的应用。
|
||||||
|
</view>
|
||||||
|
<view class="strong">二、双方权利义务</view>
|
||||||
|
<view>
|
||||||
|
2.1腾讯有权根据您的申请情况,决定是否为您提供腾讯E证通服务。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
2.2腾讯有权在腾讯以及腾讯合作方的具体产品业务中推广、应用腾讯E证通服务。
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
2.3您保证您所提供的个人信息的真实性、合法性、完整性、准确性和有效性。否则,您可能无法使用腾讯E证通服务,或您所使用的腾讯E证通服务范围可能会受到限制。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
2.4您应以您本人的真实身份信息使用腾讯E证通服务,您保证由您本人注册、开通腾讯E证通服务,您保证由您本人进行操作,并不向其他任何人披露、泄露或借出前述信息和设备,亦不使用其他任何人的该等信息和设备。
|
||||||
|
<view style="display:inline" class="strong">
|
||||||
|
您应妥善保管您的手机设备、账号、密码以及动态验证码等资料,并对该账号项下所从事的行为承担相应的法律责任。
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
2.5您应当对您的账户、终端设备以及您的联系方式进行有效管理,对通过该账户及终端设备所从事的行为承担相应法律责任,并对您的联系方式(例如,手机号码)接收或确认信息所产生的法律后果承担法律责任。您在此知悉,对于第三方无论以何种形式使用您的信息,包括但不限于冒用、借用,您将对由此产生的法律后果依法承担相应法律责任。
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
2.6使用腾讯E证通服务过程中,如果您的个人信息有更新,您应及时进行更新。否则,因此产生的法律责任由您承担。
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
2.7如果您的账户、终端设备因信息泄露、遗失或被非授权使用所致的损失由您自行承担。
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
2.8您不得利用本服务实施任何违反国家法律、法规、规章及规范性文件的行为,不得侵犯其他任何第三人的合法权益,尤其不得利用本服务实施欺诈等违法行为。如您存在不遵守本协议或腾讯相关业务规定、恶意操作或利用腾讯E证通服务从事违反国家法律法规活动或损害其他第三方合法权益的,腾讯有权单方终止对您提供腾讯E证通服务,并要求您赔偿腾讯因此造成的损失。
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
2.9您所申请的eID数字身份仅供您个人使用,您不得将您的eID数字身份提供给他方使用,您应对您的eID数字身份所从事的行为承担法律责任。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
2.10为了向您提供更优的服务,腾讯有权对腾讯E证通服务系统进行升级、改造。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
2.11如果您需要注销腾讯E证通服务,您可以在腾讯E证通小程序中的
|
||||||
|
<view style="display:inline" class="strong">
|
||||||
|
“关于腾讯E证通-意见反馈”
|
||||||
|
</view>
|
||||||
|
中提交申请。您注销腾讯E证通服务后,如果您需要使用腾讯E证通服务,您需要重新注册。
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
2.12您在使用本服务过程中,如果还涉及到使用其他服务的,您应当同时遵守其他服务的规定或规则。比如您在使用eID数字身份小程序时,您应遵守三所的相关服务规则。
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
2.13如果您与为您提供服务的应用方之间因具体交易以及腾讯E证通的适用等事宜发生的争议或纠纷,由您与您应用方进行协商处理,我们不介入您与应用方的具体交易合作,我们不对前述事项承担法律责任。但我们在此承诺,为了保护您的合法权益,我们将向您提供必要协助。
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="strong">三、用户个人信息保护</view>
|
||||||
|
<view class="strong">
|
||||||
|
3.1
|
||||||
|
为了向您提供腾讯E证通服务,您授权并同意,我们从为您提供服务的应用获取您输入的姓名和身份号码信息,结合在三所运营的eID数字身份小程序内通过我们提供的人脸识别服务,采集您的人脸视频,并将您的姓名、身份号码、人脸图像与权威机构的相应数据进行相符性比对,以便通过身份核验。同时,我们会从eID数字身份小程序获取您的数字身份信息,并将您的人脸图片、比对结果和eID数字身份信息返回给您的应用方,由其判断是否通过您的实名实人认证。如果您不同意的,请您不要继续使用本服务。
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
3.2
|
||||||
|
基于国家监管要求或法律要求,应用方在向您提供服务时需要采集并保存您的姓名、身份号码、人脸图像(简称“身份信息”)证明您的身份,您授权并同意,因为您的应用方可能无法及时从本服务拉取您的身份信息,我们会将您的人脸图片和比对结果暂时存储三天以便您的应用方拉取您的身份信息。三天内如果您的应用方拉取了,我们会立即删除;三天后如果您的应用方未拉取,我们也会删除您的相应数据。我们承诺仅在该处理目的内暂时存储您的数据,未经您的授权或许可,我们不会向第三方提供您的个人信息。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
3.3保护用户个人信息是腾讯的一项基本原则,腾讯将根据本协议以及
|
||||||
|
<navigator style="display:inline" class="protocol_sprotocol" url="/mp_ecard_sdk/protocol/privacy/privacy">
|
||||||
|
《隐私政策》
|
||||||
|
</navigator>
|
||||||
|
(http://www.qq.com/privacy.htm)等内容,采取合理的措施依法保护用户的个人信息。除法律法规规定的情形外,未经用户授权同意腾讯不会向第三方公开、透露用户个人信息。腾讯对相关信息采用专业加密存储与传输方式,保障用户个人信息的安全。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
3.4 腾讯将运用各种安全技术和程序建立完善的管理制度来保护您的个人信息,以免遭受未经授权的访问、使用或披露。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
3.5如您希望访问、撤回授权、修改、删除您的个人信息,您可以通过“关于腾讯E证通-意见反馈”联系我们,并提供必要的身份证明。
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
3.6请您提供真实、准确的、且是您本人的姓名、身份号码、人脸图像,并申请本人的eID数字身份,否则,我们可能无法为您提供本服务。冒用他人身份者将承担身份冒用带来的一切后果与责任,包括但不限于因冒用他人身份给第三方或我们造成的任何损失,您应当依法进行赔偿。
|
||||||
|
</view>
|
||||||
|
<view class="strong">四、不可抗力及免责声明</view>
|
||||||
|
<view class="strong">
|
||||||
|
4.1您理解并同意,在使用本服务的过程中,可能会遇到不可抗力等风险因素,使本服务发生中断。不可抗力是指不能预见、不能克服并不能避免且对一方或双方造成重大影响的客观事件,包括自然灾害如洪水、地震、瘟疫流行和风暴等以及社会事件如战争、动乱、政府行为以及政策法律等规定变化等。出现上述情况时,我们将努力在第一时间与相关单位配合,尽量降低各方损失。
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
4.2在法律允许的范围内,腾讯对以下情形导致的本服务中断或受阻不承担责任:
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
4.2.1受到计算机病毒、木马或其他恶意程序、黑客攻击的破坏;
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
4.2.2网络故障、网络异常;
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
4.2.3用户操作不当;
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
4.2.4用户通过非经我们授权的方式使用本服务;
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
4.2.5其他腾讯无法控制或合理预见的情形。
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
4.3
|
||||||
|
您理解并同意,我们将秉承尽责、严谨的态度为您提供本服务,同时您也已清楚知晓受制于技术、权威核验渠道等诸多因素,我们无法向您做出人脸识别核验结果绝对准确无误的承诺。您同意非腾讯原因或因不可抗力、约定的免责情形导致人脸识别核验结果错误的,腾讯不承担赔偿责任。
|
||||||
|
</view>
|
||||||
|
<view class="strong">
|
||||||
|
4.4 您知悉并同意,腾讯E证通小程序与eID数字身份小程序是互为独立的小程序,分别由腾讯和三所独立运营,对于三所为您签发的eID数字身份,腾讯不做相应的承诺和担保。
|
||||||
|
</view>
|
||||||
|
<view class="strong">五、其他</view>
|
||||||
|
<view class="strong underline">
|
||||||
|
5.1 本协议的成立、生效、履行、解释及纠纷解决,适用中华人民共和国大陆地区法律(不包括冲突法规则)。
|
||||||
|
</view>
|
||||||
|
<view class="strong underline">
|
||||||
|
5.2 若您和腾讯之间发生任何纠纷或争议,首先应友好协商解决;若协商不成的,您和腾讯同意将纠纷或争议提交本协议签订地有管辖权的人民法院,通过诉讼加以解决。
|
||||||
|
</view>
|
||||||
|
<view class="strong underline">
|
||||||
|
5.3本协议签订地为中华人民共和国广东省深圳市南山区。
|
||||||
|
</view>
|
||||||
|
<view class="strong underline">
|
||||||
|
5.4本协议所有条款的标题仅为阅读方便,本身并无实际涵义,不能作为本协议涵义解释的依据。
|
||||||
|
</view>
|
||||||
|
<view class="strong underline">
|
||||||
|
5.5本协议条款无论因何种原因部分无效或不可执行,其余条款仍有效,对双方具有约束力。(正文完)
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import url('../../index.css');
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
<template>
|
||||||
|
<view class="protocol">
|
||||||
|
<view class="main">
|
||||||
|
<view class="h1">
|
||||||
|
<text>用户授权协议</text>
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
《用户授权协议》(以下简称“本协议”)由您与深圳市腾讯计算机系统有限公司(以下简称“腾讯”或“我们”)签订,为了充分保护您的合法权益,我们在此与您就您注册、使用腾讯云E证通服务(以下亦可简称“本服务”)过程中有关采集、使用等处理您个人信息授权的相关事项进行约定。本协议作为《腾讯云E证通服务协议》(以下简称“主协议”)不可分割的有效组成部分,与主协议具有同等法律效力。
|
||||||
|
</view>
|
||||||
|
<view class="strong underline">
|
||||||
|
我们特别提示您,您在前述页面点击“已阅读并同意《用户授权协议》”以及点击按钮“申请并同意授权”的行为视为您已经充分阅读并理解、同意本协议的内容并作出相关授权。
|
||||||
|
</view>
|
||||||
|
<view class="strong underline">
|
||||||
|
一、为了在您注册、使用腾讯云E证通服务时识别您的身份,您同意并授权腾讯可以获取您绑定的微信手机号,同时,您同意并授权腾讯可通过其合作的依法运营数据库的主体比对您的手机号码,您同意并授权腾讯可以采集、存储并处理您的姓名、公民身份证号码、人脸照片、手机号码等可以识别您身份的个人信息(具体以在页面上填写、提供的为准)。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
二、为了能够获得腾讯云E证通编码,您同意并授权腾讯可以将您的个人信息传输至eID服务机构并由eID服务机构将提供给三所承建的“公安部公民网络身份识别系统”;您同意并授权三所使用eID数字身份技术为您在腾讯云E证通服务中生成保护个人身份信息的eID数字身份提供给eID服务机构并由eID服务机构提供给腾讯;您同意并授权腾讯可依法采集、存储并处理您的eID数字身份并生成腾讯云E证通编码。
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
三、在您注册完成腾讯云E证通服务后,您可采用多种方式使用腾讯云E证通服务,包括但不限于您个人管理、使用您的腾讯云E证通服务编码,以及您在此授权腾讯可在其运营的其他产品和业务中使用您的腾讯云E证通编码,以及您在此授权腾讯亦可向腾讯合作方提供您的腾讯云E证通编码,以方便您使用相应产品或业务,节约流程及时间。
|
||||||
|
</view>
|
||||||
|
<view class="strong">四、我们在此特别说明,腾讯合作方或腾讯运营其他产品和业务的团队所获得的腾讯云E证通编码不可识别您的个人信息。</view>
|
||||||
|
<view class="strong">
|
||||||
|
五、我们在此特别提示您,如果您在使用合作方或腾讯其他产品或业务时,除了授权腾讯向前述主体提供您的腾讯云E证通编码之外,还需要前述主体向腾讯云E证通服务运营团队采集或委托腾讯云E证通服务运营团队处理您的个人信息,须另行获得您相应授权。
|
||||||
|
</view>
|
||||||
|
<view>六、我们收集您的个人信息仅在您注册、使用腾讯云E证通服务范围内使用,未经您的同意,我们不会用于其他用途。</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import url('../../index.css');
|
||||||
|
</style>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
const getParameterByName=function(e,t){e=e.replace(/[\[\]]/g,"\\$&");const a=new RegExp(`[?&]${e}(=([^&#]*)|&|#|$)`).exec(t);return a?a[2]?decodeURIComponent(a[2].replace(/\+/g," ")):"":null};export default getParameterByName;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import Log from"../constants/log.js";let request=function(r,e){let{token:t="",url:o,method:a="POST",data:s,reTry:d,header:u={"Content-Type":"application/json"}}=r;try{uni.request({url:uni.eidBaseUrl+o,method:a,data:s,header:u,success(r){console.log("request success:",r),200===r.statusCode&&r.data?0==r.data.ErrorCode||0==r.data.code?e({ErrorCode:0,ErrorMsg:r.data.ErrorMsg,Data:r.data.Data||r.data.data,reTry:d}):e({ErrorCode:r.data.ErrorCode,ErrorMsg:r.data.ErrorMsg,Data:r.data.Data||r.data.data}):e({ErrorCode:-101,ErrorMsg:"请求错误,请稍后重试"})},fail(a){console.log("request error:",a),d&&d.tryCount&&d.tryCount>0?(d.tryCount--,uni.eidBaseUrl=uni.eidBackUpUrl,setTimeout(()=>{request(r,e)},d.retryDelay||0)):e({ErrorCode:-107,ErrorMsg:"request请求异常,请稍后重试"}),uni.reportLogToEid({token:t,event:Log.requestFail,errCode:"-1",errMsg:"requestFail 调用失败",data:{url:`${uni.eidBaseUrl}`+o,err:a}})}})}catch(r){console.log("request error:",r),e({ErrorCode:-109,ErrorMsg:"request方法异常,请稍后重试"}),uni.reportLogToEid({token:t,event:Log.requestCatch,errCode:"-1",errMsg:"requestFail 调用失败",data:{url:`${uni.eidBaseUrl}`+o,err:r}})}};export const $http=request;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
function isValidateToken(e){return/^[a-zA-Z0-9-]{36}$/.test(e)}export default{isValidateToken:isValidateToken};
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"id": "Rboy-upload-sfz",
|
||||||
|
"displayName": "身份证正反面上传 ",
|
||||||
|
"version": "1.0.2",
|
||||||
|
"description": "身份证正反面上传 预览 删除",
|
||||||
|
"keywords": [
|
||||||
|
"身份证",
|
||||||
|
"上传",
|
||||||
|
"预览"
|
||||||
|
],
|
||||||
|
"dcloudext": {
|
||||||
|
"category": [
|
||||||
|
"前端组件",
|
||||||
|
"通用组件"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"moment": "^2.29.4",
|
||||||
|
"qrcodejs2": "0.0.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
+258
-100
@@ -1,102 +1,260 @@
|
|||||||
{
|
{
|
||||||
"pages": [{
|
"lazyCodeLoading":"requiredComponents",
|
||||||
"path": "pages/login",
|
"pages": [{
|
||||||
"style": {
|
"path": "pages/switchSystem",
|
||||||
"navigationBarTitleText": "登录"
|
"style": {
|
||||||
}
|
"navigationBarTitleText": ""
|
||||||
}, {
|
}
|
||||||
"path": "pages/register",
|
}, {
|
||||||
"style": {
|
"path": "pages/login",
|
||||||
"navigationBarTitleText": "注册"
|
"style": {
|
||||||
}
|
"navigationBarTitleText": ""
|
||||||
}, {
|
}
|
||||||
"path": "pages/index",
|
}, {
|
||||||
"style": {
|
"path": "pages/register",
|
||||||
"navigationBarTitleText": "若依移动端框架",
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationBarTitleText": "注册"
|
||||||
}
|
}
|
||||||
}, {
|
},
|
||||||
"path": "pages/work/index",
|
{
|
||||||
"style": {
|
"path": "pages/index",
|
||||||
"navigationBarTitleText": "工作台"
|
"style": {
|
||||||
}
|
"navigationBarTitleText": "首页"
|
||||||
}, {
|
// "navigationStyle": "custom"
|
||||||
"path": "pages/mine/index",
|
}
|
||||||
"style": {
|
},
|
||||||
"navigationBarTitleText": "我的"
|
{
|
||||||
}
|
"path": "pages/work/index",
|
||||||
}, {
|
"style": {
|
||||||
"path": "pages/mine/avatar/index",
|
"navigationBarTitleText": "工作台"
|
||||||
"style": {
|
}
|
||||||
"navigationBarTitleText": "修改头像"
|
},
|
||||||
}
|
{
|
||||||
}, {
|
"path": "pages/mine/index",
|
||||||
"path": "pages/mine/info/index",
|
"style": {
|
||||||
"style": {
|
"navigationBarTitleText": "我的"
|
||||||
"navigationBarTitleText": "个人信息"
|
}
|
||||||
}
|
},
|
||||||
}, {
|
{
|
||||||
"path": "pages/mine/info/edit",
|
"path": "pages/mine/avatar/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "编辑资料"
|
"navigationBarTitleText": "修改头像"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
"path": "pages/mine/pwd/index",
|
"path": "pages/mine/info/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "修改密码"
|
"navigationBarTitleText": "个人信息"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
"path": "pages/mine/setting/index",
|
"path": "pages/mine/info/edit",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "应用设置"
|
"navigationBarTitleText": "编辑资料"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
"path": "pages/mine/help/index",
|
"path": "pages/mine/pwd/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "常见问题"
|
"navigationBarTitleText": "修改密码"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
"path": "pages/mine/about/index",
|
"path": "pages/mine/setting/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "关于我们"
|
"navigationBarTitleText": "应用设置"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
"path": "pages/common/webview/index",
|
"path": "pages/mine/help/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "浏览网页"
|
"navigationBarTitleText": "常见问题"
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
"path": "pages/common/textview/index",
|
"path": "pages/mine/about/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "浏览文本"
|
"navigationBarTitleText": "关于我们"
|
||||||
}
|
}
|
||||||
}],
|
}, {
|
||||||
"tabBar": {
|
"path": "pages/common/webview/index",
|
||||||
"color": "#000000",
|
"style": {
|
||||||
"selectedColor": "#000000",
|
"navigationBarTitleText": "浏览网页"
|
||||||
"borderStyle": "white",
|
}
|
||||||
"backgroundColor": "#ffffff",
|
}, {
|
||||||
"list": [{
|
"path": "pages/common/textview/index",
|
||||||
"pagePath": "pages/index",
|
"style": {
|
||||||
"iconPath": "static/images/tabbar/home.png",
|
"navigationBarTitleText": "浏览文本"
|
||||||
"selectedIconPath": "static/images/tabbar/home_.png",
|
}
|
||||||
"text": "首页"
|
},
|
||||||
}, {
|
{
|
||||||
"pagePath": "pages/work/index",
|
"path": "pages/handlecase/index",
|
||||||
"iconPath": "static/images/tabbar/work.png",
|
"style": {
|
||||||
"selectedIconPath": "static/images/tabbar/work_.png",
|
"navigationBarTitleText": "待办案件"
|
||||||
"text": "工作台"
|
}
|
||||||
}, {
|
},
|
||||||
"pagePath": "pages/mine/index",
|
// {
|
||||||
"iconPath": "static/images/tabbar/mine.png",
|
// "path": "pages/handlecase/component/assignrbitrators",
|
||||||
"selectedIconPath": "static/images/tabbar/mine_.png",
|
// "style": {
|
||||||
"text": "我的"
|
// "navigationBarTitleText": "是否指派仲裁员"
|
||||||
}
|
// }
|
||||||
]
|
// },
|
||||||
},
|
{
|
||||||
"globalStyle": {
|
"path": "pages/handlecase/component/uploadEvidence",
|
||||||
"navigationBarTextStyle": "black",
|
"style": {
|
||||||
"navigationBarTitleText": "RuoYi",
|
"navigationBarTitleText": "案件信息"
|
||||||
"navigationBarBackgroundColor": "#FFFFFF"
|
}
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/handlecase/component/confirmPayment",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "确认缴费"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/handlecase/component/payList",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "缴费详情"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/handlecase/component/evidenceList",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "证据清单"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/handlecase/component/obligations",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "权力和义务告知书"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/handlecase/component/newlyAddedCase",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "案件新增"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/expressDelivery/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "查看快递"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/expressDelivery/component/expressDelivery",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "快递信息"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/signature/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "在线签名列表"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/signature/component/expressDelivery",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "在线签名"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// "path": "pages/handlecase/component/confirmationEvidence",
|
||||||
|
// "style": {
|
||||||
|
// "navigationBarTitleText": "确认证据"
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "path": "pages/handlecase/component/chooseMethod",
|
||||||
|
// "style": {
|
||||||
|
// "navigationBarTitleText": "选择仲裁方式"
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
{
|
||||||
|
"path": "mp_ecard_sdk/index/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "腾讯云E证通授权"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "mp_ecard_sdk/protocol/eid/eid",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "eID数字身份⼩程序服务协议",
|
||||||
|
"enablePullDownRefresh": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "mp_ecard_sdk/protocol/privacy/privacy",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "腾讯隐私政策",
|
||||||
|
"enablePullDownRefresh": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "mp_ecard_sdk/protocol/service/service",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "腾讯云E证通服务协议",
|
||||||
|
"enablePullDownRefresh": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "mp_ecard_sdk/protocol/userAccredit/userAccredit",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "⽤户授权协议",
|
||||||
|
"enablePullDownRefresh": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/im/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "在线开庭",
|
||||||
|
"enablePullDownRefresh": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/realName",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "实名认证",
|
||||||
|
"enablePullDownRefresh": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/personalInfoCollection",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "权益告知书"
|
||||||
|
// "enablePullDownRefresh": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/im/component/imHome",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "会议",
|
||||||
|
"enablePullDownRefresh": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
],
|
||||||
|
"tabBar": {
|
||||||
|
"color": "#000000",
|
||||||
|
"selectedColor": "#000000",
|
||||||
|
"borderStyle": "white",
|
||||||
|
"backgroundColor": "#ffffff",
|
||||||
|
"list": [{
|
||||||
|
"pagePath": "pages/index",
|
||||||
|
"iconPath": "static/images/tabbar/home.png",
|
||||||
|
"selectedIconPath": "static/images/tabbar/home_.png",
|
||||||
|
"text": "首页"
|
||||||
|
}, {
|
||||||
|
"pagePath": "pages/work/index",
|
||||||
|
"iconPath": "static/images/tabbar/work.png",
|
||||||
|
"selectedIconPath": "static/images/tabbar/work_.png",
|
||||||
|
"text": "工作台"
|
||||||
|
}, {
|
||||||
|
"pagePath": "pages/mine/index",
|
||||||
|
"iconPath": "static/images/tabbar/mine.png",
|
||||||
|
"selectedIconPath": "static/images/tabbar/mine_.png",
|
||||||
|
"text": "我的"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
"globalStyle": {
|
||||||
|
"navigationBarTextStyle": "black",
|
||||||
|
"navigationBarTitleText": "RuoYi",
|
||||||
|
"navigationBarBackgroundColor": "#FFFFFF"
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
<template>
|
||||||
|
<view class="">
|
||||||
|
<Rboy-upload-sfz :obverse-url="formData.obverseUrl" :reverse-url="formData.reverseUrl"
|
||||||
|
@selectChange="sfz_chagne" @del="del_btn"></Rboy-upload-sfz>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import RboyUploadSfz from "@/components/Rboy-upload-sfz/Rboy-upload-sfz.vue"
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 表单
|
||||||
|
formData: {
|
||||||
|
// 正面
|
||||||
|
obverseUrl: "",
|
||||||
|
// 反面
|
||||||
|
reverseUrl: "",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 身份证
|
||||||
|
// 上传
|
||||||
|
sfz_chagne(e) {
|
||||||
|
if (e.name == "obverse") {
|
||||||
|
this.formData.obverseUrl = e.tempFilePath
|
||||||
|
console.log(this.formData.obverseUrl);
|
||||||
|
} else if (e.name == "reverse") {
|
||||||
|
this.formData.reverseUrl = e.tempFilePath
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 删除
|
||||||
|
del_btn(e) {
|
||||||
|
if (e.name == "obverse") {
|
||||||
|
this.formData.obverseUrl = ""
|
||||||
|
} else if (e.name == "reverse") {
|
||||||
|
this.formData.reverseUrl = ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
RboyUploadSfz,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
</style>
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,81 @@
|
|||||||
|
<template>
|
||||||
|
<view class="page">
|
||||||
|
<view class="mainAll" v-if="list2.length > 0">
|
||||||
|
<view class="pageTitle">
|
||||||
|
快递公司:{{expressMain.company}}
|
||||||
|
</view>
|
||||||
|
<view class="pageTitle">
|
||||||
|
快递单号:{{expressMain.no}}
|
||||||
|
</view>
|
||||||
|
<view class="pageMain">
|
||||||
|
<view>
|
||||||
|
<uni-steps :options="list2" active-color="#007AFF" direction="column" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="emptyBox" v-if="list2.length == 0">
|
||||||
|
<luanqing-empty :show="true" textColor="#000"></luanqing-empty>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
logistics
|
||||||
|
} from '../../../api/handlecase/index.js'
|
||||||
|
import LuanqingEmpty from "@/components/luanqing-empty.vue"
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
'luanqing-empty': LuanqingEmpty,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
expressMain: {},
|
||||||
|
list2: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
},
|
||||||
|
onLoad(data) {
|
||||||
|
uni.showLoading()
|
||||||
|
logistics({
|
||||||
|
id: data.id
|
||||||
|
}).then(res => {
|
||||||
|
uni.hideLoading()
|
||||||
|
this.expressMain = res.data[1].logisticsInfo;
|
||||||
|
this.expressMain = JSON.parse(this.expressMain);
|
||||||
|
this.expressMain.list.forEach(item => {
|
||||||
|
item.title = item.remark;
|
||||||
|
item.desc = item.datetime
|
||||||
|
})
|
||||||
|
this.list2 = this.expressMain.list
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.page {
|
||||||
|
background-color: #ffffff;
|
||||||
|
|
||||||
|
.pageTitle {
|
||||||
|
width: 100%;
|
||||||
|
padding: 15rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pageMain {
|
||||||
|
.status-btn {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 92rpx;
|
||||||
|
margin: 30rpx;
|
||||||
|
background-color: #007AFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
<template>
|
||||||
|
<view class="list">
|
||||||
|
<view class="listItem">
|
||||||
|
<view class="lable">
|
||||||
|
案件编号:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.caseNum}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem">
|
||||||
|
<view class="lable">
|
||||||
|
申请人姓名:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.applicantName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem" style="margin-top:22rpx">
|
||||||
|
<view class="lable">
|
||||||
|
被申请人姓名:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.respondentName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem">
|
||||||
|
<view class="lable">
|
||||||
|
案件状态:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.caseStatusName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="btn">
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="uploadEvidence(defalutVal.id)">查看快递信息</button>
|
||||||
|
<!-- <button class="btnItem" type="primary" size="mini" @tap="confirmationEvidence" v-if="defalutVal.caseStatus == 4">确认证据</button>
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="isAssignrbitrators" v-if="defalutVal.caseStatus == 5">是否指派仲裁员</button>
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="isAssignrbitrators">是否指派仲裁员</button>
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="chooseMethod" v-if="defalutVal.caseStatus == 9">选择仲裁方式</button> -->
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default{
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props:{
|
||||||
|
defalutVal:{
|
||||||
|
type:Object,
|
||||||
|
default:() => {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
// // 查看快递
|
||||||
|
uploadEvidence(id){
|
||||||
|
uni.navigateTo({
|
||||||
|
// url:`/pages/expressDelivery/component/expressDelivery?id=${this.defalutVal.id}`
|
||||||
|
url:`/pages/expressDelivery/component/expressDelivery?id=${id}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.list {
|
||||||
|
padding: 15rpx;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-radius: 30rpx;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
.listItem {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
height: 50rpx;
|
||||||
|
.lable {
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main {
|
||||||
|
width: 60%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn{
|
||||||
|
margin-top: 20rpx;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
.btnItem{
|
||||||
|
height: 50rpx;
|
||||||
|
background-color: #5395ff;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 50rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,125 @@
|
|||||||
|
<template>
|
||||||
|
<view class="handlecase">
|
||||||
|
<List class="caseList" v-for="(item,index) in caseList" :defalutVal='item' :key="index"></List>
|
||||||
|
<view class="emptyBox" v-if="caseList.length == 0">
|
||||||
|
<luanqing-empty :show="true" textColor="#000"></luanqing-empty>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import List from './component/list.vue'
|
||||||
|
import {
|
||||||
|
caseApplicationList
|
||||||
|
} from '../../api/handlecase/index.js'
|
||||||
|
import LuanqingEmpty from "@/components/luanqing-empty.vue"
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
List,
|
||||||
|
'luanqing-empty': LuanqingEmpty,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
caseList: [],
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getList(parms) {
|
||||||
|
uni.showLoading()
|
||||||
|
caseApplicationList(parms).then(res => {
|
||||||
|
uni.hideLoading()
|
||||||
|
this.caseList = res.rows;
|
||||||
|
this.caseList.forEach(item => {
|
||||||
|
switch (item.caseStatus) {
|
||||||
|
case 0:
|
||||||
|
item.caseStatusName = '立案申请'
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
item.caseStatusName = '待缴费'
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
item.caseStatusName = '待缴费确认'
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
item.caseStatusName = '待确认是否应诉'
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
item.caseStatusName = '待确认证据'
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
item.caseStatusName = '待确定是否指派仲裁员'
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
item.caseStatusName = '待组庭'
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
item.caseStatusName = '待组庭确定'
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
item.caseStatusName = '待组庭审核'
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
item.caseStatusName = '待选择仲裁方式'
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
item.caseStatusName = '待开庭'
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
item.caseStatusName = '待生成仲裁文书'
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
item.caseStatusName = '待确认仲裁文书'
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
item.caseStatusName = '待仲裁文书用印'
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
item.caseStatusName = '待仲裁文书用印审核'
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
item.caseStatusName = '待仲裁文书送达'
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
item.caseStatusName = '待案件归档'
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 触底
|
||||||
|
onReachBottom() {
|
||||||
|
if (this.caseList.length < 1) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let obj = {
|
||||||
|
caseStatusList: [16],
|
||||||
|
pageNum: this.pageNum,
|
||||||
|
pageSize: this.pageSize
|
||||||
|
}
|
||||||
|
obj.pageNum = obj.pageNum + 1
|
||||||
|
this.getList(obj)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
let obj = {
|
||||||
|
caseStatusList: [16],
|
||||||
|
pageNum: this.pageNum,
|
||||||
|
pageSize: this.pageSize
|
||||||
|
}
|
||||||
|
this.getList(obj)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.handlecase {
|
||||||
|
.caseList {
|
||||||
|
// height: 360rpx;
|
||||||
|
// background-color: #ffffff;
|
||||||
|
// border-radius: 30rpx;
|
||||||
|
// margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,309 @@
|
|||||||
|
<template>
|
||||||
|
<view class="assignrbitrators">
|
||||||
|
<view class="from">
|
||||||
|
<uni-forms ref="form" :modelValue="formData" :rules="rules">
|
||||||
|
<view class="title">案件详情</view>
|
||||||
|
<view class="box">
|
||||||
|
<uni-forms-item label="案件编号:" name="caseNum" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.caseNum" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人:" name="applicantName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.applicantName" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="被申请人:" name="respondentName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.respondentName" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="借款开始日期:" name="loanStartDate" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.loanStartDate" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="借款结束日期:" name="loanEndDate" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.loanEndDate" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="案件标的:" name="caseSubjectAmount" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.caseSubjectAmount" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张欠本金:" name="claimPrinciOwed" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.claimPrinciOwed" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张欠利息:" name="claimInterestOwed" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.claimInterestOwed" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张违约金:" name="claimLiquidDamag" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.claimLiquidDamag" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="证据材料" name="evidenceMaterialList" required :disabled='true'>
|
||||||
|
<!-- <img-upload :limit='3' :value.sync="formData.headImage" ></img-upload> -->
|
||||||
|
<view class="imagearea">
|
||||||
|
<image class="image" v-for="(item,index) in formData.evidenceMaterialList" :key="index" :src="formData.evidenceMaterialList[index].annexPath"
|
||||||
|
@click="getImgIndex(index)"></image>
|
||||||
|
</view>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="是否指派仲裁员" label-width="120px" name="maintenancetypeArr" required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="formData.maintenancetypeArr"
|
||||||
|
:localdata="maintenancetypeArr" @change='maintenancetypeChange'></uni-data-checkbox>
|
||||||
|
</uni-forms-item>
|
||||||
|
</view>
|
||||||
|
</uni-forms>
|
||||||
|
<view class="uni-list" v-if="selectFlag">
|
||||||
|
<checkbox-group @change="checkboxChange">
|
||||||
|
<label class="uni-list-cell uni-list-cell-pd" v-for="item in items" :key="item.value">
|
||||||
|
<view>
|
||||||
|
<checkbox :value="item.value" :checked="item.checked" />
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
<view class="">
|
||||||
|
仲裁员姓名:张三
|
||||||
|
</view>
|
||||||
|
<view class="">
|
||||||
|
当前案件数量:3
|
||||||
|
</view>
|
||||||
|
<view class="">
|
||||||
|
已结案数量:13
|
||||||
|
</view>
|
||||||
|
<view class="">
|
||||||
|
专业分类:借贷
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</label>
|
||||||
|
</checkbox-group>
|
||||||
|
</view>
|
||||||
|
<button type="primary" @click="submitImg">确认提交</button>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {respondentDetail,arbitratorList} from '../../../api/handlecase/index.js'
|
||||||
|
import moment from 'moment'
|
||||||
|
const app = getApp()
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formData: {},
|
||||||
|
selectFlag:false,
|
||||||
|
rules: {},
|
||||||
|
maintenancetypeArr:[{
|
||||||
|
text: '是',
|
||||||
|
value: 0
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 1
|
||||||
|
},],
|
||||||
|
items: [{
|
||||||
|
value: 'USA',
|
||||||
|
name: '美国'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'CHN',
|
||||||
|
name: '中国',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'BRA',
|
||||||
|
name: '巴西'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'JPN',
|
||||||
|
name: '日本'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'ENG',
|
||||||
|
name: '英国'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'FRA',
|
||||||
|
name: '法国'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
maintenancetypeChange(val){
|
||||||
|
let flag = val.detail.value;
|
||||||
|
if(flag == 0){
|
||||||
|
this.selectFlag = true
|
||||||
|
}else{
|
||||||
|
this.selectFlag = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getData(parms){
|
||||||
|
respondentDetail(parms).then(res=>{
|
||||||
|
this.formData = res.data
|
||||||
|
this.formData.loanEndDate = moment(this.formData.loanEndDate).format('YYYY-MM-DD HH:mm:ss');
|
||||||
|
this.formData.loanStartDate = moment(this.formData.loanStartDate).format('YYYY-MM-DD HH:mm:ss');
|
||||||
|
this.formData.evidenceMaterialList.forEach(item=>{
|
||||||
|
item.annexPath = app.globalData.requestUrl + item.annexPath
|
||||||
|
})
|
||||||
|
console.log(this.formData,"IMG");
|
||||||
|
})
|
||||||
|
},
|
||||||
|
checkboxChange (e) {
|
||||||
|
// console.log(e,"PPPPPPPPPPPPPPPPPPP");
|
||||||
|
},
|
||||||
|
// 获取仲裁员列表
|
||||||
|
getArbitratorList(){
|
||||||
|
arbitratorList({}).then(res=>{
|
||||||
|
console.log(res,"KKKKKKKKKKKKKKKKKKK");
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 预览图片
|
||||||
|
getImgIndex(index) {
|
||||||
|
//准备一个装图片路径的 数组imgs
|
||||||
|
let imgs = this.formData.headImage.map(item => {
|
||||||
|
// console.log(item, 'item');
|
||||||
|
//只返回图片路径
|
||||||
|
return item.pics_small_url
|
||||||
|
})
|
||||||
|
// console.log(imgs);
|
||||||
|
//调用预览图片的方法
|
||||||
|
uni.previewImage({
|
||||||
|
urls: imgs,
|
||||||
|
current: index,
|
||||||
|
loop: true,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onLoad(data){
|
||||||
|
this.getData(data.id);
|
||||||
|
// this.getArbitratorList()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.assignrbitrators {
|
||||||
|
// text-align: center;
|
||||||
|
padding: 20rpx;
|
||||||
|
|
||||||
|
.box {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
.imagearea {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
.image {
|
||||||
|
width: 40%;
|
||||||
|
height: 200rpx;
|
||||||
|
margin-top: 15rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexd {
|
||||||
|
padding-top: 20rpx;
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
width: 80%;
|
||||||
|
font-size: 26rpx;
|
||||||
|
border-radius: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select-picker {
|
||||||
|
display: flex;
|
||||||
|
box-sizing: border-box;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #DCDFE6;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 24rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-content {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
|
||||||
|
.none {
|
||||||
|
font-size: 24rpx;
|
||||||
|
height: 60rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.box {
|
||||||
|
/deep/.title {
|
||||||
|
font-size: 28rpx;
|
||||||
|
height: 60rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.htmltitle {
|
||||||
|
font-size: 30rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.look {
|
||||||
|
color: #0D91F9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 30rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.adsTitle {
|
||||||
|
font-size: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.multiple {
|
||||||
|
width: 75%;
|
||||||
|
height: 72rpx;
|
||||||
|
line-height: 72rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
// @include text-overflow($width: 100%)
|
||||||
|
}
|
||||||
|
.selectArbitrator{
|
||||||
|
margin-top: 20rpx;
|
||||||
|
height: 200rpx;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
display: flex;
|
||||||
|
padding: 15rpx;
|
||||||
|
.arbitrator-left{
|
||||||
|
width: 80%;
|
||||||
|
.arbitrator-item{
|
||||||
|
height: 40rpx;
|
||||||
|
margin-top: 10rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.arbitrator-right{
|
||||||
|
width: 20%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.uni-list{
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
.uni-list-cell {
|
||||||
|
border-radius: 30rpx;
|
||||||
|
margin-bottom: 10rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
background-color: #fff;
|
||||||
|
.main{
|
||||||
|
height: 100%;
|
||||||
|
margin-left: 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,236 @@
|
|||||||
|
<template>
|
||||||
|
<view class="assignrbitrators">
|
||||||
|
<view class="from">
|
||||||
|
<uni-forms ref="form" :modelValue="formData" :rules="rules">
|
||||||
|
<view class="title">案件详情</view>
|
||||||
|
<view class="box">
|
||||||
|
<uni-forms-item label="案件编号:" name="caseNum" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.caseNum" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人:" name="applicantName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.applicantName" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="被申请人:" name="respondentName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.respondentName" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="借款开始日期:" name="loanStartDate" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.loanStartDate" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="借款结束日期:" name="loanEndDate" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.loanEndDate" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="案件标的:" name="caseSubjectAmount" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.caseSubjectAmount" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张欠本金:" name="claimPrinciOwed" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.claimPrinciOwed" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张欠利息:" name="claimInterestOwed" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.claimInterestOwed" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张违约金:" name="claimLiquidDamag" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.claimLiquidDamag" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="证据材料" name="evidenceMaterialList" required :disabled='true'>
|
||||||
|
<!-- <img-upload :limit='3' :value.sync="formData.headImage" ></img-upload> -->
|
||||||
|
<view class="imagearea">
|
||||||
|
<image class="image" v-for="(item,index) in formData.evidenceMaterialList" :key="index" :src="formData.evidenceMaterialList[index].annexPath"
|
||||||
|
@click="getImgIndex(index)"></image>
|
||||||
|
</view>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="是否指派仲裁员" label-width="120px" name="maintenancetype" required>
|
||||||
|
<uni-data-checkbox class='checkbox' :disabled='true' v-model="formData.maintenancetype"
|
||||||
|
:localdata="maintenancetypeArr" @change='maintenancetypeChange'></uni-data-checkbox>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="选择仲裁方式" label-width="120px" name="arbitrationmethod" required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="formData.arbitrationmethod"
|
||||||
|
:localdata="arbitrationmethodArr" @change='arbitrationmethod'></uni-data-checkbox>
|
||||||
|
</uni-forms-item>
|
||||||
|
</view>
|
||||||
|
</uni-forms>
|
||||||
|
<view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const app = getApp()
|
||||||
|
import {respondentDetail} from '../../../api/handlecase/index.js'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formData: {
|
||||||
|
headImage: [{
|
||||||
|
pics_small_url: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pics_small_url: 'https://img1.baidu.com/it/u=1310564963,1641173348&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pics_small_url: 'https://img1.baidu.com/it/u=1310564963,1641173348&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pics_small_url: 'https://img1.baidu.com/it/u=1310564963,1641173348&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
rules: {},
|
||||||
|
maintenancetypeArr: [{
|
||||||
|
text: '是',
|
||||||
|
value: 0
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 1
|
||||||
|
}, ],
|
||||||
|
arbitrationmethodArr: [{
|
||||||
|
text: '书面仲裁',
|
||||||
|
value: 0
|
||||||
|
}, {
|
||||||
|
text: '视频仲裁',
|
||||||
|
value: 1
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
maintenancetypeChange(val) {
|
||||||
|
console.log(val, "PPPPPPPPPPPPPPPPPP");
|
||||||
|
},
|
||||||
|
// 仲裁方式
|
||||||
|
arbitrationmethod(val) {
|
||||||
|
console.log(val, "仲裁方式");
|
||||||
|
},
|
||||||
|
getData(parms){
|
||||||
|
respondentDetail(parms).then(res=>{
|
||||||
|
this.formData = res.data
|
||||||
|
this.formData.loanEndDate = moment(this.formData.loanEndDate).format('YYYY-MM-DD HH:mm:ss');
|
||||||
|
this.formData.loanStartDate = moment(this.formData.loanStartDate).format('YYYY-MM-DD HH:mm:ss');
|
||||||
|
this.formData.evidenceMaterialList.forEach(item=>{
|
||||||
|
item.annexPath = app.globalData.requestUrl + item.annexPath
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getImgIndex(index) {
|
||||||
|
//准备一个装图片路径的 数组imgs
|
||||||
|
let imgs = this.formData.headImage.map(item => {
|
||||||
|
return item.pics_small_url
|
||||||
|
})
|
||||||
|
uni.previewImage({
|
||||||
|
urls: imgs,
|
||||||
|
current: index,
|
||||||
|
loop: true,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onLoad(data){
|
||||||
|
this.getData(data.id);
|
||||||
|
// this.getArbitratorList()
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
// 'img-upload': ImgUpload,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.assignrbitrators {
|
||||||
|
// text-align: center;
|
||||||
|
padding: 20rpx;
|
||||||
|
|
||||||
|
.box {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
.imagearea {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
.image {
|
||||||
|
width: 40%;
|
||||||
|
height: 200rpx;
|
||||||
|
margin-top: 15rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexd {
|
||||||
|
padding-top: 20rpx;
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
width: 80%;
|
||||||
|
font-size: 26rpx;
|
||||||
|
border-radius: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select-picker {
|
||||||
|
display: flex;
|
||||||
|
box-sizing: border-box;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #DCDFE6;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 24rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-content {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
|
||||||
|
.none {
|
||||||
|
font-size: 24rpx;
|
||||||
|
height: 60rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.box {
|
||||||
|
/deep/.title {
|
||||||
|
font-size: 28rpx;
|
||||||
|
height: 60rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.htmltitle {
|
||||||
|
font-size: 30rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.look {
|
||||||
|
color: #0D91F9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 30rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.adsTitle {
|
||||||
|
font-size: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.multiple {
|
||||||
|
width: 75%;
|
||||||
|
height: 72rpx;
|
||||||
|
line-height: 72rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
// @include text-overflow($width: 100%)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
<template>
|
||||||
|
<view class="conent">
|
||||||
|
<view class="assignrbitrators">
|
||||||
|
<uni-forms ref="form" :modelValue="formData" :rules="rules">
|
||||||
|
<uni-forms-item label="案件编号:" name="caseNum" label-width="80px">
|
||||||
|
<uni-easyinput v-model="formData.caseNum" type="text" :disabled='true' placeholder="请输入案件编号" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<!-- <uni-forms-item label="案件标的:" name="caseSubjectAmount" label-width="80px">
|
||||||
|
<uni-easyinput v-model="formData.caseSubjectAmount" type="text" :disabled='true' placeholder="请输入案件标的" />
|
||||||
|
</uni-forms-item> -->
|
||||||
|
<uni-forms-item label="缴费金额:" name="feePayable" label-width="80px">
|
||||||
|
<uni-easyinput v-model="formData.feePayable" type="text" :disabled='true' placeholder="请输入缴费金额" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人缴费:" name="feePayable" label-width="90px" v-if="annexTypeS">
|
||||||
|
<view v-for="item in formData.caseAttachList">
|
||||||
|
<uni-link v-if="item.annexType==4" :href="item.annexPath" color="#007BFF"
|
||||||
|
:text="item.annexName"></uni-link>
|
||||||
|
</view>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="被申请人缴费:" name="feePayable" label-width="100px" v-if="annexTypeB">
|
||||||
|
<view v-for="item in formData.resCaseAttachList">
|
||||||
|
<uni-link v-if="item.annexType==9" :href="item.annexPath" color="#007BFF"
|
||||||
|
:text="item.annexName"></uni-link>
|
||||||
|
</view>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="是否缴费通过" label-width="120px" name="yesOrNo">
|
||||||
|
<uni-data-checkbox class='checkbox' :localdata="yesOrNoObject" v-model="yesOrNo"
|
||||||
|
@change='clearValidate'></uni-data-checkbox>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="驳回原因:" name="reason" label-width="120px" required v-if="refusedisabled"
|
||||||
|
:rules="[{required: true,errorMessage: '驳回原因不能为空'}]"
|
||||||
|
>
|
||||||
|
<uni-easyinput v-model="formData.reason" type="textarea" placeholder="请输入驳回原因" />
|
||||||
|
</uni-forms-item>
|
||||||
|
</uni-forms>
|
||||||
|
<view class="determine" style="text-align: center;">
|
||||||
|
<button class="mini-btn"
|
||||||
|
type="primary" size="mini"
|
||||||
|
@tap="confirmPayment">确认</button>
|
||||||
|
<button style="margin-left:30rpx;" class="mini-btn"
|
||||||
|
type="default" size="mini"
|
||||||
|
@tap="cencalBut">取消</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
selectPaymentDetail,
|
||||||
|
confirmPaid,
|
||||||
|
resConfirmPaid
|
||||||
|
} from '../../../api/handlecase/index.js'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
yesOrNo: 1,
|
||||||
|
formData: {
|
||||||
|
reason: ""
|
||||||
|
},
|
||||||
|
rules: {},
|
||||||
|
paymentConfirm: {},
|
||||||
|
annexTypeS: false,
|
||||||
|
annexTypeB: false,
|
||||||
|
yesOrNoObject: [{
|
||||||
|
text: '同意',
|
||||||
|
value: 1
|
||||||
|
}, {
|
||||||
|
text: '拒绝',
|
||||||
|
value: 0
|
||||||
|
}],
|
||||||
|
refusedisabled: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
confirmPayment(){
|
||||||
|
this.$refs.form.validate().then(res=>{
|
||||||
|
if(this.paymentConfirm.caseFlowId==3){
|
||||||
|
this.confirmPaymentApplicant()
|
||||||
|
}else if(this.paymentConfirm.caseFlowId==45){
|
||||||
|
this.confirmPaymentRespondent()
|
||||||
|
}
|
||||||
|
console.log(this.paymentConfirm.caseFlowId)
|
||||||
|
}).catch(err =>{
|
||||||
|
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 申请人确认缴费
|
||||||
|
confirmPaymentApplicant() {
|
||||||
|
let vals = {
|
||||||
|
caseId: this.paymentConfirm.id,
|
||||||
|
batchNumber: "",
|
||||||
|
caseFlowId: this.paymentConfirm.caseFlowId,
|
||||||
|
yesOrNo: this.yesOrNo,
|
||||||
|
reason: this.formData.reason
|
||||||
|
}
|
||||||
|
confirmPaid(vals).then(res => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '申请人缴费确认成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.navigateTo({
|
||||||
|
url:'/pages/handlecase/index'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 被申请人缴费确认
|
||||||
|
confirmPaymentRespondent() {
|
||||||
|
let vals = {
|
||||||
|
caseId: this.paymentConfirm.id,
|
||||||
|
batchNumber: "",
|
||||||
|
caseFlowId: this.paymentConfirm.caseFlowId,
|
||||||
|
yesOrNo: this.yesOrNo,
|
||||||
|
reason: this.formData.reason
|
||||||
|
}
|
||||||
|
resConfirmPaid(vals).then(res => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '被申请人缴费确认成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.navigateTo({
|
||||||
|
url:'/pages/handlecase/index'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 缴费详情
|
||||||
|
paymentDetails(val) {
|
||||||
|
selectPaymentDetail(val).then(res => {
|
||||||
|
this.formData = res.data;
|
||||||
|
this.formData.caseAttachList.forEach(res => {
|
||||||
|
if (res.annexType == 4) {
|
||||||
|
this.annexTypeS = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.formData.resCaseAttachList.forEach(res => {
|
||||||
|
if (res.annexType == 9) {
|
||||||
|
this.annexTypeB = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
clearValidate(val) {
|
||||||
|
this.yesOrNo = val.detail.value
|
||||||
|
if (val.detail.value == 0) {
|
||||||
|
this.refusedisabled = true
|
||||||
|
} else {
|
||||||
|
this.refusedisabled = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(data) {
|
||||||
|
this.paymentConfirm = data
|
||||||
|
this.paymentDetails({
|
||||||
|
id: data.id
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
page {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.assignrbitrators {
|
||||||
|
margin: 30rpx;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,222 @@
|
|||||||
|
<template>
|
||||||
|
<view class="assignrbitrators">
|
||||||
|
<view class="from">
|
||||||
|
<uni-forms ref="form" :modelValue="formData" :rules="rules">
|
||||||
|
<view class="title">案件详情</view>
|
||||||
|
<view class="box">
|
||||||
|
<uni-forms-item label="案件编号:" name="caseNum" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.caseNum" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人:" name="applicantName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.applicantName" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="被申请人:" name="respondentName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.respondentName" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="借款开始日期:" name="loanStartDate" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.loanStartDate" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="借款结束日期:" name="loanEndDate" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.loanEndDate" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="案件标的:" name="caseSubjectAmount" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.caseSubjectAmount" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张欠本金:" name="claimPrinciOwed" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.claimPrinciOwed" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张欠利息:" name="claimInterestOwed" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.claimInterestOwed" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张违约金:" name="claimLiquidDamag" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.claimLiquidDamag" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="证据材料" name="evidenceMaterialList" required :disabled='true'>
|
||||||
|
<!-- <img-upload :limit='3' :value.sync="formData.headImage" ></img-upload> -->
|
||||||
|
<view class="imagearea">
|
||||||
|
<image class="image" v-for="(item,index) in formData.evidenceMaterialList" :key="index" :src="formData.evidenceMaterialList[index].annexPath"
|
||||||
|
@click="getImgIndex(index)"></image>
|
||||||
|
</view>
|
||||||
|
</uni-forms-item>
|
||||||
|
</view>
|
||||||
|
</uni-forms>
|
||||||
|
<button type="primary" @click="submitImg">确认提交</button>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const app = getApp()
|
||||||
|
import {respondentDetail} from '../../../api/handlecase/index.js'
|
||||||
|
import moment from 'moment'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formData: {
|
||||||
|
headImage: [{
|
||||||
|
index: 1,
|
||||||
|
pics_small_url: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
index: 2,
|
||||||
|
pics_small_url: 'https://img1.baidu.com/it/u=1310564963,1641173348&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
index: 3,
|
||||||
|
pics_small_url: 'https://img1.baidu.com/it/u=1310564963,1641173348&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
index: 4,
|
||||||
|
pics_small_url: 'https://img1.baidu.com/it/u=1310564963,1641173348&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
rules: {},
|
||||||
|
maintenancetypeArr:[{
|
||||||
|
text: '是',
|
||||||
|
value: 0
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 1
|
||||||
|
},],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
maintenancetypeChange(val){
|
||||||
|
console.log(val,"PPPPPPPPPPPPPPPPPP");
|
||||||
|
},
|
||||||
|
getData(parms){
|
||||||
|
respondentDetail(parms).then(res=>{
|
||||||
|
this.formData = res.data
|
||||||
|
this.formData.loanEndDate = moment(this.formData.loanEndDate).format('YYYY-MM-DD HH:mm:ss');
|
||||||
|
this.formData.loanStartDate = moment(this.formData.loanStartDate).format('YYYY-MM-DD HH:mm:ss');
|
||||||
|
this.formData.evidenceMaterialList.forEach(item=>{
|
||||||
|
item.annexPath = app.globalData.requestUrl + item.annexPath
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 图片预览
|
||||||
|
getImgIndex(index) {
|
||||||
|
// console.log(index);
|
||||||
|
//准备一个装图片路径的 数组imgs
|
||||||
|
let imgs = this.formData.headImage.map(item => {
|
||||||
|
// console.log(item, 'item');
|
||||||
|
//只返回图片路径
|
||||||
|
return item.pics_small_url
|
||||||
|
})
|
||||||
|
// console.log(imgs);
|
||||||
|
//调用预览图片的方法
|
||||||
|
uni.previewImage({
|
||||||
|
urls: imgs,
|
||||||
|
current: index,
|
||||||
|
loop: true,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onLoad(data){
|
||||||
|
this.getData(data.id)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.assignrbitrators {
|
||||||
|
// text-align: center;
|
||||||
|
padding: 20rpx;
|
||||||
|
|
||||||
|
.box {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
.imagearea {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
.image {
|
||||||
|
width: 40%;
|
||||||
|
height: 200rpx;
|
||||||
|
margin-top: 15rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexd {
|
||||||
|
padding-top: 20rpx;
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
width: 80%;
|
||||||
|
font-size: 26rpx;
|
||||||
|
border-radius: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select-picker {
|
||||||
|
display: flex;
|
||||||
|
box-sizing: border-box;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #DCDFE6;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 24rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-content {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
|
||||||
|
.none {
|
||||||
|
font-size: 24rpx;
|
||||||
|
height: 60rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.box {
|
||||||
|
/deep/.title {
|
||||||
|
font-size: 28rpx;
|
||||||
|
height: 60rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.htmltitle {
|
||||||
|
font-size: 30rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.look {
|
||||||
|
color: #0D91F9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 30rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.adsTitle {
|
||||||
|
font-size: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.multiple {
|
||||||
|
width: 75%;
|
||||||
|
height: 72rpx;
|
||||||
|
line-height: 72rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
// @include text-overflow($width: 100%)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<view style="text-align: center;" v-for="item in evidenceList">
|
||||||
|
<image :src="item.annexPath"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import config from '@/config'
|
||||||
|
const baseUrl = config.baseUrl
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
evidenceList: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(data) {
|
||||||
|
console.log(data)
|
||||||
|
let list = JSON.parse(decodeURIComponent(data.evidenceList))
|
||||||
|
if(list) {
|
||||||
|
list.forEach(item =>{
|
||||||
|
item.annexPath = baseUrl + item.annexPath
|
||||||
|
})
|
||||||
|
}
|
||||||
|
console.log(list)
|
||||||
|
this.evidenceList = list
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
page {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,334 @@
|
|||||||
|
<template>
|
||||||
|
<view class="list">
|
||||||
|
<view class="listItem">
|
||||||
|
<view class="lable">
|
||||||
|
案件编号:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.caseNum}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem" v-if="sysType == 1">
|
||||||
|
<view class="lable">
|
||||||
|
申请人:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.applicantName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem" v-if="sysType == 2">
|
||||||
|
<view class="lable">
|
||||||
|
申请人:
|
||||||
|
</view>
|
||||||
|
<uni-tooltip :content="defalutVal.applicationName">
|
||||||
|
<view class="textHidden">
|
||||||
|
{{defalutVal.applicationName}}
|
||||||
|
</view>
|
||||||
|
</uni-tooltip>
|
||||||
|
</view>
|
||||||
|
<view class="listItem" style="margin-top:22rpx">
|
||||||
|
<view class="lable">
|
||||||
|
被申请人:
|
||||||
|
</view>
|
||||||
|
<uni-tooltip :content="defalutVal.respondentName">
|
||||||
|
<view class="textHidden">
|
||||||
|
{{defalutVal.respondentName}}
|
||||||
|
</view>
|
||||||
|
</uni-tooltip>
|
||||||
|
</view>
|
||||||
|
<view class="listItem">
|
||||||
|
<view class="lable">
|
||||||
|
案件状态:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.caseStatusName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="btn" v-if="sysType == 2">
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="modify"
|
||||||
|
v-if="checkPermi(['caseManagement:list:edit']) && defalutVal.caseFlowId <= 1">修改</button>
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="deleteCase"
|
||||||
|
v-if="checkPermi(['caseManagement:list:delete']) && defalutVal.caseFlowId <= 1">删除</button>
|
||||||
|
<!-- <button class="btnItem" type="primary" size="mini" @tap="clickPay">申请人缴费</button>
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="caseDetail">选择调解员</button> -->
|
||||||
|
<button class="btnItem" type="primary" @tap="clickType(item.id)" size="mini" v-for="(item) in buttonList"
|
||||||
|
:key="item.id"
|
||||||
|
v-if="item.id == defalutVal.caseFlowId && checkPermi([item.buttonAuthFlag])&& (defalutVal.appOperatorFlag == 1 || defalutVal.resOperatorFlag == 1 || defalutVal.otherFlag == 1)">{{ item.nodeName }}</button>
|
||||||
|
<!-- <button class="btnItem" type="primary" size="mini" @tap="confirmationEvidence">确认证据</button>
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="isAssignrbitrators">是否指派仲裁员</button>
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="isAssignrbitrators">是否指派仲裁员</button>
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="chooseMethod">选择仲裁方式</button> -->
|
||||||
|
</view>
|
||||||
|
<view class="btn" v-if="sysType == 1">
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="caseCrossExamin">案件质证</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
queryCaseFlowInfo,
|
||||||
|
caseAppSubmit,
|
||||||
|
caseDelete,
|
||||||
|
msCaseSign
|
||||||
|
} from '@/api/handlecase/index.js'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
defalutVal: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {}
|
||||||
|
},
|
||||||
|
sysType: {
|
||||||
|
type: Number,
|
||||||
|
default: () => {}
|
||||||
|
},
|
||||||
|
buttonList: {
|
||||||
|
type: Array,
|
||||||
|
default: () => {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/**点击列表按钮*/
|
||||||
|
clickType(type) {
|
||||||
|
if (type == 1) {
|
||||||
|
// 提交案件
|
||||||
|
this.onsubmitRow()
|
||||||
|
} else if (type == 2) {
|
||||||
|
// 缴费
|
||||||
|
this.clickPay(4)
|
||||||
|
} else if (type == 3 || type == 45) {
|
||||||
|
this.confirmPayments()
|
||||||
|
// 确认缴费
|
||||||
|
} else if (type == 4) {
|
||||||
|
// 受理分配
|
||||||
|
} else if (type == 5) {
|
||||||
|
// 选择调解员
|
||||||
|
this.caseDetail()
|
||||||
|
} else if (type == 6) {
|
||||||
|
// 核实调解员
|
||||||
|
} else if (type == 7) {
|
||||||
|
// 确认调解员
|
||||||
|
} else if (type == 8) {
|
||||||
|
// 确定调解时间
|
||||||
|
} else if (type == 9) {
|
||||||
|
// 调解
|
||||||
|
} else if (type == 10) {
|
||||||
|
// 确认调解书
|
||||||
|
} else if (type == 11) {
|
||||||
|
// 签名
|
||||||
|
} else if (type == 12) {
|
||||||
|
// 用印申请
|
||||||
|
} else if (type == 13) {
|
||||||
|
// 用印
|
||||||
|
} else if (type == 14) {
|
||||||
|
// 归档
|
||||||
|
} else if (type == 15) {
|
||||||
|
// 申请人签收
|
||||||
|
this.signMediation();
|
||||||
|
} else if (type == 16) {
|
||||||
|
// 被申请人签收
|
||||||
|
this.receivedMediation();
|
||||||
|
} else if (type == 17) {
|
||||||
|
//结束
|
||||||
|
} else if (type == 44) {
|
||||||
|
// 被申请人缴费
|
||||||
|
this.clickPay(9)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 案件质证
|
||||||
|
caseCrossExamin(){
|
||||||
|
uni.navigateTo({
|
||||||
|
url:`/pages/handlecase/component/uploadEvidence?id=${this.defalutVal.id}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 案件详情以及操作
|
||||||
|
caseDetail() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/handlecase/component/uploadEvidence?id=${this.defalutVal.id}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 缴费
|
||||||
|
clickPay(type) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/handlecase/component/payList?id=${this.defalutVal.id}&type=${type}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 确认缴费
|
||||||
|
confirmPayments() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/handlecase/component/confirmPayment?id=${this.defalutVal.id}&caseFlowId=${this.defalutVal.caseFlowId}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**提交案件*/
|
||||||
|
onsubmitRow() {
|
||||||
|
let onsubmitVal = {
|
||||||
|
id: this.defalutVal.id,
|
||||||
|
batchNumber: "",
|
||||||
|
caseFlowId: this.defalutVal.caseFlowId
|
||||||
|
}
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '您确定要提交案件',
|
||||||
|
success: function(res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
// console.log('用户点击确定');
|
||||||
|
caseAppSubmit(onsubmitVal).then(res => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '提交成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/handlecase/index'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else if (res.cancel) {
|
||||||
|
// console.log('用户点击取消');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 修改
|
||||||
|
modify() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/handlecase/component/newlyAddedCase?id=${this.defalutVal.id}`,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*删除*/
|
||||||
|
deleteCase() {
|
||||||
|
let objValue = {
|
||||||
|
id: this.defalutVal.id,
|
||||||
|
batchNumber: "",
|
||||||
|
caseFlowId: this.defalutVal.caseFlowId
|
||||||
|
}
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '您确定要删除案件',
|
||||||
|
success: function(res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
// console.log('用户点击确定');
|
||||||
|
caseDelete(objValue).then(res => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '删除成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/handlecase/index'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else if (res.cancel) {
|
||||||
|
// console.log('用户点击取消');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
/**申请人签收*/
|
||||||
|
signMediation() {
|
||||||
|
let that = this;
|
||||||
|
let objValue = {
|
||||||
|
caseId: this.defalutVal.id,
|
||||||
|
isSignApply: 1
|
||||||
|
}
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '您确定要签收',
|
||||||
|
success: function(res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
that.signingMediationAgreement(objValue)
|
||||||
|
} else if (res.cancel) {
|
||||||
|
// console.log('用户点击取消');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/**被申请人签收*/
|
||||||
|
receivedMediation() {
|
||||||
|
let that = this;
|
||||||
|
let objValue = {
|
||||||
|
caseId: this.defalutVal.id,
|
||||||
|
isSignRespon: 1
|
||||||
|
}
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '您确定要签收',
|
||||||
|
success: function(res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
that.signingMediationAgreement(objValue)
|
||||||
|
} else if (res.cancel) {
|
||||||
|
// console.log('用户点击取消');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/**申请人和被申请人签收调解书接口*/
|
||||||
|
signingMediationAgreement(val) {
|
||||||
|
msCaseSign(val).then((res) => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '签收成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/handlecase/index'
|
||||||
|
})
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.list {
|
||||||
|
padding: 15rpx;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-radius: 30rpx;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
|
||||||
|
.listItem {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
height: 50rpx;
|
||||||
|
|
||||||
|
.lable {
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main {
|
||||||
|
width: 60%;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
.btnItem {
|
||||||
|
height: 50rpx;
|
||||||
|
background-color: #5395ff;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 50rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.textHidden{
|
||||||
|
width: 300rpx;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,92 @@
|
|||||||
|
<template>
|
||||||
|
<view class="equityNotice">
|
||||||
|
<text>
|
||||||
|
关于“个人信息收集/使用”的同意书xxxxx公司业务管理系统需要收集与使用用户的个人信息,根据《中华人民共和国网络安全法》等相关法规,特告知如下请仔细阅读并理解文本件全部内容之后,决定是否同意并使用本公司业务管理系统的各项服务;如果您仍决定使用本公司业务管理系统的各项服务,则视为您同意执行本同意书
|
||||||
|
第1条定义
|
||||||
|
“用户”:使用本公司业务管理系统的自然人
|
||||||
|
“本公司”:运营及管理业务管理系统的xxxx公司
|
||||||
|
“业务管理系统”:需要收集和使用个人信息的本公司业务管理系统,但不限于,xxxx系统等该系统的功能范围可能不断扩展、调整
|
||||||
|
“个人信息”:指以电子或其他方式记录的能够单独或与其他信息结合识别自然人身份的各种信息,包括与确定自然人相关的生物特征、位置、行为等信息,如姓名、出生日期、身份证号、个人账号信息、住址、手机号码、电话号码、指纹、虹膜等
|
||||||
|
第2条个人信息内容和目的 个人信息内容见条
|
||||||
|
收集/利用的目的识别个人信息主体 传达合同签订的主要事项提供与产品和服务相关的咨询或邀请,提供用户有利的信息,处理用户投诉等争议理履行与提供产品/服务器相关的合同以及结费用 个人信息收集最小化本公司不收集超出个人信息必须范围的个人敏感信息,例如财产、健康,生活隐私等个人敏感信息
|
||||||
|
如确有正当业务需要,应经用户同意后进行最小化的收集和存储 用户享有对个人信息的访问、更正、删除个人信息、注销账户等权利 本公司收集的个人信息不会用于直接商业营销
|
||||||
|
第 3 条 个人信息的储存和使用时间 本公司与用户签订的合同存续期间
|
||||||
|
从个人信息收集日开始一直到业务关系终止为止
|
||||||
|
本公司获取的个人所有信息,除了以上提及的收集/使用目的或法律规定的使用目的以外,不会用于其它用途依据相关法规,如无正当的理由继续保存个人信息,或者个人信息收集使用目的已经达成,本公司会即时删除相关个人信息用户如要求删除个人信息,且相关法规规定不要求保存此类个人信息时,自接收到用户删除要求后,本公司会及时删除所有个人信息
|
||||||
|
第 4 条 拒绝同意权利
|
||||||
|
用户可拒绝接受收集和利用个人信息,但因此而无法实现与本公司的正常业务往来,甚至导致合同无法正常履行的,所带来的负面后果由用户承担,请审慎留意
|
||||||
|
用户同意签署此同意书,即表示已仔细阅读并理解以上所有事项,同意相关个人信息的收集和使用
|
||||||
|
第 5条个人信息出境
|
||||||
|
为了正常运营业务管理系统,提高业务效率,与业务管理系统相关收集和产生的个人信息需通过网络专线或其它正规渠道传送到本公司在境外的机构的对应业务管理系统
|
||||||
|
本公司在境外的机构包括:
|
||||||
|
出境目的是为正常运营业务管理系统,其中包括但不限于、品质系统、购买系统等需依赖于用户个人信息才能正常运行的系统
|
||||||
|
出境范围和内容包括但不限于用户的姓名、出生日期、身份证号、个人账号信息、住址、电话号码等通过合法途径收集的个人信息
|
||||||
|
第 6条 同意书的效力和变更
|
||||||
|
本同意书从用户同意之日起开始生效
|
||||||
|
如本同意书签署之前,用户已经使用本公司业务管理系统的,则本同意书的签署同时视为对之前已经发生的个人信息收集与利用的同意
|
||||||
|
本公司保留运营或者营业上有重要原因时,对本同意书进行修改的权利但即使修改也会在《中华人民共和国网络安全法》及其相关法规允许的范围内进行修订
|
||||||
|
如对本同意书进行修订,本公司将提前至少 7 天将修订内容、实施时间、修订原因公布在公司业务管理系统首页
|
||||||
|
6 4 用户有权利拒绝同意修订在用户拒绝同意修订的情况下,本公司有权利终止相关服务,禁止用户登录
|
||||||
|
第7条争议的解决与联系方式
|
||||||
|
本同意书的订立、执行和争议的解决均应适用中华人民共和国法律 如双方就本同意书内容或其执行发生任何争议,双方应尽量友好协商解决;协商不成时,任何一方均可向本公司所在地有管辖权的人民法院提起诉讼 本公司保留对同意书的解释和修改权利
|
||||||
|
本公司未行使本协议的任何权利或规定,不构成对前述权利之放弃 如本同意书中的任何条款完全或部分无效,本同意书的其余条款仍有效并且有约束力
|
||||||
|
若您对本同意书的内容、执行有其它疑问、建议、意见等,欢迎通过下列方式与本公司联系:
|
||||||
|
第 8条 附则
|
||||||
|
本同意书可通过纸质签署,亦可通过用户登录点击确认等方式签署,均具有同等法律效力
|
||||||
|
</text>
|
||||||
|
<view class="from">
|
||||||
|
<uni-forms ref="form" >
|
||||||
|
<uni-forms-item label="反意理由:" name="reasons" label-width="100px" required>
|
||||||
|
<uni-easyinput v-model="formData.reasont"
|
||||||
|
placeholder="请输入反意理由" />
|
||||||
|
</uni-forms-item>
|
||||||
|
</uni-forms>
|
||||||
|
</view>
|
||||||
|
<view class="determine">
|
||||||
|
<button type="primary" @click="submit">确定</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default{
|
||||||
|
data (){
|
||||||
|
return {
|
||||||
|
formData:{
|
||||||
|
reasont:''
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
submit(){
|
||||||
|
if(this.formData.reasont){
|
||||||
|
uni.setStorageSync('reasontData', this.formData.reasont)
|
||||||
|
}else{
|
||||||
|
this.$modal.msgError("请输入您的账号")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
page {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
.equityNotice{
|
||||||
|
padding: 20rpx 20rpx;
|
||||||
|
font-size: 22rpx;
|
||||||
|
|
||||||
|
.determine{
|
||||||
|
margin:0 auto;
|
||||||
|
width: 250rpx;
|
||||||
|
button{
|
||||||
|
background-color: brown;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,275 @@
|
|||||||
|
<template>
|
||||||
|
<view class="from">
|
||||||
|
<uni-forms ref="form" :modelValue="formData" :rules="rules">
|
||||||
|
<view class="box">
|
||||||
|
<uni-forms-item label="案件编号:" name="caseNum" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.caseNum" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人:" name="applicantName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="affiliate"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="被申请人:" name="respondentName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="affiliateRes"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<!-- <uni-forms-item label="案件标的:" name="caseSubjectAmount" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.caseSubjectAmount"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item> -->
|
||||||
|
<uni-forms-item label="应缴费用:" name="feePayable" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.feePayable" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="驳回原因:" name="reason" label-width="120px" required v-if="formData.reason">
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.reason" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
</view>
|
||||||
|
</uni-forms>
|
||||||
|
<uni-forms-item label="缴费方式">
|
||||||
|
<uni-data-checkbox v-model="payType" :localdata="payTypes" @change="changeType" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="缴费平台" v-if="payType == 0">
|
||||||
|
<uni-data-checkbox v-model="payPlatform" :localdata="payPlatforms" @change="changePayType" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<div class="payImg" v-if="payType == 0">
|
||||||
|
<canvas canvas-id="qrcode" v-show="qrShow" style="width: 300rpx;margin: 0 auto;" />
|
||||||
|
</div>
|
||||||
|
<div class="payTitle" v-if="payType == 0">{{ payMain }}</div>
|
||||||
|
<uni-forms-item label="上传证据" name="headImage">
|
||||||
|
<uni-file-picker ref="files" :auto-upload="false" return-type='object' v-model="fileList"
|
||||||
|
file-mediatype="all" @select="select" :limit='1' />
|
||||||
|
</uni-forms-item>
|
||||||
|
<button type="primary" @click="submitPay">确认提交</button>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
selectById
|
||||||
|
} from '../../../api/handlecase/index.js'
|
||||||
|
import {
|
||||||
|
casePay,
|
||||||
|
confirmPayment
|
||||||
|
} from '../../../api/pay/index.js'
|
||||||
|
import moment from 'moment'
|
||||||
|
import uQRCode from '../../common/uqrcode.js'
|
||||||
|
import {
|
||||||
|
getToken
|
||||||
|
} from '@/utils/auth'
|
||||||
|
import config from '@/config'
|
||||||
|
const baseUrl = config.baseUrlTJ
|
||||||
|
const app = getApp()
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formData: {},
|
||||||
|
affiliate:"",
|
||||||
|
affiliateRes:"",
|
||||||
|
selectFlag: false,
|
||||||
|
rules: {},
|
||||||
|
payPlatforms: [{
|
||||||
|
text: '微信',
|
||||||
|
value: 0
|
||||||
|
}, {
|
||||||
|
text: '支付宝',
|
||||||
|
value: 1
|
||||||
|
}, ],
|
||||||
|
payPlatform: null,
|
||||||
|
payType: 1,
|
||||||
|
payTypes: [{
|
||||||
|
text: '线上缴费',
|
||||||
|
value: 0
|
||||||
|
}, {
|
||||||
|
text: '线下缴费',
|
||||||
|
value: 1
|
||||||
|
}, ],
|
||||||
|
payMain: '',
|
||||||
|
qrShow: false,
|
||||||
|
tempFilePaths: null,
|
||||||
|
fileList: {},
|
||||||
|
submitForm: {
|
||||||
|
payType: 1,
|
||||||
|
payOrderList: [],
|
||||||
|
caseId: null
|
||||||
|
},
|
||||||
|
dataType:{},
|
||||||
|
formDataVal:{}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/**获取案件缴费信息*/
|
||||||
|
getData(parms) {
|
||||||
|
selectById(parms).then(res => {
|
||||||
|
this.formData = res.data
|
||||||
|
this.affiliate = res.data.affiliate.applicant.map(item =>item.applicant.name).join(',')
|
||||||
|
this.affiliateRes = res.data.affiliate.res.map(item =>item.res.name).join(',')
|
||||||
|
res.data.affiliate.applicant.forEach((item,index) =>{
|
||||||
|
if(item.res!=null){
|
||||||
|
this.affiliateRes = {name:item.res.name}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if(this.dataType.type==4){
|
||||||
|
this.formDataVal ={
|
||||||
|
annexType: 4,
|
||||||
|
id: this.formData.id
|
||||||
|
}
|
||||||
|
}else if(this.dataType.type==9){
|
||||||
|
this.formDataVal ={
|
||||||
|
annexType: 9,
|
||||||
|
id: this.formData.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**生成二维码*/
|
||||||
|
qrcode(url) {
|
||||||
|
this.qrShow = true
|
||||||
|
uQRCode.make({
|
||||||
|
canvasId: 'qrcode',
|
||||||
|
componentInstance: this,
|
||||||
|
text: url,
|
||||||
|
size: 150,
|
||||||
|
margin: 0,
|
||||||
|
backgroundColor: '#ffffff',
|
||||||
|
foregroundColor: '#000000',
|
||||||
|
fileType: 'jpg',
|
||||||
|
errorCorrectLevel: uQRCode.errorCorrectLevel.H,
|
||||||
|
success: res => {}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**选择缴费方式*/
|
||||||
|
changeType(val) {
|
||||||
|
this.submitForm.payType = val.detail.value;
|
||||||
|
},
|
||||||
|
/**文件上传*/
|
||||||
|
select(e) {
|
||||||
|
this.submitForm.payOrderList = [];
|
||||||
|
this.tempFilePaths = e.tempFilePaths;
|
||||||
|
// loading
|
||||||
|
uni.showLoading({
|
||||||
|
title: '上传中'
|
||||||
|
});
|
||||||
|
uni.uploadFile({
|
||||||
|
url: baseUrl + '/common/upload',
|
||||||
|
filePath: this.tempFilePaths[0],
|
||||||
|
header: {
|
||||||
|
Authorization: getToken() || '',
|
||||||
|
},
|
||||||
|
formData:this.formDataVal,
|
||||||
|
name: 'file',
|
||||||
|
success: (res) => {
|
||||||
|
let {
|
||||||
|
data
|
||||||
|
} = res
|
||||||
|
data = JSON.parse(data);
|
||||||
|
this.submitForm.payOrderList.push({
|
||||||
|
annexId: data.annexId,
|
||||||
|
annexName: data.fileName
|
||||||
|
});
|
||||||
|
uni.showToast({
|
||||||
|
title: '上传成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.hideLoading();
|
||||||
|
},
|
||||||
|
fail: (err) => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '上传失败',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.hideLoading()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**选择缴费平台*/
|
||||||
|
changePayType(val) {
|
||||||
|
if (this.formData.feePayable == 0 || !this.formData.feePayable) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '此案件无需缴费',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let payType = "";
|
||||||
|
if (val.detail.value == 0) {
|
||||||
|
payType = "wxpay";
|
||||||
|
this.payMain = "请使用微信扫二维码支付";
|
||||||
|
} else if (val.detail.value == 1) {
|
||||||
|
payType = "alipay";
|
||||||
|
this.payMain = "请使用支付宝扫二维码支付";
|
||||||
|
}
|
||||||
|
casePay({
|
||||||
|
totalFee: this.formData.feePayable * 100,
|
||||||
|
caseId: this.formData.id,
|
||||||
|
tradeType: "native",
|
||||||
|
platform: payType,
|
||||||
|
}).then((res) => {
|
||||||
|
this.qrcode(res.data.code_url);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
confirmPaymentFn(data) {
|
||||||
|
confirmPayment(data).then(res => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '确认成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
});
|
||||||
|
uni.navigateBack({
|
||||||
|
delta: 1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**确认缴费*/
|
||||||
|
submitPay() {
|
||||||
|
if (this.submitForm.payOrderList.length < 1) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '请上传缴费凭证',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.submitForm.caseId = this.formData.id;
|
||||||
|
this.submitForm.caseFlowId = this.formData.caseFlowId;
|
||||||
|
this.confirmPaymentFn(this.submitForm);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(data) {
|
||||||
|
this.dataType = data
|
||||||
|
this.getData({
|
||||||
|
id: data.id
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.from {
|
||||||
|
padding: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.payImg,
|
||||||
|
.payTitle {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select-picker {
|
||||||
|
display: flex;
|
||||||
|
box-sizing: border-box;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #DCDFE6;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 24rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,730 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<view>
|
||||||
|
|
||||||
|
|
||||||
|
</view> <uni-section title=" ">
|
||||||
|
<!-- 选项卡 -->
|
||||||
|
<view>
|
||||||
|
<uni-segmented-control :current="current" :values="itemsT" :style-type="styleType"
|
||||||
|
:active-color="activeColor" @clickItem="onClickItem" />
|
||||||
|
</view>
|
||||||
|
<!-- 选项卡内容 -->
|
||||||
|
<view class="conent">
|
||||||
|
<view v-show="current === 0">
|
||||||
|
<view class="assignrbitrators">
|
||||||
|
<view class="from">
|
||||||
|
<uni-forms ref="form" :modelValue="subnitForm" :rules="rules" v-if="sysType == 1">
|
||||||
|
<!-- <view class="title">案件详情</view> -->
|
||||||
|
<view class="box">
|
||||||
|
<uni-forms-item label="案件编号:" name="caseNum" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.caseNum"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人:" name="applicantName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true'
|
||||||
|
v-model="formData.applicantName" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="被申请人:" name="respondentName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true'
|
||||||
|
v-model="formData.respondentName" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="借款开始日期:" name="loanStartDate" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true'
|
||||||
|
v-model="formData.loanStartDate" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="借款结束日期:" name="loanEndDate" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true'
|
||||||
|
v-model="formData.loanEndDate" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="案件标的:" name="caseSubjectAmount" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true'
|
||||||
|
v-model="formData.caseSubjectAmount" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张欠本金:" name="claimPrinciOwed" label-width="120px"
|
||||||
|
required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true'
|
||||||
|
v-model="formData.claimPrinciOwed" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张欠利息:" name="claimInterestOwed" label-width="120px"
|
||||||
|
required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true'
|
||||||
|
v-model="formData.claimInterestOwed" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张违约金:" name="claimLiquidDamag" label-width="120px"
|
||||||
|
required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true'
|
||||||
|
v-model="formData.claimLiquidDamag" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<!-- <uni-forms-item label="是否有异议需要举证" label-width="120px" name="objectionAddEviden" required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="subnitForm.objectionAddEviden"
|
||||||
|
:localdata="maintenancetypeArr" @change='uploadEvidenceChange'></uni-data-checkbox>
|
||||||
|
</uni-forms-item> -->
|
||||||
|
<!-- <uni-forms-item label="是否需要开庭审理" label-width="120px" name="openCourtHear" required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="subnitForm.openCourtHear"
|
||||||
|
:localdata="arbitrationmethodArr" @change='arbitrationmethod'></uni-data-checkbox>
|
||||||
|
</uni-forms-item> -->
|
||||||
|
<!-- <uni-forms-item label="是否指派调解员" label-width="120px" v-if="sysType==2" name="pendingAppointArbotrar" required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="subnitForm.pendingAppointArbotrar"
|
||||||
|
:localdata="uploadEvidence" @change='maintenancetypeChange'></uni-data-checkbox>
|
||||||
|
</uni-forms-item> -->
|
||||||
|
<uni-forms-item label="是否仲裁反请求" label-width="120px" name="objectiJuris" required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="subnitForm.objectiJuris"
|
||||||
|
:localdata="objectiJurisArr"
|
||||||
|
@change='objectiJurisChange'></uni-data-checkbox>
|
||||||
|
</uni-forms-item>
|
||||||
|
<!-- <uni-forms-item label="是否管辖异议申请" label-width="120px" name="adjudicaCounter" required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="subnitForm.adjudicaCounter"
|
||||||
|
:localdata="adjudicaCounterArr"></uni-data-checkbox>
|
||||||
|
</uni-forms-item> -->
|
||||||
|
<!-- <uni-forms-item label="上传证据" name="headImage" label-width="120px" v-if="caseFlag">
|
||||||
|
<uni-file-picker ref="files" :auto-upload="false" @select="select" :limit='1' />
|
||||||
|
</uni-forms-item> -->
|
||||||
|
<uni-forms-item label="是否书面审理" label-width="120px" name="respondentIsWrittenHear"
|
||||||
|
required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="subnitForm.respondentIsWrittenHear"
|
||||||
|
:localdata="adjudicateRecord"
|
||||||
|
@change='arbitrationmethod'></uni-data-checkbox>
|
||||||
|
</uni-forms-item>
|
||||||
|
</view>
|
||||||
|
</uni-forms>
|
||||||
|
<uni-forms ref="form" :modelValue="subnitForm" :rules="rules" v-if="sysType == 2">
|
||||||
|
<!-- <view class="title">案件详情</view> -->
|
||||||
|
<view class="box">
|
||||||
|
<uni-forms-item label="案件编号:" name="caseNum" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.caseNum"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人:" name="applicantName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true'
|
||||||
|
v-model="affiliateApp" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="被申请人:" name="respondentName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true'
|
||||||
|
v-model="affiliateRes" placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<!-- <uni-forms-item label="是否有异议需要举证" label-width="120px" name="objectionAddEviden" required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="subnitForm.objectionAddEviden"
|
||||||
|
:localdata="maintenancetypeArr" @change='uploadEvidenceChange'></uni-data-checkbox>
|
||||||
|
</uni-forms-item> -->
|
||||||
|
<!-- <uni-forms-item label="是否指派调解员" label-width="120px" name="pendingAppointArbotrar"
|
||||||
|
required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="subnitForm.pendingAppointArbotrar"
|
||||||
|
:localdata="uploadEvidence"
|
||||||
|
@change='maintenancetypeChange'></uni-data-checkbox>
|
||||||
|
</uni-forms-item> -->
|
||||||
|
</view>
|
||||||
|
</uni-forms>
|
||||||
|
<!-- 自定义弹窗层组件 -->
|
||||||
|
<uni-popup scroll-y="true" ref="popup" :is-mask-click="false" type="bottom">
|
||||||
|
<view class="content_list">
|
||||||
|
<uni-card>
|
||||||
|
<view class="" style="text-align: center;font-size: 35rpx;font-weight: bold;">
|
||||||
|
<text>权力和义务告知书</text>
|
||||||
|
</view>
|
||||||
|
根据《中华人民共和国仲裁法》的规定,仲裁当事人在仲裁活动中依法享有权利并承担义务。
|
||||||
|
<view class="">
|
||||||
|
<text>一、当事人的权利</text>
|
||||||
|
<text>1.依据仲裁协议提请仲裁;撤回仲裁申请或者变更、放弃仲裁请求;承认或者反驳仲裁请求;提出仲裁反请求。</text>
|
||||||
|
<text>2.对仲裁协议效力提出异议。</text>
|
||||||
|
<text>3.委托代理人进行仲裁活动。</text>
|
||||||
|
<text>4.申请财产保全、证据保全。</text>
|
||||||
|
<text>5.约定、选定仲裁庭的组成方式;选定或者委托本会主任指定仲裁员;申请仲裁员、办案秘书、翻译人员、鉴定人员回避。</text>
|
||||||
|
<text>6.收集、提供证据。对证据进行质证,发表辩论意见,作最后陈述。</text>
|
||||||
|
<text>7.请求调解。自行和解的,可以请求仲裁庭根据和解协议作出裁决书。</text>
|
||||||
|
<text>8.认为开庭笔录对自己陈述的记录有遗漏或者差错的,申请补正。</text>
|
||||||
|
<text>9.对裁决书中的文字、计算错误或者仲裁庭已经裁决但在裁决书中遗漏的事项,请求补正或者作出补正裁决。</text>
|
||||||
|
<text>10.向人民法院申请撤销、执行或者不予执行仲裁裁决。</text>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
<text>
|
||||||
|
<text>二、当事人的义务</text>
|
||||||
|
<text>1.如实书写仲裁申请书和答辩书;在庭审中不得做虚假陈述。</text>
|
||||||
|
<text>2.对自己的主张按期提供证据,不得提供伪证。</text>
|
||||||
|
<text>3.遵守仲裁员回避制度。</text>
|
||||||
|
<text>4.按时参加开庭。</text>
|
||||||
|
<text>5.遵守开庭纪律和仲裁程序。</text>
|
||||||
|
<text>6.在庭审笔录上签字。</text>
|
||||||
|
<text>7.在仲裁文书的送达回证上签字盖章。</text>
|
||||||
|
<text>8.主动履行生效的仲裁裁决。</text>
|
||||||
|
<text>9.按规定交纳仲裁费用。</text>
|
||||||
|
<text>10.法律、法规和本会仲裁规则规定的其他义务。</text>
|
||||||
|
</text>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="from" style="margin-top:30rpx;">
|
||||||
|
<uni-forms ref="reasontFormData">
|
||||||
|
<uni-forms-item label="异议原因:" label-width="100px" required>
|
||||||
|
<uni-easyinput v-model="reasontFormData.reasont"
|
||||||
|
placeholder="请输入异议原因" />
|
||||||
|
</uni-forms-item>
|
||||||
|
</uni-forms>
|
||||||
|
</view>
|
||||||
|
<view class="determine">
|
||||||
|
<button style="width: 150rpx;float: left;margin-left: 90rpx;" type="primary"
|
||||||
|
@tap="submitReasont">确定</button>
|
||||||
|
<button style="width: 150rpx;" @tap="cencalBut">取消</button>
|
||||||
|
</view>
|
||||||
|
</uni-card>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</uni-popup>
|
||||||
|
<view class="uni-list">
|
||||||
|
<checkbox-group @change="checkboxChange" style="width: 100%;margin-bottom: 15rpx;">
|
||||||
|
<label class="uni-list-cell uni-list-cell-pd" v-for="item in items"
|
||||||
|
:key="item.mediatorId">
|
||||||
|
<view>
|
||||||
|
<checkbox color="blue" style="transform:scale(0.7)"
|
||||||
|
:value="item.mediatorId + ''" :checked="item.echoFlag" />
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
<view class="">
|
||||||
|
调解员:{{item.mediatorName}}
|
||||||
|
</view>
|
||||||
|
<view class="">
|
||||||
|
专业:{{item.specialty || '暂无信息'}}
|
||||||
|
</view>
|
||||||
|
<view class="">
|
||||||
|
待办数量:{{item.todoAmount || '0'}}
|
||||||
|
</view>
|
||||||
|
<view class="">
|
||||||
|
已办数量:{{item.completeAmount || '0'}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</label>
|
||||||
|
</checkbox-group>
|
||||||
|
</view>
|
||||||
|
<button type="primary" @click="submitImg">确认提交</button>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view v-show="current === 1" style="padding: 20rpx;">
|
||||||
|
<view class="" v-if="sysType == 1">
|
||||||
|
<view class="" style="margin-top: 50rpx;">
|
||||||
|
<view>申请人</view>
|
||||||
|
<view v-for="item in formData.evidenceMaterialList">
|
||||||
|
<uni-link v-if="item.annexType==2" :href="item.annexPath" color="#007BFF"
|
||||||
|
:text="item.fileName"></uni-link>
|
||||||
|
</view>
|
||||||
|
<view>被申请人</view>
|
||||||
|
<view v-for="item in formData.evidenceMaterialList">
|
||||||
|
<uni-link v-if="item.annexType==6" :href="item.annexPath" color="#007BFF"
|
||||||
|
:text="item.fileName"></uni-link>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="" style="margin-top: 40rpx;">
|
||||||
|
<view>仲裁申请书</view>
|
||||||
|
<view v-for="item in formData.evidenceMaterialList">
|
||||||
|
<uni-link v-if="item.annexType==1" :href="item.annexPath" color="#007BFF"
|
||||||
|
:text="item.fileName"></uni-link>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="" v-if="sysType == 2">
|
||||||
|
<view class="" style="margin-top: 50rpx;">
|
||||||
|
<view>申请人</view>
|
||||||
|
<view v-for="item in formData.caseAttachList">
|
||||||
|
<uni-link v-if="item.annexType==4" :href="item.annexPath" color="#007BFF"
|
||||||
|
:text="item.annexName"></uni-link>
|
||||||
|
</view>
|
||||||
|
<view>被申请人</view>
|
||||||
|
<view v-for="item in formData.caseAttachList">
|
||||||
|
<uni-link v-if="item.annexType==6" :href="item.annexPath" color="#007BFF"
|
||||||
|
:text="item.annexName"></uni-link>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="" style="margin-top: 40rpx;">
|
||||||
|
<view>调解申请书</view>
|
||||||
|
<view v-for="item in formData.caseAttachList">
|
||||||
|
<uni-link v-if="item.annexType==3" :href="item.annexPath" color="#007BFF"
|
||||||
|
:text="item.annexName"></uni-link>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</uni-section>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
respondentDetail,
|
||||||
|
arbitratorList,
|
||||||
|
evidenceCrossexami,
|
||||||
|
selectById,
|
||||||
|
updateBooking
|
||||||
|
} from '../../../api/handlecase/index.js'
|
||||||
|
import {
|
||||||
|
uploadImage
|
||||||
|
} from '../../../api/upload.js'
|
||||||
|
import {
|
||||||
|
getToken
|
||||||
|
} from '@/utils/auth'
|
||||||
|
import moment from 'moment'
|
||||||
|
import config from '@/config'
|
||||||
|
const baseUrl = config.baseUrlZC
|
||||||
|
const app = getApp()
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
sysType: null, //默认系统 1.仲裁2.调节
|
||||||
|
selectValue: null,
|
||||||
|
defaultSelected: [], //默认选中项
|
||||||
|
serviceList: ['1', '2'], //传递给子组件的数据
|
||||||
|
current: 0,
|
||||||
|
affiliateApp:"",
|
||||||
|
affiliateRes:"",
|
||||||
|
itemsT: ['案件详情', '案件资料'],
|
||||||
|
styleType: 'button',
|
||||||
|
activeColor: '#007aff',
|
||||||
|
reasontFormData: {
|
||||||
|
reasont: ''
|
||||||
|
},
|
||||||
|
isShowPopup: false,
|
||||||
|
formData: {
|
||||||
|
affiliate: {}
|
||||||
|
},
|
||||||
|
subnitForm: {
|
||||||
|
objectionAddEviden: 0,
|
||||||
|
pendingAppointArbotrar: 0,
|
||||||
|
objectiJuris: 0,
|
||||||
|
adjudicaCounter: 0,
|
||||||
|
respondentIsWrittenHear: 1,
|
||||||
|
adjudicaCounterReason: ''
|
||||||
|
},
|
||||||
|
selectFlag: false,
|
||||||
|
caseFlag: false,
|
||||||
|
tempFilePaths: null,
|
||||||
|
rules: {
|
||||||
|
// 是否有异议需要举证
|
||||||
|
objectionAddEviden: {
|
||||||
|
rules: [{
|
||||||
|
required: true,
|
||||||
|
errorMessage: '请选择'
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
// 是否需要开庭审理
|
||||||
|
openCourtHear: {
|
||||||
|
rules: [{
|
||||||
|
required: true,
|
||||||
|
errorMessage: '请选择'
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
// 是否指派仲裁员
|
||||||
|
pendingAppointArbotrar: {
|
||||||
|
rules: [{
|
||||||
|
required: true,
|
||||||
|
errorMessage: '请选择'
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
maintenancetypeArr: [{
|
||||||
|
text: '是',
|
||||||
|
value: 1
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 0
|
||||||
|
}, ],
|
||||||
|
arbitrationmethodArr: [{
|
||||||
|
text: '是',
|
||||||
|
value: 1
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 0
|
||||||
|
}],
|
||||||
|
uploadEvidence: [{
|
||||||
|
text: '是',
|
||||||
|
value: 1
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 0
|
||||||
|
}],
|
||||||
|
objectiJurisArr: [{
|
||||||
|
text: '是',
|
||||||
|
value: 1
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 0
|
||||||
|
}],
|
||||||
|
adjudicaCounterArr: [{
|
||||||
|
text: '是',
|
||||||
|
value: 1
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 0
|
||||||
|
}],
|
||||||
|
obligationsArr: [{
|
||||||
|
text: '是',
|
||||||
|
value: 1
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 0
|
||||||
|
}],
|
||||||
|
// 是否书面审理
|
||||||
|
adjudicateRecord: [{
|
||||||
|
text: '是',
|
||||||
|
value: 1
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 0
|
||||||
|
}],
|
||||||
|
items: [],
|
||||||
|
sysType: null,
|
||||||
|
mediatorList: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onClickItem(e) {
|
||||||
|
if (this.current !== e.currentIndex) {
|
||||||
|
this.current = e.currentIndex
|
||||||
|
}
|
||||||
|
},
|
||||||
|
submitReasont() {
|
||||||
|
|
||||||
|
if (this.reasontFormData.reasont) {
|
||||||
|
this.subnitForm.adjudicaCounterReason = this.reasontFormData.reasont
|
||||||
|
this.$refs.popup.close()
|
||||||
|
this.reasontFormData.reasont = ''
|
||||||
|
} else {
|
||||||
|
this.$modal.msgError("请输入反意理由")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
cencalBut() {
|
||||||
|
this.$refs.popup.close();
|
||||||
|
this.subnitForm.objectiJuris = 0;
|
||||||
|
},
|
||||||
|
objectiJurisChange(value) {
|
||||||
|
|
||||||
|
let flag = value.detail.value;
|
||||||
|
if (flag == 1) {
|
||||||
|
this.$refs.popup.open('center')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
arbitrationmethod() {},
|
||||||
|
uploadEvidenceChange(val) {
|
||||||
|
let flag = val.detail.value;
|
||||||
|
if (flag == 1) {
|
||||||
|
this.caseFlag = true;
|
||||||
|
} else if (flag == 0) {
|
||||||
|
this.caseFlag = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// maintenancetypeChange(val) {
|
||||||
|
// let flag = val.detail.value;
|
||||||
|
// if (flag == 1) {
|
||||||
|
// this.selectFlag = true
|
||||||
|
// this.getArbitratorList()
|
||||||
|
// } else {
|
||||||
|
// this.selectFlag = false
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
checkboxChange(e) {
|
||||||
|
let params = e.detail.value;
|
||||||
|
params = params.map(Number);
|
||||||
|
this.mediatorList = e.detail.value;
|
||||||
|
let result = this.items.filter(element => params.includes(element.mediatorId));
|
||||||
|
let userListArr = result.map(({
|
||||||
|
mediatorId,
|
||||||
|
mediatorName
|
||||||
|
}) => ({
|
||||||
|
mediatorId: mediatorId,
|
||||||
|
mediatorName: mediatorName
|
||||||
|
}));
|
||||||
|
let arbitrators = {
|
||||||
|
caseFlowId: this.formData.caseFlowId,
|
||||||
|
mediatorList: userListArr,
|
||||||
|
};
|
||||||
|
this.subnitForm.arbitrators = arbitrators;
|
||||||
|
console.log(this.subnitForm.arbitrators, "PPPPPPPPPPPPPP");
|
||||||
|
},
|
||||||
|
getData(parms) {
|
||||||
|
if (this.sysType == 1) {
|
||||||
|
respondentDetail(parms).then(res => {
|
||||||
|
if (res.data.evidenceMaterialList.length > 0) {
|
||||||
|
res.data.evidenceMaterialList.forEach(item => {
|
||||||
|
let names = item.annexPath.split('_')
|
||||||
|
item['fileName'] = names[names.length - 1]
|
||||||
|
item.annexPath = baseUrl + item.annexPath
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.formData = res.data
|
||||||
|
this.formData.loanEndDate = moment(this.formData.loanEndDate).format(
|
||||||
|
'YYYY-MM-DD HH:mm:ss');
|
||||||
|
this.formData.loanStartDate = moment(this.formData.loanStartDate).format(
|
||||||
|
'YYYY-MM-DD HH:mm:ss');
|
||||||
|
this.formData.id = this.formData.id + ''
|
||||||
|
})
|
||||||
|
} else if (this.sysType == 2) {
|
||||||
|
selectById({
|
||||||
|
id: parms
|
||||||
|
}).then(res => {
|
||||||
|
this.formData = res.data
|
||||||
|
this.affiliateApp = res.data.affiliate.applicant.map(item =>item.applicant.name).join(',')
|
||||||
|
this.affiliateRes = res.data.affiliate.res.map(item =>item.res.name).join(',')
|
||||||
|
console.log(res, "KKKKKKKKKKKKKKKKKKKKK");
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 文件上传
|
||||||
|
select(e) {
|
||||||
|
this.tempFilePaths = e.tempFilePaths;
|
||||||
|
// loading
|
||||||
|
uni.showLoading({
|
||||||
|
title: '上传中'
|
||||||
|
});
|
||||||
|
uni.uploadFile({
|
||||||
|
url: getApp().globalData.requestUrl + uploadImage,
|
||||||
|
filePath: this.tempFilePaths[0],
|
||||||
|
header: {
|
||||||
|
Authorization: getToken() || '',
|
||||||
|
},
|
||||||
|
formData: {
|
||||||
|
annexType: 6,
|
||||||
|
id: this.formData.id
|
||||||
|
},
|
||||||
|
name: 'file',
|
||||||
|
success: (res) => {
|
||||||
|
let {
|
||||||
|
data
|
||||||
|
} = res
|
||||||
|
uni.showToast({
|
||||||
|
title: '上传成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.hideLoading();
|
||||||
|
},
|
||||||
|
fail: (err) => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '上传失败',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.hideLoading()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获取仲裁员列表
|
||||||
|
getArbitratorList(val) {
|
||||||
|
arbitratorList({caseAppliId: val}).then(res => {
|
||||||
|
this.items = res.data;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 提交数据
|
||||||
|
evidenceCrossexamiFn(parms) {
|
||||||
|
evidenceCrossexami(parms).then(res => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '提交成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
|
||||||
|
uni.navigateBack({
|
||||||
|
delta: 1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
submitImg() {
|
||||||
|
if (this.sysType == 2) {
|
||||||
|
if (this.mediatorList.length > 3) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '最多选择三个调解员',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.mediatorList.length == 0) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '请选择调解员',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.sysType == 1) {
|
||||||
|
this.$refs.form.validate().then(res => {
|
||||||
|
this.evidenceCrossexamiFn(this.subnitForm)
|
||||||
|
}).catch(err => {
|
||||||
|
console.log('表单错误信息:', err);
|
||||||
|
})
|
||||||
|
} else if (this.sysType == 2) {
|
||||||
|
// TODO
|
||||||
|
// 调解提交
|
||||||
|
if (this.mediatorList.length > 3) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '最多选择三个调解员',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.subnitForm.arbitrators.id = this.formData.id;
|
||||||
|
this.subnitForm.arbitrators.miniProgressFlag = 1;
|
||||||
|
updateBooking(this.subnitForm.arbitrators).then(res => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.navigateBack({
|
||||||
|
delta: 1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
// 证据清单
|
||||||
|
evidenceList() {
|
||||||
|
console.log(this.formData.evidenceMaterialList)
|
||||||
|
this.$tab.navigateTo(
|
||||||
|
`/pages/handlecase/component/evidenceList?title=证据清单&evidenceList=${encodeURIComponent(JSON.stringify(this.formData.evidenceMaterialList))}`
|
||||||
|
)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onLoad(data) {
|
||||||
|
this.sysType = uni.getStorageSync('sysType')
|
||||||
|
this.getData(data.id);
|
||||||
|
this.subnitForm.caseId = Number(data.id);
|
||||||
|
this.getArbitratorList(data.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
page {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content_list {
|
||||||
|
height: 1060rpx;
|
||||||
|
overflow-x: hidden;
|
||||||
|
|
||||||
|
.scroll_view_style {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.assignrbitrators {
|
||||||
|
// text-align: center;
|
||||||
|
padding: 20rpx;
|
||||||
|
|
||||||
|
.box {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexd {
|
||||||
|
padding-top: 20rpx;
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
width: 80%;
|
||||||
|
font-size: 26rpx;
|
||||||
|
border-radius: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select-picker {
|
||||||
|
display: flex;
|
||||||
|
box-sizing: border-box;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #DCDFE6;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 24rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-content {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
|
||||||
|
.none {
|
||||||
|
font-size: 24rpx;
|
||||||
|
height: 60rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.box {
|
||||||
|
/deep/.title {
|
||||||
|
font-size: 28rpx;
|
||||||
|
height: 60rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.htmltitle {
|
||||||
|
font-size: 30rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.look {
|
||||||
|
color: #0D91F9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 30rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.adsTitle {
|
||||||
|
font-size: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.multiple {
|
||||||
|
width: 75%;
|
||||||
|
height: 72rpx;
|
||||||
|
line-height: 72rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
// @include text-overflow($width: 100%)
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-list {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
|
||||||
|
.uni-list-cell {
|
||||||
|
border-radius: 30rpx;
|
||||||
|
margin-bottom: 10rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
|
.main {
|
||||||
|
height: 100%;
|
||||||
|
margin-left: 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.determine {
|
||||||
|
padding: left 50rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,224 @@
|
|||||||
|
<template>
|
||||||
|
<view class="handlecase">
|
||||||
|
<!-- <view class="" v-if="sysType == 2">
|
||||||
|
<button type="primary" @tap="newlyAddedCases" v-if="checkPermi(['caseManagement:list:add'])">新增案件</button>
|
||||||
|
</view> -->
|
||||||
|
<List class="caseList" @pDeleteCase='deleteCase' v-for="(item,index) in caseList" :defalutVal='item'
|
||||||
|
:buttonList='buttonList' :key="index" :sysType='sysType'>
|
||||||
|
</List>
|
||||||
|
<view class="emptyBox" v-if="caseList.length == 0">
|
||||||
|
<luanqing-empty :show="true" textColor="#000"></luanqing-empty>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import List from './component/list.vue'
|
||||||
|
import {
|
||||||
|
respondentList,
|
||||||
|
caseApplicationTj,
|
||||||
|
queryCaseFlowInfo
|
||||||
|
} from '../../api/handlecase/index.js'
|
||||||
|
import LuanqingEmpty from "@/components/luanqing-empty.vue"
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
List,
|
||||||
|
'luanqing-empty': LuanqingEmpty,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
caseList: [],
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 50,
|
||||||
|
sysType: null,
|
||||||
|
total: null,
|
||||||
|
buttonList: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/**查询按钮列表 */
|
||||||
|
getButtonList() {
|
||||||
|
queryCaseFlowInfo({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 100000
|
||||||
|
}).then(res => {
|
||||||
|
res.rows.forEach(item => {
|
||||||
|
if (item.id != 11 && item.id != 17) {
|
||||||
|
this.buttonList.push(item)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getList(parms) {
|
||||||
|
console.log(111)
|
||||||
|
this.caseList = [];
|
||||||
|
if (this.sysType == 1) {
|
||||||
|
respondentList(parms).then(res => {
|
||||||
|
// this.caseList = res.rows;
|
||||||
|
if (res.data) {
|
||||||
|
this.caseList = [...this.caseList, ...res.data];
|
||||||
|
} else {
|
||||||
|
this.caseList = []
|
||||||
|
}
|
||||||
|
|
||||||
|
this.caseList.forEach(item => {
|
||||||
|
switch (item.caseStatus) {
|
||||||
|
case 0:
|
||||||
|
item.caseStatusName = '立案申请'
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
item.caseStatusName = '待缴费'
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
item.caseStatusName = '待缴费确认'
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
item.caseStatusName = '待确认是否应诉'
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
item.caseStatusName = '待确认证据'
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
item.caseStatusName = '待确定是否指派仲裁员'
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
item.caseStatusName = '待组庭'
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
item.caseStatusName = '待组庭确定'
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
item.caseStatusName = '待组庭审核'
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
item.caseStatusName = '待选择仲裁方式'
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
item.caseStatusName = '待开庭'
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
item.caseStatusName = '待生成仲裁文书'
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
item.caseStatusName = '待确认仲裁文书'
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
item.caseStatusName = '待仲裁文书用印'
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
item.caseStatusName = '待仲裁文书用印审核'
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
item.caseStatusName = '待仲裁文书送达'
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
item.caseStatusName = '待案件归档'
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else if (this.sysType == 2) {
|
||||||
|
parms.miniProgressFlag = 1;
|
||||||
|
caseApplicationTj(parms).then(res => {
|
||||||
|
this.total = res.total;
|
||||||
|
if (res.rows) {
|
||||||
|
this.caseList = [...this.caseList, ...res.rows];
|
||||||
|
} else {
|
||||||
|
this.caseList = []
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
// 新增案件
|
||||||
|
newlyAddedCases() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/handlecase/component/newlyAddedCase?title=新增案件`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 触底
|
||||||
|
onReachBottom() {
|
||||||
|
if (this.caseList.length < 1) {
|
||||||
|
return
|
||||||
|
} else if (this.total == this.caseList.length) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '没有数据啦',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
return
|
||||||
|
} else if (this.caseList.length < 10) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '没有数据啦',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.pageNum++;
|
||||||
|
let obj = {};
|
||||||
|
if (this.sysType == 1) {
|
||||||
|
obj = {
|
||||||
|
pageNum: this.pageNum,
|
||||||
|
pageSize: this.pageSize,
|
||||||
|
caseStatus: 4
|
||||||
|
}
|
||||||
|
} else if (this.sysType == 2) {
|
||||||
|
obj = {
|
||||||
|
pageNum: this.pageNum,
|
||||||
|
pageSize: this.pageSize,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.getList(obj)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
this.buttonList = []
|
||||||
|
this.sysType = uni.getStorageSync('sysType');
|
||||||
|
let obj = {}
|
||||||
|
if (this.sysType == 1) {
|
||||||
|
obj = {
|
||||||
|
pageNum: this.pageNum,
|
||||||
|
pageSize: this.pageSize,
|
||||||
|
caseStatus: 4
|
||||||
|
}
|
||||||
|
} else if (this.sysType == 2) {
|
||||||
|
obj = {
|
||||||
|
pageNum: this.pageNum,
|
||||||
|
pageSize: this.pageSize,
|
||||||
|
caseFlowId:this.caseFlowId
|
||||||
|
}
|
||||||
|
this.getButtonList();
|
||||||
|
}
|
||||||
|
this.getList(obj)
|
||||||
|
// this.getButtonList()
|
||||||
|
},
|
||||||
|
onLoad(data) {
|
||||||
|
this.caseFlowId = data.caseFlowId
|
||||||
|
// let obj = {
|
||||||
|
// pageNum: this.pageNum,
|
||||||
|
// pageSize: this.pageSize,
|
||||||
|
// caseStatus:4
|
||||||
|
// }
|
||||||
|
// this.getList(obj)
|
||||||
|
},
|
||||||
|
onUnload(){
|
||||||
|
uni.reLaunch({
|
||||||
|
url: '/pages/work/index'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.handlecase {
|
||||||
|
.caseList {
|
||||||
|
// height: 360rpx;
|
||||||
|
// background-color: #ffffff;
|
||||||
|
// border-radius: 30rpx;
|
||||||
|
// margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<web-view :src="imUrl"></web-view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
imUrl:''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(data) {
|
||||||
|
this.imUrl = decodeURIComponent(data.imUrl)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
<template>
|
||||||
|
<view class="">
|
||||||
|
<view class="list" @tap="caseDetail" v-if="defalutVal.pendingStatus !== 1 ">
|
||||||
|
<view class="listItem">
|
||||||
|
<view class="lable">
|
||||||
|
案件编号:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.caseNum}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem" v-if="sysType == 1">
|
||||||
|
<view class="lable">
|
||||||
|
申请人姓名:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.applicantName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem" v-if="sysType == 2">
|
||||||
|
<view class="lable">
|
||||||
|
申请人姓名:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.applicationName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem" style="margin-top:22rpx">
|
||||||
|
<view class="lable">
|
||||||
|
被申请人姓名:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.respondentName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem">
|
||||||
|
<view class="lable">
|
||||||
|
案件状态:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.caseStatusName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem">
|
||||||
|
<view class="lable">
|
||||||
|
案件房间号:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.roomId}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem" v-if="sysType == 1">
|
||||||
|
<view class="lable">
|
||||||
|
开庭时间:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.scheduleStartTime}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem" v-if="sysType == 2">
|
||||||
|
<view class="lable">
|
||||||
|
开庭时间:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.hearDate}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
sysType: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
defalutVal: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 在线开庭详情以及操作
|
||||||
|
caseDetail() {
|
||||||
|
let imUrl = '';
|
||||||
|
let type = 1;
|
||||||
|
if (this.sysType == 1) {
|
||||||
|
imUrl = encodeURIComponent(
|
||||||
|
`https://txroom.xayunmei.com/#/home?name=${this.$store.state.user.name}&id=${this.defalutVal.id}&userId=${this.$store.state.user.userId}&roomId=${this.defalutVal.roomId}`
|
||||||
|
)
|
||||||
|
} else if (this.sysType == 2) {
|
||||||
|
imUrl = encodeURIComponent(
|
||||||
|
`https://txroom.xayunmei.com/#/home?name=${this.$store.state.user.name}&id=${this.defalutVal.id}&userId=${this.$store.state.user.userId}&roomId=${this.defalutVal.roomId}&type=${type}`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/im/component/imHome?imUrl=${imUrl}`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.sysType = uni.getStorageSync('sysType');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.list {
|
||||||
|
padding: 15rpx;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-radius: 30rpx;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
|
||||||
|
.listItem {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
height: 50rpx;
|
||||||
|
|
||||||
|
.lable {
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main {
|
||||||
|
width: 60%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.btnItem {
|
||||||
|
height: 50rpx;
|
||||||
|
background-color: #5395ff;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 50rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,146 @@
|
|||||||
|
<template>
|
||||||
|
<!-- <view class=""> -->
|
||||||
|
<!-- <web-view :src="sendImg"></web-view> -->
|
||||||
|
<!-- </view> -->
|
||||||
|
<view class="handlecase">
|
||||||
|
<List class="caseList" v-for="(item,index) in caseList" :defalutVal='item' :key="index"></List>
|
||||||
|
<view class="emptyBox" v-if="caseList.length == 0">
|
||||||
|
<luanqing-empty :show="true" textColor="#000"></luanqing-empty>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import List from './component/imList.vue'
|
||||||
|
import LuanqingEmpty from "@/components/luanqing-empty.vue"
|
||||||
|
import {
|
||||||
|
respondentList,
|
||||||
|
caseApplicationTj
|
||||||
|
} from '../../api/handlecase/index.js'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
List,
|
||||||
|
'luanqing-empty': LuanqingEmpty,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
name: "",
|
||||||
|
sendImg: "",
|
||||||
|
caseList: [],
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
sysType: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getList(parms) {
|
||||||
|
if (this.sysType == 1) {
|
||||||
|
respondentList(parms).then(res => {
|
||||||
|
this.caseList = res.data;
|
||||||
|
this.caseList.forEach(item => {
|
||||||
|
switch (item.caseStatus) {
|
||||||
|
case 0:
|
||||||
|
item.caseStatusName = '立案申请'
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
item.caseStatusName = '待缴费'
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
item.caseStatusName = '待缴费确认'
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
item.caseStatusName = '待确认是否应诉'
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
item.caseStatusName = '待确认证据'
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
item.caseStatusName = '待确定是否指派仲裁员'
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
item.caseStatusName = '待组庭'
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
item.caseStatusName = '待组庭确定'
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
item.caseStatusName = '待组庭审核'
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
item.caseStatusName = '待选择仲裁方式'
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
item.caseStatusName = '待开庭'
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
item.caseStatusName = '待生成仲裁文书'
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
item.caseStatusName = '待确认仲裁文书'
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
item.caseStatusName = '待仲裁文书用印'
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
item.caseStatusName = '待仲裁文书用印审核'
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
item.caseStatusName = '待仲裁文书送达'
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
item.caseStatusName = '待案件归档'
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else if (this.sysType == 2) {
|
||||||
|
parms.hearDateFlag = 1;
|
||||||
|
parms.miniProgressFlag = 1;
|
||||||
|
parms.mediationMethod = 1;
|
||||||
|
delete parms.caseStatus;
|
||||||
|
caseApplicationTj(parms).then(res => {
|
||||||
|
// this.caseList = res.rows;
|
||||||
|
if (res.rows) {
|
||||||
|
this.caseList = res.rows;
|
||||||
|
} else {
|
||||||
|
this.caseList = []
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
// 触底
|
||||||
|
onReachBottom() {
|
||||||
|
if (this.caseList.length < 1) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let obj = {
|
||||||
|
pageNum: this.pageNum,
|
||||||
|
pageSize: this.pageSize,
|
||||||
|
caseStatus: 8
|
||||||
|
}
|
||||||
|
obj.pageNum = obj.pageNum + 1
|
||||||
|
this.getList(obj)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.sysType = uni.getStorageSync('sysType');
|
||||||
|
let obj = {
|
||||||
|
pageNum: this.pageNum,
|
||||||
|
pageSize: this.pageSize,
|
||||||
|
caseStatus: 8
|
||||||
|
}
|
||||||
|
|
||||||
|
this.getList(obj)
|
||||||
|
}
|
||||||
|
// onLoad: function() {
|
||||||
|
// this.name = this.$store.state.user.name;
|
||||||
|
// this.sendImg = `https://txroom.xayunmei.com`
|
||||||
|
// // this.sendImg = `http://localhost:8080/#/?name=${this.name}`
|
||||||
|
// },
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
+256
-28
@@ -1,43 +1,271 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="content">
|
<view class="content">
|
||||||
<image class="logo" src="@/static/logo.png"></image>
|
<view class="header">
|
||||||
<view class="text-area">
|
<uni-section title="我的代办事项" type="line" padding></uni-section>
|
||||||
<text class="title">Hello RuoYi</text>
|
</view>
|
||||||
</view>
|
<view class="homeMain" v-if="sysType == 2">
|
||||||
|
<view class="cardList" @tap="handlingCases(item.caseFlowId)" v-for="item in homePageList" :key="item.caseFlowId">
|
||||||
|
<view class="badge">{{item.caseCount}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<img class="iconImg" style="width: 100rpx;height: 70rpx;margin-top: 60rpx;" :src="urls+item.fileName" alt="">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">{{item.caseStatusName}}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="emptyBox" style="margin: 0 auto;" v-if="homePageList.length == 0">
|
||||||
|
<luanqing-empty :show="true" textColor="#000"></luanqing-empty>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="homeMain" v-if="sysType == 1">
|
||||||
|
<!-- <view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApply}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待立案申请</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyCheck}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待立案审查</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyPay}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待缴费</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyPayCheck}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待缴费确认</view>
|
||||||
|
</view>
|
||||||
|
</view> -->
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyEvidence}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain" style="margin-top: 75rpx;">
|
||||||
|
<view class="imgTitle">待案件质证</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- <view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyGroupCheck}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待组庭审核</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyGroupConfirm}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待组庭确定</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyArbitrateWay}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待审核仲裁方式</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{ dataCount.updateOnlineHearDate}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待确认开庭时间</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyGroupOnline}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待开庭审理</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyGroupOffline}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待书面审理</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyAwardCheck}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待核验仲裁文书</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.arbitratorApplyAwardConfirm }}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待仲裁员核验仲裁文书</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyAwardConfirm}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待审核仲裁文书</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyAwardSign}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待仲裁文书签名</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyAwardSeal}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待仲裁文书用印</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyAwardSend}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待仲裁文书送达</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cardList" @tap="refereeCase()">
|
||||||
|
<view class="badge">{{dataCount.caseApplyStored}}</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
</view>
|
||||||
|
<view class="cardMain">
|
||||||
|
<view class="imgTitle">待案件归档</view>
|
||||||
|
</view>
|
||||||
|
</view> -->
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import {todoCount,toDoCountReferee} from '@/api/homePage/index.js'
|
||||||
|
import LuanqingEmpty from "@/components/luanqing-empty.vue"
|
||||||
|
import config from '@/config'
|
||||||
export default {
|
export default {
|
||||||
|
components: {
|
||||||
|
'luanqing-empty': LuanqingEmpty,
|
||||||
|
},
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
homePageList:[],
|
||||||
|
sysType:null,
|
||||||
|
dataCount:{},
|
||||||
|
urls:config.baseUrlTJ
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
getHomePage(){
|
||||||
|
if(this.sysType==2){
|
||||||
|
todoCount().then(res =>{
|
||||||
|
this.homePageList = res.data.toDoCountList
|
||||||
|
console.log(res)
|
||||||
|
})
|
||||||
|
}else if(this.sysType==1){
|
||||||
|
toDoCountReferee().then(res =>{
|
||||||
|
this.dataCount = res.data;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 调解跳转
|
||||||
|
handlingCases(caseFlowId){
|
||||||
|
uni.navigateTo({
|
||||||
|
url:`../pages/handlecase/index?caseFlowId=${caseFlowId}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 仲裁跳转
|
||||||
|
refereeCase(){
|
||||||
|
uni.navigateTo({
|
||||||
|
url:'../pages/handlecase/index'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
this.getHomePage()
|
||||||
|
},
|
||||||
onLoad: function() {
|
onLoad: function() {
|
||||||
|
this.sysType = uni.getStorageSync('sysType');
|
||||||
|
console.log(this.sysType)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.content {
|
page {
|
||||||
display: flex;
|
background-color: #ffffff;
|
||||||
flex-direction: column;
|
}
|
||||||
align-items: center;
|
.homeMain {
|
||||||
justify-content: center;
|
width: 100%;
|
||||||
}
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-left:27rpx;
|
||||||
|
// justify-content: space-between;
|
||||||
|
.cardList {
|
||||||
|
width: 28%;
|
||||||
|
height:210rpx;
|
||||||
|
border-radius: 48rpx;
|
||||||
|
background-color:#ffffff;
|
||||||
|
position: relative;
|
||||||
|
margin-right: 30rpx;
|
||||||
|
margin-bottom: 30rpx;
|
||||||
|
border:1rpx solid #1296DB;
|
||||||
|
|
||||||
.logo {
|
.badge {
|
||||||
height: 200rpx;
|
width: 80rpx;
|
||||||
width: 200rpx;
|
height: 50rpx;
|
||||||
margin-top: 200rpx;
|
text-align: center;
|
||||||
margin-left: auto;
|
line-height: 50rpx;
|
||||||
margin-right: auto;
|
font-size: 35rpx;
|
||||||
margin-bottom: 50rpx;
|
font-weight: 500;
|
||||||
}
|
color: red;
|
||||||
|
border-radius: 10rpx 30rpx 10rpx 30rpx;
|
||||||
|
background-color: #1296DB;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.text-area {
|
.cardMain {
|
||||||
display: flex;
|
width: 100%;
|
||||||
justify-content: center;
|
display: flex;
|
||||||
}
|
text-align: center;
|
||||||
|
justify-content: center;
|
||||||
.title {
|
margin-top: 5rpx;
|
||||||
font-size: 36rpx;
|
padding
|
||||||
color: #8f8f94;
|
.imgTitle {
|
||||||
}
|
font-size: 28rpx;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
+220
-174
@@ -1,202 +1,248 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="normal-login-container">
|
<view class="normal-login-container">
|
||||||
<view class="logo-content align-center justify-center flex">
|
<view class="logo-content align-center justify-center flex" v-if="logSyste==1">
|
||||||
<image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
|
<image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
|
||||||
</image>
|
</image>
|
||||||
<text class="title">法务平台</text>
|
<text class="title">仲裁平台</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="login-form-content">
|
<view class="logo-content align-center justify-center flex" v-if="logSyste==2">
|
||||||
<view class="input-item flex align-center">
|
<image style="width: 100rpx;height: 100rpx;" src="https://txroom.xayunmei.com/refree.png" mode="widthFix">
|
||||||
<view class="iconfont icon-user icon"></view>
|
</image>
|
||||||
<input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
|
<text class="title">调解平台</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="input-item flex align-center">
|
<view class="login-form-content">
|
||||||
<view class="iconfont icon-password icon"></view>
|
<view class="input-item flex align-center">
|
||||||
<input v-model="loginForm.password" type="password" class="input" placeholder="请输入密码" maxlength="20" />
|
<view class="iconfont icon-user icon"></view>
|
||||||
</view>
|
<input v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
|
||||||
<view class="input-item flex align-center" style="width: 60%;margin: 0px;" v-if="captchaEnabled">
|
</view>
|
||||||
<view class="iconfont icon-code icon"></view>
|
<view class="input-item flex align-center">
|
||||||
<input v-model="loginForm.code" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
|
<view class="iconfont icon-password icon"></view>
|
||||||
<view class="login-code">
|
<input v-model="loginForm.password" type="password" class="input" placeholder="请输入密码" maxlength="20" />
|
||||||
<image :src="codeUrl" @click="getCode" class="login-code-img"></image>
|
</view>
|
||||||
</view>
|
<view class="input-item flex align-center" style="width: 60%;margin: 0px;" v-if="captchaEnabled">
|
||||||
</view>
|
<view class="iconfont icon-code icon"></view>
|
||||||
<view class="action-btn">
|
<input v-model="loginForm.code" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
|
||||||
<button @click="handleLogin" class="login-btn cu-btn block bg-blue lg round">登录</button>
|
<view class="login-code">
|
||||||
</view>
|
<image :src="codeUrl" @click="getCode" class="login-code-img"></image>
|
||||||
<view class="reg text-center" v-if="register">
|
</view>
|
||||||
<text class="text-grey1">没有账号?</text>
|
</view>
|
||||||
<text @click="handleUserRegister" class="text-blue">立即注册</text>
|
<view class="ageen-read">
|
||||||
</view>
|
<checkbox-group @change="handleAgreeChange">
|
||||||
<view class="xieyi text-center">
|
<checkbox value="agree" />
|
||||||
|
<text class="agreen-text">阅读并同意</text>
|
||||||
|
<text @click="equityNotice" class="text-blue">《权益告知书》</text>
|
||||||
|
</checkbox-group>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view class="action-btn">
|
||||||
|
<button @click="handleLogin" class="login-btn cu-btn block bg-blue lg round">登录</button>
|
||||||
|
</view>
|
||||||
|
<view class="reg text-center" v-if="register">
|
||||||
|
<text class="text-grey1">没有账号?</text>
|
||||||
|
<text @click="handleUserRegister" class="text-blue">立即注册</text>
|
||||||
|
</view>
|
||||||
|
<!-- <view class="reg text-center" v-if="register">
|
||||||
|
<text class="text-grey1">使用其他方式登录:</text>
|
||||||
|
<text @click="handleUserRegister" class="text-blue"></text>
|
||||||
|
</view> -->
|
||||||
|
<!-- <view class="xieyi text-center">
|
||||||
<text class="text-grey1">登录即代表同意</text>
|
<text class="text-grey1">登录即代表同意</text>
|
||||||
<text @click="handleUserAgrement" class="text-blue">《用户协议》</text>
|
<text @click="handleUserAgrement" class="text-blue">《用户协议》</text>
|
||||||
<text @click="handlePrivacy" class="text-blue">《隐私协议》</text>
|
<text @click="handlePrivacy" class="text-blue">《隐私协议》</text>
|
||||||
</view>
|
</view> -->
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getCodeImg } from '@/api/login'
|
import {
|
||||||
|
getCodeImg
|
||||||
|
} from '@/api/login'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
codeUrl: "",
|
codeUrl: "",
|
||||||
captchaEnabled: true,
|
captchaEnabled: true,
|
||||||
// 用户注册开关
|
logSyste: 0,
|
||||||
register: false,
|
// 用户注册开关
|
||||||
globalConfig: getApp().globalData.config,
|
register: true,
|
||||||
loginForm: {
|
globalConfig: getApp().globalData.config,
|
||||||
username: "admin",
|
loginForm: {
|
||||||
password: "admin123",
|
username: "",
|
||||||
code: "",
|
password: "",
|
||||||
uuid: ''
|
code: "",
|
||||||
}
|
uuid: '',
|
||||||
}
|
|
||||||
},
|
},
|
||||||
created() {
|
isSelectAgree: []
|
||||||
this.getCode()
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
created() {
|
||||||
// 用户注册
|
this.getCode()
|
||||||
handleUserRegister() {
|
},
|
||||||
this.$tab.redirectTo(`/pages/register`)
|
methods: {
|
||||||
},
|
handleAgreeChange(e) {
|
||||||
// 隐私协议
|
this.isSelectAgree = e.detail.value
|
||||||
handlePrivacy() {
|
},
|
||||||
let site = this.globalConfig.appInfo.agreements[0]
|
// 用户注册
|
||||||
this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
|
handleUserRegister() {
|
||||||
},
|
this.$tab.redirectTo(`/pages/realName`)
|
||||||
// 用户协议
|
},
|
||||||
handleUserAgrement() {
|
// 权益告知书
|
||||||
let site = this.globalConfig.appInfo.agreements[1]
|
equityNotice() {
|
||||||
this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
|
//this.$tab.redirectTo(`/pages/personalInfoCollection`)
|
||||||
},
|
this.$tab.navigateTo(`/pages/personalInfoCollection?title=权益告知书`)
|
||||||
// 获取图形验证码
|
},
|
||||||
getCode() {
|
// 隐私协议
|
||||||
getCodeImg().then(res => {
|
handlePrivacy() {
|
||||||
this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
|
let site = this.globalConfig.appInfo.agreements[0]
|
||||||
if (this.captchaEnabled) {
|
this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
|
||||||
this.codeUrl = 'data:image/gif;base64,' + res.img
|
},
|
||||||
this.loginForm.uuid = res.uuid
|
// 用户协议
|
||||||
}
|
handleUserAgrement() {
|
||||||
})
|
let site = this.globalConfig.appInfo.agreements[1]
|
||||||
},
|
this.$tab.navigateTo(`/pages/common/webview/index?title=${site.title}&url=${site.url}`)
|
||||||
// 登录方法
|
},
|
||||||
async handleLogin() {
|
// 获取图形验证码
|
||||||
if (this.loginForm.username === "") {
|
getCode() {
|
||||||
this.$modal.msgError("请输入您的账号")
|
getCodeImg().then(res => {
|
||||||
} else if (this.loginForm.password === "") {
|
this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
|
||||||
this.$modal.msgError("请输入您的密码")
|
if (this.captchaEnabled) {
|
||||||
} else if (this.loginForm.code === "" && this.captchaEnabled) {
|
this.codeUrl = 'data:image/gif;base64,' + res.img
|
||||||
this.$modal.msgError("请输入验证码")
|
this.loginForm.uuid = res.uuid
|
||||||
} else {
|
}
|
||||||
this.$modal.loading("登录中,请耐心等待...")
|
})
|
||||||
this.pwdLogin()
|
},
|
||||||
}
|
// 登录方法
|
||||||
},
|
async handleLogin() {
|
||||||
// 密码登录
|
const sysType = uni.getStorageSync('sysType')
|
||||||
async pwdLogin() {
|
if (this.loginForm.username === "") {
|
||||||
this.$store.dispatch('Login', this.loginForm).then(() => {
|
this.$modal.msgError("请输入您的账号")
|
||||||
this.$modal.closeLoading()
|
} else if (this.isSelectAgree.length < 1) {
|
||||||
this.loginSuccess()
|
this.$modal.msgError("请先阅读个人信息收集条款并同意")
|
||||||
}).catch(() => {
|
} else if (this.loginForm.password === "") {
|
||||||
if (this.captchaEnabled) {
|
this.$modal.msgError("请输入您的密码")
|
||||||
this.getCode()
|
} else if (this.loginForm.code === "" && this.captchaEnabled) {
|
||||||
}
|
this.$modal.msgError("请输入验证码")
|
||||||
})
|
} else {
|
||||||
},
|
this.$modal.loading("登录中,请耐心等待...")
|
||||||
// 登录成功后,处理函数
|
this.pwdLogin()
|
||||||
loginSuccess(result) {
|
}
|
||||||
// 设置用户信息
|
},
|
||||||
this.$store.dispatch('GetInfo').then(res => {
|
// 密码登录
|
||||||
this.$tab.reLaunch('/pages/index')
|
async pwdLogin() {
|
||||||
})
|
this.$store.dispatch('Login', this.loginForm).then(() => {
|
||||||
}
|
this.$modal.closeLoading()
|
||||||
}
|
this.loginSuccess()
|
||||||
}
|
}).catch(() => {
|
||||||
|
if (this.captchaEnabled) {
|
||||||
|
this.getCode()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 登录成功后,处理函数
|
||||||
|
loginSuccess(result) {
|
||||||
|
// 设置用户信息
|
||||||
|
this.$store.dispatch('GetInfo').then(res => {
|
||||||
|
this.$tab.reLaunch('/pages/work/index')
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onLoad(options) {
|
||||||
|
let vals = decodeURIComponent(options.values);
|
||||||
|
this.logSyste = vals
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
page {
|
page {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.normal-login-container {
|
.normal-login-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
.logo-content {
|
.logo-content {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
font-size: 21px;
|
font-size: 21px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding-top: 15%;
|
padding-top: 15%;
|
||||||
|
|
||||||
image {
|
image {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-form-content {
|
.login-form-content {
|
||||||
text-align: center;
|
// text-align: center;
|
||||||
margin: 20px auto;
|
margin: 20px auto;
|
||||||
margin-top: 15%;
|
margin-top: 15%;
|
||||||
width: 80%;
|
width: 80%;
|
||||||
|
|
||||||
.input-item {
|
.input-item {
|
||||||
margin: 20px auto;
|
margin: 20px auto;
|
||||||
background-color: #f5f6f7;
|
background-color: #f5f6f7;
|
||||||
height: 45px;
|
height: 45px;
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
font-size: 38rpx;
|
font-size: 38rpx;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.input {
|
.input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding-left: 15px;
|
padding-left: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-btn {
|
.login-btn {
|
||||||
margin-top: 40px;
|
margin-top: 40px;
|
||||||
height: 45px;
|
height: 45px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.reg {
|
.reg {
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.xieyi {
|
.xieyi {
|
||||||
color: #333;
|
color: #333;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-code {
|
.login-code {
|
||||||
height: 38px;
|
height: 38px;
|
||||||
float: right;
|
float: right;
|
||||||
|
|
||||||
.login-code-img {
|
.login-code-img {
|
||||||
height: 38px;
|
height: 38px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
width: 200rpx;
|
width: 200rpx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
.ageen-read {
|
||||||
|
margin-top: 65rpx;
|
||||||
|
|
||||||
|
.agreen-text {
|
||||||
|
padding-left: 20rpx;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -26,8 +26,8 @@
|
|||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="content-section">
|
<view class="content-section">
|
||||||
<view class="mine-actions grid col-4 text-center">
|
<!-- <view class="mine-actions grid col-4 text-center">
|
||||||
<view class="action-item" @click="handleJiaoLiuQun">
|
<view class="action-item" @click="handleJiaoLiuQun">
|
||||||
<view class="iconfont icon-friendfill text-pink icon"></view>
|
<view class="iconfont icon-friendfill text-pink icon"></view>
|
||||||
<text class="text">交流群</text>
|
<text class="text">交流群</text>
|
||||||
</view>
|
</view>
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
<view class="iconfont icon-dianzan text-green icon"></view>
|
<view class="iconfont icon-dianzan text-green icon"></view>
|
||||||
<text class="text">点赞我们</text>
|
<text class="text">点赞我们</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view -->
|
||||||
|
|
||||||
<view class="menu-list">
|
<view class="menu-list">
|
||||||
<view class="list-cell list-cell-arrow" @click="handleToEditInfo">
|
<view class="list-cell list-cell-arrow" @click="handleToEditInfo">
|
||||||
@@ -52,18 +52,18 @@
|
|||||||
<view>编辑资料</view>
|
<view>编辑资料</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="list-cell list-cell-arrow" @click="handleHelp">
|
<!-- <view class="list-cell list-cell-arrow" @click="handleHelp">
|
||||||
<view class="menu-item-box">
|
<view class="menu-item-box">
|
||||||
<view class="iconfont icon-help menu-icon"></view>
|
<view class="iconfont icon-help menu-icon"></view>
|
||||||
<view>常见问题</view>
|
<view>常见问题</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view> -->
|
||||||
<view class="list-cell list-cell-arrow" @click="handleAbout">
|
<!-- <view class="list-cell list-cell-arrow" @click="handleAbout">
|
||||||
<view class="menu-item-box">
|
<view class="menu-item-box">
|
||||||
<view class="iconfont icon-aixin menu-icon"></view>
|
<view class="iconfont icon-aixin menu-icon"></view>
|
||||||
<view>关于我们</view>
|
<view>关于我们</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view> -->
|
||||||
<view class="list-cell list-cell-arrow" @click="handleToSetting">
|
<view class="list-cell list-cell-arrow" @click="handleToSetting">
|
||||||
<view class="menu-item-box">
|
<view class="menu-item-box">
|
||||||
<view class="iconfont icon-setting menu-icon"></view>
|
<view class="iconfont icon-setting menu-icon"></view>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'person-filled'}" title="昵称" :rightText="user.nickName" />
|
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'person-filled'}" title="昵称" :rightText="user.nickName" />
|
||||||
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'phone-filled'}" title="手机号码" :rightText="user.phonenumber" />
|
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'phone-filled'}" title="手机号码" :rightText="user.phonenumber" />
|
||||||
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'email-filled'}" title="邮箱" :rightText="user.email" />
|
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'email-filled'}" title="邮箱" :rightText="user.email" />
|
||||||
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'auth-filled'}" title="岗位" :rightText="postGroup" />
|
<!-- <uni-list-item showExtraIcon="true" :extraIcon="{type: 'auth-filled'}" title="岗位" :rightText="postGroup" /> -->
|
||||||
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'staff-filled'}" title="角色" :rightText="roleGroup" />
|
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'staff-filled'}" title="角色" :rightText="roleGroup" />
|
||||||
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'calendar-filled'}" title="创建日期" :rightText="user.createTime" />
|
<uni-list-item showExtraIcon="true" :extraIcon="{type: 'calendar-filled'}" title="创建日期" :rightText="user.createTime" />
|
||||||
</uni-list>
|
</uni-list>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<view>修改密码</view>
|
<view>修改密码</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="list-cell list-cell-arrow" @click="handleToUpgrade">
|
<!-- <view class="list-cell list-cell-arrow" @click="handleToUpgrade">
|
||||||
<view class="menu-item-box">
|
<view class="menu-item-box">
|
||||||
<view class="iconfont icon-refresh menu-icon"></view>
|
<view class="iconfont icon-refresh menu-icon"></view>
|
||||||
<view>检查更新</view>
|
<view>检查更新</view>
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
<view class="iconfont icon-clean menu-icon"></view>
|
<view class="iconfont icon-clean menu-icon"></view>
|
||||||
<view>清理缓存</view>
|
<view>清理缓存</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view> -->
|
||||||
</view>
|
</view>
|
||||||
<view class="cu-list menu">
|
<view class="cu-list menu">
|
||||||
<view class="cu-item item-box">
|
<view class="cu-item item-box">
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
<template>
|
||||||
|
<view class="equityNotice" style="margin:0 10rpx">
|
||||||
|
|
||||||
|
<text>
|
||||||
|
关于“个人信息收集/使用”的同意书xxxxx公司业务管理系统需要收集与使用用户的个人信息,根据《中华人民共和国网络安全法》等相关法规,特告知如下请仔细阅读并理解文本件全部内容之后,决定是否同意并使用本公司业务管理系统的各项服务;如果您仍决定使用本公司业务管理系统的各项服务,则视为您同意执行本同意书
|
||||||
|
第1条定义
|
||||||
|
“用户”:使用本公司业务管理系统的自然人
|
||||||
|
“本公司”:运营及管理业务管理系统的xxxx公司
|
||||||
|
“业务管理系统”:需要收集和使用个人信息的本公司业务管理系统,但不限于,xxxx系统等该系统的功能范围可能不断扩展、调整
|
||||||
|
“个人信息”:指以电子或其他方式记录的能够单独或与其他信息结合识别自然人身份的各种信息,包括与确定自然人相关的生物特征、位置、行为等信息,如姓名、出生日期、身份证号、个人账号信息、住址、手机号码、电话号码、指纹、虹膜等
|
||||||
|
第2条个人信息内容和目的 个人信息内容见条
|
||||||
|
收集/利用的目的识别个人信息主体 传达合同签订的主要事项提供与产品和服务相关的咨询或邀请,提供用户有利的信息,处理用户投诉等争议理履行与提供产品/服务器相关的合同以及结费用 个人信息收集最小化本公司不收集超出个人信息必须范围的个人敏感信息,例如财产、健康,生活隐私等个人敏感信息
|
||||||
|
如确有正当业务需要,应经用户同意后进行最小化的收集和存储 用户享有对个人信息的访问、更正、删除个人信息、注销账户等权利 本公司收集的个人信息不会用于直接商业营销
|
||||||
|
第 3 条 个人信息的储存和使用时间 本公司与用户签订的合同存续期间
|
||||||
|
从个人信息收集日开始一直到业务关系终止为止
|
||||||
|
本公司获取的个人所有信息,除了以上提及的收集/使用目的或法律规定的使用目的以外,不会用于其它用途依据相关法规,如无正当的理由继续保存个人信息,或者个人信息收集使用目的已经达成,本公司会即时删除相关个人信息用户如要求删除个人信息,且相关法规规定不要求保存此类个人信息时,自接收到用户删除要求后,本公司会及时删除所有个人信息
|
||||||
|
第 4 条 拒绝同意权利
|
||||||
|
用户可拒绝接受收集和利用个人信息,但因此而无法实现与本公司的正常业务往来,甚至导致合同无法正常履行的,所带来的负面后果由用户承担,请审慎留意
|
||||||
|
用户同意签署此同意书,即表示已仔细阅读并理解以上所有事项,同意相关个人信息的收集和使用
|
||||||
|
第 5条个人信息出境
|
||||||
|
为了正常运营业务管理系统,提高业务效率,与业务管理系统相关收集和产生的个人信息需通过网络专线或其它正规渠道传送到本公司在境外的机构的对应业务管理系统
|
||||||
|
本公司在境外的机构包括:
|
||||||
|
出境目的是为正常运营业务管理系统,其中包括但不限于、品质系统、购买系统等需依赖于用户个人信息才能正常运行的系统
|
||||||
|
出境范围和内容包括但不限于用户的姓名、出生日期、身份证号、个人账号信息、住址、电话号码等通过合法途径收集的个人信息
|
||||||
|
第 6条 同意书的效力和变更
|
||||||
|
本同意书从用户同意之日起开始生效
|
||||||
|
如本同意书签署之前,用户已经使用本公司业务管理系统的,则本同意书的签署同时视为对之前已经发生的个人信息收集与利用的同意
|
||||||
|
本公司保留运营或者营业上有重要原因时,对本同意书进行修改的权利但即使修改也会在《中华人民共和国网络安全法》及其相关法规允许的范围内进行修订
|
||||||
|
如对本同意书进行修订,本公司将提前至少 7 天将修订内容、实施时间、修订原因公布在公司业务管理系统首页
|
||||||
|
6 4 用户有权利拒绝同意修订在用户拒绝同意修订的情况下,本公司有权利终止相关服务,禁止用户登录
|
||||||
|
第7条争议的解决与联系方式
|
||||||
|
本同意书的订立、执行和争议的解决均应适用中华人民共和国法律 如双方就本同意书内容或其执行发生任何争议,双方应尽量友好协商解决;协商不成时,任何一方均可向本公司所在地有管辖权的人民法院提起诉讼 本公司保留对同意书的解释和修改权利
|
||||||
|
本公司未行使本协议的任何权利或规定,不构成对前述权利之放弃 如本同意书中的任何条款完全或部分无效,本同意书的其余条款仍有效并且有约束力
|
||||||
|
若您对本同意书的内容、执行有其它疑问、建议、意见等,欢迎通过下列方式与本公司联系:
|
||||||
|
第 8条 附则
|
||||||
|
本同意书可通过纸质签署,亦可通过用户登录点击确认等方式签署,均具有同等法律效力
|
||||||
|
</text>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
page {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
<template>
|
||||||
|
<view class="page-body">
|
||||||
|
<view class="action-btn">
|
||||||
|
<button @click="handleRegister()" class="register-btn cu-btn block bg-blue lg round">点击身份证实名认证</button>
|
||||||
|
</view>
|
||||||
|
<view class="action-btn">
|
||||||
|
<button @click="handlePassport()" class="register-btn cu-btn block bg-blue lg round">点击护照实名注册</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
startEid
|
||||||
|
} from '@/mp_ecard_sdk/main.js'
|
||||||
|
import {
|
||||||
|
getEidtoken,
|
||||||
|
sendEidtoken
|
||||||
|
} from "@/api/login.js"
|
||||||
|
export default{
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
eidToken: "",
|
||||||
|
vals:1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
// 获取eidtoken
|
||||||
|
getEidtokenFn() {
|
||||||
|
getEidtoken({}).then(res => {
|
||||||
|
this.eidToken = res.data.EidToken
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 点击实名认证
|
||||||
|
handleRegister() {
|
||||||
|
let that = this
|
||||||
|
startEid({
|
||||||
|
data: {
|
||||||
|
token: this.eidToken,
|
||||||
|
},
|
||||||
|
verifyDoneCallback(res) {
|
||||||
|
const {
|
||||||
|
token,
|
||||||
|
verifyDone
|
||||||
|
} = res;
|
||||||
|
console.log('收到核身完成的res:', res);
|
||||||
|
console.log('核身的token是:', token);
|
||||||
|
console.log('是否完成核身:', verifyDone);
|
||||||
|
sendEidtoken({
|
||||||
|
"eidToken": token
|
||||||
|
}).then(res => {
|
||||||
|
// that.certificationStatus = '1
|
||||||
|
let params = {}
|
||||||
|
params.nickName = res.data.name;
|
||||||
|
params.idCard = res.data.identityNo;
|
||||||
|
params.id = res.data.id;
|
||||||
|
console.log(params,"PPPPPPPPPPPPP");
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/register?params=' + JSON.stringify(
|
||||||
|
params)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 点击护照注册
|
||||||
|
handlePassport(){
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/register?valus=${this.vals}`
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.getEidtokenFn()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.page-body{
|
||||||
|
background-color: #ffffff;
|
||||||
|
.register-btn{
|
||||||
|
margin-top: 30rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
+322
-174
@@ -1,196 +1,344 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="normal-login-container">
|
<view class="normal-login-container">
|
||||||
<view class="logo-content align-center justify-center flex">
|
<view class="logo-content align-center justify-center flex">
|
||||||
<image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
|
<image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
|
||||||
</image>
|
</image>
|
||||||
<text class="title">若依移动端注册</text>
|
<text class="title" v-if="sysType==1">仲裁系统注册</text>
|
||||||
</view>
|
<text class="title" v-if="sysType==2">调解系统注册</text>
|
||||||
<view class="login-form-content">
|
</view>
|
||||||
<view class="input-item flex align-center">
|
<view class="login-form-content">
|
||||||
<view class="iconfont icon-user icon"></view>
|
<view class="input-item flex align-center" style="width: 60%;margin: 0px;">
|
||||||
<input v-model="registerForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
|
<!-- <view class="iconfont icon-user icon"></view> -->
|
||||||
</view>
|
<input v-model="registerForm.phone" class="input" type="number" placeholder="请输入手机号" maxlength="30" />
|
||||||
<view class="input-item flex align-center">
|
<view class="login-code">
|
||||||
<view class="iconfont icon-password icon"></view>
|
<button class="login-code-img" type="primary" :disabled="codeDisabled"
|
||||||
<input v-model="registerForm.password" type="password" class="input" placeholder="请输入密码" maxlength="20" />
|
@tap="getCodeNumber(registerForm.phone)">{{codeText}}</button>
|
||||||
</view>
|
</view>
|
||||||
<view class="input-item flex align-center">
|
</view>
|
||||||
<view class="iconfont icon-password icon"></view>
|
<view class="input-item flex align-center">
|
||||||
<input v-model="registerForm.confirmPassword" type="password" class="input" placeholder="请输入重复密码" maxlength="20" />
|
<!-- <view class="iconfont icon-user icon"></view> -->
|
||||||
</view>
|
<input v-model="registerForm.verifyCode" class="input" type="number" placeholder="请输入手机验证码"
|
||||||
<view class="input-item flex align-center" style="width: 60%;margin: 0px;" v-if="captchaEnabled">
|
maxlength="30" />
|
||||||
<view class="iconfont icon-code icon"></view>
|
</view>
|
||||||
<input v-model="registerForm.code" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
|
<view class="input-item flex align-center">
|
||||||
<view class="login-code">
|
<uni-data-select
|
||||||
<image :src="codeUrl" @click="getCode" class="login-code-img"></image>
|
style="text-align: left;width: 200px;"
|
||||||
</view>
|
v-model="registerForm.idType"
|
||||||
</view>
|
:localdata="certificate"
|
||||||
<view class="action-btn">
|
@change="certificateValue"
|
||||||
<button @click="handleRegister()" class="register-btn cu-btn block bg-blue lg round">注册</button>
|
></uni-data-select>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view class="input-item flex align-center">
|
||||||
<view class="xieyi text-center">
|
<uni-data-select
|
||||||
<text @click="handleUserLogin" class="text-blue">使用已有账号登录</text>
|
style="text-align: left;width: 200px;d"
|
||||||
</view>
|
v-model="registerForm.nationality"
|
||||||
</view>
|
:localdata="nationality"
|
||||||
|
></uni-data-select>
|
||||||
|
</view>
|
||||||
|
<view class="input-item flex align-center">
|
||||||
|
<!-- <view class="iconfont icon-user icon"></view> -->
|
||||||
|
<input v-model="registerForm.identityNo" class="input" type="text" placeholder="请输入证件号码"
|
||||||
|
maxlength="30" />
|
||||||
|
</view>
|
||||||
|
<view class="input-item flex align-center">
|
||||||
|
<!-- <view class="iconfont icon-user icon"></view> -->
|
||||||
|
<input v-model="registerForm.email" class="input" type="text" placeholder="请输入邮箱" maxlength="30" />
|
||||||
|
</view>
|
||||||
|
<view class="input-item flex align-center">
|
||||||
|
<!-- <view class="iconfont icon-user icon"></view> -->
|
||||||
|
<input v-model="registerForm.name" class="input" type="text" placeholder="请输入用户名" maxlength="30" />
|
||||||
|
</view>
|
||||||
|
<view class="input-item flex align-center">
|
||||||
|
<!-- <view class="iconfont icon-user icon"></view> -->
|
||||||
|
<input v-model="registerForm.userName" class="input" type="text" placeholder="请输入账号" maxlength="30" />
|
||||||
|
</view>
|
||||||
|
<view class="input-item flex align-center">
|
||||||
|
<!-- <view class="iconfont icon-password icon"></view> -->
|
||||||
|
<input v-model="registerForm.passWord" type="password" class="input" placeholder="请输入密码"
|
||||||
|
maxlength="20" />
|
||||||
|
</view>
|
||||||
|
<view class="input-item flex align-center">
|
||||||
|
<!-- <view class="iconfont icon-password icon"></view> -->
|
||||||
|
<input v-model="registerForm.confirmPassword" type="password" class="input" placeholder="请输入重复密码"
|
||||||
|
maxlength="20" />
|
||||||
|
</view>
|
||||||
|
<view class="input-item flex align-center" style="width: 60%;margin: 0px;" v-if="captchaEnabled">
|
||||||
|
<!-- <view class="iconfont icon-code icon"></view> -->
|
||||||
|
<input v-model="registerForm.code" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
|
||||||
|
<view class="login-code">
|
||||||
|
<image :src="codeUrl" @click="getCode" class="login-code-img"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="action-btn">
|
||||||
|
<button @click="handleRegister()" class="register-btn cu-btn block bg-blue lg round">注册</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="xieyi text-center">
|
||||||
|
<text @click="handleUserLogin" class="text-blue">使用已有账号登录</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getCodeImg, register } from '@/api/login'
|
import {
|
||||||
|
getCodeImg,
|
||||||
|
register,
|
||||||
|
sendCode,
|
||||||
|
wxregister,
|
||||||
|
idType
|
||||||
|
} from '@/api/login'
|
||||||
|
import constant from '../utils/constant'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
codeUrl: "",
|
codeUrl: "",
|
||||||
captchaEnabled: true,
|
captchaEnabled: true,
|
||||||
globalConfig: getApp().globalData.config,
|
globalConfig: getApp().globalData.config,
|
||||||
registerForm: {
|
codeText: "发送验证码",
|
||||||
username: "",
|
codeDisabled: false,
|
||||||
password: "",
|
registerForm: {
|
||||||
confirmPassword: "",
|
userName: "",
|
||||||
code: "",
|
passWord: "",
|
||||||
uuid: ''
|
confirmPassword: "",
|
||||||
}
|
code: "",
|
||||||
}
|
uuid: '',
|
||||||
},
|
name: '',
|
||||||
created() {
|
identityNo: "",
|
||||||
this.getCode()
|
id: "",
|
||||||
},
|
idType:0,
|
||||||
methods: {
|
nationality:0
|
||||||
// 用户登录
|
},
|
||||||
handleUserLogin() {
|
sysType:null,
|
||||||
this.$tab.navigateTo(`/pages/login`)
|
certificate: [],
|
||||||
},
|
nationality: [
|
||||||
// 获取图形验证码
|
{ value: 0, text: "境内" },
|
||||||
getCode() {
|
{ value: 1, text: "境外" },
|
||||||
getCodeImg().then(res => {
|
],
|
||||||
this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
|
passportVal:{}
|
||||||
if (this.captchaEnabled) {
|
}
|
||||||
this.codeUrl = 'data:image/gif;base64,' + res.img
|
},
|
||||||
this.registerForm.uuid = res.uuid
|
created() {
|
||||||
}
|
this.getCode()
|
||||||
})
|
},
|
||||||
},
|
methods: {
|
||||||
// 注册方法
|
// 获取手机验证码
|
||||||
async handleRegister() {
|
getCodeNumber(data) {
|
||||||
if (this.registerForm.username === "") {
|
sendCode({
|
||||||
this.$modal.msgError("请输入您的账号")
|
phone: data
|
||||||
} else if (this.registerForm.password === "") {
|
}).then(res => {
|
||||||
this.$modal.msgError("请输入您的密码")
|
uni.showModal({
|
||||||
} else if (this.registerForm.confirmPassword === "") {
|
title: "系统提示",
|
||||||
this.$modal.msgError("请再次输入您的密码")
|
content: res.msg,
|
||||||
} else if (this.registerForm.password !== this.registerForm.confirmPassword) {
|
})
|
||||||
this.$modal.msgError("两次输入的密码不一致")
|
if (res.code != 200) {
|
||||||
} else if (this.registerForm.code === "" && this.captchaEnabled) {
|
return
|
||||||
this.$modal.msgError("请输入验证码")
|
} else {
|
||||||
} else {
|
let time = 60;
|
||||||
this.$modal.loading("注册中,请耐心等待...")
|
let timer = setInterval(() => {
|
||||||
this.register()
|
time--;
|
||||||
}
|
this.codeDisabled = true;
|
||||||
},
|
this.codeText = time + 's重试'
|
||||||
// 用户注册
|
if (time == 0) {
|
||||||
async register() {
|
clearInterval(timer)
|
||||||
register(this.registerForm).then(res => {
|
this.codeText = '发送验证码'
|
||||||
this.$modal.closeLoading()
|
this.codeDisabled = false;
|
||||||
uni.showModal({
|
}
|
||||||
title: "系统提示",
|
}, 1000)
|
||||||
content: "恭喜你,您的账号 " + this.registerForm.username + " 注册成功!",
|
}
|
||||||
success: function (res) {
|
|
||||||
if (res.confirm) {
|
})
|
||||||
uni.redirectTo({ url: `/pages/login` });
|
},
|
||||||
}
|
// 用户登录
|
||||||
}
|
handleUserLogin() {
|
||||||
})
|
this.$tab.navigateTo(`/pages/login`)
|
||||||
}).catch(() => {
|
},
|
||||||
if (this.captchaEnabled) {
|
// 获取图形验证码
|
||||||
this.getCode()
|
getCode() {
|
||||||
}
|
getCodeImg().then(res => {
|
||||||
})
|
this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
|
||||||
},
|
if (this.captchaEnabled) {
|
||||||
// 注册成功后,处理函数
|
this.codeUrl = 'data:image/gif;base64,' + res.img
|
||||||
registerSuccess(result) {
|
this.registerForm.uuid = res.uuid
|
||||||
// 设置用户信息
|
}
|
||||||
this.$store.dispatch('GetInfo').then(res => {
|
})
|
||||||
this.$tab.reLaunch('/pages/index')
|
},
|
||||||
})
|
// 注册方法
|
||||||
}
|
async handleRegister() {
|
||||||
}
|
if (this.registerForm.userName === "") {
|
||||||
}
|
this.$modal.msgError("请输入您的账号")
|
||||||
|
} else if (this.registerForm.passWord === "") {
|
||||||
|
this.$modal.msgError("请输入您的密码")
|
||||||
|
} else if (this.registerForm.confirmPassword === "") {
|
||||||
|
this.$modal.msgError("请再次输入您的密码")
|
||||||
|
} else if (this.registerForm.passWord !== this.registerForm.confirmPassword) {
|
||||||
|
this.$modal.msgError("两次输入的密码不一致")
|
||||||
|
} else if (this.registerForm.code === "" && this.captchaEnabled) {
|
||||||
|
this.$modal.msgError("请输入验证码")
|
||||||
|
} else if (this.registerForm.idCard === "") {
|
||||||
|
this.$modal.msgError("请输入身份证号码")
|
||||||
|
} else if (this.registerForm.phone === "") {
|
||||||
|
this.$modal.msgError("请输入手机号")
|
||||||
|
} else if (this.registerForm.email === "") {
|
||||||
|
this.$modal.msgError("请输入邮箱")
|
||||||
|
} else {
|
||||||
|
this.$modal.loading("注册中,请耐心等待...")
|
||||||
|
this.register()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 用户注册
|
||||||
|
async register() {
|
||||||
|
wxregister(this.registerForm).then(res => {
|
||||||
|
this.$modal.closeLoading()
|
||||||
|
uni.showModal({
|
||||||
|
title: "系统提示",
|
||||||
|
content: "恭喜你,您的账号 " + this.registerForm.userName + " 注册成功!",
|
||||||
|
success: function(res) {
|
||||||
|
if (res.confirm) {
|
||||||
|
uni.redirectTo({
|
||||||
|
url: `/pages/login`
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}).catch(() => {
|
||||||
|
if (this.captchaEnabled) {
|
||||||
|
this.getCode()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 注册成功后,处理函数
|
||||||
|
registerSuccess(result) {
|
||||||
|
// 设置用户信息
|
||||||
|
this.$store.dispatch('GetInfo').then(res => {
|
||||||
|
this.$tab.reLaunch('/pages/index')
|
||||||
|
})
|
||||||
|
},
|
||||||
|
certificateValue(e){
|
||||||
|
// this.registerForm.idType = e
|
||||||
|
},
|
||||||
|
// 获取证件类型
|
||||||
|
getIdType(){
|
||||||
|
idType().then(res=>{
|
||||||
|
res.data.forEach(item=>{
|
||||||
|
this.certificate.push({value:item.dictSort,text:item.dictLabel})
|
||||||
|
})
|
||||||
|
console.log(this.certificate)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
this.sysType = uni.getStorageSync('sysType');
|
||||||
|
// this.passportVal = option;
|
||||||
|
console.log(option)
|
||||||
|
if(option.valus==1){
|
||||||
|
this.registerForm.idType =0
|
||||||
|
this.registerForm.nationality =0
|
||||||
|
}else{
|
||||||
|
let {
|
||||||
|
params
|
||||||
|
} = option
|
||||||
|
// this.improvedetail = JSON.parse(improvedetail)
|
||||||
|
let paramsObj = JSON.parse(params);
|
||||||
|
this.registerForm.name = paramsObj.nickName;
|
||||||
|
this.registerForm.identityNo = paramsObj.idCard
|
||||||
|
this.registerForm.id = paramsObj.id
|
||||||
|
}
|
||||||
|
this.getIdType()
|
||||||
|
},
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
page {
|
page {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
}
|
}
|
||||||
|
::v-deep .uni-select[data-v-6b64008e]{
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
::v-deep .uni-icons[data-v-a2e81f6e]{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.uni-icons{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
// ::v-deep .uni-select{
|
||||||
|
// border: none;
|
||||||
|
// width: 200%;
|
||||||
|
// }
|
||||||
|
.normal-login-container {
|
||||||
|
width: 100%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
|
||||||
.normal-login-container {
|
.logo-content {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
font-size: 21px;
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 15%;
|
||||||
|
|
||||||
.logo-content {
|
image {
|
||||||
width: 100%;
|
border-radius: 4px;
|
||||||
font-size: 21px;
|
}
|
||||||
text-align: center;
|
|
||||||
padding-top: 15%;
|
|
||||||
|
|
||||||
image {
|
.title {
|
||||||
border-radius: 4px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.title {
|
.login-form-content {
|
||||||
margin-left: 10px;
|
text-align: center;
|
||||||
}
|
margin: 20px auto;
|
||||||
}
|
margin-top: 15%;
|
||||||
|
width: 80%;
|
||||||
|
|
||||||
.login-form-content {
|
.input-item {
|
||||||
text-align: center;
|
margin: 20px auto;
|
||||||
margin: 20px auto;
|
background-color: #f5f6f7;
|
||||||
margin-top: 15%;
|
height: 45px;
|
||||||
width: 80%;
|
border-radius: 20px;
|
||||||
|
|
||||||
.input-item {
|
.icon {
|
||||||
margin: 20px auto;
|
font-size: 38rpx;
|
||||||
background-color: #f5f6f7;
|
margin-left: 10px;
|
||||||
height: 45px;
|
color: #999;
|
||||||
border-radius: 20px;
|
}
|
||||||
|
|
||||||
.icon {
|
.input {
|
||||||
font-size: 38rpx;
|
width: 100%;
|
||||||
margin-left: 10px;
|
font-size: 14px;
|
||||||
color: #999;
|
line-height: 20px;
|
||||||
}
|
text-align: left;
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
.input {
|
}
|
||||||
width: 100%;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 20px;
|
|
||||||
text-align: left;
|
|
||||||
padding-left: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
.register-btn {
|
||||||
|
margin-top: 40px;
|
||||||
|
height: 45px;
|
||||||
|
}
|
||||||
|
|
||||||
.register-btn {
|
.xieyi {
|
||||||
margin-top: 40px;
|
color: #333;
|
||||||
height: 45px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.xieyi {
|
.login-code {
|
||||||
color: #333;
|
height: 38px;
|
||||||
margin-top: 20px;
|
float: right;
|
||||||
}
|
|
||||||
|
|
||||||
.login-code {
|
.login-code-img {
|
||||||
height: 38px;
|
height: 38px;
|
||||||
float: right;
|
position: absolute;
|
||||||
|
margin-left: 10px;
|
||||||
.login-code-img {
|
width: 200rpx;
|
||||||
height: 38px;
|
font-size: 28rpx;
|
||||||
position: absolute;
|
}
|
||||||
margin-left: 10px;
|
}
|
||||||
width: 200rpx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
.mini-btn {
|
||||||
|
height: 38px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -0,0 +1,380 @@
|
|||||||
|
<template>
|
||||||
|
<view class="assignrbitrators">
|
||||||
|
<view class="from">
|
||||||
|
<uni-forms ref="form" :modelValue="subnitForm" :rules="rules">
|
||||||
|
<view class="title">案件详情</view>
|
||||||
|
<view class="box">
|
||||||
|
<uni-forms-item label="案件编号:" name="caseNum" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.caseNum"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人:" name="applicantName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.applicantName"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="被申请人:" name="respondentName" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.respondentName"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="借款开始日期:" name="loanStartDate" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.loanStartDate"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="借款结束日期:" name="loanEndDate" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.loanEndDate"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="案件标的:" name="caseSubjectAmount" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.caseSubjectAmount"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张欠本金:" name="claimPrinciOwed" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.claimPrinciOwed"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张欠利息:" name="claimInterestOwed" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.claimInterestOwed"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="申请人主张违约金:" name="claimLiquidDamag" label-width="120px" required>
|
||||||
|
<uni-easyinput :inputBorder="false" :disabled='true' v-model="formData.claimLiquidDamag"
|
||||||
|
placeholder="" />
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="是否有异议需要举证" label-width="120px" name="objectionAddEviden" required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="subnitForm.objectionAddEviden"
|
||||||
|
:localdata="maintenancetypeArr" @change='uploadEvidenceChange'></uni-data-checkbox>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="是否需要开庭审理" label-width="120px" name="openCourtHear" required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="subnitForm.openCourtHear"
|
||||||
|
:localdata="arbitrationmethodArr" @change='arbitrationmethod'></uni-data-checkbox>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="是否指派仲裁员" label-width="120px" name="pendingAppointArbotrar" required>
|
||||||
|
<uni-data-checkbox class='checkbox' v-model="subnitForm.pendingAppointArbotrar"
|
||||||
|
:localdata="uploadEvidence" @change='maintenancetypeChange'></uni-data-checkbox>
|
||||||
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="上传证据" name="headImage" label-width="120px" v-if="caseFlag">
|
||||||
|
<uni-file-picker ref="files" :auto-upload="false" @select="select" :limit='1' />
|
||||||
|
</uni-forms-item>
|
||||||
|
</view>
|
||||||
|
</uni-forms>
|
||||||
|
<view class="uni-list" v-if="selectFlag">
|
||||||
|
<checkbox-group @change="checkboxChange">
|
||||||
|
<label class="uni-list-cell uni-list-cell-pd" v-for="item in items" :key="item.value">
|
||||||
|
<view>
|
||||||
|
<checkbox :value="item.id + ''" />
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
<view class="">
|
||||||
|
仲裁员姓名:{{item.arbitratorName}}
|
||||||
|
</view>
|
||||||
|
<view class="">
|
||||||
|
当前案件数量:{{item.currentCaseNum}}
|
||||||
|
</view>
|
||||||
|
<view class="">
|
||||||
|
已结案数量:{{item.closedCaseNum}}
|
||||||
|
</view>
|
||||||
|
<view class="">
|
||||||
|
专业分类:{{item.professiClassifi}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</label>
|
||||||
|
</checkbox-group>
|
||||||
|
</view>
|
||||||
|
<button type="primary" @click="submitImg">确认提交</button>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
respondentDetail,
|
||||||
|
arbitratorList,
|
||||||
|
evidenceCrossexami
|
||||||
|
} from '../../../api/handlecase/index.js'
|
||||||
|
import {
|
||||||
|
uploadImage
|
||||||
|
} from '../../../api/upload.js'
|
||||||
|
import {
|
||||||
|
getToken
|
||||||
|
} from '@/utils/auth'
|
||||||
|
import moment from 'moment'
|
||||||
|
const app = getApp()
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formData: {},
|
||||||
|
subnitForm: {},
|
||||||
|
selectFlag: false,
|
||||||
|
caseFlag: false,
|
||||||
|
tempFilePaths: null,
|
||||||
|
rules: {
|
||||||
|
// 是否有异议需要举证
|
||||||
|
objectionAddEviden: {
|
||||||
|
rules: [{
|
||||||
|
required: true,
|
||||||
|
errorMessage: '请选择'
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
// 是否需要开庭审理
|
||||||
|
openCourtHear: {
|
||||||
|
rules: [{
|
||||||
|
required: true,
|
||||||
|
errorMessage: '请选择'
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
// 是否指派仲裁员
|
||||||
|
pendingAppointArbotrar: {
|
||||||
|
rules: [{
|
||||||
|
required: true,
|
||||||
|
errorMessage: '请选择'
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
maintenancetypeArr: [{
|
||||||
|
text: '是',
|
||||||
|
value: 1
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 0
|
||||||
|
}, ],
|
||||||
|
arbitrationmethodArr: [{
|
||||||
|
text: '是',
|
||||||
|
value: 1
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 0
|
||||||
|
}],
|
||||||
|
uploadEvidence: [{
|
||||||
|
text: '是',
|
||||||
|
value: 1
|
||||||
|
}, {
|
||||||
|
text: '否',
|
||||||
|
value: 0
|
||||||
|
}],
|
||||||
|
items: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
arbitrationmethod() {},
|
||||||
|
uploadEvidenceChange(val) {
|
||||||
|
let flag = val.detail.value;
|
||||||
|
if (flag == 1) {
|
||||||
|
this.caseFlag = true;
|
||||||
|
} else if (flag == 0) {
|
||||||
|
this.caseFlag = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
maintenancetypeChange(val) {
|
||||||
|
let flag = val.detail.value;
|
||||||
|
if (flag == 1) {
|
||||||
|
this.selectFlag = true
|
||||||
|
this.getArbitratorList()
|
||||||
|
} else {
|
||||||
|
this.selectFlag = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
checkboxChange(e) {
|
||||||
|
let idArr = e.detail.value;
|
||||||
|
let numberArray = idArr.map(str => parseInt(str));
|
||||||
|
const result = this.items.filter(item => numberArray.includes(item.id));
|
||||||
|
let arbitrators = []
|
||||||
|
result.forEach(item => {
|
||||||
|
arbitrators.push({
|
||||||
|
id: item.id,
|
||||||
|
arbitratorName: item.arbitratorName
|
||||||
|
})
|
||||||
|
})
|
||||||
|
this.subnitForm.arbitrators = arbitrators;
|
||||||
|
},
|
||||||
|
getData(parms) {
|
||||||
|
respondentDetail(parms).then(res => {
|
||||||
|
this.formData = res.data
|
||||||
|
this.formData.loanEndDate = moment(this.formData.loanEndDate).format('YYYY-MM-DD HH:mm:ss');
|
||||||
|
this.formData.loanStartDate = moment(this.formData.loanStartDate).format(
|
||||||
|
'YYYY-MM-DD HH:mm:ss');
|
||||||
|
this.formData.id = this.formData.id + ''
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 文件上传
|
||||||
|
select(e) {
|
||||||
|
this.tempFilePaths = e.tempFilePaths;
|
||||||
|
// loading
|
||||||
|
uni.showLoading({
|
||||||
|
title: '上传中'
|
||||||
|
});
|
||||||
|
uni.uploadFile({
|
||||||
|
url: getApp().globalData.requestUrl + uploadImage,
|
||||||
|
filePath: this.tempFilePaths[0],
|
||||||
|
header: {
|
||||||
|
Authorization: getToken() || '',
|
||||||
|
},
|
||||||
|
formData: {
|
||||||
|
annexType: 6,
|
||||||
|
id: this.formData.id
|
||||||
|
},
|
||||||
|
name: 'file',
|
||||||
|
success: (res) => {
|
||||||
|
let {
|
||||||
|
data
|
||||||
|
} = res
|
||||||
|
uni.showToast({
|
||||||
|
title: '上传成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.hideLoading();
|
||||||
|
},
|
||||||
|
fail: (err) => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '上传失败',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.hideLoading()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获取仲裁员列表
|
||||||
|
getArbitratorList() {
|
||||||
|
arbitratorList().then(res => {
|
||||||
|
this.items = res.rows;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 提交数据
|
||||||
|
evidenceCrossexamiFn(parms) {
|
||||||
|
evidenceCrossexami(parms).then(res => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '提交成功',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/handlecase/index'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
submitImg() {
|
||||||
|
this.$refs.form.validate().then(res => {
|
||||||
|
this.evidenceCrossexamiFn(this.subnitForm)
|
||||||
|
}).catch(err => {
|
||||||
|
console.log('表单错误信息:', err);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(data) {
|
||||||
|
this.getData(data.id);
|
||||||
|
this.subnitForm.caseId = Number(data.id);
|
||||||
|
// this.getArbitratorList()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.assignrbitrators {
|
||||||
|
// text-align: center;
|
||||||
|
padding: 20rpx;
|
||||||
|
|
||||||
|
.box {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexd {
|
||||||
|
padding-top: 20rpx;
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
width: 80%;
|
||||||
|
font-size: 26rpx;
|
||||||
|
border-radius: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select-picker {
|
||||||
|
display: flex;
|
||||||
|
box-sizing: border-box;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #DCDFE6;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 24rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-content {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
|
||||||
|
.none {
|
||||||
|
font-size: 24rpx;
|
||||||
|
height: 60rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.box {
|
||||||
|
/deep/.title {
|
||||||
|
font-size: 28rpx;
|
||||||
|
height: 60rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.htmltitle {
|
||||||
|
font-size: 30rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.look {
|
||||||
|
color: #0D91F9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 30rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.adsTitle {
|
||||||
|
font-size: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.multiple {
|
||||||
|
width: 75%;
|
||||||
|
height: 72rpx;
|
||||||
|
line-height: 72rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
// @include text-overflow($width: 100%)
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-list {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
|
||||||
|
.uni-list-cell {
|
||||||
|
border-radius: 30rpx;
|
||||||
|
margin-bottom: 10rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
|
.main {
|
||||||
|
height: 100%;
|
||||||
|
margin-left: 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
<template>
|
||||||
|
<view class="list">
|
||||||
|
<view class="listItem">
|
||||||
|
<view class="lable">
|
||||||
|
案件编号:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.caseNum}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem">
|
||||||
|
<view class="lable">
|
||||||
|
申请人姓名:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.applicantName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem">
|
||||||
|
<view class="lable">
|
||||||
|
被申请人姓名:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.respondentName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="listItem">
|
||||||
|
<view class="lable">
|
||||||
|
案件状态:
|
||||||
|
</view>
|
||||||
|
<view class="main">
|
||||||
|
{{defalutVal.caseStatusName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="btn">
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="uploadEvidence">在线签字</button>
|
||||||
|
<!-- <button class="btnItem" type="primary" size="mini" @tap="confirmationEvidence" v-if="defalutVal.caseStatus == 4">确认证据</button>
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="isAssignrbitrators" v-if="defalutVal.caseStatus == 5">是否指派仲裁员</button>
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="isAssignrbitrators">是否指派仲裁员</button>
|
||||||
|
<button class="btnItem" type="primary" size="mini" @tap="chooseMethod" v-if="defalutVal.caseStatus == 9">选择仲裁方式</button> -->
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default{
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props:{
|
||||||
|
defalutVal:{
|
||||||
|
type:Object,
|
||||||
|
default:() => {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
// // 查看快递
|
||||||
|
uploadEvidence(){
|
||||||
|
uni.navigateTo({
|
||||||
|
// url:`/pages/expressDelivery/component/expressDelivery?id=${this.defalutVal.id}`
|
||||||
|
url:`/pages/expressDelivery/component/expressDelivery?id=61`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.list {
|
||||||
|
padding: 15rpx;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-radius: 30rpx;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
.listItem {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
height: 50rpx;
|
||||||
|
|
||||||
|
.lable {
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main {
|
||||||
|
width: 60%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn{
|
||||||
|
margin-top: 20rpx;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
.btnItem{
|
||||||
|
height: 50rpx;
|
||||||
|
background-color: #5395ff;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 50rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,125 @@
|
|||||||
|
<template>
|
||||||
|
<view class="handlecase">
|
||||||
|
<List class="caseList" v-for="(item,index) in caseList" :defalutVal='item' :key="index"></List>
|
||||||
|
<view class="emptyBox" v-if="caseList.length == 0">
|
||||||
|
<luanqing-empty :show="true" textColor="#000"></luanqing-empty>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import List from './component/list.vue'
|
||||||
|
import {
|
||||||
|
caseApplicationList
|
||||||
|
} from '../../api/handlecase/index.js'
|
||||||
|
import LuanqingEmpty from "@/components/luanqing-empty.vue"
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
List,
|
||||||
|
'luanqing-empty': LuanqingEmpty,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
caseList: [],
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getList(parms) {
|
||||||
|
uni.showLoading()
|
||||||
|
caseApplicationList(parms).then(res => {
|
||||||
|
uni.hideLoading()
|
||||||
|
this.caseList = res.rows;
|
||||||
|
this.caseList.forEach(item => {
|
||||||
|
switch (item.caseStatus) {
|
||||||
|
case 0:
|
||||||
|
item.caseStatusName = '立案申请'
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
item.caseStatusName = '待缴费'
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
item.caseStatusName = '待缴费确认'
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
item.caseStatusName = '待确认是否应诉'
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
item.caseStatusName = '待确认证据'
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
item.caseStatusName = '待确定是否指派仲裁员'
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
item.caseStatusName = '待组庭'
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
item.caseStatusName = '待组庭确定'
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
item.caseStatusName = '待组庭审核'
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
item.caseStatusName = '待选择仲裁方式'
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
item.caseStatusName = '待开庭'
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
item.caseStatusName = '待生成仲裁文书'
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
item.caseStatusName = '待确认仲裁文书'
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
item.caseStatusName = '待仲裁文书用印'
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
item.caseStatusName = '待仲裁文书用印审核'
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
item.caseStatusName = '待仲裁文书送达'
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
item.caseStatusName = '待案件归档'
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 触底
|
||||||
|
onReachBottom() {
|
||||||
|
if (this.caseList.length < 1) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let obj = {
|
||||||
|
caseStatusList: [13],
|
||||||
|
pageNum: this.pageNum,
|
||||||
|
pageSize: this.pageSize
|
||||||
|
}
|
||||||
|
obj.pageNum = obj.pageNum + 1
|
||||||
|
this.getList(obj)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
let obj = {
|
||||||
|
caseStatusList: [13],
|
||||||
|
pageNum: this.pageNum,
|
||||||
|
pageSize: this.pageSize
|
||||||
|
}
|
||||||
|
this.getList(obj)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.handlecase {
|
||||||
|
.caseList {
|
||||||
|
// height: 360rpx;
|
||||||
|
// background-color: #ffffff;
|
||||||
|
// border-radius: 30rpx;
|
||||||
|
// margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<template>
|
||||||
|
<view class="" style="margin:300rpx auto;width:80%;">
|
||||||
|
<view class="button-sp-area">
|
||||||
|
<button @tap="logarBitration(1)" class="login-btn cu-btn block bg-blue lg round">登录仲裁系统</button>
|
||||||
|
</view>
|
||||||
|
<view class="action-btn"style="margin-top:100rpx">
|
||||||
|
<button @tap="logarBitration(2)" class="login-btn cu-btn block bg-blue lg round">登录调解系统</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
// 登录仲裁调节系统
|
||||||
|
logarBitration(val){
|
||||||
|
uni.setStorageSync('sysType',val)
|
||||||
|
let params ={values:val}
|
||||||
|
let url ='/pages/login?values='+encodeURIComponent(params.values)
|
||||||
|
uni.navigateTo({ url })
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
uni.removeStorageSync('sysType')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
page {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
+309
-165
@@ -1,183 +1,327 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="work-container">
|
<view class="work-container">
|
||||||
<!-- 轮播图 -->
|
<!-- 仲裁轮播图 -->
|
||||||
<uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content">
|
<uni-swiper-dot v-if="sysType==1" class="uni-swiper-dot-box" :info="data" :current="current" field="content">
|
||||||
<swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">
|
<swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">
|
||||||
<swiper-item v-for="(item, index) in data" :key="index">
|
<swiper-item v-for="(item, index) in data" :key="index">
|
||||||
<view class="swiper-item" @click="clickBannerItem(item)">
|
<view class="swiper-item" @click="clickBannerItem(item)">
|
||||||
<image :src="item.image" mode="aspectFill" :draggable="false" />
|
<image :src="item.image" mode="aspectFill" :draggable="false" />
|
||||||
</view>
|
</view>
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
</swiper>
|
</swiper>
|
||||||
</uni-swiper-dot>
|
</uni-swiper-dot>
|
||||||
|
<!-- 调解轮播图 -->
|
||||||
<!-- 宫格组件 -->
|
<uni-swiper-dot v-if="sysType==2" class="uni-swiper-dot-box" :info="refreesVal" :current="current"
|
||||||
<uni-section title="系统管理" type="line"></uni-section>
|
field="content">
|
||||||
<view class="grid-body">
|
<swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">
|
||||||
<uni-grid :column="4" :showBorder="false" @change="changeGrid">
|
<swiper-item v-for="(item, index) in refreesVal" :key="index">
|
||||||
<uni-grid-item>
|
<view class="swiper-item" @click="clickBannerItem(item)">
|
||||||
<view class="grid-item-box">
|
<image :src="item.image" mode="aspectFill" :draggable="false" />
|
||||||
<uni-icons type="person-filled" size="30"></uni-icons>
|
</view>
|
||||||
<text class="text">用户管理</text>
|
</swiper-item>
|
||||||
</view>
|
</swiper>
|
||||||
</uni-grid-item>
|
</uni-swiper-dot>
|
||||||
<uni-grid-item>
|
<!-- 宫格组件 -->
|
||||||
<view class="grid-item-box">
|
<!-- <uni-section v-if="certificationStatus == '1'" class="uni-section" title="系统管理" type="line">
|
||||||
<uni-icons type="staff-filled" size="30"></uni-icons>
|
<template v-slot:right>
|
||||||
<text class="text">角色管理</text>
|
已认证
|
||||||
</view>
|
</template>
|
||||||
</uni-grid-item>
|
</uni-section>
|
||||||
<uni-grid-item>
|
<uni-section v-else class="uni-section" title="系统管理" type="line" @click="certification">
|
||||||
<view class="grid-item-box">
|
<template v-slot:right>
|
||||||
<uni-icons type="color" size="30"></uni-icons>
|
未认证
|
||||||
<text class="text">菜单管理</text>
|
</template>
|
||||||
</view>
|
</uni-section> -->
|
||||||
</uni-grid-item>
|
<!-- <uni-section class="uni-section" title="系统管理" type="line"></uni-section> -->
|
||||||
<uni-grid-item>
|
<view class="grid-body">
|
||||||
<view class="grid-item-box">
|
<uni-grid :column="4" :showBorder="false">
|
||||||
<uni-icons type="settings-filled" size="30"></uni-icons>
|
<uni-grid-item>
|
||||||
<text class="text">部门管理</text>
|
<view class="grid-item-box" @tap="changeGrid(0)">
|
||||||
</view>
|
<uni-icons type="calendar-filled" size="30" color="#327DD7"></uni-icons>
|
||||||
</uni-grid-item>
|
<text class="text" v-if="sysType == 1">待办案件</text>
|
||||||
<uni-grid-item>
|
<text class="text" v-if="sysType == 2">我的申请</text>
|
||||||
<view class="grid-item-box">
|
</view>
|
||||||
<uni-icons type="heart-filled" size="30"></uni-icons>
|
</uni-grid-item>
|
||||||
<text class="text">岗位管理</text>
|
<uni-grid-item v-if="sysType == 2 && checkPermi(['caseManagement:list:add'])">
|
||||||
</view>
|
<view class="grid-item-box" @tap="changeGrid(1)">
|
||||||
</uni-grid-item>
|
<uni-icons type="staff-filled" size="30" color="#327DD7"></uni-icons>
|
||||||
<uni-grid-item>
|
<text class="text">立案申请</text>
|
||||||
<view class="grid-item-box">
|
</view>
|
||||||
<uni-icons type="bars" size="30"></uni-icons>
|
</uni-grid-item>
|
||||||
<text class="text">字典管理</text>
|
<!-- <uni-grid-item v-if="sysType == 2">
|
||||||
</view>
|
<view class="grid-item-box" @tap="changeGrid(2)">
|
||||||
</uni-grid-item>
|
<uni-icons type="color" size="30" color="#327DD7"></uni-icons>
|
||||||
<uni-grid-item>
|
<text class="text">线上调解</text>
|
||||||
<view class="grid-item-box">
|
</view>
|
||||||
<uni-icons type="gear-filled" size="30"></uni-icons>
|
</uni-grid-item>
|
||||||
<text class="text">参数设置</text>
|
<uni-grid-item v-if="sysType == 2">
|
||||||
</view>
|
<view class="grid-item-box" @tap="changeGrid(3)">
|
||||||
</uni-grid-item>
|
<uni-icons type="compose" size="30" color="#327DD7"></uni-icons>
|
||||||
<uni-grid-item>
|
<text class="text">我的申请</text>
|
||||||
<view class="grid-item-box">
|
</view>
|
||||||
<uni-icons type="chat-filled" size="30"></uni-icons>
|
</uni-grid-item> -->
|
||||||
<text class="text">通知公告</text>
|
<!-- <uni-grid-item>
|
||||||
</view>
|
<view class="grid-item-box" @tap="changeGrid(4)">
|
||||||
</uni-grid-item>
|
<uni-icons type="heart-filled" size="30" color="#327DD7"></uni-icons>
|
||||||
<uni-grid-item>
|
<text class="text">证据交换</text>
|
||||||
<view class="grid-item-box">
|
</view>
|
||||||
<uni-icons type="wallet-filled" size="30"></uni-icons>
|
</uni-grid-item> -->
|
||||||
<text class="text">日志管理</text>
|
<uni-grid-item>
|
||||||
</view>
|
<view class="grid-item-box" @tap="changeGrid(5)">
|
||||||
</uni-grid-item>
|
<uni-icons type="bars" size="30" color="#327DD7"></uni-icons>
|
||||||
</uni-grid>
|
<text class="text" v-if="sysType == 1">视频审理</text>
|
||||||
</view>
|
<text class="text" v-if="sysType == 2">线上调解</text>
|
||||||
</view>
|
</view>
|
||||||
|
</uni-grid-item>
|
||||||
|
<!-- <uni-grid-item>
|
||||||
|
<view class="grid-item-box" @tap="changeGrid(6)">
|
||||||
|
<uni-icons type="email-filled" size="30" color="#327DD7"></uni-icons>
|
||||||
|
<text class="text">查询快递</text>
|
||||||
|
</view>
|
||||||
|
</uni-grid-item> -->
|
||||||
|
<!-- <uni-grid-item>
|
||||||
|
<view class="grid-item-box" @tap="changeGrid(7)">
|
||||||
|
<uni-icons type="compose" size="30" color="#327DD7"></uni-icons>
|
||||||
|
<text class="text">在线签字</text>
|
||||||
|
</view>
|
||||||
|
</uni-grid-item> -->
|
||||||
|
<!-- <uni-grid-item>
|
||||||
|
<view class="grid-item-box" @tap="changeGrid(8)">
|
||||||
|
<uni-icons type="wallet-filled" size="30" color="#327DD7"></uni-icons>
|
||||||
|
<text class="text">仲裁文书</text>
|
||||||
|
</view>
|
||||||
|
</uni-grid-item>
|
||||||
|
<uni-grid-item>
|
||||||
|
<view class="grid-item-box" @tap="changeGrid(9)">
|
||||||
|
<uni-icons type="wallet-filled" size="30" color="#327DD7"></uni-icons>
|
||||||
|
<text class="text">法规政策</text>
|
||||||
|
</view>
|
||||||
|
</uni-grid-item> -->
|
||||||
|
</uni-grid>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
import {
|
||||||
data() {
|
startEid
|
||||||
return {
|
} from '../../mp_ecard_sdk/main.js'
|
||||||
current: 0,
|
import {
|
||||||
swiperDotIndex: 0,
|
getEidtoken,
|
||||||
data: [{
|
sendEidtoken
|
||||||
image: '/static/images/banner/banner01.jpg'
|
} from "../../api/login.js"
|
||||||
},
|
export default {
|
||||||
{
|
data() {
|
||||||
image: '/static/images/banner/banner02.jpg'
|
return {
|
||||||
},
|
current: 0,
|
||||||
{
|
swiperDotIndex: 0,
|
||||||
image: '/static/images/banner/banner03.jpg'
|
data: [{
|
||||||
}
|
image: 'https://img.tukuppt.com/bg_grid/00/09/96/qWJxN1umma.jpg!/fh/350'
|
||||||
]
|
},
|
||||||
}
|
{
|
||||||
},
|
image: 'https://img.tukuppt.com/bg_grid/00/18/92/JBheZs7ZVK.jpg!/fh/350'
|
||||||
methods: {
|
},
|
||||||
clickBannerItem(item) {
|
{
|
||||||
console.info(item)
|
image: 'https://img.tukuppt.com/bg_grid/00/81/07/DGEl4suqeV.jpg!/fh/350'
|
||||||
},
|
}
|
||||||
changeSwiper(e) {
|
],
|
||||||
this.current = e.detail.current
|
refreesVal: [{
|
||||||
},
|
image: 'https://txroom.xayunmei.com/tiaojie1.png'
|
||||||
changeGrid(e) {
|
}, {
|
||||||
this.$modal.showToast('模块建设中~')
|
image: 'https://txroom.xayunmei.com/tiaojie2.png'
|
||||||
}
|
}, {
|
||||||
}
|
image: 'https://txroom.xayunmei.com/tiaojie4.png'
|
||||||
}
|
}],
|
||||||
|
certificationStatus: "",
|
||||||
|
eidToken: "",
|
||||||
|
sysType: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
clickBannerItem(item) {
|
||||||
|
console.info(item)
|
||||||
|
},
|
||||||
|
changeSwiper(e) {
|
||||||
|
this.current = e.detail.current
|
||||||
|
},
|
||||||
|
changeGrid(e) {
|
||||||
|
// this.$modal.showToast('模块建设中~')
|
||||||
|
// if (this.certificationStatus == "0") {
|
||||||
|
// uni.showToast({
|
||||||
|
// title: '请先完成实名认证',
|
||||||
|
// icon: 'none',
|
||||||
|
// duration: 1000
|
||||||
|
// })
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
switch (e) {
|
||||||
|
case 0:
|
||||||
|
uni.navigateTo({
|
||||||
|
url: ('/pages/handlecase/index')
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
uni.navigateTo({
|
||||||
|
url: ('/pages/im/index')
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
uni.navigateTo({
|
||||||
|
url: ('/pages/expressDelivery/index')
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
uni.navigateTo({
|
||||||
|
url: ('/pages/signature/index')
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
uni.navigateTo({
|
||||||
|
url: (`/pages/handlecase/component/newlyAddedCase?title=新增案件`)
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取eidtoken
|
||||||
|
getEidtokenFn() {
|
||||||
|
getEidtoken({}).then(res => {
|
||||||
|
console.log(res.data.EidToken, "kkkkkkkkk");
|
||||||
|
this.eidToken = res.data.EidToken
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 点击实名认证
|
||||||
|
certification() {
|
||||||
|
let that = this
|
||||||
|
// uni.navigateTo({
|
||||||
|
// url: ('/mp_ecard_sdk/index/index')
|
||||||
|
// })
|
||||||
|
startEid({
|
||||||
|
data: {
|
||||||
|
token: this.eidToken,
|
||||||
|
},
|
||||||
|
verifyDoneCallback(res) {
|
||||||
|
const {
|
||||||
|
token,
|
||||||
|
verifyDone
|
||||||
|
} = res;
|
||||||
|
console.log('收到核身完成的res:', res);
|
||||||
|
console.log('核身的token是:', token);
|
||||||
|
console.log('是否完成核身:', verifyDone);
|
||||||
|
sendEidtoken({
|
||||||
|
"eidToken": token
|
||||||
|
}).then(res => {
|
||||||
|
that.certificationStatus = '1'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.sysType = uni.getStorageSync('sysType');
|
||||||
|
console.log(this.sysType)
|
||||||
|
// sendEidtoken({
|
||||||
|
// "eidToken": 'C0339AE1-7B30-4DB9-B1E4-35A10F45249B'
|
||||||
|
// }).then(res => {
|
||||||
|
// // that.certificationStatus = '已认证'
|
||||||
|
// })
|
||||||
|
this.getEidtokenFn()
|
||||||
|
// this.certificationStatus = uni.getStorageSync('certificationStatus')
|
||||||
|
},
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
/* #ifndef APP-NVUE */
|
/* #ifndef APP-NVUE */
|
||||||
page {
|
page {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
view {
|
view {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: inherit;
|
line-height: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* #endif */
|
/* #endif */
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
margin-top: 10rpx;
|
margin-top: 10rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.grid-item-box {
|
.grid-item-box {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
/* #ifndef APP-NVUE */
|
/* #ifndef APP-NVUE */
|
||||||
display: flex;
|
display: flex;
|
||||||
/* #endif */
|
/* #endif */
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 15px 0;
|
padding: 15px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.uni-margin-wrap {
|
.uni-margin-wrap {
|
||||||
width: 690rpx;
|
width: 690rpx;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
.swiper {
|
.swiper {
|
||||||
height: 300rpx;
|
height: 300rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.swiper-box {
|
.swiper-box {
|
||||||
height: 150px;
|
height: 150px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.swiper-item {
|
.swiper-item {
|
||||||
/* #ifndef APP-NVUE */
|
/* #ifndef APP-NVUE */
|
||||||
display: flex;
|
display: flex;
|
||||||
/* #endif */
|
/* #endif */
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
height: 300rpx;
|
height: 300rpx;
|
||||||
line-height: 300rpx;
|
line-height: 300rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: 500px) {
|
.grid-body {
|
||||||
.uni-swiper-dot-box {
|
// background-image: url('https://img.tukuppt.com/bg_grid/00/18/52/aEicoC2qMI.jpg!/fh/350');
|
||||||
width: 400px;
|
background-repeat: no-repeat;
|
||||||
/* #ifndef APP-NVUE */
|
background-size: cover;
|
||||||
margin: 0 auto;
|
height: 900rpx;
|
||||||
/* #endif */
|
// color: #fff;
|
||||||
margin-top: 8px;
|
opacity: 0.9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.image {
|
.uni-section {
|
||||||
width: 100%;
|
background-color: #b90404 !important;
|
||||||
}
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/deep/ .uni-section__content-title {
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 500px) {
|
||||||
|
.uni-swiper-dot-box {
|
||||||
|
width: 400px;
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
margin: 0 auto;
|
||||||
|
/* #endif */
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
+4
-3
@@ -1,11 +1,12 @@
|
|||||||
import { getToken } from '@/utils/auth'
|
import { getToken } from '@/utils/auth'
|
||||||
|
//跳转页面
|
||||||
|
const loginPage = "/pages/switchSystem"
|
||||||
// 登录页面
|
// 登录页面
|
||||||
const loginPage = "/pages/login"
|
// const loginPage = "/pages/login"
|
||||||
|
|
||||||
// 页面白名单
|
// 页面白名单
|
||||||
const whiteList = [
|
const whiteList = [
|
||||||
'/pages/login', '/pages/register', '/pages/common/webview/index'
|
'/pages/switchSystem', '/pages/login', '/pages/register', '/pages/common/webview/index','/pages/realName','/mp_ecard_sdk/index/index', '/pages/personalInfoCollection'
|
||||||
]
|
]
|
||||||
|
|
||||||
// 检查地址白名单
|
// 检查地址白名单
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"appid": "wx91cb8459dca561b4",
|
||||||
|
"compileType": "miniprogram",
|
||||||
|
"libVersion": "2.25.3",
|
||||||
|
"packOptions": {
|
||||||
|
"ignore": [],
|
||||||
|
"include": []
|
||||||
|
},
|
||||||
|
"setting": {
|
||||||
|
"coverView": true,
|
||||||
|
"es6": true,
|
||||||
|
"postcss": true,
|
||||||
|
"minified": true,
|
||||||
|
"enhance": true,
|
||||||
|
"showShadowRootInWxmlPanel": true,
|
||||||
|
"packNpmRelationList": [],
|
||||||
|
"babelSetting": {
|
||||||
|
"ignore": [],
|
||||||
|
"disablePlugins": [],
|
||||||
|
"outputPath": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"miniprogramRoot": "unpackage/dist/dev/mp-weixin/",
|
||||||
|
"condition": {},
|
||||||
|
"editorSetting": {
|
||||||
|
"tabIndent": "insertSpaces",
|
||||||
|
"tabSize": 2
|
||||||
|
},
|
||||||
|
"srcMiniprogramRoot": "unpackage/dist/dev/mp-weixin/"
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
||||||
|
"projectname": "miniapp",
|
||||||
|
"setting": {
|
||||||
|
"compileHotReLoad": true,
|
||||||
|
"urlCheck": false
|
||||||
|
}
|
||||||
|
}
|
||||||
+963
-959
File diff suppressed because one or more lines are too long
+5
-5
@@ -1,8 +1,8 @@
|
|||||||
const getters = {
|
const getters = {
|
||||||
token: state => state.user.token,
|
token: state => state.user.token,
|
||||||
avatar: state => state.user.avatar,
|
avatar: state => state.user.avatar,
|
||||||
name: state => state.user.name,
|
name: state => state.user.name,
|
||||||
roles: state => state.user.roles,
|
roles: state => state.user.roles,
|
||||||
permissions: state => state.user.permissions
|
permissions: state => state.user.permissions
|
||||||
}
|
}
|
||||||
export default getters
|
export default getters
|
||||||
+103
-84
@@ -1,98 +1,117 @@
|
|||||||
import config from '@/config'
|
import config from '@/config'
|
||||||
import storage from '@/utils/storage'
|
import storage from '@/utils/storage'
|
||||||
import constant from '@/utils/constant'
|
import constant from '@/utils/constant'
|
||||||
import { login, logout, getInfo } from '@/api/login'
|
import {
|
||||||
import { getToken, setToken, removeToken } from '@/utils/auth'
|
login,
|
||||||
|
logout,
|
||||||
|
getInfo
|
||||||
|
} from '@/api/login'
|
||||||
|
import {
|
||||||
|
getToken,
|
||||||
|
setToken,
|
||||||
|
removeToken
|
||||||
|
} from '@/utils/auth'
|
||||||
|
|
||||||
const baseUrl = config.baseUrl
|
const baseUrl = config.baseUrl
|
||||||
|
|
||||||
const user = {
|
const user = {
|
||||||
state: {
|
state: {
|
||||||
token: getToken(),
|
token: getToken(),
|
||||||
name: storage.get(constant.name),
|
name: storage.get(constant.name),
|
||||||
avatar: storage.get(constant.avatar),
|
avatar: storage.get(constant.avatar),
|
||||||
roles: storage.get(constant.roles),
|
roles: storage.get(constant.roles),
|
||||||
permissions: storage.get(constant.permissions)
|
permissions: storage.get(constant.permissions)
|
||||||
},
|
},
|
||||||
|
|
||||||
mutations: {
|
mutations: {
|
||||||
SET_TOKEN: (state, token) => {
|
SET_TOKEN: (state, token) => {
|
||||||
state.token = token
|
state.token = token
|
||||||
},
|
},
|
||||||
SET_NAME: (state, name) => {
|
SET_NAME: (state, name) => {
|
||||||
state.name = name
|
state.name = name
|
||||||
storage.set(constant.name, name)
|
storage.set(constant.name, name)
|
||||||
},
|
},
|
||||||
SET_AVATAR: (state, avatar) => {
|
SET_AVATAR: (state, avatar) => {
|
||||||
state.avatar = avatar
|
state.avatar = avatar
|
||||||
storage.set(constant.avatar, avatar)
|
storage.set(constant.avatar, avatar)
|
||||||
},
|
},
|
||||||
SET_ROLES: (state, roles) => {
|
SET_ROLES: (state, roles) => {
|
||||||
state.roles = roles
|
state.roles = roles
|
||||||
storage.set(constant.roles, roles)
|
storage.set(constant.roles, roles)
|
||||||
},
|
},
|
||||||
SET_PERMISSIONS: (state, permissions) => {
|
SET_PERMISSIONS: (state, permissions) => {
|
||||||
state.permissions = permissions
|
state.permissions = permissions
|
||||||
storage.set(constant.permissions, permissions)
|
storage.set(constant.permissions, permissions)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
// 登录
|
// 登录
|
||||||
Login({ commit }, userInfo) {
|
Login({
|
||||||
const username = userInfo.username.trim()
|
commit
|
||||||
const password = userInfo.password
|
}, userInfo) {
|
||||||
const code = userInfo.code
|
const username = userInfo.username.trim()
|
||||||
const uuid = userInfo.uuid
|
const password = userInfo.password
|
||||||
return new Promise((resolve, reject) => {
|
const code = userInfo.code
|
||||||
login(username, password, code, uuid).then(res => {
|
const uuid = userInfo.uuid
|
||||||
setToken(res.token)
|
return new Promise((resolve, reject) => {
|
||||||
commit('SET_TOKEN', res.token)
|
login(username, password, code, uuid).then(res => {
|
||||||
resolve()
|
setToken(res.token)
|
||||||
}).catch(error => {
|
uni.setStorageSync("certificationStatus",res.certificationStatus)
|
||||||
reject(error)
|
commit('SET_TOKEN', res.token)
|
||||||
})
|
resolve()
|
||||||
})
|
}).catch(error => {
|
||||||
},
|
reject(error)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
// 获取用户信息
|
// 获取用户信息
|
||||||
GetInfo({ commit, state }) {
|
GetInfo({
|
||||||
return new Promise((resolve, reject) => {
|
commit,
|
||||||
getInfo().then(res => {
|
state
|
||||||
const user = res.user
|
}) {
|
||||||
const avatar = (user == null || user.avatar == "" || user.avatar == null) ? require("@/static/images/profile.jpg") : baseUrl + user.avatar
|
return new Promise((resolve, reject) => {
|
||||||
const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
|
getInfo().then(res => {
|
||||||
if (res.roles && res.roles.length > 0) {
|
const user = res.user
|
||||||
commit('SET_ROLES', res.roles)
|
const avatar = (user == null || user.avatar == "" || user.avatar == null) ?
|
||||||
commit('SET_PERMISSIONS', res.permissions)
|
require("@/static/images/profile.jpg") : baseUrl + user.avatar
|
||||||
} else {
|
const username = (user == null || user.userName == "" || user.userName ==
|
||||||
commit('SET_ROLES', ['ROLE_DEFAULT'])
|
null) ? "" : user.userName
|
||||||
}
|
if (res.roles && res.roles.length > 0) {
|
||||||
commit('SET_NAME', username)
|
commit('SET_ROLES', res.roles)
|
||||||
commit('SET_AVATAR', avatar)
|
commit('SET_PERMISSIONS', res.permissions)
|
||||||
resolve(res)
|
} else {
|
||||||
}).catch(error => {
|
commit('SET_ROLES', ['ROLE_DEFAULT'])
|
||||||
reject(error)
|
}
|
||||||
})
|
commit('SET_NAME', username)
|
||||||
})
|
commit('SET_AVATAR', avatar)
|
||||||
},
|
resolve(res)
|
||||||
|
}).catch(error => {
|
||||||
|
reject(error)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
// 退出系统
|
// 退出系统
|
||||||
LogOut({ commit, state }) {
|
LogOut({
|
||||||
return new Promise((resolve, reject) => {
|
commit,
|
||||||
logout(state.token).then(() => {
|
state
|
||||||
commit('SET_TOKEN', '')
|
}) {
|
||||||
commit('SET_ROLES', [])
|
return new Promise((resolve, reject) => {
|
||||||
commit('SET_PERMISSIONS', [])
|
logout(state.token).then(() => {
|
||||||
removeToken()
|
commit('SET_TOKEN', '')
|
||||||
storage.clean()
|
commit('SET_ROLES', [])
|
||||||
resolve()
|
commit('SET_PERMISSIONS', [])
|
||||||
}).catch(error => {
|
removeToken()
|
||||||
reject(error)
|
storage.clean()
|
||||||
})
|
resolve()
|
||||||
})
|
}).catch(error => {
|
||||||
}
|
reject(error)
|
||||||
}
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default user
|
export default user
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
## 2.2.9(2023-06-01)
|
||||||
|
优化:将是否多选与count字段解绑(原逻辑是count>1为允许多选),改为新增multiple属性控制是否多选。
|
||||||
|
## 2.2.8(2023-06-01)
|
||||||
|
修复上版本提交时accept测试值未删除导致h5端只能选择图片的问题。
|
||||||
|
## 2.2.7(2023-05-06)
|
||||||
|
应群友建议,当instantly为true时,触发change事件后延迟1000毫秒再自动上传,方便动态修改参数,其实个人还是建议想在change事件动态设置参数的伙伴将instantly设置为false,修改参数后手动调用upload()
|
||||||
|
## 2.2.6(2023-02-09)
|
||||||
|
修复多个文件同时选择时返回多次change回调的问题
|
||||||
|
## 2.2.5(2022-12-27)
|
||||||
|
1.修复多选文件时未能正常校验数量的问题;
|
||||||
|
2.app端与H5端支持单选或多选文件,通过count数量控制,超过1开启多选。
|
||||||
|
## 2.2.4(2022-12-27)
|
||||||
|
1.修复多选文件时未能正常校验数量的问题;
|
||||||
|
2.app端修复多选只取到第一个文件的问题。
|
||||||
|
## 2.2.3(2022-12-06)
|
||||||
|
修复手动调用show()导致count失效的问题
|
||||||
|
## 2.2.2(2022-12-01)
|
||||||
|
Vue3自行修改兼容
|
||||||
|
## 2.2.1(2022-10-19)
|
||||||
|
修复childId警告提示
|
||||||
|
## 2.2.0(2022-10-10)
|
||||||
|
更新app端webview窗口参数clidId,默认值添加时间戳保证唯一性
|
||||||
|
## 2.1.9(2022-07-13)
|
||||||
|
[修复] app端选择文件后初始化设置的文件列表被清空问题
|
||||||
|
## 2.1.8(2022-07-13)
|
||||||
|
[新增] ref方法初始化文件列表,用于已提交后再次编辑时需带入已上传文件:setFiles(files),可传入数组或Map对象,传入格式请与组件选择返回格式保持一致,且name为必须属性。
|
||||||
|
## 2.1.7(2022-07-12)
|
||||||
|
修复ios端偶现创建webview初始化参数未生效的问题
|
||||||
|
## 2.1.6(2022-07-11)
|
||||||
|
[修复]:修复上个版本更新导致nvue窗口组件不能选择文件的问题;
|
||||||
|
[新增]:
|
||||||
|
1.应群友建议(填写禁止格式太多)格式限制formats由原来填写禁止选择的格式改为填写允许被选择的格式;
|
||||||
|
2.应群友建议(增加上传结束回调事件),上传结束回调事件@uploadEnd
|
||||||
|
3.如能帮到你请留下你的免费好评,组件使用过程中有问题可以加QQ群交流,至于Map对象怎么使用这类前端基础问题请自行百度
|
||||||
|
## 2.1.5(2022-07-01)
|
||||||
|
app端组件销毁时添加自动销毁webview功能,避免v-if销毁组件的情况控件还能被点击的问题
|
||||||
|
## 2.1.4(2022-07-01)
|
||||||
|
修复小程序端回显问题
|
||||||
|
## 2.1.3(2022-06-30)
|
||||||
|
回调事件返回参数新增path字段(文件临时地址),用于回显
|
||||||
|
## 2.1.2(2022-06-16)
|
||||||
|
修复APP端Tabbar窗口无法选择文件的问题
|
||||||
|
## 2.1.1(2022-06-16)
|
||||||
|
优化:
|
||||||
|
1.组件优化为允许在v-if中使用;
|
||||||
|
2.允许option直接在data赋值,不再强制在onRead中初始化;
|
||||||
|
## 2.1.0(2022-06-13)
|
||||||
|
h5 pc端更改为单次可多选
|
||||||
|
## 2.0.9(2022-06-10)
|
||||||
|
更新演示内容,部分同学不知道怎么获取服务端返回的数据
|
||||||
|
## 2.0.8(2022-06-09)
|
||||||
|
优化动态更新上传参数函数,具体查看下方说明:动态更新参数演示
|
||||||
|
## 2.0.7(2022-06-07)
|
||||||
|
新增wxFileType属性,用于小程序端选择附件时可选文件类型
|
||||||
|
## 2.0.6(2022-06-07)
|
||||||
|
修复小程序端真机选择文件提示失败的问题
|
||||||
|
## 2.0.5(2022-06-02)
|
||||||
|
优化小程序端调用hide()后未阻止触发文件选择问题
|
||||||
|
## 2.0.4(2022-06-01)
|
||||||
|
优化APP端选择器初始定位
|
||||||
|
## 2.0.3(2022-05-31)
|
||||||
|
修复nvue窗口选择文件报错问题
|
||||||
|
## 2.0.2(2022-05-20)
|
||||||
|
修复ios端opiton设置过早未传入webview导致不自动上传问题
|
||||||
|
## 2.0.1(2022-05-19)
|
||||||
|
修复APP端子窗口点击选择文件不响应问题
|
||||||
|
## 2.0.0(2022-05-18)
|
||||||
|
此次组件更新至2.0版本,与1.0版本使用上略有差异,已使用1.0的同学请自行斟酌是否需要升级!
|
||||||
|
部分差异:
|
||||||
|
一、 2.0新增异步触发上传功能;
|
||||||
|
二、2.0新增文件批量上传功能;
|
||||||
|
三、2.0优化option,剔除属性,只保留上传接口所需字段,且允许异步更改option的值;
|
||||||
|
四、组件增加size(文件大小限制)、count(文件个数限制)、formats(文件后缀限制)、accept(文件类型限制)、instantly(是否立即自动上传)、debug(日志打印)等属性;
|
||||||
|
五、回调事件取消input事件、callback事件,新增change事件和progress事件;
|
||||||
|
六、ref事件新增upload事件、clear事件;
|
||||||
|
七、优化组件代码,show和hide函数改为显示隐藏,不再重复开关webview;
|
||||||
|
|
||||||
|
## 1.2.3(2022-03-22)
|
||||||
|
修复Demo里传入待完善功能[手动上传属性manual=true]导致不自动上传的问题,手动提交上传待下个版本更新
|
||||||
|
## 1.2.2(2022-02-21)
|
||||||
|
修复上版本APP优化导致H5和小程序端不自动初始化的问题,此次更新仅修复此问题。异步提交功能下个版本更新~
|
||||||
|
## 1.2.1(2022-01-25)
|
||||||
|
QQ1群已满,已开放2群:469580165
|
||||||
|
## 1.2.0(2021-12-09)
|
||||||
|
优化APP端页面中DOM重排后每次需要重新定位的问题
|
||||||
|
## 1.1.1(2021-12-09)
|
||||||
|
优化,与上版本使用方式有改变,请检查后确认是否需要更新,create更名为show, close更名为hide,取消初始化时手动create, 传参方式改为props=>option
|
||||||
|
## 1.1.0(2021-12-09)
|
||||||
|
新增refresh方法,用于DOM发生重排时重新定位控件(APP端)
|
||||||
|
## 1.0.9(2021-07-15)
|
||||||
|
修复上传进度未同步渲染,直接返回100%的BUG
|
||||||
|
## 1.0.8(2021-07-12)
|
||||||
|
修复H5端传入height和width未生效的bug
|
||||||
|
## 1.0.7(2021-07-07)
|
||||||
|
修复h5和小程序端上传完成callback未返回fileName字段问题
|
||||||
|
## 1.0.6(2021-07-07)
|
||||||
|
修复h5端提示信息debug
|
||||||
|
## 1.0.5(2021-06-29)
|
||||||
|
感谢小伙伴找出bug,上传成功回调success未置为true,已修复
|
||||||
|
## 1.0.4(2021-06-28)
|
||||||
|
新增兼容APP,H5,小程序手动关闭控件,关闭后不再弹出文件选择框,需要重新create再次开启
|
||||||
|
## 1.0.3(2021-06-28)
|
||||||
|
close增加条件编译,除app端外不需要close
|
||||||
|
## 1.0.2(2021-06-28)
|
||||||
|
1.修复页面滚动位置后再create控件导致控件位置不正确的问题;
|
||||||
|
2.修复nvue无法create控件;
|
||||||
|
3.示例项目新增nvue使用案例;
|
||||||
|
## 1.0.1(2021-06-28)
|
||||||
|
因为有的朋友不清楚app端切换tab时应该怎么处理webview,现重新上传一版示例项目,需要做tab切换的朋友可以导入示例项目查看
|
||||||
|
## 1.0.0(2021-06-25)
|
||||||
|
此插件为l-file插件中上传功能改版,更新内容为:
|
||||||
|
1. 按钮内嵌入页面,不再强制固定底部,可跟随页面滚动
|
||||||
|
2.无需再单独弹框点击上传,减去中间层
|
||||||
|
3.通过slot自定义按钮样式
|
||||||
@@ -0,0 +1,401 @@
|
|||||||
|
export class LsjFile {
|
||||||
|
constructor(data) {
|
||||||
|
this.dom = null;
|
||||||
|
// files.type = waiting(等待上传)|| loading(上传中)|| success(成功) || fail(失败)
|
||||||
|
this.files = new Map();
|
||||||
|
this.debug = data.debug || false;
|
||||||
|
this.id = data.id;
|
||||||
|
this.width = data.width;
|
||||||
|
this.height = data.height;
|
||||||
|
this.option = data.option;
|
||||||
|
this.instantly = data.instantly;
|
||||||
|
this.prohibited = data.prohibited;
|
||||||
|
this.onchange = data.onchange;
|
||||||
|
this.onprogress = data.onprogress;
|
||||||
|
this.uploadHandle = this._uploadHandle;
|
||||||
|
// #ifdef MP-WEIXIN
|
||||||
|
this.uploadHandle = this._uploadHandleWX;
|
||||||
|
// #endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建File节点
|
||||||
|
* @param {string}path webview地址
|
||||||
|
*/
|
||||||
|
create(path) {
|
||||||
|
if (!this.dom) {
|
||||||
|
// #ifdef H5
|
||||||
|
let dom = document.createElement('input');
|
||||||
|
dom.type = 'file'
|
||||||
|
dom.value = ''
|
||||||
|
dom.style.height = this.height
|
||||||
|
dom.style.width = this.width
|
||||||
|
dom.style.position = 'absolute'
|
||||||
|
dom.style.top = 0
|
||||||
|
dom.style.left = 0
|
||||||
|
dom.style.right = 0
|
||||||
|
dom.style.bottom = 0
|
||||||
|
dom.style.opacity = 0
|
||||||
|
dom.style.zIndex = 999
|
||||||
|
dom.accept = this.prohibited.accept;
|
||||||
|
if (this.prohibited.multiple) {
|
||||||
|
dom.multiple = 'multiple';
|
||||||
|
}
|
||||||
|
dom.onchange = event => {
|
||||||
|
for (let file of event.target.files) {
|
||||||
|
if (this.files.size >= this.prohibited.count) {
|
||||||
|
this.toast(`只允许上传${this.prohibited.count}个文件`);
|
||||||
|
this.dom.value = '';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
this.addFile(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._uploadAfter();
|
||||||
|
|
||||||
|
this.dom.value = '';
|
||||||
|
};
|
||||||
|
this.dom = dom;
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
let styles = {
|
||||||
|
top: '-200px',
|
||||||
|
left: 0,
|
||||||
|
width: '1px',
|
||||||
|
height: '200px',
|
||||||
|
background: 'transparent'
|
||||||
|
};
|
||||||
|
let extras = {
|
||||||
|
debug: this.debug,
|
||||||
|
instantly: this.instantly,
|
||||||
|
prohibited: this.prohibited,
|
||||||
|
}
|
||||||
|
this.dom = plus.webview.create(path, this.id, styles,extras);
|
||||||
|
this.setData(this.option);
|
||||||
|
this._overrideUrlLoading();
|
||||||
|
// #endif
|
||||||
|
return this.dom;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置上传参数
|
||||||
|
* @param {object|string}name 上传参数,支持a.b 和 a[b]
|
||||||
|
*/
|
||||||
|
setData() {
|
||||||
|
let [name,value = ''] = arguments;
|
||||||
|
if (typeof name === 'object') {
|
||||||
|
Object.assign(this.option,name);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this._setValue(this.option,name,value);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.debug&&console.log(JSON.stringify(this.option));
|
||||||
|
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
this.dom.evalJS(`vm.setData('${JSON.stringify(this.option)}')`);
|
||||||
|
// #endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上传
|
||||||
|
* @param {string}name 文件名称
|
||||||
|
*/
|
||||||
|
async upload(name='') {
|
||||||
|
if (!this.option.url) {
|
||||||
|
throw Error('未设置上传地址');
|
||||||
|
}
|
||||||
|
|
||||||
|
// #ifndef APP-PLUS
|
||||||
|
if (name && this.files.has(name)) {
|
||||||
|
await this.uploadHandle(this.files.get(name));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (let item of this.files.values()) {
|
||||||
|
if (item.type === 'waiting' || item.type === 'fail') {
|
||||||
|
await this.uploadHandle(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
this.dom&&this.dom.evalJS(`vm.upload('${name}')`);
|
||||||
|
// #endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// 选择文件change
|
||||||
|
addFile(file,isCallChange) {
|
||||||
|
|
||||||
|
let name = file.name;
|
||||||
|
this.debug&&console.log('文件名称',name,'大小',file.size);
|
||||||
|
|
||||||
|
if (file) {
|
||||||
|
// 限制文件格式
|
||||||
|
let path = '';
|
||||||
|
let suffix = name.substring(name.lastIndexOf(".")+1).toLowerCase();
|
||||||
|
let formats = this.prohibited.formats.toLowerCase();
|
||||||
|
|
||||||
|
|
||||||
|
// #ifndef MP-WEIXIN
|
||||||
|
path = URL.createObjectURL(file);
|
||||||
|
// #endif
|
||||||
|
// #ifdef MP-WEIXIN
|
||||||
|
path = file.path;
|
||||||
|
// #endif
|
||||||
|
if (formats&&!formats.includes(suffix)) {
|
||||||
|
this.toast(`不支持上传${suffix.toUpperCase()}格式文件`);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 限制文件大小
|
||||||
|
if (file.size > 1024 * 1024 * Math.abs(this.prohibited.size)) {
|
||||||
|
this.toast(`附件大小请勿超过${this.prohibited.size}M`)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this.files.set(file.name,{file,path,name: file.name,size: file.size,progress: 0,type: 'waiting'});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移除文件
|
||||||
|
* @param {string}name 不传name默认移除所有文件,传入name移除指定name的文件
|
||||||
|
*/
|
||||||
|
clear(name='') {
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
this.dom&&this.dom.evalJS(`vm.clear('${name}')`);
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
if (!name) {
|
||||||
|
this.files.clear();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.files.delete(name);
|
||||||
|
}
|
||||||
|
return this.onchange(this.files);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提示框
|
||||||
|
* @param {string}msg 轻提示内容
|
||||||
|
*/
|
||||||
|
toast(msg) {
|
||||||
|
uni.showToast({
|
||||||
|
title: msg,
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信小程序选择文件
|
||||||
|
* @param {number}count 可选择文件数量
|
||||||
|
*/
|
||||||
|
chooseMessageFile(type,count) {
|
||||||
|
wx.chooseMessageFile({
|
||||||
|
count: count,
|
||||||
|
type: type,
|
||||||
|
success: ({ tempFiles }) => {
|
||||||
|
for (let file of tempFiles) {
|
||||||
|
this.addFile(file);
|
||||||
|
}
|
||||||
|
this._uploadAfter();
|
||||||
|
},
|
||||||
|
fail: (e) => {
|
||||||
|
this.toast(`打开失败`);
|
||||||
|
console.log(e)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
_copyObject(obj) {
|
||||||
|
if (typeof obj !== "undefined") {
|
||||||
|
return JSON.parse(JSON.stringify(obj));
|
||||||
|
} else {
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自动根据字符串路径设置对象中的值 支持.和[]
|
||||||
|
* @param {Object} dataObj 数据源
|
||||||
|
* @param {String} name 支持a.b 和 a[b]
|
||||||
|
* @param {String} value 值
|
||||||
|
* setValue(dataObj, name, value);
|
||||||
|
*/
|
||||||
|
_setValue(dataObj, name, value) {
|
||||||
|
// 通过正则表达式 查找路径数据
|
||||||
|
let dataValue;
|
||||||
|
if (typeof value === "object") {
|
||||||
|
dataValue = this._copyObject(value);
|
||||||
|
} else {
|
||||||
|
dataValue = value;
|
||||||
|
}
|
||||||
|
let regExp = new RegExp("([\\w$]+)|\\[(:\\d)\\]", "g");
|
||||||
|
const patten = name.match(regExp);
|
||||||
|
// 遍历路径 逐级查找 最后一级用于直接赋值
|
||||||
|
for (let i = 0; i < patten.length - 1; i++) {
|
||||||
|
let keyName = patten[i];
|
||||||
|
if (typeof dataObj[keyName] !== "object") dataObj[keyName] = {};
|
||||||
|
dataObj = dataObj[keyName];
|
||||||
|
}
|
||||||
|
// 最后一级
|
||||||
|
dataObj[patten[patten.length - 1]] = dataValue;
|
||||||
|
this.debug&&console.log('参数更新后',JSON.stringify(this.option));
|
||||||
|
}
|
||||||
|
|
||||||
|
_uploadAfter() {
|
||||||
|
this.onchange(this.files);
|
||||||
|
setTimeout(()=>{
|
||||||
|
this.instantly&&this.upload();
|
||||||
|
},1000)
|
||||||
|
}
|
||||||
|
|
||||||
|
_overrideUrlLoading() {
|
||||||
|
this.dom.overrideUrlLoading({ mode: 'reject' }, e => {
|
||||||
|
let {retype,item,files,end} = this._getRequest(
|
||||||
|
e.url
|
||||||
|
);
|
||||||
|
let _this = this;
|
||||||
|
switch (retype) {
|
||||||
|
case 'updateOption':
|
||||||
|
this.dom.evalJS(`vm.setData('${JSON.stringify(_this.option)}')`);
|
||||||
|
break
|
||||||
|
case 'change':
|
||||||
|
try {
|
||||||
|
_this.files = new Map([..._this.files,...JSON.parse(unescape(files))]);
|
||||||
|
} catch (e) {
|
||||||
|
return console.error('出错了,请检查代码')
|
||||||
|
}
|
||||||
|
_this.onchange(_this.files);
|
||||||
|
break
|
||||||
|
case 'progress':
|
||||||
|
try {
|
||||||
|
item = JSON.parse(unescape(item));
|
||||||
|
} catch (e) {
|
||||||
|
return console.error('出错了,请检查代码')
|
||||||
|
}
|
||||||
|
_this._changeFilesItem(item,end);
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
_getRequest(url) {
|
||||||
|
let theRequest = new Object()
|
||||||
|
let index = url.indexOf('?')
|
||||||
|
if (index != -1) {
|
||||||
|
let str = url.substring(index + 1)
|
||||||
|
let strs = str.split('&')
|
||||||
|
for (let i = 0; i < strs.length; i++) {
|
||||||
|
theRequest[strs[i].split('=')[0]] = unescape(strs[i].split('=')[1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return theRequest
|
||||||
|
}
|
||||||
|
|
||||||
|
_changeFilesItem(item,end=false) {
|
||||||
|
this.debug&&console.log('onprogress',JSON.stringify(item));
|
||||||
|
this.onprogress(item,end);
|
||||||
|
this.files.set(item.name,item);
|
||||||
|
}
|
||||||
|
|
||||||
|
_uploadHandle(item) {
|
||||||
|
item.type = 'loading';
|
||||||
|
delete item.responseText;
|
||||||
|
return new Promise((resolve,reject)=>{
|
||||||
|
this.debug&&console.log('option',JSON.stringify(this.option));
|
||||||
|
let {url,name,method='POST',header,formData} = this.option;
|
||||||
|
let form = new FormData();
|
||||||
|
for (let keys in formData) {
|
||||||
|
form.append(keys, formData[keys])
|
||||||
|
}
|
||||||
|
form.append(name, item.file);
|
||||||
|
let xmlRequest = new XMLHttpRequest();
|
||||||
|
xmlRequest.open(method, url, true);
|
||||||
|
for (let keys in header) {
|
||||||
|
xmlRequest.setRequestHeader(keys, header[keys])
|
||||||
|
}
|
||||||
|
|
||||||
|
xmlRequest.upload.addEventListener(
|
||||||
|
'progress',
|
||||||
|
event => {
|
||||||
|
if (event.lengthComputable) {
|
||||||
|
let progress = Math.ceil((event.loaded * 100) / event.total)
|
||||||
|
if (progress <= 100) {
|
||||||
|
item.progress = progress;
|
||||||
|
this._changeFilesItem(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
xmlRequest.ontimeout = () => {
|
||||||
|
console.error('请求超时')
|
||||||
|
item.type = 'fail';
|
||||||
|
this._changeFilesItem(item,true);
|
||||||
|
return resolve(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
xmlRequest.onreadystatechange = ev => {
|
||||||
|
if (xmlRequest.readyState == 4) {
|
||||||
|
if (xmlRequest.status == 200) {
|
||||||
|
this.debug&&console.log('上传完成:' + xmlRequest.responseText)
|
||||||
|
item['responseText'] = xmlRequest.responseText;
|
||||||
|
item.type = 'success';
|
||||||
|
this._changeFilesItem(item,true);
|
||||||
|
return resolve(true);
|
||||||
|
} else if (xmlRequest.status == 0) {
|
||||||
|
console.error('status = 0 :请检查请求头Content-Type与服务端是否匹配,服务端已正确开启跨域,并且nginx未拦截阻止请求')
|
||||||
|
}
|
||||||
|
console.error('--ERROR--:status = ' + xmlRequest.status)
|
||||||
|
item.type = 'fail';
|
||||||
|
this._changeFilesItem(item,true);
|
||||||
|
return resolve(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xmlRequest.send(form)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_uploadHandleWX(item) {
|
||||||
|
item.type = 'loading';
|
||||||
|
delete item.responseText;
|
||||||
|
return new Promise((resolve,reject)=>{
|
||||||
|
this.debug&&console.log('option',JSON.stringify(this.option));
|
||||||
|
let form = {filePath: item.file.path,...this.option };
|
||||||
|
form['fail'] = ({ errMsg = '' }) => {
|
||||||
|
console.error('--ERROR--:' + errMsg)
|
||||||
|
item.type = 'fail';
|
||||||
|
this._changeFilesItem(item,true);
|
||||||
|
return resolve(false);
|
||||||
|
}
|
||||||
|
form['success'] = res => {
|
||||||
|
if (res.statusCode == 200) {
|
||||||
|
this.debug&&console.log('上传完成,微信端返回不一定是字符串,根据接口返回格式判断是否需要JSON.parse:' + res.data)
|
||||||
|
item['responseText'] = res.data;
|
||||||
|
item.type = 'success';
|
||||||
|
this._changeFilesItem(item,true);
|
||||||
|
return resolve(true);
|
||||||
|
}
|
||||||
|
item.type = 'fail';
|
||||||
|
this._changeFilesItem(item,true);
|
||||||
|
return resolve(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
let xmlRequest = uni.uploadFile(form);
|
||||||
|
xmlRequest.onProgressUpdate(({ progress = 0 }) => {
|
||||||
|
if (progress <= 100) {
|
||||||
|
item.progress = progress;
|
||||||
|
this._changeFilesItem(item);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,321 @@
|
|||||||
|
<template>
|
||||||
|
<view class="lsj-file" :style="[getStyles]">
|
||||||
|
<view ref="lsj" class="hFile" :style="[getStyles]" @click="onClick">
|
||||||
|
<slot><view class="defview" :style="[getStyles]">附件上传</view></slot>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// 查看文档:https://ext.dcloud.net.cn/plugin?id=5459
|
||||||
|
import {LsjFile} from './LsjFile.js'
|
||||||
|
export default {
|
||||||
|
name: 'Lsj-upload',
|
||||||
|
props: {
|
||||||
|
// 打印日志
|
||||||
|
debug: {type: Boolean,default: false},
|
||||||
|
// 自动上传
|
||||||
|
instantly: {type: Boolean,default: false},
|
||||||
|
// 上传接口参数设置
|
||||||
|
option: {type: Object,default: ()=>{}},
|
||||||
|
// 文件大小上限
|
||||||
|
size: { type: Number, default: 10 },
|
||||||
|
// 文件选择个数上限,超出后不触发点击
|
||||||
|
count: { type: Number, default: 9 },
|
||||||
|
// 是否允许多选文件
|
||||||
|
multiple: {type:Boolean, default: true},
|
||||||
|
// 允许上传的文件格式(多个以逗号隔开)
|
||||||
|
formats: { type: String, default:''},
|
||||||
|
// input file选择限制
|
||||||
|
accept: {type: String,default: ''},
|
||||||
|
// 微信选择文件类型
|
||||||
|
//all=从所有文件选择,
|
||||||
|
//video=只能选择视频文件,
|
||||||
|
//image=只能选择图片文件,
|
||||||
|
//file=可以选择除了图片和视频之外的其它的文件
|
||||||
|
wxFileType: { type: String, default: 'all' },
|
||||||
|
// webviewID需唯一,不同窗口也不要同Id
|
||||||
|
childId: { type: String, default: 'lsjUpload' },
|
||||||
|
// 文件选择触发面宽度
|
||||||
|
width: { type: String, default: '100%' },
|
||||||
|
// 文件选择触发面高度
|
||||||
|
height: { type: String, default: '80rpx' },
|
||||||
|
|
||||||
|
// top,left,bottom,right仅position=absolute时才需要传入
|
||||||
|
top: { type: [String, Number], default: '' },
|
||||||
|
left: { type: [String, Number], default: '' },
|
||||||
|
bottom: { type: [String, Number], default: '' },
|
||||||
|
right: { type: [String, Number], default: '' },
|
||||||
|
// nvue不支持跟随窗口滚动
|
||||||
|
position: {
|
||||||
|
type: String,
|
||||||
|
// #ifdef APP-NVUE
|
||||||
|
default: 'absolute',
|
||||||
|
// #endif
|
||||||
|
// #ifndef APP-NVUE
|
||||||
|
default: 'static',
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
option(v) {
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
this.lsjFile&&this.show();
|
||||||
|
// #endif
|
||||||
|
}
|
||||||
|
},
|
||||||
|
updated() {
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
if (this.isShow) {
|
||||||
|
this.lsjFile&&this.show();
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getStyles() {
|
||||||
|
let styles = {
|
||||||
|
width: this.width,
|
||||||
|
height: this.height
|
||||||
|
}
|
||||||
|
if (this.position == 'absolute') {
|
||||||
|
styles['top'] = this.top
|
||||||
|
styles['bottom'] = this.bottom
|
||||||
|
styles['left'] = this.left
|
||||||
|
styles['right'] = this.right
|
||||||
|
styles['position'] = 'fixed'
|
||||||
|
}
|
||||||
|
|
||||||
|
return styles
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this._size = 0;
|
||||||
|
let WEBID = this.childId + new Date().getTime();
|
||||||
|
this.lsjFile = new LsjFile({
|
||||||
|
id: WEBID,
|
||||||
|
debug: this.debug,
|
||||||
|
width: this.width,
|
||||||
|
height: this.height,
|
||||||
|
option: this.option,
|
||||||
|
instantly: this.instantly,
|
||||||
|
// 限制条件
|
||||||
|
prohibited: {
|
||||||
|
// 大小
|
||||||
|
size: this.size,
|
||||||
|
// 允许上传的格式
|
||||||
|
formats: this.formats,
|
||||||
|
// 限制选择的格式
|
||||||
|
accept: this.accept,
|
||||||
|
count: this.count,
|
||||||
|
// 是否多选
|
||||||
|
multiple: this.multiple,
|
||||||
|
},
|
||||||
|
onchange: this.onchange,
|
||||||
|
onprogress: this.onprogress,
|
||||||
|
});
|
||||||
|
this.create();
|
||||||
|
// 需判断是否当前页显示
|
||||||
|
uni.$on('lsjShow',this.show);
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
uni.$off('lsjShow',this.show);
|
||||||
|
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
this.lsjFile.dom.close();
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
setFiles(array) {
|
||||||
|
if (array instanceof Map) {
|
||||||
|
for (let [key, item] of array) {
|
||||||
|
item['progress'] = 100;
|
||||||
|
item['type'] = 'success';
|
||||||
|
this.lsjFile.files.set(key,item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (Array.isArray(array)) {
|
||||||
|
array.forEach(item=>{
|
||||||
|
if (item.name) {
|
||||||
|
item['progress'] = 100;
|
||||||
|
item['type'] = 'success';
|
||||||
|
this.lsjFile.files.set(item.name,item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.onchange(this.lsjFile.files);
|
||||||
|
},
|
||||||
|
setData() {
|
||||||
|
this.lsjFile&&this.lsjFile.setData(...arguments);
|
||||||
|
},
|
||||||
|
getDomStyles(callback) {
|
||||||
|
// #ifndef APP-NVUE
|
||||||
|
let view = uni
|
||||||
|
.createSelectorQuery()
|
||||||
|
.in(this)
|
||||||
|
.select('.lsj-file')
|
||||||
|
view.fields(
|
||||||
|
{
|
||||||
|
size: true,
|
||||||
|
rect: true
|
||||||
|
},
|
||||||
|
({ height, width, top, left, right, bottom }) => {
|
||||||
|
uni.createSelectorQuery()
|
||||||
|
.selectViewport()
|
||||||
|
.scrollOffset(({ scrollTop }) => {
|
||||||
|
return callback({
|
||||||
|
top: parseInt(top) + parseInt(scrollTop) + 'px',
|
||||||
|
left: parseInt(left) + 'px',
|
||||||
|
width: parseInt(width) + 'px',
|
||||||
|
height: parseInt(height) + 'px'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.exec()
|
||||||
|
}
|
||||||
|
).exec()
|
||||||
|
// #endif
|
||||||
|
// #ifdef APP-NVUE
|
||||||
|
const dom = weex.requireModule('dom')
|
||||||
|
dom.getComponentRect(this.$refs.lsj, ({ size: { height, width, top, left, right, bottom } }) => {
|
||||||
|
return callback({
|
||||||
|
top: parseInt(top) + 'px',
|
||||||
|
left: parseInt(left) + 'px',
|
||||||
|
width: parseInt(width) + 'px',
|
||||||
|
height: parseInt(height) + 'px',
|
||||||
|
right: parseInt(right) + 'px',
|
||||||
|
bottom: parseInt(bottom) + 'px'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
show() {
|
||||||
|
if (this._size && (this._size >= this.count)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.isShow = true;
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
this.lsjFile&&this.getDomStyles(styles => {
|
||||||
|
this.lsjFile.dom.setStyle(styles)
|
||||||
|
});
|
||||||
|
// #endif
|
||||||
|
// #ifdef H5
|
||||||
|
this.lsjFile.dom.style.display = 'inline'
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
hide() {
|
||||||
|
this.isShow = false;
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
this.lsjFile&&this.lsjFile.dom.setStyle({
|
||||||
|
top: '-100px',
|
||||||
|
left:'0px',
|
||||||
|
width: '1px',
|
||||||
|
height: '100px',
|
||||||
|
});
|
||||||
|
// #endif
|
||||||
|
// #ifdef H5
|
||||||
|
this.lsjFile.dom.style.display = 'none'
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 手动提交上传
|
||||||
|
* @param {string}name 文件名称,不传则上传所有type等于waiting和fail的文件
|
||||||
|
*/
|
||||||
|
upload(name) {
|
||||||
|
this.lsjFile&&this.lsjFile.upload(name);
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @returns {Map} 已选择的文件Map集
|
||||||
|
*/
|
||||||
|
onchange(files) {
|
||||||
|
this.$emit('change',files);
|
||||||
|
this._size = files.size;
|
||||||
|
return files.size >= this.count ? this.hide() : this.show();
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @returns {object} 当前上传中的对象
|
||||||
|
*/
|
||||||
|
onprogress(item,end=false) {
|
||||||
|
this.$emit('progress',item);
|
||||||
|
if (end) {
|
||||||
|
setTimeout(()=>{
|
||||||
|
this.$emit('uploadEnd',item);
|
||||||
|
},0);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 移除组件内缓存的某条数据
|
||||||
|
* @param {string}name 文件名称,不指定默认清除所有文件
|
||||||
|
*/
|
||||||
|
clear(name) {
|
||||||
|
this.lsjFile.clear(name);
|
||||||
|
},
|
||||||
|
// 创建选择器
|
||||||
|
create() {
|
||||||
|
// 若iOS端服务端处理不了跨域就将hybrid目录内的html放到服务端去,并将此处path改成服务器上的地址
|
||||||
|
let path = '/uni_modules/lsj-upload/hybrid/html/uploadFile.html';
|
||||||
|
let dom = this.lsjFile.create(path);
|
||||||
|
// #ifdef H5
|
||||||
|
this.$refs.lsj.$el.appendChild(dom);
|
||||||
|
// #endif
|
||||||
|
// #ifndef APP-PLUS
|
||||||
|
this.show();
|
||||||
|
// #endif
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
dom.setStyle({position: this.position});
|
||||||
|
dom.loadURL(path);
|
||||||
|
setTimeout(()=>{
|
||||||
|
// #ifdef APP-NVUE
|
||||||
|
plus.webview.currentWebview().append(dom);
|
||||||
|
// #endif
|
||||||
|
// #ifndef APP-NVUE
|
||||||
|
this.$root.$scope.$getAppWebview().append(dom);
|
||||||
|
// #endif
|
||||||
|
this.show();
|
||||||
|
},300)
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
// 点击选择附件
|
||||||
|
onClick() {
|
||||||
|
if (this._size >= this.count) {
|
||||||
|
this.toast(`只允许上传${this.count}个文件`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// #ifdef MP-WEIXIN
|
||||||
|
if (!this.isShow) {return;}
|
||||||
|
let count = this.count - this._size;
|
||||||
|
this.lsjFile.chooseMessageFile(this.wxFileType,count);
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
toast(msg) {
|
||||||
|
uni.showToast({
|
||||||
|
title: msg,
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.lsj-file {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.defview {
|
||||||
|
background-color: #007aff;
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
.hFile {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,198 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-cn">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title class="title">[文件管理器]</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
|
||||||
|
<style type="text/css">
|
||||||
|
.content {background: transparent;}
|
||||||
|
.btn {position: relative;top: 0;left: 0;bottom: 0;right: 0;}
|
||||||
|
.btn .file {position: fixed;z-index: 93;left: 0;right: 0;top: 0;bottom: 0;width: 100%;opacity: 0;}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="content" class="content">
|
||||||
|
<div class="btn">
|
||||||
|
<input :multiple="multiple" @change="onChange" :accept="accept" ref="file" class="file" type="file" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="js/vue.min.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
let _this;
|
||||||
|
var vm = new Vue({
|
||||||
|
el: '#content',
|
||||||
|
data: {
|
||||||
|
accept: '',
|
||||||
|
multiple: true,
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
console.log('加载webview');
|
||||||
|
_this = this;
|
||||||
|
this.files = new Map();
|
||||||
|
document.addEventListener('plusready', (e)=>{
|
||||||
|
let {debug,instantly,prohibited} = plus.webview.currentWebview();
|
||||||
|
this.debug = debug;
|
||||||
|
this.instantly = instantly;
|
||||||
|
this.prohibited = prohibited;
|
||||||
|
this.accept = prohibited.accept;
|
||||||
|
if (prohibited.multiple === 'false') {
|
||||||
|
prohibited.multiple = false;
|
||||||
|
}
|
||||||
|
this.multiple = prohibited.multiple;
|
||||||
|
location.href = 'callback?retype=updateOption';
|
||||||
|
}, false);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
toast(msg) {
|
||||||
|
plus.nativeUI.toast(msg);
|
||||||
|
},
|
||||||
|
clear(name) {
|
||||||
|
if (!name) {
|
||||||
|
this.files.clear();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.files.delete(name);
|
||||||
|
},
|
||||||
|
setData(option='{}') {
|
||||||
|
this.debug&&console.log('更新参数:'+option);
|
||||||
|
try{
|
||||||
|
_this.option = JSON.parse(option);
|
||||||
|
}catch(e){
|
||||||
|
console.error('参数设置错误')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async upload(name=''){
|
||||||
|
if (name && this.files.has(name)) {
|
||||||
|
await this.createUpload(this.files.get(name));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (let item of this.files.values()) {
|
||||||
|
if (item.type === 'waiting' || item.type === 'fail') {
|
||||||
|
await this.createUpload(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onChange(e) {
|
||||||
|
let fileDom = this.$refs.file;
|
||||||
|
for (let file of fileDom.files) {
|
||||||
|
if (this.files.size >= this.prohibited.count) {
|
||||||
|
this.toast(`只允许上传${this.prohibited.count}个文件`);
|
||||||
|
fileDom.value = '';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
this.addFile(file);
|
||||||
|
}
|
||||||
|
this.uploadAfter();
|
||||||
|
fileDom.value = '';
|
||||||
|
},
|
||||||
|
addFile(file) {
|
||||||
|
if (file) {
|
||||||
|
let name = file.name;
|
||||||
|
this.debug&&console.log('文件名称',name,'大小',file.size);
|
||||||
|
// 限制文件格式
|
||||||
|
let suffix = name.substring(name.lastIndexOf(".")+1).toLowerCase();
|
||||||
|
let formats = this.prohibited.formats.toLowerCase();
|
||||||
|
if (formats&&!formats.includes(suffix)) {
|
||||||
|
this.toast(`不支持上传${suffix.toUpperCase()}格式文件`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 限制文件大小
|
||||||
|
if (file.size > 1024 * 1024 * Math.abs(this.prohibited.size)) {
|
||||||
|
this.toast(`附件大小请勿超过${this.prohibited.size}M`)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// let itemBlob = new Blob([file]);
|
||||||
|
let path = URL.createObjectURL(file);
|
||||||
|
this.files.set(file.name,{file,path,name: file.name,size: file.size,progress: 0,type: 'waiting'});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @returns {Map} 已选择的文件Map集
|
||||||
|
*/
|
||||||
|
callChange() {
|
||||||
|
location.href = 'callback?retype=change&files=' + escape(JSON.stringify([...this.files]));
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* @returns {object} 正在处理的当前对象
|
||||||
|
*/
|
||||||
|
changeFilesItem(item,end='') {
|
||||||
|
this.files.set(item.name,item);
|
||||||
|
location.href = 'callback?retype=progress&end='+ end +'&item=' + escape(JSON.stringify(item));
|
||||||
|
},
|
||||||
|
uploadAfter() {
|
||||||
|
this.callChange();
|
||||||
|
setTimeout(()=>{
|
||||||
|
this.instantly&&this.upload();
|
||||||
|
},1000)
|
||||||
|
},
|
||||||
|
createUpload(item) {
|
||||||
|
this.debug&&console.log('准备上传,option=:'+JSON.stringify(this.option));
|
||||||
|
item.type = 'loading';
|
||||||
|
delete item.responseText;
|
||||||
|
return new Promise((resolve,reject)=>{
|
||||||
|
let {url,name,method='POST',header={},formData={}} = this.option;
|
||||||
|
let form = new FormData();
|
||||||
|
for (let keys in formData) {
|
||||||
|
form.append(keys, formData[keys])
|
||||||
|
}
|
||||||
|
form.append(name, item.file);
|
||||||
|
let xmlRequest = new XMLHttpRequest();
|
||||||
|
xmlRequest.open(method, url, true);
|
||||||
|
for (let keys in header) {
|
||||||
|
xmlRequest.setRequestHeader(keys, header[keys])
|
||||||
|
}
|
||||||
|
xmlRequest.upload.addEventListener(
|
||||||
|
'progress',
|
||||||
|
event => {
|
||||||
|
if (event.lengthComputable) {
|
||||||
|
let progress = Math.ceil((event.loaded * 100) / event.total)
|
||||||
|
if (progress <= 100) {
|
||||||
|
item.progress = progress;
|
||||||
|
this.changeFilesItem(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
xmlRequest.ontimeout = () => {
|
||||||
|
console.error('请求超时')
|
||||||
|
item.type = 'fail';
|
||||||
|
this.changeFilesItem(item,true);
|
||||||
|
return resolve(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
xmlRequest.onreadystatechange = ev => {
|
||||||
|
if (xmlRequest.readyState == 4) {
|
||||||
|
this.debug && console.log('接口是否支持跨域',xmlRequest.withCredentials);
|
||||||
|
if (xmlRequest.status == 200) {
|
||||||
|
this.debug && console.log('上传完成:' + xmlRequest.responseText)
|
||||||
|
item['responseText'] = xmlRequest.responseText;
|
||||||
|
item.type = 'success';
|
||||||
|
this.changeFilesItem(item,true);
|
||||||
|
return resolve(true);
|
||||||
|
} else if (xmlRequest.status == 0) {
|
||||||
|
console.error('status = 0 :请检查请求头Content-Type与服务端是否匹配,服务端已正确开启跨域,并且nginx未拦截阻止请求')
|
||||||
|
}
|
||||||
|
console.error('--ERROR--:status = ' + xmlRequest.status)
|
||||||
|
item.type = 'fail';
|
||||||
|
this.changeFilesItem(item,true);
|
||||||
|
return resolve(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xmlRequest.send(form)
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
{
|
||||||
|
"id": "lsj-upload",
|
||||||
|
"displayName": "全文件上传选择非原生2.0版",
|
||||||
|
"version": "2.2.9",
|
||||||
|
"description": "文件选择上传-支持APP-H5网页-微信小程序",
|
||||||
|
"keywords": [
|
||||||
|
"附件",
|
||||||
|
"file",
|
||||||
|
"upload",
|
||||||
|
"上传",
|
||||||
|
"文件管理器"
|
||||||
|
],
|
||||||
|
"repository": "",
|
||||||
|
"engines": {
|
||||||
|
},
|
||||||
|
"dcloudext": {
|
||||||
|
"sale": {
|
||||||
|
"regular": {
|
||||||
|
"price": "0.00"
|
||||||
|
},
|
||||||
|
"sourcecode": {
|
||||||
|
"price": "0.00"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"qq": ""
|
||||||
|
},
|
||||||
|
"declaration": {
|
||||||
|
"ads": "无",
|
||||||
|
"data": "无",
|
||||||
|
"permissions": "无"
|
||||||
|
},
|
||||||
|
"npmurl": "",
|
||||||
|
"type": "component-vue"
|
||||||
|
},
|
||||||
|
"uni_modules": {
|
||||||
|
"platforms": {
|
||||||
|
"cloud": {
|
||||||
|
"tcb": "y",
|
||||||
|
"aliyun": "y"
|
||||||
|
},
|
||||||
|
"client": {
|
||||||
|
"App": {
|
||||||
|
"app-vue": "y",
|
||||||
|
"app-nvue": "y"
|
||||||
|
},
|
||||||
|
"H5-mobile": {
|
||||||
|
"Safari": "y",
|
||||||
|
"Android Browser": "y",
|
||||||
|
"微信浏览器(Android)": "y",
|
||||||
|
"QQ浏览器(Android)": "y"
|
||||||
|
},
|
||||||
|
"H5-pc": {
|
||||||
|
"Chrome": "y",
|
||||||
|
"IE": "y",
|
||||||
|
"Edge": "y",
|
||||||
|
"Firefox": "y",
|
||||||
|
"Safari": "y"
|
||||||
|
},
|
||||||
|
"小程序": {
|
||||||
|
"微信": "y",
|
||||||
|
"阿里": "u",
|
||||||
|
"百度": "u",
|
||||||
|
"字节跳动": "u",
|
||||||
|
"QQ": "u"
|
||||||
|
},
|
||||||
|
"快应用": {
|
||||||
|
"华为": "y",
|
||||||
|
"联盟": "y"
|
||||||
|
},
|
||||||
|
"Vue": {
|
||||||
|
"vue2": "y",
|
||||||
|
"vue3": "y"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,353 @@
|
|||||||
|
# lsj-upload
|
||||||
|
|
||||||
|
### 插件地址:https://ext.dcloud.net.cn/plugin?id=5459
|
||||||
|
|
||||||
|
### 不清楚使用方式可点击右侧导入示例项目运行完整示例
|
||||||
|
### 此次更新2.0与1.0使用方式略有差异,已使用1.0的同学自行斟酌是否更新到2.0版本!!!
|
||||||
|
|
||||||
|
使用插件有任何问题欢迎加入QQ讨论群:
|
||||||
|
- 群1:701468256(已满)
|
||||||
|
- 群2:469580165(已满)
|
||||||
|
- 群3:667530868
|
||||||
|
|
||||||
|
若能帮到你请高抬贵手点亮5颗星~
|
||||||
|
------
|
||||||
|
## 重要提示
|
||||||
|
### 组件是窗口级滚动,不要在scroll-view内使用!!
|
||||||
|
### 组件是窗口级滚动,不要在scroll-view内使用!!
|
||||||
|
### 组件是窗口级滚动,不要在scroll-view内使用!!
|
||||||
|
|
||||||
|
### 控件的height高度应与slot自定义内容高度保持一致
|
||||||
|
### nvue窗口只能使用固定模式position=absolute
|
||||||
|
### show() 当DOM重排后在this.$nextTick内调用show(),控件定位会更加准确
|
||||||
|
### hide() APP端webview层级比view高,如不希望触发点击时,应调用hide隐藏控件,反之调用show
|
||||||
|
### 若iOS端跨域服务端同学实在配置不好,可把hybrid下html目录放到服务器去,同源则不存在跨域问题。
|
||||||
|
### 小程序端因hybrid不能使用本地HTML,所以插件提供的是从微信消息列表拉取文件并选择,请知悉。
|
||||||
|
### file对象不是object对象,也不能转json字符串,如果你打印file那就是{},可以打印file.name和file.size。
|
||||||
|
### 返回的path是个blob类型,仅供用于文件回显,插件已内置好上传函数,调用上传会自动提交待上传文件,若非要自己拿path去搞上传那你自己处理。
|
||||||
|
------
|
||||||
|
|
||||||
|
## 使用说明
|
||||||
|
| 属性 | 是否必填 | 值类型 | 默认值 | 说明 |
|
||||||
|
| --------- | -------- | -----: | --: | :------------:|
|
||||||
|
| width | 否 | String |100% | 容器宽度 |
|
||||||
|
| height | 是 | String |80rpx | 容器高度 |
|
||||||
|
| debug | 否 | Boolean |false | 打印调试日志 |
|
||||||
|
| option | 是 | Object |- | [文件上传接口相关参数](#p1)|
|
||||||
|
| instantly | 否 | Boolean |false | true=自动上传 |
|
||||||
|
| count | 否 | Number |10 | 附件选择上限(个)|
|
||||||
|
| size | 否 | Number |10 | 附件大小上限(M)|
|
||||||
|
| wxFileType | 否 | String |all | 微信小程序文件选择器格式限制(all=从所有文件选择,video=只能选择视频文件,image=只能选择图片文件,file=可以选择除了图片和视频之外的其它的文件)|
|
||||||
|
| accept | 否 | String |- | 文件选择器input file格式限制(部分机型不兼容,建议使用formats)|
|
||||||
|
| formats | 否 | String |- | 限制允许上传的格式,空串=不限制,默认为空,多个格式以逗号隔开,例如png,jpg,pdf|
|
||||||
|
| childId | 否 | String |lsjUpload| 控件的id(仅APP有效,应用内每个控件命名一个唯一Id,不同窗口也不要同名Id)|
|
||||||
|
| position | 否 | String |static | 控件的定位模式(static=控件随页面滚动;absolute=控件在页面中绝对定位,不随窗口内容滚动)|
|
||||||
|
| top,left,right,bottom | 否 | [Number,String] |0 | 设置控件绝对位置,position=absolute时有效|
|
||||||
|
| @change | 否 | Function |Map | 选择文件触发,返回所有已选择文件Map集合|
|
||||||
|
| @progress | 否 | Function |Object | 上传过程中发生状态变化的文件对象,需通过set更新至Map集合|
|
||||||
|
| @uploadEnd| 否 | Function |Object | 上传结束回调,返回参数与progress一致|
|
||||||
|
|
||||||
|
## <a id="p1">option说明</a>
|
||||||
|
|参数 | 是否必填 | 说明|
|
||||||
|
|---- | ---- | :--: |
|
||||||
|
|url | 是 | 上传接口地址|
|
||||||
|
|name| 否 |上传接口文件key,默认为file|
|
||||||
|
|header| 否 |上传接口请求头|
|
||||||
|
|formData| 否 |上传接口额外参数|
|
||||||
|
|
||||||
|
## ref调用
|
||||||
|
|作用 | 方法名| 传入参数| 说明|
|
||||||
|
|---- | --------- | -------- | :--: |
|
||||||
|
|显示控件| show|-| 控件显示状态下可触发点击|
|
||||||
|
|隐藏控件| hide|-| 控件隐藏状态下不触发点击|
|
||||||
|
|动态设置文件列表| setFiles|[Array,Map] files| 传入格式请与组件选择返回格式保持一致,且name为必须属性,可查看下方演示|
|
||||||
|
|动态更新参数| setData|[String] name,[any] value| name支持a.b 和 a[b],可查看下方演示|
|
||||||
|
|移除选择的文件| clear|[String] name| 不传参数清空所有文件,传入文件name时删除该name的文件|
|
||||||
|
|手动上传| upload|[String] name| 不传参数默认依次上传所有type=waiting的文件,传入文件name时不关心type是否为waiting,单独上传指定name的文件|
|
||||||
|
|
||||||
|
## progress返回对象字段说明
|
||||||
|
|字段 | 说明|
|
||||||
|
|---- | :--: |
|
||||||
|
|file | 文件对象|
|
||||||
|
|name |文件名称|
|
||||||
|
|size |文件大小|
|
||||||
|
|type |文件上传状态:waiting(等待上传)、loading(上传中)、success(成功) 、fail(失败)|
|
||||||
|
|responseText|上传成功后服务端返回数据(仅type为success时存在)|
|
||||||
|
|
||||||
|
## 以下演示为vue窗口使用方式,nvue使用区别是必须传入控件绝对位置如top,bottom,left,right,且position只能为absolute,如不清楚可点击右侧导入示例项目有详细演示代码。
|
||||||
|
|
||||||
|
### vue:
|
||||||
|
``` javascript
|
||||||
|
<lsj-upload
|
||||||
|
ref="lsjUpload"
|
||||||
|
childId="upload1"
|
||||||
|
:width="width"
|
||||||
|
:height="height"
|
||||||
|
:option="option"
|
||||||
|
:size="size"
|
||||||
|
:formats="formats"
|
||||||
|
:debug="debug"
|
||||||
|
:instantly="instantly"
|
||||||
|
@uploadEnd="onuploadEnd"
|
||||||
|
@progress="onprogre"
|
||||||
|
@change="onChange">
|
||||||
|
<view class="btn" :style="{width: width,height: height}">选择附件</view>
|
||||||
|
</lsj-upload>
|
||||||
|
|
||||||
|
|
||||||
|
<view class="padding">
|
||||||
|
|
||||||
|
<view>已选择文件列表:</view>
|
||||||
|
|
||||||
|
<!-- #ifndef MP-WEIXIN -->
|
||||||
|
<view v-for="(item,index) in files.values()" :key="index">
|
||||||
|
<image style="width: 100rpx;height: 100rpx;" :src="item.path" mode="widthFix"></image>
|
||||||
|
<text>提示:【path主要用于图片视频类文件回显,他用自行处理】:{{item.path}}</text>
|
||||||
|
<text>{{item.name}}</text>
|
||||||
|
<text style="margin-left: 10rpx;">大小:{{item.size}}</text>
|
||||||
|
<text style="margin-left: 10rpx;">状态:{{item.type}}</text>
|
||||||
|
<text style="margin-left: 10rpx;">进度:{{item.progress}}</text>
|
||||||
|
<text style="margin-left: 10rpx;" v-if="item.responseText">服务端返回演示:{{item.responseText}}</text>
|
||||||
|
<text @click="resetUpload(item.name)" v-if="item.type=='fail'" style="margin-left: 10rpx;padding: 0 10rpx;border: 1rpx solid #007AFF;">重新上传</text>
|
||||||
|
<text @click="clear(item.name)" style="margin-left: 10rpx;padding: 0 10rpx;border: 1rpx solid #007AFF;">删除</text>
|
||||||
|
</view>
|
||||||
|
<!-- #endif -->
|
||||||
|
|
||||||
|
<!-- #ifdef MP-WEIXIN -->
|
||||||
|
<view v-for="(item,index) in wxFiles" :key="index">
|
||||||
|
<text>{{item.name}}</text>
|
||||||
|
<text style="margin-left: 10rpx;">大小:{{item.size}}</text>
|
||||||
|
<text style="margin-left: 10rpx;">状态:{{item.type}}</text>
|
||||||
|
<text style="margin-left: 10rpx;">进度:{{item.progress}}</text>
|
||||||
|
<view>
|
||||||
|
<button @click="resetUpload(item.name)">重新上传</button>
|
||||||
|
<button @click="clear(item.name)">删除</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- #endif -->
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
* 函数说明
|
||||||
|
|
||||||
|
|
||||||
|
``` javascript
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 上传接口参数
|
||||||
|
option: {
|
||||||
|
// 上传服务器地址,需要替换为你的接口地址
|
||||||
|
url: 'http://hl.j56.com/dropbox/document/upload', // 该地址非真实路径,需替换为你项目自己的接口地址
|
||||||
|
// 上传附件的key
|
||||||
|
name: 'file',
|
||||||
|
// 根据你接口需求自定义请求头,默认不要写content-type,让浏览器自适配
|
||||||
|
header: {
|
||||||
|
// 示例参数可删除
|
||||||
|
'Authorization': 'bearer eyJhbGciOiJSUzI1NiIsI',
|
||||||
|
'uid': '99',
|
||||||
|
'client': 'app',
|
||||||
|
'accountid': 'DP',
|
||||||
|
},
|
||||||
|
// 根据你接口需求自定义body参数
|
||||||
|
formData: {
|
||||||
|
// 'orderId': 1000
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 选择文件后是否立即自动上传,true=选择后立即上传
|
||||||
|
instantly: true,
|
||||||
|
// 必传宽高且宽高应与slot宽高保持一致
|
||||||
|
width: '180rpx',
|
||||||
|
height: '180rpx',
|
||||||
|
// 限制允许上传的格式,空串=不限制,默认为空
|
||||||
|
formats: '',
|
||||||
|
// 文件上传大小限制
|
||||||
|
size: 30,
|
||||||
|
// 文件数量限制
|
||||||
|
count: 2,
|
||||||
|
// 文件回显列表
|
||||||
|
files: new Map(),
|
||||||
|
// 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
|
||||||
|
wxFiles: [],
|
||||||
|
// 是否打印日志
|
||||||
|
debug: true,
|
||||||
|
|
||||||
|
|
||||||
|
// 演示用
|
||||||
|
tabIndex: 0,
|
||||||
|
list:[],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onReady() {
|
||||||
|
setTimeout(()=>{
|
||||||
|
console.log('----演示动态更新参数-----');
|
||||||
|
this.$refs['lsjUpload'+this.tabIndex].setData('formData.orderId','动态设置的参数');
|
||||||
|
|
||||||
|
console.log('以下注释内容为-动态更新参数更多演示,放开后可查看演示效果');
|
||||||
|
// 修改option对象的name属性
|
||||||
|
// this.$refs.lsjUpload.setData('name','myFile');
|
||||||
|
|
||||||
|
// 修改option对象的formData内的属性
|
||||||
|
// this.$refs.lsjUpload.setData('formData.appid','1111');
|
||||||
|
|
||||||
|
// 替换option对象的formData
|
||||||
|
// this.$refs.lsjUpload.setData('formData',{appid:'222'});
|
||||||
|
|
||||||
|
// option对象的formData新增属性
|
||||||
|
// this.$refs.lsjUpload.setData('formData.newkey','新插入到formData的属性');
|
||||||
|
|
||||||
|
|
||||||
|
// ---------演示初始化值,用于已提交后再次编辑时需带入已上传文件-------
|
||||||
|
// 方式1=传入数组
|
||||||
|
// let files1 = [{name: '1.png'},{name: '2.png',}];
|
||||||
|
|
||||||
|
// 方式2=传入Map对象
|
||||||
|
// let files2 = new Map();
|
||||||
|
// files2.set('1.png',{name: '1.png'})
|
||||||
|
|
||||||
|
// 此处调用setFiles设置初始files
|
||||||
|
// this.$refs.lsjUpload.setFiles(files1);
|
||||||
|
|
||||||
|
// 初始化tab
|
||||||
|
this.onTab(0);
|
||||||
|
},2000)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 某文件上传结束回调(成功失败都回调)
|
||||||
|
onuploadEnd(item) {
|
||||||
|
console.log(`${item.name}已上传结束,上传状态=${item.type}`);
|
||||||
|
|
||||||
|
// 更新当前窗口状态变化的文件
|
||||||
|
this.files.set(item.name,item);
|
||||||
|
|
||||||
|
// ---可删除--演示上传完成后取服务端数据
|
||||||
|
if (item['responseText']) {
|
||||||
|
console.log('演示服务器返回的字符串JSON转Object对象');
|
||||||
|
this.files.get(item.name).responseText = JSON.parse(item.responseText);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 微信小程序Map对象for循环不显示,所以转成普通数组,
|
||||||
|
// 如果你用不惯Map对象,也可以像这样转普通数组,组件使用Map主要是避免反复文件去重操作
|
||||||
|
// #ifdef MP-WEIXIN
|
||||||
|
this.wxFiles = [...this.files.values()];
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// 强制更新视图
|
||||||
|
this.$forceUpdate();
|
||||||
|
|
||||||
|
|
||||||
|
// ---可删除--演示判断是否所有文件均已上传成功
|
||||||
|
let isAll = [...this.files.values()].find(item=>item.type!=='success');
|
||||||
|
if (!isAll) {
|
||||||
|
console.log('已全部上传完毕');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log(isAll.name+'待上传');
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
// 上传进度回调,如果网页上md文档没有渲染出事件名称onprogre,请复制代码的小伙伴自行添加上哈,没有哪个事件是只(item)的
|
||||||
|
onprogre(item) {
|
||||||
|
// 更新当前状态变化的文件
|
||||||
|
this.files.set(item.name,item);
|
||||||
|
|
||||||
|
console.log('打印对象',JSON.stringify(this.files.get(item.name)));
|
||||||
|
// 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
|
||||||
|
// #ifdef MP-WEIXIN
|
||||||
|
this.wxFiles = [...this.files.values()];
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// 强制更新视图
|
||||||
|
this.$forceUpdate();
|
||||||
|
|
||||||
|
},
|
||||||
|
// 文件选择回调
|
||||||
|
onChange(files) {
|
||||||
|
console.log('当前选择的文件列表:',JSON.stringify([...files.values()]));
|
||||||
|
// 更新选择的文件
|
||||||
|
this.files = files;
|
||||||
|
// 强制更新视图
|
||||||
|
this.$forceUpdate();
|
||||||
|
|
||||||
|
// 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
|
||||||
|
// #ifdef MP-WEIXIN
|
||||||
|
this.wxFiles = [...this.files.values()];
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// ---可删除--演示重新定位覆盖层控件
|
||||||
|
this.$nextTick(()=>{
|
||||||
|
console.log('演示重新定位');
|
||||||
|
this.$refs.lsjUpload0.show();
|
||||||
|
this.$refs.lsjUpload1.show();
|
||||||
|
this.$refs.lsjUpload2.show();
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
// 手动上传
|
||||||
|
upload() {
|
||||||
|
// name=指定文件名,不指定则上传所有type等于waiting和fail的文件
|
||||||
|
this.$refs['lsjUpload'+this.tabIndex].upload();
|
||||||
|
},
|
||||||
|
// 指定上传某个文件
|
||||||
|
resetUpload(name) {
|
||||||
|
this.$refs['lsjUpload'+this.tabIndex].upload(name);
|
||||||
|
},
|
||||||
|
// 移除某个文件
|
||||||
|
clear(name) {
|
||||||
|
// name=指定文件名,不传name默认移除所有文件
|
||||||
|
this.$refs['lsjUpload'+this.tabIndex].clear(name);
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* ---可删除--演示在组件上方添加新内容DOM变化
|
||||||
|
* DOM重排演示,重排后组件内部updated默认会触发show方法,若特殊情况未能触发updated也可以手动调用一次show()
|
||||||
|
* 什么是DOM重排?自行百度去
|
||||||
|
*/
|
||||||
|
add() {
|
||||||
|
this.list.push('DOM重排测试');
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* ---可删除--演示Tab切换时覆盖层是否能被点击
|
||||||
|
* APP端因为是webview,层级比view高,此时若不希望点击触发选择文件,需要手动调用hide()
|
||||||
|
* 手动调用hide后,需要调用show()才能恢复覆盖层的点击
|
||||||
|
*/
|
||||||
|
onTab(tabIndex) {
|
||||||
|
this.$refs.lsjUpload0.hide();
|
||||||
|
this.$refs.lsjUpload1.hide();
|
||||||
|
|
||||||
|
this.tabIndex = tabIndex;
|
||||||
|
|
||||||
|
this.$nextTick(()=>{
|
||||||
|
this.$refs['lsjUpload'+this.tabIndex].show();
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 打开nvue窗口查看非跟随窗口滚动效果
|
||||||
|
*/
|
||||||
|
open() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/nvue-demo/nvue-demo'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## 温馨提示
|
||||||
|
|
||||||
|
* 文件上传
|
||||||
|
0. 如说明表达还不够清楚,不清楚怎么使用可导入完整示例项目运行体验和查看
|
||||||
|
1. APP端请优先联调Android,上传成功后再运行iOS端,如iOS返回status=0则需要后端开启允许跨域;
|
||||||
|
2. header的Content-Type类型需要与服务端要求一致,否则收不到附件(服务端若没有明文规定则可不写,使用默认匹配)
|
||||||
|
3. 服务端不清楚怎么配置跨域可加群咨询,具体百度~
|
||||||
|
4. 欢迎加入QQ讨论群:701468256(已满)
|
||||||
|
5. 欢迎加入QQ讨论群:469580165(已满)
|
||||||
|
6. 欢迎加入QQ讨论群:667530868
|
||||||
|
7. 若能帮到你还请点亮5颗小星星以作鼓励哈~
|
||||||
|
8. 若能帮到你还请点亮5颗小星星以作鼓励哈~
|
||||||
|
9. 若能帮到你还请点亮5颗小星星以作鼓励哈~
|
||||||
@@ -1,3 +1,7 @@
|
|||||||
|
## 1.0.6(2024-01-06)
|
||||||
|
- 新增 微信小程序不再调用chooseImage,而是调用chooseMedia
|
||||||
|
## 1.0.5(2024-01-03)
|
||||||
|
- 新增 上传文件至云存储携带本地文件名称
|
||||||
## 1.0.4(2023-03-29)
|
## 1.0.4(2023-03-29)
|
||||||
- 修复 手动上传删除一个文件后不能再上传的bug
|
- 修复 手动上传删除一个文件后不能再上传的bug
|
||||||
## 1.0.3(2022-12-19)
|
## 1.0.3(2022-12-19)
|
||||||
|
|||||||
@@ -11,6 +11,27 @@ function chooseImage(opts) {
|
|||||||
extension
|
extension
|
||||||
} = opts
|
} = opts
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
// #ifdef MP-WEIXIN
|
||||||
|
uni.chooseMedia({
|
||||||
|
count,
|
||||||
|
sizeType,
|
||||||
|
sourceType,
|
||||||
|
mediaType: ['image'],
|
||||||
|
extension,
|
||||||
|
success(res) {
|
||||||
|
res.tempFiles.forEach(item => {
|
||||||
|
item.path = item.tempFilePath;
|
||||||
|
})
|
||||||
|
resolve(normalizeChooseAndUploadFileRes(res, 'image'));
|
||||||
|
},
|
||||||
|
fail(res) {
|
||||||
|
reject({
|
||||||
|
errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL),
|
||||||
|
});
|
||||||
|
},
|
||||||
|
})
|
||||||
|
// #endif
|
||||||
|
// #ifndef MP-WEIXIN
|
||||||
uni.chooseImage({
|
uni.chooseImage({
|
||||||
count,
|
count,
|
||||||
sizeType,
|
sizeType,
|
||||||
@@ -25,6 +46,8 @@ function chooseImage(opts) {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
// #endif
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -191,6 +191,10 @@
|
|||||||
default () {
|
default () {
|
||||||
return ['album', 'camera']
|
return ['album', 'camera']
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
provider: {
|
||||||
|
type: String,
|
||||||
|
default: '' // 默认上传到 unicloud 内置存储 extStorage 扩展存储
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -331,7 +335,6 @@
|
|||||||
* 选择文件
|
* 选择文件
|
||||||
*/
|
*/
|
||||||
choose() {
|
choose() {
|
||||||
|
|
||||||
if (this.disabled) return
|
if (this.disabled) return
|
||||||
if (this.files.length >= Number(this.limitLength) && this.showType !== 'grid' && this.returnType ===
|
if (this.files.length >= Number(this.limitLength) && this.showType !== 'grid' && this.returnType ===
|
||||||
'array') {
|
'array') {
|
||||||
@@ -418,6 +421,13 @@
|
|||||||
if (!this.autoUpload || this.noSpace) {
|
if (!this.autoUpload || this.noSpace) {
|
||||||
res.tempFiles = []
|
res.tempFiles = []
|
||||||
}
|
}
|
||||||
|
res.tempFiles.forEach((fileItem, index) => {
|
||||||
|
this.provider && (fileItem.provider = this.provider);
|
||||||
|
const fileNameSplit = fileItem.name.split('.')
|
||||||
|
const ext = fileNameSplit.pop()
|
||||||
|
const fileName = fileNameSplit.join('.').replace(/[\s\/\?<>\\:\*\|":]/g, '_')
|
||||||
|
fileItem.cloudPath = fileName + '_' + Date.now() + '_' + index + '.' + ext
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"id": "uni-file-picker",
|
"id": "uni-file-picker",
|
||||||
"displayName": "uni-file-picker 文件选择上传",
|
"displayName": "uni-file-picker 文件选择上传",
|
||||||
"version": "1.0.4",
|
"version": "1.0.6",
|
||||||
"description": "文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间",
|
"description": "文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"uni-ui",
|
"uni-ui",
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+23
-1
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"pages": [
|
"pages": [
|
||||||
|
"pages/switchSystem",
|
||||||
"pages/login",
|
"pages/login",
|
||||||
"pages/register",
|
"pages/register",
|
||||||
"pages/index",
|
"pages/index",
|
||||||
@@ -13,7 +14,27 @@
|
|||||||
"pages/mine/help/index",
|
"pages/mine/help/index",
|
||||||
"pages/mine/about/index",
|
"pages/mine/about/index",
|
||||||
"pages/common/webview/index",
|
"pages/common/webview/index",
|
||||||
"pages/common/textview/index"
|
"pages/common/textview/index",
|
||||||
|
"pages/handlecase/index",
|
||||||
|
"pages/handlecase/component/uploadEvidence",
|
||||||
|
"pages/handlecase/component/confirmPayment",
|
||||||
|
"pages/handlecase/component/payList",
|
||||||
|
"pages/handlecase/component/evidenceList",
|
||||||
|
"pages/handlecase/component/obligations",
|
||||||
|
"pages/handlecase/component/newlyAddedCase",
|
||||||
|
"pages/expressDelivery/index",
|
||||||
|
"pages/expressDelivery/component/expressDelivery",
|
||||||
|
"pages/signature/index",
|
||||||
|
"pages/signature/component/expressDelivery",
|
||||||
|
"mp_ecard_sdk/index/index",
|
||||||
|
"mp_ecard_sdk/protocol/eid/eid",
|
||||||
|
"mp_ecard_sdk/protocol/privacy/privacy",
|
||||||
|
"mp_ecard_sdk/protocol/service/service",
|
||||||
|
"mp_ecard_sdk/protocol/userAccredit/userAccredit",
|
||||||
|
"pages/im/index",
|
||||||
|
"pages/realName",
|
||||||
|
"pages/personalInfoCollection",
|
||||||
|
"pages/im/component/imHome"
|
||||||
],
|
],
|
||||||
"subPackages": [],
|
"subPackages": [],
|
||||||
"window": {
|
"window": {
|
||||||
@@ -47,5 +68,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"permission": {},
|
||||||
"usingComponents": {}
|
"usingComponents": {}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -19,9 +19,9 @@
|
|||||||
"condition": false
|
"condition": false
|
||||||
},
|
},
|
||||||
"compileType": "miniprogram",
|
"compileType": "miniprogram",
|
||||||
"libVersion": "3.0.1",
|
"libVersion": "3.1.1",
|
||||||
"appid": "wx6d65ec24cf6b13af",
|
"appid": "wx91cb8459dca561b4",
|
||||||
"projectname": "若依移动端",
|
"projectname": "智慧仲裁",
|
||||||
"condition": {},
|
"condition": {},
|
||||||
"editorSetting": {
|
"editorSetting": {
|
||||||
"tabIndent": "insertSpaces",
|
"tabIndent": "insertSpaces",
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
|
||||||
"projectname": "若依移动端",
|
"projectname": "miniapp",
|
||||||
"setting": {
|
"setting": {
|
||||||
"compileHotReLoad": true
|
"compileHotReLoad": true,
|
||||||
|
"urlCheck": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -1,13 +1,13 @@
|
|||||||
const TokenKey = 'App-Token'
|
const TokenKey = 'App-Token'
|
||||||
|
|
||||||
export function getToken() {
|
export function getToken() {
|
||||||
return uni.getStorageSync(TokenKey)
|
return uni.getStorageSync(TokenKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setToken(token) {
|
export function setToken(token) {
|
||||||
return uni.setStorageSync(TokenKey, token)
|
return uni.setStorageSync(TokenKey, token)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function removeToken() {
|
export function removeToken() {
|
||||||
return uni.removeStorageSync(TokenKey)
|
return uni.removeStorageSync(TokenKey)
|
||||||
}
|
}
|
||||||
+6
-3
@@ -5,9 +5,11 @@ import errorCode from '@/utils/errorCode'
|
|||||||
import { toast, showConfirm, tansParams } from '@/utils/common'
|
import { toast, showConfirm, tansParams } from '@/utils/common'
|
||||||
|
|
||||||
let timeout = 10000
|
let timeout = 10000
|
||||||
const baseUrl = config.baseUrl
|
const baseUrlZC = config.baseUrlZC
|
||||||
|
const baseUrlTJ = config.baseUrlTJ
|
||||||
const request = config => {
|
const request = config => {
|
||||||
|
const sysType = uni.getStorageSync('sysType')
|
||||||
|
|
||||||
// 是否需要设置 token
|
// 是否需要设置 token
|
||||||
const isToken = (config.headers || {}).isToken === false
|
const isToken = (config.headers || {}).isToken === false
|
||||||
config.header = config.header || {}
|
config.header = config.header || {}
|
||||||
@@ -21,10 +23,11 @@ const request = config => {
|
|||||||
config.url = url
|
config.url = url
|
||||||
}
|
}
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
const reqURL = sysType == 1 ? baseUrlZC : baseUrlTJ
|
||||||
uni.request({
|
uni.request({
|
||||||
method: config.method || 'get',
|
method: config.method || 'get',
|
||||||
timeout: config.timeout || timeout,
|
timeout: config.timeout || timeout,
|
||||||
url: config.baseUrl || baseUrl + config.url,
|
url: config.baseUrl || reqURL + config.url,
|
||||||
data: config.data,
|
data: config.data,
|
||||||
header: config.header,
|
header: config.header,
|
||||||
dataType: 'json'
|
dataType: 'json'
|
||||||
|
|||||||
Reference in New Issue
Block a user