Merge branch 'master' of https://e.coding.net/ctcdevteam/ehs/ehs_mp2
This commit is contained in:
commit
4cf6e44ffa
173
App.vue
173
App.vue
|
@ -4,6 +4,57 @@
|
|||
globalData: {
|
||||
appid: 'wxf7d6140f507466be'
|
||||
},
|
||||
getUserRange() {
|
||||
let that = this;
|
||||
that.$u.api.deptList({
|
||||
page: 0,
|
||||
type__in: 'rparty,dept',
|
||||
query: '{id, name, parent, type}'
|
||||
}).then(res => {
|
||||
let list1 = res;
|
||||
let list2 = [];
|
||||
let reqList = [];
|
||||
list1.forEach(function(item) {
|
||||
reqList.push(that.$u.api.userList({
|
||||
page: 0,
|
||||
belong_dept: item.id,
|
||||
is_active: true,
|
||||
query: '{id, name, belong_dept}'
|
||||
}))
|
||||
})
|
||||
Promise.all(reqList).then(res => {
|
||||
for (let i = 0; i < res.length; i++) {
|
||||
list1[i].children = res[i]
|
||||
}
|
||||
list1.forEach(item=>{
|
||||
if(item.type == 'dept'){
|
||||
list2.push({ ...item })
|
||||
}
|
||||
})
|
||||
that.$u.vuex('vuex_userRange', that.parseData(list1))
|
||||
that.$u.vuex('vuex_userRange2', that.parseData(list2))
|
||||
})
|
||||
})
|
||||
},
|
||||
parseData(data) {
|
||||
// * 先生成parent建立父子关系
|
||||
const obj = {};
|
||||
data.forEach((item) => {
|
||||
obj[item.id] = item;
|
||||
});
|
||||
const parentList = [];
|
||||
data.forEach((item) => {
|
||||
const parent = obj[item.parent];
|
||||
if (parent) {
|
||||
// * 当前项有父节点
|
||||
parent.children = parent.children || [];
|
||||
parent.children.unshift(item);
|
||||
} else {
|
||||
parentList.push(item);
|
||||
}
|
||||
});
|
||||
return parentList;
|
||||
},
|
||||
onLaunch() {
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
|
@ -68,11 +119,11 @@
|
|||
}
|
||||
});
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
uni.getSystemInfo({
|
||||
success(res) {
|
||||
console.log(res)
|
||||
that.$u.vuex('vuex_version', res.appVersion)
|
||||
// #ifdef APP-PLUS
|
||||
if (res.platform == 'android') {
|
||||
that.$u.api.apkCheck().then(res1 => {
|
||||
if (res.appVersion < res1.version) {
|
||||
|
@ -95,127 +146,9 @@
|
|||
}
|
||||
})
|
||||
}
|
||||
// #endif
|
||||
}
|
||||
})
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
uni.showLoading({
|
||||
title: '自动登录中...',
|
||||
mask: true
|
||||
})
|
||||
uni.getStorage({
|
||||
key: 'mySecret',
|
||||
success: function(res) {
|
||||
let secret = res.data
|
||||
if (secret) {
|
||||
uni.showToast({
|
||||
title: JSON.parse(secret).username,
|
||||
icon: "none"
|
||||
})
|
||||
that.$u.api.loginSecret(JSON.parse(secret)).then(res => {
|
||||
that.$u.vuex('vuex_token', res.access)
|
||||
that.$u.api.getUserInfo().then(res => {
|
||||
if(res.avatar){
|
||||
res.avatar = this.vuex_host + res.avatar
|
||||
}
|
||||
that.$u.vuex('vuex_user', res)
|
||||
let perms = [];
|
||||
for (let key in user.perms) {
|
||||
perms.push(key);
|
||||
}
|
||||
console.log(perms);
|
||||
that.$u.vuex('vuex_perm', perms)
|
||||
// 修改资源请求地址
|
||||
})
|
||||
uni.reLaunch({
|
||||
url: '/pages/home/home_'
|
||||
})
|
||||
}).catch(e=>{
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/login_'
|
||||
})
|
||||
})
|
||||
}else{
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/login_'
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
fail() {
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/login_'
|
||||
})
|
||||
},
|
||||
complete() {
|
||||
uni.hideLoading()
|
||||
}
|
||||
});
|
||||
|
||||
// 根据设备唯一标识进行自动登录
|
||||
uni.showToast({
|
||||
title: qyjyClientId,
|
||||
icon: "none"
|
||||
})
|
||||
/* that.$u.api.loginCOde(qyjyClientId).then(res => {
|
||||
that.$u.api.getUserInfo().then(res => {
|
||||
that.$u.vuex('vuex_user', res)
|
||||
// 修改资源请求地址
|
||||
})
|
||||
uni.reLaunch({
|
||||
url: '/pages/home/home_'
|
||||
})
|
||||
}).catch(res=>{
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/login_'
|
||||
})
|
||||
}) */
|
||||
// #endif
|
||||
|
||||
|
||||
|
||||
|
||||
uni.showLoading({
|
||||
title: '自动登录中...',
|
||||
mask: true
|
||||
})
|
||||
uni.getStorage({
|
||||
key: 'mySecret',
|
||||
success: function(res) {
|
||||
let secret = res.data
|
||||
if (secret) {
|
||||
|
||||
uni.showToast({
|
||||
title: JSON.parse(secret).username,
|
||||
icon: "none"
|
||||
})
|
||||
let a=JSON.parse(secret).username;
|
||||
console.log(a)
|
||||
that.$u.api.getUserInfo().then(res => {
|
||||
that.$u.vuex('vuex_user', res)
|
||||
let perms = [];
|
||||
for (let key in user.perms) {
|
||||
perms.push(key);
|
||||
}
|
||||
console.log(perms);
|
||||
that.$u.vuex('vuex_perm', perms)
|
||||
if(res.type==='employee'||res.type==='remployee'){
|
||||
uni.reLaunch({
|
||||
url: '/pages/home/home_'
|
||||
})
|
||||
}else{
|
||||
uni.reLaunch({
|
||||
url: '/pages/workSpace/workSpace'
|
||||
})
|
||||
}
|
||||
// 修改资源请求地址
|
||||
})
|
||||
}
|
||||
},
|
||||
complete() {
|
||||
uni.hideLoading()
|
||||
}
|
||||
});
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
"name" : "曲阳金隅EHS",
|
||||
"appid" : "__UNI__B00D419",
|
||||
"description" : "曲阳金隅EHS",
|
||||
"versionName" : "1.01.03",
|
||||
"versionCode" : 10103,
|
||||
"versionName" : "1.01.07",
|
||||
"versionCode" : 10107,
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
|
@ -121,6 +121,6 @@
|
|||
"mode" : "history",
|
||||
"base" : "/h5/"
|
||||
},
|
||||
"title" : "共享平台"
|
||||
"title" : "曲阳金隅EHS"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
{
|
||||
"path": "pages/home/home_",
|
||||
"style": {
|
||||
// "navigationBarTitleText": "曲阳金隅EHS主页",
|
||||
"navigationBarTitleText": "曲阳金隅EHS主页",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
},
|
||||
|
|
|
@ -2,32 +2,32 @@
|
|||
<view class="ticket-handle">
|
||||
<uni-nav-bar @clickLeft="goBack()" class="nav-bar" height="110rpx" leftWidth="200rpx" leftText="工单审批"
|
||||
leftIcon="left" border backgroundColor="#2cade8" color="#fff" fixed statusBar shadow></uni-nav-bar>
|
||||
<view class="ticket-info">
|
||||
<view class="form-item border-bottom">
|
||||
<view class="form-left">
|
||||
<text class="form-left-text">工单流水号</text>
|
||||
</view>
|
||||
<view class="form-right">
|
||||
<view>{{ticketDetail.sn}}</view>
|
||||
</view>
|
||||
<view class="ticket-info">
|
||||
<view class="form-item border-bottom">
|
||||
<view class="form-left">
|
||||
<text class="form-left-text">工单流水号</text>
|
||||
</view>
|
||||
<view class="form-item border-bottom">
|
||||
<view class="form-left">
|
||||
<text class="form-left-text">工单名称</text>
|
||||
</view>
|
||||
<view class="form-right">
|
||||
<view>{{ticketDetail.title}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item" @click="logView">
|
||||
<view class="form-left">
|
||||
<text class="form-left-text">工单状态</text>
|
||||
</view>
|
||||
<view class="form-right" style="color:blue">
|
||||
<view>{{ticketDetail.state_.name}}</view>
|
||||
</view>
|
||||
<view class="form-right">
|
||||
<view>{{ticketDetail.sn}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item border-bottom">
|
||||
<view class="form-left">
|
||||
<text class="form-left-text">工单名称</text>
|
||||
</view>
|
||||
<view class="form-right">
|
||||
<view>{{ticketDetail.title}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item" @click="logView">
|
||||
<view class="form-left">
|
||||
<text class="form-left-text">工单状态</text>
|
||||
</view>
|
||||
<view class="form-right" style="color:blue">
|
||||
<view v-if="ticketDetail.state">{{ticketDetail.state_.name}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<block v-if="cateType==='visit'">
|
||||
<view class="ticket-info">
|
||||
<view class="form-content ">
|
||||
|
@ -192,7 +192,7 @@
|
|||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
</block>
|
||||
<block v-else-if="cateType==='opl'">
|
||||
<view class="ticket-info">
|
||||
|
@ -269,7 +269,8 @@
|
|||
<text class="form-left-text">所属作业</text>
|
||||
</view>
|
||||
<view class="form-right">
|
||||
<view v-if="oplDetail.operation_" style="color:blue" @click="goOp">{{oplDetail.operation_.name}}</view>
|
||||
<view v-if="oplDetail.operation_" style="color:blue" @click="goOp">{{oplDetail.operation_.name}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="form-item border-bottom">
|
||||
|
@ -332,42 +333,44 @@
|
|||
</block>
|
||||
<block v-if="type=='handle'">
|
||||
<view class="ticket-info">
|
||||
<view class="form-item" v-if="ticketDetail.state_&&ticketDetail.state_.key==='opl_close'">
|
||||
<view class="form-left-text" style="width: 100%;">
|
||||
<text class="star">*</text>
|
||||
<text>作业情况</text>
|
||||
</view>
|
||||
<uni-data-select v-model="form.close_note" :localdata="noteOption" label="选择关闭原因"></uni-data-select>
|
||||
<view class="form-item" v-if="ticketDetail.state_&&ticketDetail.state_.key==='opl_close'">
|
||||
<view class="form-left-text" style="width: 100%;">
|
||||
<text class="star">*</text>
|
||||
<text>作业情况</text>
|
||||
</view>
|
||||
<view class="form-item" v-if="ticketDetail.state_&&ticketDetail.state_.key==='opl_close'">
|
||||
<!-- <view class="form-left-text">
|
||||
<uni-data-select v-model="form.close_note" :localdata="noteOption" label="选择关闭原因"></uni-data-select>
|
||||
</view>
|
||||
<view class="form-item" v-if="ticketDetail.state_&&ticketDetail.state_.key==='opl_close'">
|
||||
<!-- <view class="form-left-text">
|
||||
<text class="star">*</text>
|
||||
<text>关闭处理</text>
|
||||
</view> -->
|
||||
<uni-data-select v-model="form.close_dos" :localdata="dosOption" label="关闭处理"></uni-data-select>
|
||||
<uni-data-select v-model="form.close_dos" :localdata="dosOption" label="关闭处理"></uni-data-select>
|
||||
</view>
|
||||
<view class="form-item" style="height: 300rpx;">
|
||||
<view class="form-left-text">
|
||||
<text class="star">*</text>
|
||||
<text>审批意见</text>
|
||||
</view>
|
||||
<view class="form-item" style="height: 300rpx;">
|
||||
<view class="form-left-text">
|
||||
<text class="star">*</text>
|
||||
<text>审批意见</text>
|
||||
</view>
|
||||
<textarea class="apply-reason-text" v-model="form.name" maxlength="250" placeholder="请输入" />
|
||||
<textarea class="apply-reason-text" v-model="form.name" maxlength="250" placeholder="请输入" />
|
||||
</view>
|
||||
<view class="btn" style="display: flex;justify-content: space-between;margin-top: 20rpx;">
|
||||
<view class="left-content">
|
||||
<button class="mini-btn" size="mini" type="primary" @click="addNode">加签</button>
|
||||
<button class="mini-btn" size="mini"
|
||||
v-if="ticketDetail.state_&&ticketDetail.state_.enable_deliver" type="primary" plain
|
||||
@click="deliverNode">转交
|
||||
</button>
|
||||
</view>
|
||||
<view class="btn" style="display: flex;justify-content: space-between;margin-top: 20rpx;">
|
||||
<view class="left-content">
|
||||
<button class="mini-btn" size="mini" type="primary" @click="addNode">加签</button>
|
||||
<button class="mini-btn" size="mini" v-if="ticketDetail.state_&&ticketDetail.state_.enable_deliver"
|
||||
type="primary" plain @click="deliverNode">转交
|
||||
</button>
|
||||
</view>
|
||||
<view class="right-time">
|
||||
<button v-for="item in operationBtn" :key="item.id" class="mini-btn" size="mini"
|
||||
:type="item.attribute_type===2?'warn':'primary'" @click="operationSubmit(item.id)" style="margin-left:8upx">
|
||||
{{item.name}}
|
||||
</button>
|
||||
</view>
|
||||
<view class="right-time">
|
||||
<button v-for="item in operationBtn" :key="item.id" class="mini-btn" size="mini"
|
||||
:type="item.attribute_type===2?'warn':'primary'" @click="operationSubmit(item.id)"
|
||||
style="margin-left:8upx">
|
||||
{{item.name}}
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<view class="dialogWrap" v-if="logDialog">
|
||||
<view class="dialogCont">
|
||||
|
@ -376,19 +379,19 @@
|
|||
<view class="dialogCloseImg" @click="closeDialog"></view>
|
||||
</view>
|
||||
<scroll-view style="height: 300px;" scroll-y="true">
|
||||
<uni-list>
|
||||
<uni-list-item v-for="item in tLog" :key="item.id">
|
||||
<text slot="body">
|
||||
<view>{{item.state_.name}}</view>
|
||||
<view style="color:gray">
|
||||
<span v-if="item.participant">{{item.participant_.name}}-</span>
|
||||
<span v-if="item.transition_attribute==1" style="color:green">同意-</span>
|
||||
<span v-if="item.transition_attribute==2" style="color:red">拒绝-</span>
|
||||
<span>{{item.create_time}}</span>
|
||||
</view>
|
||||
</text>
|
||||
</uni-list-item>
|
||||
</uni-list>
|
||||
<uni-list>
|
||||
<uni-list-item v-for="item in tLog" :key="item.id">
|
||||
<text slot="body">
|
||||
<view>{{item.state_.name}}</view>
|
||||
<view style="color:gray;font-size: 28rpx;">
|
||||
<span v-if="item.participant">{{item.participant_.name}}-</span>
|
||||
<span v-if="item.transition_attribute==1" style="color:green">同意-</span>
|
||||
<span v-if="item.transition_attribute==2" style="color:red">拒绝-</span>
|
||||
<span>{{item.create_time}}</span>
|
||||
</view>
|
||||
</text>
|
||||
</uni-list-item>
|
||||
</uni-list>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -406,7 +409,7 @@
|
|||
})
|
||||
return {
|
||||
logDialog: false,
|
||||
tLog:[],
|
||||
tLog: [],
|
||||
form: {
|
||||
suggestion: '',
|
||||
close_note: '',
|
||||
|
@ -548,7 +551,7 @@
|
|||
this.$u.api.getTicketLog(this.ticketId).then((res) => {
|
||||
this.logDialog = true;
|
||||
this.tLog = res;
|
||||
});
|
||||
});
|
||||
},
|
||||
//工单详情
|
||||
getticketItem() {
|
||||
|
@ -676,7 +679,7 @@
|
|||
url: '../detail/addNode' + params,
|
||||
})
|
||||
},
|
||||
deliverNode(){
|
||||
deliverNode() {
|
||||
let params = `?ticketId=${this.ticketId}&type=deliver`;
|
||||
uni.navigateTo({
|
||||
url: '../detail/addNode' + params,
|
||||
|
@ -693,34 +696,36 @@
|
|||
}
|
||||
debugger;
|
||||
uni.showLoading({
|
||||
mask:true,
|
||||
title:'正在提交...'
|
||||
mask: true,
|
||||
title: '正在提交...'
|
||||
})
|
||||
this.$u.api.ticketHandle(this.ticketId, params).then(res => {
|
||||
uni.hideLoading()
|
||||
uni.navigateBack()
|
||||
}).catch(e=>{uni.hideLoading()})
|
||||
},
|
||||
goOp(){
|
||||
uni.navigateTo({
|
||||
url:'/pages/workSpace/operation/operationDetail?operationId='+this.oplDetail.operation
|
||||
})
|
||||
|
||||
},
|
||||
goOpl(){
|
||||
uni.navigateTo({
|
||||
url:'/pages/workSpace/operation/oplDetail?oplId='+this.oplDetail.id
|
||||
})
|
||||
|
||||
},
|
||||
goVisit(){
|
||||
uni.navigateTo({
|
||||
url:'/pages/workSpace/visit/visitDetail?visit='+that.projectId
|
||||
}).catch(e => {
|
||||
uni.hideLoading()
|
||||
})
|
||||
},
|
||||
goRpj(){
|
||||
goOp() {
|
||||
uni.navigateTo({
|
||||
url:'/pages/workSpace/rpj/rpjDetail?rpjId='+that.projectId
|
||||
url: '/pages/workSpace/operation/operationDetail?operationId=' + this.oplDetail.operation
|
||||
})
|
||||
|
||||
},
|
||||
goOpl() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/workSpace/operation/oplDetail?oplId=' + this.oplDetail.id
|
||||
})
|
||||
|
||||
},
|
||||
goVisit() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/workSpace/visit/visitDetail?visit=' + that.projectId
|
||||
})
|
||||
},
|
||||
goRpj() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/workSpace/rpj/rpjDetail?rpjId=' + that.projectId
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -975,6 +980,7 @@
|
|||
border-top-width: 0;
|
||||
border-bottom-color: #EBEEF5;
|
||||
}
|
||||
|
||||
.dialogWrap {
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
|
@ -984,7 +990,7 @@
|
|||
left: 0;
|
||||
z-index: 110;
|
||||
}
|
||||
|
||||
|
||||
.dialogCont {
|
||||
width: 90vw;
|
||||
position: absolute;
|
||||
|
@ -996,7 +1002,7 @@
|
|||
padding: 20rpx;
|
||||
border-radius: 20rpx;
|
||||
}
|
||||
|
||||
|
||||
.dialogTitle {
|
||||
font-size: 36rpx;
|
||||
padding-bottom: 20rpx;
|
||||
|
@ -1004,7 +1010,7 @@
|
|||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
|
||||
.dialogCloseImg {
|
||||
width: 52rpx;
|
||||
height: 52rpx;
|
||||
|
|
|
@ -127,7 +127,7 @@
|
|||
onShow() {
|
||||
// debugger;
|
||||
// console.log(this.vuex_perm)
|
||||
if(this.vuex_user.type==='visitor'){
|
||||
if(this.vuex_user.type==='visitor'||this.vuex_user.type==='driver'){
|
||||
this.limitedVisit = true;
|
||||
}else{
|
||||
let date = new Date();
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
</view>
|
||||
<text>司机</text>
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -119,8 +119,14 @@
|
|||
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
that = this;
|
||||
onLoad(options) {
|
||||
that = this
|
||||
var autoLoading = options.autoLoading;
|
||||
// #ifdef APP-PLUS
|
||||
if(autoLoading != 'no'){
|
||||
that.appLogin()
|
||||
}
|
||||
// #endif
|
||||
},
|
||||
methods: {
|
||||
checkboxChange(e) {
|
||||
|
@ -302,26 +308,26 @@
|
|||
this.isMessage = true;
|
||||
}
|
||||
},
|
||||
userRegister(type){
|
||||
userRegister(type) {
|
||||
let params = `?type=${type}`;
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/userRegister'+params
|
||||
url: '/pages/login/userRegister' + params
|
||||
})
|
||||
},
|
||||
ranStr(e) {
|
||||
ranStr(e) {
|
||||
//形参e,需要产生随机字符串的长度
|
||||
//如果没有传参,默认生成32位长度随机字符串
|
||||
e = e || 32;
|
||||
//模拟随机字符串库
|
||||
var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789",
|
||||
a = t.length,//字符串t的长度,随机数生成最大值
|
||||
n = "";
|
||||
for (let i = 0; i < e; i++) {
|
||||
//随机生成长度为e的随机字符串拼接
|
||||
n += t.charAt(Math.floor(Math.random() * a));
|
||||
}
|
||||
//返回随机组合字符串
|
||||
return n
|
||||
e = e || 32;
|
||||
//模拟随机字符串库
|
||||
var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789",
|
||||
a = t.length, //字符串t的长度,随机数生成最大值
|
||||
n = "";
|
||||
for (let i = 0; i < e; i++) {
|
||||
//随机生成长度为e的随机字符串拼接
|
||||
n += t.charAt(Math.floor(Math.random() * a));
|
||||
}
|
||||
//返回随机组合字符串
|
||||
return n
|
||||
},
|
||||
//获取客户端ID
|
||||
getClientId() {
|
||||
|
@ -361,167 +367,131 @@
|
|||
formSubmit(e) {
|
||||
// debugger;
|
||||
uni.showLoading({
|
||||
title: '加载中'
|
||||
title: '加载中'
|
||||
});
|
||||
var that = this;
|
||||
const obj = e.target.value;
|
||||
if (!that.checkedParams(obj)) return;
|
||||
that.$u.api.login(obj).then(res => {
|
||||
uni.hideLoading();
|
||||
uni.hideLoading();
|
||||
that.$u.vuex('vuex_token', res.access)
|
||||
that.$u.vuex('vuex_refresh', res.refresh);
|
||||
that.getUserRange();
|
||||
that.$u.api.getUserInfo().then(user => {
|
||||
if(user.avatar){
|
||||
if (user.avatar) {
|
||||
user.avatar = this.vuex_host + user.avatar
|
||||
}
|
||||
that.$u.vuex('vuex_user', user)
|
||||
if(user.avatar){
|
||||
if (user.avatar) {
|
||||
user.avatar = this.vuex_host + user.avatar
|
||||
}
|
||||
let perms = [];
|
||||
for (let key in user.perms) {
|
||||
perms.push(key);
|
||||
perms.push(key);
|
||||
}
|
||||
console.log(perms);
|
||||
that.$u.vuex('vuex_perm', perms)
|
||||
})
|
||||
that.$u.api.hrmUserInfo().then(res => {
|
||||
that.$u.vuex('vuex_employee', res)
|
||||
if(res.type==='employee'){
|
||||
uni.reLaunch({
|
||||
url: '/pages/home/home_'
|
||||
})
|
||||
}else{
|
||||
//非正式员工
|
||||
if(res.id_number==''||res.photo==''||res.id_number==null||res.photo==null){
|
||||
//信息不完善,进入信息完善页面
|
||||
that.$u.api.hrmUserInfo().then(res => {
|
||||
that.$u.vuex('vuex_employee', res)
|
||||
if (res.type === 'employee') {
|
||||
uni.reLaunch({
|
||||
url: '/pages/my/myInfoChange'
|
||||
url: '/pages/home/home_'
|
||||
})
|
||||
}else{
|
||||
//信息完善
|
||||
if(res.type==='remployee'){
|
||||
} else {
|
||||
//非正式员工
|
||||
if (res.id_number == '' || res.photo == '' || res.id_number == null || res
|
||||
.photo == null) {
|
||||
//信息不完善,进入信息完善页面
|
||||
uni.reLaunch({
|
||||
url: '/pages/home/home_'
|
||||
})
|
||||
}else{
|
||||
uni.reLaunch({
|
||||
url: '/pages/workSpace/workSpace'
|
||||
url: '/pages/my/myInfoChange'
|
||||
})
|
||||
} else {
|
||||
//信息完善
|
||||
if (res.type === 'remployee') {
|
||||
uni.reLaunch({
|
||||
url: '/pages/home/home_'
|
||||
})
|
||||
} else {
|
||||
uni.reLaunch({
|
||||
url: '/pages/workSpace/workSpace'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
// #ifdef APP-PLUS
|
||||
let secret = that.ranStr(12)
|
||||
let mySecret = {'username': obj.username, 'secret': secret}
|
||||
that.$u.api.bindSecret({secret: secret}).then(res=>{
|
||||
let mySecret = {
|
||||
'username': obj.username,
|
||||
'secret': secret
|
||||
}
|
||||
that.$u.api.bindSecret({
|
||||
secret: secret
|
||||
}).then(res => {
|
||||
uni.setStorageSync('mySecret', JSON.stringify(mySecret))
|
||||
uni.reLaunch({
|
||||
url: '/pages/home/home_'
|
||||
})
|
||||
}).catch(e=>{})
|
||||
// uni.reLaunch({
|
||||
// url: '/pages/home/home_'
|
||||
// })
|
||||
}).catch(e => {})
|
||||
// #endif
|
||||
that.getUserRange();
|
||||
}).catch(e => {
|
||||
console.log(e)
|
||||
})
|
||||
},
|
||||
getUserRange(){
|
||||
getUserRange() {
|
||||
let that = this;
|
||||
that.$u.api.deptList({page: 0,type__in:'rparty,dept'}).then(res => {
|
||||
let arr = [];
|
||||
let obj = {};
|
||||
res.forEach(item=>{
|
||||
obj = {...item};
|
||||
obj.children = [];
|
||||
arr.push(obj)
|
||||
that.$u.api.deptList({
|
||||
page: 0,
|
||||
type__in: 'rparty,dept',
|
||||
query: '{id, name, parent, type}'
|
||||
}).then(res => {
|
||||
let list1 = res;
|
||||
let list2 = [];
|
||||
let reqList = [];
|
||||
list1.forEach(function(item) {
|
||||
reqList.push(that.$u.api.userList({
|
||||
page: 0,
|
||||
belong_dept: item.id,
|
||||
is_active: true,
|
||||
query: '{id, name, belong_dept}'
|
||||
}))
|
||||
})
|
||||
var useArr = that.resetData(arr);
|
||||
for (let i=0;i<useArr.length;i++){
|
||||
let requestList = []
|
||||
requestList.push(that.$u.api.userList({page: 0,belong_dept:useArr[i].id}))
|
||||
Promise.all(requestList).then(res=>{
|
||||
res.forEach(item=>{
|
||||
item.forEach(item0=>{
|
||||
useArr[i].children.push(item0);
|
||||
if(useArr[i].children.length>0){
|
||||
let childrenArr = useArr[i].children;
|
||||
for(let j = 0;j<childrenArr.length;j++){
|
||||
let requestList2= []
|
||||
if(childrenArr[j].children){
|
||||
requestList2.push(that.$u.api.userList({page: 0,belong_dept:childrenArr[j].id}))
|
||||
Promise.all(requestList2).then(res2=>{
|
||||
res2.forEach(item=>{
|
||||
item.forEach(item1=>{
|
||||
useArr[i].children[j].children.push(item1);
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
that.$u.vuex('vuex_userRange', useArr)
|
||||
})
|
||||
},
|
||||
getUser1(id) {
|
||||
that.$u.api.userList({page: 0,belong_dept:id}).then(res0 => {
|
||||
res0.forEach(item0=>{
|
||||
useArr[i].children.push(item0);
|
||||
that.$u.vuex('vuex_userRange', useArr);
|
||||
if(useArr[i].children.length>0){
|
||||
let childrenArr = useArr[i].children;
|
||||
for(let j = 0;j<childrenArr.length;j++){
|
||||
if(childrenArr[j].children){
|
||||
that.$u.api.userList({page: 0,belong_dept:childrenArr[j].id}).then(res1 => {
|
||||
res1.forEach(item1=>{
|
||||
useArr[i].children[j].children.push(item1);
|
||||
that.$u.vuex('vuex_userRange', useArr)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
Promise.all(reqList).then(res => {
|
||||
for (let i = 0; i < res.length; i++) {
|
||||
list1[i].children = res[i]
|
||||
}
|
||||
list1.forEach(item => {
|
||||
if (item.type == 'dept') {
|
||||
list2.push({
|
||||
...item
|
||||
})
|
||||
}
|
||||
})
|
||||
that.$u.vuex('vuex_userRange', that.parseData(list1))
|
||||
that.$u.vuex('vuex_userRange2', that.parseData(list2))
|
||||
})
|
||||
})
|
||||
},
|
||||
resetData(params) {
|
||||
let posts = [];
|
||||
params.forEach((item) => {
|
||||
let obj = new Object();
|
||||
obj = {
|
||||
...item
|
||||
};
|
||||
obj.value = item.id;
|
||||
obj.text = item.name;
|
||||
obj.parentId = item.parent;
|
||||
posts.push(obj);
|
||||
});
|
||||
let obj = posts.reduce((res, v) => ((res[v.id] = v), res), {}); //Object
|
||||
let arr = [];
|
||||
for (let item of posts) {
|
||||
console.log(item)
|
||||
if (item.parentId == null||item.parentId=="1561653664806998016") {
|
||||
arr.push(item);
|
||||
continue;
|
||||
}else{
|
||||
let parent = obj[item.parentId];
|
||||
if(obj[item.parentId]!==undefined){
|
||||
parent.children = parent.children ? parent.children : [];
|
||||
parent.children.push(item);
|
||||
}else{}
|
||||
}
|
||||
}
|
||||
return arr;
|
||||
},
|
||||
parseData(data) {
|
||||
// * 先生成parent建立父子关系
|
||||
const obj = {};
|
||||
data.forEach((item) => {
|
||||
obj[item.id] = item;
|
||||
});
|
||||
const parentList = [];
|
||||
data.forEach((item) => {
|
||||
const parent = obj[item.parent];
|
||||
if (parent) {
|
||||
// * 当前项有父节点
|
||||
parent.children = parent.children || [];
|
||||
parent.children.unshift(item);
|
||||
} else {
|
||||
parentList.push(item);
|
||||
}
|
||||
});
|
||||
return parentList;
|
||||
},
|
||||
formSubmit2(e) {
|
||||
var that = this;
|
||||
const obj = e.target.value;
|
||||
|
@ -531,7 +501,7 @@
|
|||
that.$u.vuex('vuex_refresh', res.refresh)
|
||||
that.getUserRange();
|
||||
that.$u.api.getUserInfo().then(res => {
|
||||
if(res.avatar){
|
||||
if (res.avatar) {
|
||||
res.avatar = this.vuex_host + res.avatar
|
||||
}
|
||||
that.$u.vuex('vuex_user', res)
|
||||
|
@ -539,17 +509,21 @@
|
|||
})
|
||||
// #ifdef APP-PLUS
|
||||
let secret = that.ranStr(12)
|
||||
let mySecret = {'username': obj.username, 'secret': secret}
|
||||
that.$u.api.bindSecret({secret: secret}).then(res=>{
|
||||
let mySecret = {
|
||||
'username': obj.username,
|
||||
'secret': secret
|
||||
}
|
||||
that.$u.api.bindSecret({
|
||||
secret: secret
|
||||
}).then(res => {
|
||||
uni.setStorageSync('mySecret', JSON.stringify(mySecret))
|
||||
}).catch(e=>{})
|
||||
}).catch(e => {})
|
||||
// #endif
|
||||
|
||||
|
||||
uni.reLaunch({
|
||||
url: '/pages/home/home_'
|
||||
})
|
||||
}).catch(e => {
|
||||
})
|
||||
}).catch(e => {})
|
||||
},
|
||||
codeChange(text) {
|
||||
this.codeTips = text;
|
||||
|
@ -559,7 +533,7 @@
|
|||
// debugger;
|
||||
console.log(this.phoneNumber)
|
||||
if (this.phoneNumber !== '') {
|
||||
if (this.$refs.uCode.canGetCode){
|
||||
if (this.$refs.uCode.canGetCode) {
|
||||
uni.showLoading({
|
||||
title: '正在获取验证码',
|
||||
mask: true
|
||||
|
@ -580,15 +554,77 @@
|
|||
this.$u.toast('请输入手机号');
|
||||
}
|
||||
},
|
||||
agreementFn(e){
|
||||
if(e == 1){
|
||||
agreementFn(e) {
|
||||
if (e == 1) {
|
||||
that.content = that.userContent;
|
||||
that.agreement = true;
|
||||
}else if(e == 2){
|
||||
} else if (e == 2) {
|
||||
that.content = that.privacyContent;
|
||||
that.agreement = true;
|
||||
}
|
||||
},
|
||||
appLogin() {
|
||||
var that = this;
|
||||
// App自动登录
|
||||
uni.showLoading({
|
||||
title: '自动登录中...',
|
||||
mask: true
|
||||
})
|
||||
uni.getStorage({
|
||||
key: 'mySecret',
|
||||
success: function(res) {
|
||||
let secret = res.data
|
||||
if (secret) {
|
||||
that.$u.api.loginSecret(JSON.parse(secret)).then(res1 => {
|
||||
that.$u.vuex('vuex_token', res1.access)
|
||||
that.$u.api.getUserInfo().then(res2 => {
|
||||
console.log(res2);
|
||||
if (res2.avatar) {
|
||||
res2.avatar = this.vuex_host + res2.avatar
|
||||
}
|
||||
that.$u.vuex('vuex_user', res2)
|
||||
let perms = [];
|
||||
for (let key in res2.perms) {
|
||||
perms.push(key);
|
||||
}
|
||||
|
||||
that.$u.vuex('vuex_perm', perms)
|
||||
// 修改资源请求地址
|
||||
})
|
||||
that.$u.api.hrmUserInfo().then(res3 => {
|
||||
that.$u.vuex('vuex_employee', res3)
|
||||
if (res3.type === 'employee') {
|
||||
uni.reLaunch({
|
||||
url: '/pages/home/home_'
|
||||
})
|
||||
} else {
|
||||
//非正式员工
|
||||
if (res3.id_number == '' || res3.photo == '' || res3
|
||||
.id_number == null || res3.photo == null) {
|
||||
//信息不完善,进入信息完善页面
|
||||
uni.reLaunch({
|
||||
url: '/pages/my/myInfoChange'
|
||||
})
|
||||
} else {
|
||||
//信息完善
|
||||
if (res3.type === 'remployee') {
|
||||
uni.reLaunch({
|
||||
url: '/pages/home/home_'
|
||||
})
|
||||
} else {
|
||||
uni.reLaunch({
|
||||
url: '/pages/workSpace/workSpace'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
that.getUserRange()
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -833,30 +869,37 @@
|
|||
padding-left: 12rpx;
|
||||
padding-right: 12rpx;
|
||||
}
|
||||
.registerWrap{
|
||||
|
||||
.registerWrap {
|
||||
display: flex;
|
||||
margin-top: 40upx;
|
||||
}
|
||||
.visitorReg{
|
||||
|
||||
.visitorReg {
|
||||
margin-right: 50upx;
|
||||
}
|
||||
.visitorReg,.driverRegWrap{
|
||||
|
||||
.visitorReg,
|
||||
.driverRegWrap {
|
||||
display: flex;
|
||||
text-align: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
.visitorReg>image{
|
||||
|
||||
.visitorReg>image {
|
||||
width: 90upx;
|
||||
height: 90upx;
|
||||
}
|
||||
.driverReg{
|
||||
|
||||
.driverReg {
|
||||
width: 80upx;
|
||||
height: 80upx;
|
||||
border-radius: 40upx;
|
||||
background: #0075ff;
|
||||
margin-bottom: 8upx;
|
||||
}
|
||||
.driverReg>image{
|
||||
|
||||
.driverReg>image {
|
||||
width: 46upx;
|
||||
height: 46upx;
|
||||
margin: 16upx;
|
||||
|
|
|
@ -107,20 +107,13 @@
|
|||
if (!that.checkedParams(obj)) return;
|
||||
that.$u.api.visitorRegister(obj).then(res => {
|
||||
uni.hideLoading();
|
||||
if(res.err_msg){
|
||||
this.$u.toast(res.err_msg);
|
||||
}else{
|
||||
uni.showToast({
|
||||
title:"注册成功,请重新登录",
|
||||
icon: "none"
|
||||
})
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/login_'
|
||||
url: '/pages/login/login_?autoLoading=no'
|
||||
})
|
||||
}
|
||||
|
||||
}).catch(e => {
|
||||
console.log(e)
|
||||
uni.showToast({
|
||||
title: e.err_msg,
|
||||
icon: 'none'
|
||||
})
|
||||
})
|
||||
|
||||
},
|
||||
|
|
|
@ -46,9 +46,15 @@
|
|||
<text class="title-text">我的打卡记录</text>
|
||||
<uni-icons size="13" color="#b9b9b9" class="right-icon" type="right"></uni-icons>
|
||||
</view>
|
||||
<view class="enter-item">
|
||||
<image style="width: 34rpx;height: 30rpx;" class="left-icon" src="../../static/my/wodeziliao.png"
|
||||
mode=""></image>
|
||||
<text class="title-text">我的访客库</text>
|
||||
<uni-icons size="13" color="#b9b9b9" class="right-icon" type="right"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
<view class="sign-out">
|
||||
<button type="default" @click="signoutFn" class="sign-out-btn">退出</button>
|
||||
<button type="default" @click="signoutFn" class="sign-out-btn">退出账号</button>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
@ -175,7 +181,7 @@
|
|||
// error
|
||||
}
|
||||
uni.reLaunch({
|
||||
url:'/pages/login/login_'
|
||||
url:'/pages/login/login_?autoLoading=no'
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<view class="item item_bottom_border">
|
||||
<view class="title">手机号</view>
|
||||
<view class="content">
|
||||
<input type="text" v-model="userInfo.phone" maxlength="20" placeholder="请输入" />
|
||||
<input type="text" v-model="userInfo.phone" maxlength="20" placeholder="请输入" disabled/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item item_bottom_border">
|
||||
|
@ -112,12 +112,21 @@
|
|||
if (!that.paramsCheck()) {
|
||||
return;
|
||||
} else {
|
||||
uni.showLoading({
|
||||
title: '保存中...',
|
||||
mask: true
|
||||
})
|
||||
this.$u.api.hrmUpdateInfo(this.userInfo).then(res=>{
|
||||
debugger;
|
||||
console.log(res)
|
||||
uni.navigateTo({
|
||||
url: '/pages/my/my'
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: '保存成功',
|
||||
icon: 'none'
|
||||
})
|
||||
uni.reLaunch({
|
||||
url: '/pages/workSpace/workSpace'
|
||||
})
|
||||
}).catch(e=>{
|
||||
uni.hideLoading()
|
||||
})
|
||||
}
|
||||
},
|
||||
|
|
|
@ -249,7 +249,7 @@
|
|||
this.getOplcates();
|
||||
this.getdept();
|
||||
this.getRange();
|
||||
this.getUserRange();
|
||||
// this.getUserRange();
|
||||
this.getHeader();
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -241,7 +241,7 @@
|
|||
this.getOplcates();
|
||||
this.getdept();
|
||||
this.getRange();
|
||||
this.getUserRange();
|
||||
// this.getUserRange();
|
||||
this.getHeader();
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -244,7 +244,7 @@
|
|||
this.getOplcates();
|
||||
this.getdept();
|
||||
this.getRange();
|
||||
this.getUserRange();
|
||||
// this.getUserRange();
|
||||
this.getHeader();
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -351,7 +351,7 @@
|
|||
this.getOplcates();
|
||||
this.getdept();
|
||||
this.getRange();
|
||||
this.getUserRange();
|
||||
// this.getUserRange();
|
||||
this.getHeader();
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
</view>
|
||||
<view class="form-right">
|
||||
<ba-tree-picker ref="dcoordinator_Picker" :multiple='false' @select-change="select_coordinator_Change" title="选择接待人"
|
||||
:localdata="vuex_userRange" valueKey="id" textKey="name" childrenKey="children" :selectParent='false'/>
|
||||
:localdata="vuex_userRange2" valueKey="id" textKey="name" childrenKey="children" :selectParent='false'/>
|
||||
<view @click="showDcoordinatorPicker" style="position: relative;display: flex;">
|
||||
<text type="text" >{{receptionist_name}}</text>
|
||||
<uni-icons style="position: absolute; right: 0;" type="arrowright" color="#999999"/>
|
||||
|
@ -122,7 +122,7 @@
|
|||
return {
|
||||
formData: {
|
||||
name: '', //来访概述
|
||||
purpose: 50, //来访事由
|
||||
purpose: 10, //来访事由
|
||||
receptionist: '', //接待人
|
||||
visit_time: '', //来访时间
|
||||
leave_time: '', //离开时间
|
||||
|
|
|
@ -56,13 +56,13 @@
|
|||
<view class="item item_bottom_border">
|
||||
<view class="title">是否报备</view>
|
||||
<view class="content">
|
||||
<switch name="is_main" v-model="formData.is_reported" />
|
||||
<u-switch v-model="formData.is_reported"></u-switch>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item item_bottom_border">
|
||||
<view class="title">是否主访客</view>
|
||||
<view class="content">
|
||||
<switch name="is_main" v-model="formData.is_main" />
|
||||
<u-switch v-model="formData.is_main"></u-switch>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item item_bottom_border" style="height: fit-content;">
|
||||
|
|
|
@ -107,8 +107,8 @@
|
|||
},
|
||||
onShow() {
|
||||
// debugger;
|
||||
console.log('vuex_userRange'+this.vuex_perm);
|
||||
console.log(this.vuex_user);
|
||||
console.log(this.vuex_perm);
|
||||
this.limitedRpj = this.vuex_perm.includes('rpj.create')||this.vuex_perm.includes('superuser');
|
||||
this.limitedOperation = this.vuex_perm.includes('operation.create')||this.vuex_perm.includes('superuser');
|
||||
},
|
||||
|
|
|
@ -12,7 +12,7 @@ try{
|
|||
}
|
||||
|
||||
// 需要永久存储,且下次APP启动需要取出的,在state中的变量名
|
||||
let saveStateKeys = ['vuex_user', 'vuex_token', 'vuex_appid','vuex_perm','vuex_employee','vuex_userRange'];
|
||||
let saveStateKeys = ['vuex_user', 'vuex_token', 'vuex_appid', 'vuex_perm', 'vuex_employee'];
|
||||
|
||||
// 保存变量到本地存储中
|
||||
const saveLifeData = function(key, value){
|
||||
|
@ -32,9 +32,11 @@ const store = new Vuex.Store({
|
|||
// 如果上面从本地获取的lifeData对象下有对应的属性,就赋值给state中对应的变量
|
||||
// 加上vuex_前缀,是防止变量名冲突,也让人一目了然
|
||||
vuex_user: lifeData.vuex_user ? lifeData.vuex_user : {},
|
||||
vuex_employee: lifeData.vuex_employee ? lifeData.vuex_employee : {},
|
||||
vuex_token: lifeData.vuex_token ? lifeData.vuex_token : '',
|
||||
vuex_perm: lifeData.vuex_perm ? lifeData.vuex_perm : [],
|
||||
vuex_userRange: lifeData.vuex_userRange ? lifeData.vuex_userRange : [],
|
||||
vuex_userRange: lifeData.vuex_userRange ? lifeData.vuex_userRange : {},
|
||||
vuex_userRange2: lifeData.vuex_userRange2 ? lifeData.vuex_userRange2 : {},
|
||||
vuex_appid: 'wxf7d6140f507466be',
|
||||
vuex_login: 'http://qyjy.ctc-zc.com/h5/',
|
||||
vuex_version: '1.00.08',
|
||||
|
|
Loading…
Reference in New Issue