209 lines
6.1 KiB
Vue
209 lines
6.1 KiB
Vue
<template>
|
||
<view class="container">
|
||
|
||
<view v-show="detailData.billType == 0"><text>入库类型</text>:{{ detailData.rkTypeName }}</view>
|
||
<view v-show="detailData.billType == 1"><text>出库类型</text>:{{ detailData.ckTypeName }}</view>
|
||
<view><text>所属仓库:</text>{{ detailData.cangkuName }}</view>
|
||
<view><text>物资类型:</text>{{ detailData.wlTypeName }}</view>
|
||
<view><text>理货员:</text>{{ detailData.lihuoYName }}</view>
|
||
<view><text>入库时间:</text>{{ parseTime(detailData.createTime) }}</view>
|
||
<view class="box">
|
||
<view v-for="item in detailData.scenePhotos" class="item">
|
||
<view><text>项目描述:</text>{{ item.xmMs }}</view>
|
||
<view><text>供应商:</text>{{ item.gysMc }}</view>
|
||
<view><text>物料号:</text>{{ item.wlNo }}</view>
|
||
<view><text>物料描述:</text>{{ item.wlMs }}</view>
|
||
<view><text>数量:</text>{{ item.realQty }}{{ item.dw }}</view>
|
||
<view><text>项目定义号:</text>{{ item.xmNo }}</view>
|
||
<view><text>存放位置:</text>{{ item.pcode || "-" }}</view>
|
||
<!-- <view><text>身份码:</text>{{ item.entityId || "-" }}</view> -->
|
||
<view><text>备注:</text>{{ item.rkRemark || "-" }}</view>
|
||
<view><text>现场照片:</text><uv-image height="80" mode="heightFix" @tap="previewImage(item.signUrl)" :src="item.signUrl"></uv-image></view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="btn">
|
||
<uv-button type="error" text="确定" size="large" style="width: 48%;" @tap="openModal(0)">驳 回</uv-button>
|
||
<uv-button type="primary" text="确定" size="large" class="mainBtn" style="width: 48%;" @tap="openModal(1)">同 意</uv-button>
|
||
</view>
|
||
|
||
|
||
|
||
<uv-modal ref="auditModalRef" title="审批信息" @confirm="auditConfirm" :showCancelButton="true" :closeOnClickOverlay="false" asyncClose>
|
||
<view class="slot-content" style="width: 100%;">
|
||
<uv-form labelPosition="top" :model="auditForm" labelWidth="80" :rules="auditRules" ref="auditFormRef">
|
||
<uv-form-item label="签字" prop="approverSignUrl" borderBottom v-if="auditStatus == 1">
|
||
<uv-button text="去签名" v-if="!auditForm.approverSignUrl" @tap="goSign"></uv-button>
|
||
<uv-image height="80" mode="heightFix" v-if="auditForm.approverSignUrl" @tap="previewImage(auditForm.approverSignUrl)" :src="auditForm.approverSignUrl"></uv-image>
|
||
</uv-form-item>
|
||
<uv-form-item label="备注" prop="remark" borderBottom>
|
||
<uv-textarea v-model="auditForm.remark" placeholder="备注" />
|
||
</uv-form-item>
|
||
</uv-form>
|
||
</view>
|
||
</uv-modal>
|
||
|
||
|
||
</view>
|
||
</template>
|
||
|
||
<script setup>
|
||
import { ref, computed, getCurrentInstance, onUnmounted } from "vue";
|
||
import { onLoad, onShow, onPageScroll } from "@dcloudio/uni-app";
|
||
import { passedAudit } from "@/api/mine"
|
||
|
||
const instance = getCurrentInstance().proxy
|
||
|
||
const detailData = ref({})
|
||
onLoad(() => {
|
||
const eventChannel = instance.getOpenerEventChannel();
|
||
// 监听redactInfo事件,获取上一页面通过eventChannel传送到当前页面的数据
|
||
eventChannel.on('auditInfo', function(data) {
|
||
detailData.value = data.info
|
||
console.log("获取到信息", data.info)
|
||
});
|
||
})
|
||
|
||
// 预览
|
||
const previewImage = (img) => {
|
||
let arr = []
|
||
arr.push(img)
|
||
uni.previewImage({
|
||
urls: arr,
|
||
})
|
||
}
|
||
|
||
|
||
const auditModalRef = ref(null)
|
||
const auditFormRef = ref(null)
|
||
const auditStatus = ref(0)
|
||
const openModal = (status) => {
|
||
auditForm.value.approverSignUrl = ""
|
||
auditForm.value.remark = ""
|
||
auditStatus.value = status
|
||
auditModalRef.value.open();
|
||
}
|
||
const auditForm = ref({
|
||
approverSignUrl: "",
|
||
remark: '',
|
||
})
|
||
const auditRules = computed(() => ({
|
||
'approverSignUrl': {
|
||
type: 'string',
|
||
required: auditStatus.value == 1,
|
||
message: '请手写签字',
|
||
trigger: ['blur', 'change']
|
||
},
|
||
'remark': {
|
||
type: 'string',
|
||
required: auditStatus.value == 0,
|
||
message: '请填写备注',
|
||
trigger: ['blur', 'change']
|
||
},
|
||
}));
|
||
|
||
// 去签名页面
|
||
const goSign = () => {
|
||
// 移除之前的事件监听器避免重复
|
||
uni.$off('getSignImg')
|
||
|
||
uni.navigateTo({
|
||
url: '/pagesMine/signature',
|
||
success: () => {
|
||
// 监听签名返回事件
|
||
const eventHandler = (e) => {
|
||
console.log('getSignImg', e)
|
||
// signBase64.value = e.base64
|
||
// signTempimg.value = e.path
|
||
auditForm.value.approverSignUrl = e.url
|
||
}
|
||
|
||
// 监听一次自定义事件
|
||
uni.$once('getSignImg', eventHandler)
|
||
|
||
// 页面卸载时移除监听(避免内存泄漏)
|
||
// uni.$off('getSignImg', eventHandler)
|
||
}
|
||
})
|
||
}
|
||
|
||
const auditConfirm = () => {
|
||
auditFormRef.value.validate().then(res => {
|
||
let obj = {
|
||
billNo: detailData.value.billNo,
|
||
id: detailData.value.id,
|
||
rkId: detailData.value.rkId,
|
||
remark: auditForm.value.remark,
|
||
auditResult: auditStatus.value,
|
||
}
|
||
if (auditStatus.value == 1) {
|
||
obj.approverSignUrl = auditForm.value.approverSignUrl
|
||
}
|
||
passedAudit(obj).then(res => {
|
||
auditModalRef.value.close()
|
||
uni.showToast({
|
||
title: res.msg,
|
||
icon: 'none',
|
||
mask: true,
|
||
dution: 2000
|
||
})
|
||
setTimeout(() => {
|
||
uni.navigateBack({})
|
||
}, 2000)
|
||
})
|
||
}).catch(errors => {
|
||
auditModalRef.value.closeLoading()
|
||
})
|
||
}
|
||
|
||
// 组件卸载时移除事件监听器
|
||
onUnmounted(() => {
|
||
console.log("协助")
|
||
uni.$off('getSignImg')
|
||
})
|
||
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
.container {
|
||
position: relative;
|
||
padding: 32rpx;
|
||
padding-bottom: 120rpx;
|
||
line-height: 50rpx;
|
||
font-size: 28rpx;
|
||
border-radius: 8rpx;
|
||
color: #333;
|
||
|
||
text{
|
||
color: #666;
|
||
}
|
||
.box{
|
||
.item {
|
||
background: #efefef;
|
||
padding: 20rpx;
|
||
margin-top: 20rpx;
|
||
.title {
|
||
font-size: 32rpx;
|
||
font-weight: bold;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
}
|
||
}
|
||
.btn{
|
||
position: fixed;
|
||
width: calc(100vw - 64rpx);
|
||
bottom: 0;
|
||
left: 32rpx;
|
||
z-index: 99;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
::v-deep .uv-input__content{
|
||
flex-direction: column;
|
||
align-items: flex-start;
|
||
}
|
||
}
|
||
</style>
|