Merge branch 'bjxz-dev' of http://139.9.66.234:18023/dhp/zhgdyunapp into bjxz-rain

This commit is contained in:
X_Rian 2024-07-04 14:10:04 +08:00
commit 15436558de
9 changed files with 224 additions and 133 deletions

View File

@ -2,8 +2,8 @@
"name" : "智慧安全", //
"appid" : "__UNI__4AA4101",
"description" : "",
"versionName" : "1.6.3",
"versionCode" : 163,
"versionName" : "1.6.4",
"versionCode" : 164,
"transformPx" : false,
/* 5+App */
"app-plus" : {

View File

@ -22,7 +22,7 @@
</u-form>
<view class="between">
<view class="link" @click="forgetPassword">忘记密码</view>
<view class="link" @click="goToPage">{{ type == "user" ? "用户账号注册" : "供应商账号注册" }}</view>
<!-- <view class="link" @click="goToPage">{{ type == "user" ? "用户账号注册" : "供应商账号注册" }}</view> -->
</view>
</view>
<view class="selectDept" v-else>

View File

@ -26,7 +26,7 @@
</view>
</view>
<!-- v-if="COMPANY != 'nanchang'" -->
<view class="operateBar" @click="viewFileFn">
<view class="operateBar" @click="viewFileFn" v-if="isShowProjectDocument">
<view class="left">
<image class="operateIcon" src="@/static/file.png" mode="widthFix"></image>
项目资料
@ -99,22 +99,12 @@
if (val.type == 1) {
this.flag = false
}
this.isShowProjectDocument = JSON.parse(uni.getStorageSync('userInfo')).systemLogoConfig.showFileCenter
},
onShow() {
this.userInfo = JSON.parse(uni.getStorageSync('userInfo'));
this.getModuleList();
},
methods: {
//
getModuleList() {
let allModuleList = this.userInfo.menuAuthority.moduleList;
for (let i = 0; i < allModuleList.length; i++) {
if (allModuleList[i].modulePath == '/companyAdmin/docManage') { //
this.isShowProjectDocument = true;
break;
}
}
},
viewVersionInfo() {
var that = this

View File

@ -7,30 +7,41 @@
</headers>
<view class="content">
<view class="flex input_Wrap">
<input placeholder="请输入人员姓名/身份证" @input="changeSeek" @focus="showValue=true" @blur="blur" class="input_c" placeholder-style="font-size:28rpx" :value="inputVal" />
<input placeholder="请输入人员姓名/身份证" @input="changeSeek" @focus="showValue=true" @blur="blur"
class="input_c" placeholder-style="font-size:28rpx" :value="inputVal" />
<text class="seekBtn" @click="changeSeek({detail:{value:inputVal}})">搜索</text>
</view>
<view class="results_wrap" v-if="showValue">
<view class="value flex3" v-if="listData.length>0" v-for="(item,index) in listData" :key="index" @click="showDetailsBtn(item.id)">
<view class="value" v-if="listData.length>0" v-for="(item,index) in listData" :key="index"
@click="showDetailsBtn(item.id)">
<!-- <text v-if="item.personType==1">{{item.workerName+'-'+item.teamName+'-'}}<text class="font_weight">{{item.idCard}}</text></text>
<text v-else>{{item.workerName+'-'+item.departmentName+'-'}}<text class="font_weight">{{item.idCard}}</text></text> -->
<text v-if="item.personType==1">{{item.workerName+'-'+item.teamName+'-'}}<text class="font_weight">{{item.idCard}}</text></text>
<text v-else-if="item.personType==3">{{item.workerName+'-'+'临时人员-'}}<text class="font_weight">{{item.idCard}}</text></text>
<text v-else>{{item.workerName+'-'+item.departmentName+'-'}}<text class="font_weight">{{item.idCard}}</text></text>
<uni-icons class="arrowright" type="arrowright"></uni-icons>
<view v-if="item.personType==1">
<text>{{item.workerName+'-'+(item.teamName?item.teamName+'-':'')}}</text>
<text class="font_weight">{{item.idCard}}</text>
</view>
<view v-else-if="item.personType==3">
<text>{{item.workerName+'-'+'临时人员-'}}</text>
<text class="font_weight">{{item.idCard}}</text>
</view>
<view v-else>
<text>{{item.workerName+'-'+(item.departmentName?item.departmentName +'-':'')}}</text>
<text class="font_weight">{{item.idCard}}</text>
</view>
<!-- <uni-icons class="arrowright" type="arrowright"></uni-icons> -->
</view>
<view v-if="listData.length==0" class="noData">暂无数据</view>
</view>
<view class="margin_top" v-else-if="COMPANY != 'nanchang'">
<view class="placeholder flex2">
<view class="striping"></view>
<view style="margin:0 10px;">其他搜索方式</view>
<view class="striping"></view>
</view>
<view class="func_wrap flex2" >
<view class="func_wrap flex2">
<view class="item" @click="scanQRcodeBtn">
<image src="../../../static/scan.png" class="icon"></image>
<view>扫码</view>
@ -47,72 +58,71 @@
data() {
return {
inputVal: "",
showValue:false,
projectSn:'',
listData:[],
showValue: false,
projectSn: '',
listData: [],
}
},
onLoad(){
onLoad() {
this.projectSn = JSON.parse(uni.getStorageSync('projectDetail')).projectSn;
},
methods: {
//
changeSeek(val){
changeSeek(val) {
let that = this;
this.inputVal = val.detail.value;
if(val.detail.value==""){
this.listData = [];
this.showValue = true;
return
if (val.detail.value == "") {
this.listData = [];
this.showValue = true;
return
}
this.sendRequest({
url:'xmgl/workerInfo/selectAppWorkerList',
method:"post",
data:{
projectSn:that.projectSn,
searchCondition:val.detail.value
url: 'xmgl/workerInfo/selectAppWorkerList',
method: "post",
data: {
projectSn: that.projectSn,
searchCondition: val.detail.value
},
success:res=>{
success: res => {
this.listData = res.result;
this.listData.map(item => {
let str = "***************"
item.idCard = item.idCard.substring(0,3)+str+item.idCard.substring(16)
item.idCard = item.idCard.substring(0, 3) + str + item.idCard.substring(16)
})
}
})
},
//
scanQRcodeBtn(){
scanQRcodeBtn() {
let that = this;
//
uni.scanCode({
onlyFromCamera: true,
success: function (res) {
that.showDetailsBtn(res.result)
},
fail:function(error){
}
onlyFromCamera: true,
success: function(res) {
that.showDetailsBtn(res.result)
},
fail: function(error) {}
});
},
//
blur(){
if(this.inputVal==''){
this.showValue = false;
blur() {
if (this.inputVal == '') {
this.showValue = false;
}
},
showDetailsBtn(id){
showDetailsBtn(id) {
uni.navigateTo({
url:'./searchTeam/personDetail?id='+id
url: './searchTeam/personDetail?id=' + id
})
},
}
}
</script>
<style>
<style scoped lang="scss">
.flex {
display: flex;
align-items: center;
@ -123,6 +133,7 @@
align-items: center;
justify-content: center;
}
.flex3 {
display: flex;
align-items: center;
@ -143,11 +154,11 @@
.input_Wrap {
width: 80%;
/* margin: 0 auto; */
border: 1px solid #d8d8e5;
box-sizing: border-box;
padding: 0;
border-radius: 20px;
/* margin: 0 auto; */
border: 1px solid #d8d8e5;
box-sizing: border-box;
padding: 0;
border-radius: 20px;
}
.input_Wrap .input_c {
@ -168,9 +179,9 @@
font-size: 28rpx;
/* border-radius: 2px; */
border-radius: 20px;
position: absolute;
right: 15px;
position: absolute;
right: 15px;
}
.seekBtn:active {
@ -184,11 +195,13 @@
font-size: 30rpx;
color: rgba(38, 45, 71, 0.8);
}
.striping{
.striping {
background-color: rgba(38, 45, 71, 0.6);
height: 1px;
width: 120rpx;
}
.func_wrap .item {
text-align: center;
margin: 18px 0;
@ -201,29 +214,39 @@
width: 78rpx;
height: 39px;
}
.results_wrap .value{
text-align: center;
font-size: 28rpx;
line-height: 35px;
margin: 5px 0;
border-bottom: 1px dashed #babcc5;
.results_wrap .value {
/* text-align: center; */
font-size: 28rpx;
line-height: 35px;
margin: 5px 0;
border-bottom: 1px dashed #babcc5;
>view{
width: 100%;
// display: flex;
// align-items: center;
// text:nth-child(1){
// display: block;
// }
}
}
.arrowright{
.arrowright {
color: #999 !important;
}
.margin_top {
margin-top: 100px;
}
.font_weight{
.font_weight {
font-weight: 700;
}
.noData{
.noData {
text-align: center;
margin-top: 50px;
font-size: 28rpx;
color: #999;
}
</style>
</style>

View File

@ -60,6 +60,10 @@
<view>城乡居民医疗保险{{item.medicalInsurance==1?'否':item.medicalInsurance==2?'是':''}}</view>
<view>城乡居民养老保险{{item.endowmentInsurance==1?'否':item.endowmentInsurance==2?'是':''}}</view>
</view>
<view class="no_data" v-if="info.length == 0">
<image src="/static/noData.png"></image>
<view>暂无数据</view>
</view>
</view>
<view class="info_wrap" v-if="type==4">
<view class="title">
@ -67,7 +71,7 @@
<text class="state2" v-else>已培训</text>
</view>
<view class="detailInfo" v-for="(item,index) in info" :key="index">
<view>培训类型 {{
<!-- <view>培训类型 {{
item.eduType == 1
? "入场三级教育"
: item.eduType == 2
@ -77,11 +81,11 @@
: item.eduType == 4
? "VR安全教育"
: ""
}}</view>
<view>培训主题{{item.eduCourseName}}</view>
<view>培训课时{{item.eduClasshour}}</view>
<view>培训得分{{item.score}}</view>
<view>是否合格{{item.isQualified == 1 ? "合格":item.isQualified == 2? "不合格":''}}</view>
}}</view> -->
<view>培训日期{{item.date}}</view>
<view>培训主题{{item.subject}}</view>
<view>考试分数{{item.score}}</view>
<view>是否合格{{item.isPass == 1 ? "是":item.isPass == 0? "否":''}}</view>
</view>
</view>
</view>
@ -93,15 +97,36 @@
data() {
return {
type: 1,
info: null
info: null,
workerId: ""
}
},
onLoad(option) {
this.type = Number(option.type);
this.workerId = option.workerId;
this.info = uni.getStorageSync('moduleInfo');
this.getFileInfo();
if(this.type == 4){ //
this.getExamDataList();
}
},
methods: {
//
getExamDataList() {
this.sendRequest({
url: 'xmgl/workerInfo/getTrainRecordsByWorkerId',
method: 'post',
data: {
projectSn: JSON.parse(uni.getStorageSync('projectDetail')).projectSn,
workerId: this.workerId,
},
success: res => {
if(res.code == 200){
this.info = res.result;
}
}
})
},
//
getFileInfo() {
let data = JSON.parse(JSON.stringify(this.info))
@ -151,6 +176,7 @@
<style>
.info_wrap {
text-align: center;
padding-bottom: 2rpx;
}
.detailInfo {
@ -162,7 +188,24 @@
font-size: 30rpx;
line-height: 28px;
}
.no_data{
position: fixed;
top: 35%;
// transform: translateY(-50%);
left: 50%;
transform: translateX(-50%);
padding-top: 60rpx;
text-align: center;
color: rgba(0,0,0,0.5);
font-size: 28rpx;
uni-image{
width: 162rpx;
height: 130rpx;
display: block;
margin: 0 auto;
margin-bottom: 40rpx;
}
}
.info_wrap .title {
font-size: 30rpx;
margin-top: 8px;

View File

@ -574,7 +574,8 @@
} else if (type == 3) {
moduleInfo = this.insuranceList;
} else if (type == 4) {
moduleInfo = this.safeEducationList;
// moduleInfo = this.safeEducationList;
moduleInfo = [];
} else if (type == 5) {
// moduleInfo = this.safeEducationList;
} else if (type == 6) {
@ -585,7 +586,7 @@
};
uni.setStorageSync('moduleInfo', moduleInfo)
uni.navigateTo({
url: "./detailsMod?type=" + type
url: "./detailsMod?type=" + type + "&workerId=" + this.workerId
})
},

View File

@ -31,7 +31,8 @@
</view>
<view class="b-bottom-textarea">
<view class="name">反馈内容</view>
<textarea auto-height :maxlength="-1" @input='supplementTextarea' :value="form.feedbackContent" placeholder="多行输入"></textarea>
<textarea auto-height :maxlength="-1" @input='supplementTextarea' :value="form.feedbackContent"
placeholder="多行输入"></textarea>
</view>
<view class="b-bottom" style="border-bottom: 2rpx solid #f0f0f0;">
<view class="name">上传图片</view>
@ -49,20 +50,32 @@
<view class="delay-content" style="border-bottom: 2rpx solid #f0f0f0;">
<view class="name"><text class="mustStar">*</text>是否有延期误工事件</view>
<radio-group class="radio_box" @change="radioChange">
<label class="radio"><radio value="1" /></label>
<label class="radio"><radio value="0" checked="true"/></label>
<label class="radio">
<radio value="1" />
</label>
<label class="radio">
<radio value="0" checked="true" />
</label>
</radio-group>
</view>
<view class="b-bottom-textarea" v-if="form.hasDelayEvent == 1">
<view class="name" style="width: 30%;"><text class="mustStar">*</text>延期误工原因</view>
<textarea auto-height :maxlength="-1" @input='reasonTextarea' :value="form.delayEventReason" placeholder="多行输入"></textarea>
<textarea auto-height :maxlength="-1" @input='reasonTextarea' :value="form.delayEventReason"
placeholder="多行输入"></textarea>
</view>
<view class="delay-reason-content" style="border-bottom: 2rpx solid #f0f0f0;" v-if="form.hasDelayEvent == 1">
<view class="delay-reason-content" style="border-bottom: 2rpx solid #f0f0f0;"
v-if="form.hasDelayEvent == 1">
<view class="name"><text class="mustStar">*</text>延期原因类型</view>
<checkbox-group class="check_box" @change="checkChange">
<label class="check"><checkbox value="1" />人为因素</label>
<label class="check"><checkbox value="2" />环境因素</label>
<label class="check"><checkbox value="3" />不可抵抗因素</label>
<label class="check">
<checkbox value="1" />人为因素
</label>
<label class="check">
<checkbox value="2" />环境因素
</label>
<label class="check">
<checkbox value="3" />不可抵抗因素
</label>
</checkbox-group>
</view>
<!-- <view class="title">
@ -101,31 +114,31 @@
imgFileList: [],
projectSn: '',
materialList: [],
id: ''
itemForm: {}
}
},
onLoad(option) {
this.projectSn = JSON.parse(uni.getStorageSync('projectDetail')).projectSn;
this.id = option.id
console.log('id有了吗', this.id);
this.itemForm = JSON.parse(decodeURIComponent(option.item));
console.log("数据itemForm",this.itemForm)
},
onShow() {
// this.getList()
},
methods: {
checkChange(e){
console.log(e,777)
checkChange(e) {
console.log(e, 777)
this.form.delayEventType = e.detail.value
},
radioChange(e){
console.log(e,666)
radioChange(e) {
console.log(e, 666)
this.form.hasDelayEvent = e.detail.value;
},
//
getList() {
let data = {
projectSn: this.projectSn,
taskProgressId: this.id,
taskProgressId: this.itemForm.id,
}
this.sendRequest({
url: 'xmgl/xzTaskProgressMaterialRel/detailList',
@ -146,7 +159,7 @@
//
getDetail() {
let data = {
taskProgressId: this.id,
taskProgressId: this.itemForm.id,
}
this.sendRequest({
url: 'xmgl/xzTaskProgressContent/list',
@ -162,7 +175,7 @@
if (res.result[0].image !== "") {
this.imgFileList = JSON.parse(res.result.image)
}
}else {
} else {
this.selectNowDate()
}
@ -178,7 +191,7 @@
}
},
//
reasonTextarea(e){
reasonTextarea(e) {
this.form.delayEventReason = e.detail.value
},
//
@ -243,37 +256,44 @@
},
//
addSaveBtn() {
console.log(this.form,111222);
console.log(this.form, 111222);
if (this.form.uploadDate == "") {
uni.showToast({
title: "请选择上报时间",
icon: 'error'
icon: 'none'
})
return
}
if(this.form.hasDelayEvent !== '0'){
if(!this.form.delayEventReason){
if (this.form.hasDelayEvent !== '0') {
if (!this.form.delayEventReason) {
uni.showToast({
title: "请输入延期误工原因",
icon: 'error'
icon: 'none'
})
return
}
if(this.form.delayEventType.length == 0){
if (this.form.delayEventType.length == 0) {
uni.showToast({
title: "请选择延期原因类型",
icon: 'error'
icon: 'none'
})
return
}
}
let data = JSON.parse(JSON.stringify(this.form));
data.projectSn = this.projectSn;
data.taskProgressId = String(this.id)
data.taskProgressId = String(this.itemForm.id)
data.image = JSON.stringify(this.imgFileList)
data.typeDataList = this.materialList
console.log('新增提交的数据', data);
data.delayEventType = this.form.delayEventType.join(',')
if (+this.form.progressRatio <= +this.itemForm.progressRatio) {
uni.showToast({
title: "上报进度必须大于当前进度",
icon: 'none'
})
return;
}
this.sendRequest({
url: 'xmgl/xzTaskProgressContent/add',
method: 'post',
@ -369,48 +389,54 @@
}
.b-bottom-textarea{
.b-bottom-textarea {
border-top: 2rpx solid #f0f0f0;
display: flex;
min-height: 200rpx;
// line-height: 80rpx;
padding-top: 20rpx;
.inputFrom {
width: 80%;
margin-left: 40rpx;
}
.name {
width: 20%;
}
.icon-right {
margin-left: 16rpx;
width: 16rpx;
height: 32rpx;
}
/deep/.uni-textarea-placeholder{
/deep/.uni-textarea-placeholder {
font-size: 28rpx;
}
}
.delay-content{
.delay-content {
border-top: 2rpx solid #f0f0f0;
display: flex;
align-items: center;
justify-content: space-between;
height: 200rpx;
.name {
width: 50%;
}
.radio_box{
.radio_box {
display: flex;
.radio {
margin-right: 40rpx;
display: flex;
align-items: center;
}
// /deep/.uni-radio-input{
// width: 28rpx;
// height: 28rpx;
@ -421,34 +447,39 @@
// }
}
}
.delay-reason-content{
.delay-reason-content {
border-top: 2rpx solid #f0f0f0;
display: flex;
height: 200rpx;
padding-top: 20rpx;
.name {
width: 28%;
}
.check_box{
.check_box {
display: flex;
flex-direction: column;
.check {
margin-bottom: 20rpx;
display: flex;
align-items: center;
}
/deep/.uni-checkbox-input{
/deep/.uni-checkbox-input {
width: 28rpx;
height: 28rpx;
font-size: 28rpx;
}
/deep/.uni-checkbox-input-checked::before{
/deep/.uni-checkbox-input-checked::before {
font-size: 28rpx;
}
}
}
.addProgess {
width: 50%;
background: #5181f6;
@ -560,4 +591,4 @@
.mustStar {
color: red;
}
</style>
</style>

View File

@ -228,7 +228,8 @@
let that = this;
let requestData = {
...that.condition,
...that.option
...that.option,
isApprovalList: 1
}
if (this.checkedTab == 1) {
requestData.isAudit = 0

View File

@ -156,10 +156,12 @@
},
//
addProgessBtn() {
// uni.navigateTo({
// url: './addFrom?id=' + this.itemFrom.id
// })
uni.navigateTo({
url: './addFrom?id=' + this.itemFrom.id
url: './addFrom?item=' + encodeURIComponent(JSON.stringify(this.itemFrom))
})
},
//
startTask() {