factory_mp_old/pages/workSpace/visit/visitCreate.vue

796 lines
17 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="qingjia-apply">
<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="apply-info">
<view class="form-content ">
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">来访事由</text>
</view>
<view class="form-right">
<uni-data-select v-model="formData.purpose" :localdata="range" @change="purposeChange">
</uni-data-select>
</view>
</view>
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">来访概述</text>
</view>
<view class="form-right">
<input type="text" v-model="formData.name" maxlength="50" placeholder="来访概述" />
</view>
</view>
<view class="form-item border-bottom" style="height: 300rpx;" v-if="formData.purpose!==50">
<view class="form-left">
<text class="form-left-text">来访详述</text>
</view>
<view class="form-right">
<textarea class="apply-reason-text" v-model="formData.description" maxlength="250"
placeholder="请输入" />
</view>
</view>
<view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">来访时间</text>
</view>
<view class="form-right form-date">
<uni-datetime-picker
v-model="datetimerange"
type="datetimerange"
rangeSeparator="至"
:hide-second="true"
/>
<!-- <uni-datetime-picker v-model="formData.visit_time" :border="false" type="datetime"/> -->
</view>
</view>
<!-- <view class="form-item border-bottom">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">离开时间</text>
</view>
<view class="form-right form-date">
<uni-datetime-picker v-model="formData.leave_time" :border="false" type="datetime"/>
</view>
</view> -->
<view class="form-item border-bottom" v-if="formData.purpose!==50">
<view class="form-left" @click="Selection">
<text class="form-left-text">接待人</text>
</view>
<view class="form-right">
<!-- <ba-tree-picker ref="dcoordinator_Picker" :multiple='false' @select-change="select_coordinator_Change" title="选择接待人"
: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"/>
</view>
</view>
</view>
<view class="form-item border-bottom" v-if="formData.purpose!==50">
<view class="form-left">
<text class="form-left-text">来访单位</text>
</view>
<view class="form-right">
<input type="text" v-model="formData.company" maxlength="50" placeholder="请输入" />
</view>
</view>
<view class="form-item border-bottom" v-if="formData.purpose!==50">
<view class="form-left">
<text class="star">*</text>
<text class="form-left-text">来访级别</text>
</view>
<view class="form-right">
<uni-data-select v-model="formData.level" :localdata="levelRange">
</uni-data-select>
</view>
</view>
<view class="form-item border-bottom">
<view class="form-left">
<text class="form-left-text">来访人数</text>
</view>
<view class="form-right">
<input type="number" v-model="formData.count_people" maxlength="50" placeholder="来访人数(整数)" />
</view>
</view>
<view class="btn" v-if="showBtns">
<button type="primary" class="save-btn" @click="nextHandle">下一步</button>
</view>
</view>
</view>
</view>
</template>
<script>
import nonNullCheck from '../../../utils/nonNullCheck.js';
import resetData from '../../../utils/common.js';
export default {
name: "visit",
data() {
return {
formData: {
name: '', //来访概述
purpose: 10, //来访事由
receptionist: '', //接待人
visit_time: '', //来访时间
leave_time: '', //离开时间
description: '', //来访详述
company: '', //来访单位
level: 10, //来访级别
count_people: 1, //来访人数
},
datetimerange: [],
depRange: [],
publishRangeCon: '',
menuId: "",
itemId: "",
detail: false,
showBtns:false,
visitItem: {},
type: '',
visitId: '',
range: [{
text: "拉送货",
value: 50
},{
text: "参观",
value: 10
}, {
text: "拜访",
value: 20
}, {
text: "面试",
value: 30
}, {
text: "开会",
value: 40
}, {
text: "其他",
value: 60
}],
levelRange: [{
text: "一般",
value: 10
}, {
text: "重要",
value: 20
}],
receptionist_name:'请选择接待人',
// userRange: [],
}
},
watch: {
datetimerange(newval) {
this.formData.visit_time = this.datetimerange[0]
this.formData.leave_time = this.datetimerange[1]
},
},
onLoad(params) {
if (params.visit) {
this.visitId = params.visit;
this.type = params.type;
this.getVisitItem();
if(this.type === 'show'){
this.showBtns = false;
}else{
this.showBtns = true;
}
} else {
this.showBtns = true;
}
},
onShow() {
// uni.$once('Selection',function(e){
// debugger;
// console.log(e)
// })
},
methods: {
showDcoordinatorPicker(){
//type:对应的id字段typeName对应的姓名的文字显示
let params='?type=receptionist&typeName=receptionist_name'
uni.navigateTo({
url:"../../comm/userSelect/index"+params
})
},
getVisitItem() {
this.$u.api.visitItem(this.visitId).then(res => {
this.formData = res;
this.datetimerange = [res.visit_time, res.leave_time]
})
},
getDate(type) {
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
if (type === 'start') {
year = year - 60;
} else if (type === 'end') {
year = year + 2;
}
month = month > 9 ? month : '0' + month;
day = day > 9 ? day : '0' + day;
return `${year}-${month}-${day}`;
},
bindStartDateChange: function(e) {
this.formData.start_time = e.detail.value
},
bindEndDateChange: function(e) {
this.formData.end_time = e.detail.value
},
nextHandle(type) {
let that = this;
if (!that.paramsCheck()) {
return;
} else {
if (that.formData.id) {
that.$u.api.visitUpdate(that.formData.id, that.formData).then(res => {
if (res.err_msg) {
} else {
let params = `?visit=${that.formData.id}&visitName=${that.formData.name}`;
uni.navigateTo({
url: '/pages/workSpace/visit/vpeopleList'+params
})
}
})
} else {
that.$u.api.visitCreate(that.formData).then(res => {
if (res.err_msg) {
} else {
that.visit = res.id;
that.formData.id = res.id;
let params = `?visit=${res.id}&visitName=${that.formData.name}`;
uni.navigateTo({
url: '/pages/workSpace/visit/vpeopleList'+params
})
}
})
}
}
},
purposeChange(item){
let that = this;
// debugger;
console.log(item)
if(item===50){
that.formData.receptionist = '';
that.formData.company = '';
that.formData.description = '';
that.formData.name = '货车司机出入';
that.formData.level = 10;
}else{
that.formData.name = '';
}
},
/* 参数验证 */
paramsCheck() {
if (!nonNullCheck(this.formData.purpose)) {
uni.showToast({
title: '请输入来访事由',
icon: "none"
})
return false;
}
if (!nonNullCheck(this.formData.name)) {
uni.showToast({
title: '请输入来访概述',
icon: "none"
})
return false;
}
if (!nonNullCheck(this.formData.visit_time)) {
uni.showToast({
title: '请选择来访时间',
icon: "none"
})
return false;
}
if (!nonNullCheck(this.formData.leave_time)) {
uni.showToast({
title: '请选择离开时间',
icon: "none"
})
return false;
}
if (!nonNullCheck(this.formData.receptionist) && this.formData.purpose!=50) {
uni.showToast({
title: '请选择接待人',
icon: "none"
})
return false;
}
if (!nonNullCheck(this.formData.level)) {
uni.showToast({
title: '请选择访问级别',
icon: "none"
})
return false;
}
if (!nonNullCheck(this.formData.count_people)) {
uni.showToast({
title: '请填写来访人数',
icon: "none"
})
return false;
}
return true;
},
goBack() {
uni.navigateBack({
delta: 1
})
},
}
}
</script>
<style scoped>
.qingjia-apply {
background-color: #f3fbff;
padding-bottom: 227rpx;
}
>>>.uni-navbar-btn-text text {
font-size: 32rpx !important;
}
.apply-info {
width: 720rpx;
margin: 0 auto;
background-color: #FFFFFF;
border-radius: 10rpx;
padding: 25rpx 32rpx;
box-sizing: border-box;
margin-top: 24rpx;
}
.border-bottom {
border-bottom: 1rpx solid #eeeeee;
}
.star {
color: red;
}
.top-title-text {
padding-left: 24rpx;
position: relative;
font-family: PingFang-SC-Medium;
font-size: 34rpx;
line-height: 72rpx;
color: #383838;
}
.top-title-text::before {
content: "";
width: 6rpx;
height: 29rpx;
background-image: linear-gradient(90deg, #164cc3 0%, #2c6fd9 100%);
border-radius: 3rpx;
display: block;
position: absolute;
left: -4rpx;
top: 22rpx;
}
.form-item {
/* display: flex; */
font-family: PingFang-SC-Medium;
font-size: 30rpx;
/* line-height: 97rpx; */
height: 200rpx;
display: flex;
flex-wrap: wrap;
align-items: center;
}
.form-left-text {
color: #212121;
margin-bottom: 33rpx;
}
.form-left {
/* min-width: 160rpx; */
width: 100%;
}
.form-right {
margin-left: 20rpx;
flex: 1;
color: #414141;
}
.form-right input {
/* height: 100%; */
/* height: 60rpx; */
font-size: 30rpx;
}
.form-date>>>.uni-date__x-input {
height: 97rpx;
font-size: 30rpx;
}
.form-date>>>.uni-icons {
display: none;
}
.qingjia-apply>>>uni-input {
/* height: 100%; */
font-size: 30rpx;
}
.apply-reason-text {
width: 653rpx;
height: 179rpx;
background-color: #f6f8fc;
border: solid 1rpx #e5e5e5;
margin-top: 21rpx;
padding: 14rpx 24rpx;
font-size: 26rpx;
box-sizing: border-box;
}
.apply_require {
margin-top: 0rpx !important;
}
.file-list {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
padding-top: 13rpx;
}
.file-wrap {
margin-top: 20rpx;
margin-right: 20rpx;
}
.file-item {
width: 155rpx;
height: 155rpx;
border: solid 1rpx #e5e5e5;
text-align: center;
display: flex;
align-items: center;
position: relative;
}
.file-content {
width: 100%;
}
.file-item .file-icon {
width: 37rpx;
height: 37rpx;
}
.file-item .file-name {
font-family: PingFang-SC-Regular;
font-size: 20rpx;
line-height: 17rpx;
color: #313131;
margin-top: 11rpx;
padding: 10rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.file-item>>>.uni-icons {
width: 26rpx;
height: 26rpx;
position: absolute;
right: -8rpx;
top: -22rpx;
/*
background-color: #d81e06;
border-radius: 50%;
font-size: 20rpx !important;
padding: 5rpx;
*/
box-sizing: border-box;
}
.form-right {
flex: 1;
color: #414141;
}
/*部门*/
uni-data-picker {
width: 100%;
border: none !important;
}
.my-data-picker>>>.input-value-border {
border: none !important;
}
>>>.input-value {
font-size: 30rpx !important;
;
}
.my-data-picker uni-data-picker {
width: 100% !important;
}
.my-data-picker {
width: 100%;
display: flex;
align-items: center;
margin-left: -10rpx;
}
/* 主体 */
>>>.uni-navbar__header,
>>>.uni-status-bar {
background-image: linear-gradient(90deg, #164cc3 0%, #2c6fd9 100%), linear-gradient(#e60012, #e60012) !important;
}
hongtouwenjian-top {
box-sizing: border-box;
padding-top: 24rpx;
padding-right: 15rpx;
padding-bottom: 20rpx;
padding-left: 15rpx;
}
.hongtouwenjian-top-c {
background-color: #ffffff;
border-radius: 10rpx;
padding-left: 30rpx;
padding-right: 30rpx;
display: flex;
flex-direction: column;
}
.hongtouwenjian-top-c-title {
display: flex;
align-items: center;
height: 85rpx;
border-bottom: 1px solid #eeeeee;
}
.hongtouwenjian-top-c-title-mark {
width: 6rpx;
height: 29rpx;
background-image: linear-gradient(90deg, #164cc3 0%, #2c6fd9 100%), linear-gradient(#f3fbff, #f3fbff);
background-blend-mode: normal, normal;
border-radius: 3rpx;
}
.hongtouwenjian-top-c-title-txt {
font-size: 34rpx;
color: #383838;
}
.hongtouwenjian-top-c-item {
/* display: flex; */
align-items: center;
/* height: 100rpx; */
border-bottom: 1px solid #EEEEEE;
box-sizing: border-box;
padding-left: 3rpx;
padding-right: 12rpx;
width: 100%;
line-height: 97rpx;
}
.hongtouwenjian-top-c-item:last-child {
border-bottom: none;
}
.hongtouwenjian-top-c-item-left {
display: flex;
align-items: center;
width: 164rpx;
}
.hongtouwenjian-top-c-item-left-mark {
font-size: 30rpx;
color: #f00808;
}
.hongtouwenjian-top-c-item-left-txt {
font-size: 30rpx;
color: #212121;
}
.hongtouwenjian-top-c-item-middle {
margin-left: 20rpx;
flex: 1;
display: flex;
align-items: center;
height: 100%;
}
.hongtouwenjian-top-c-item-middle-txt {
font-size: 30rpx;
color: #414141;
}
.hongtouwenjian-top-c-item-middle-input {
padding: 0;
margin: 0;
outline: none;
border: none;
background-color: transparent;
width: 100%;
/* height: 100%; */
height: 60rpx;
font-size: 30rpx;
color: #414141;
display: flex;
align-items: center;
}
.hongtouwenjian-top-c-item-right {
width: 22rpx;
height: 25rpx;
}
.hongtouwenjian-addbtn {
display: flex;
justify-content: flex-end;
box-sizing: border-box;
padding-right: 19rpx;
}
.hongtouwenjian-addbtn-w {
padding: 0;
margin: 0;
outline: none;
background-color: transparent;
width: 90rpx;
height: 46rpx;
line-height: 46rpx;
text-align: center;
background-color: #0075ff;
border-radius: 10rpx;
font-size: 26rpx;
color: #f3fbff;
}
/* 物品列表 */
.fixed-assets-listBig {
width: 100%;
padding: 0 20rpx;
box-sizing: border-box;
margin-bottom: 20rpx;
}
.fixed-assets-list {
width: 100%;
background-color: #FFFFFF;
padding: 0 20rpx;
box-sizing: border-box;
}
.fixed-assets-list .apply-info {
padding-top: 0rpx;
}
.fixed-assets-list .top {
height: 108rpx;
line-height: 108rpx;
border-bottom: 1rpx solid #eeeeee;
display: flex;
justify-content: space-between;
align-items: center;
}
.fixed-assets-list .top-left-text {
flex: 1;
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
font-size: 30rpx;
color: #212121;
}
.fixed-assets-list .top-right image {
width: 26rpx;
height: 28rpx;
vertical-align: middle;
}
.fixed-assets-list .top-right view {
height: auto;
padding-left: 10rpx;
font-size: 26rpx;
color: #8b8b8b;
}
/* .fixed-assets-list .bottomBig{
width: 100%;
} */
.fixed-assets-list .bottom {
/* display: flex;
justify-content: space-between;
align-items: center; */
padding-top: 25rpx;
font-size: 28rpx;
color: #616161;
line-height: 72rpx;
}
.fixed-assets-list .bottom-left+.bottom-right {
width: 50%;
}
/* 文件上传进度样式*/
.u-progress-content {
display: flex;
align-items: center;
justify-content: center;
}
.u-progress-dot {
width: 10rpx;
height: 10rpx;
border-radius: 50%;
background-color: #fb9126;
}
.u-progress-info {
font-size: 24rpx;
padding-left: 10rpx;
letter-spacing: 2rpx
}
.is-hidden {
visibility: hidden;
}
.title {
font-size: 14px;
font-weight: bold;
margin: 20px 0 5px 0;
}
.data-pickerview {
height: 400px;
border: 1px #e5e5e5 solid;
}
.popper__arrow {
top: -6px;
left: 50%;
margin-right: 3px;
border-top-width: 0;
border-bottom-color: #EBEEF5;
}
.popper__arrow {
top: -6px;
left: 50%;
margin-right: 3px;
border-top-width: 0;
border-bottom-color: #EBEEF5;
}
</style>