This commit is contained in:
2025-06-19 17:33:18 +08:00
commit f8f31dc4d9
437 changed files with 103080 additions and 0 deletions
@@ -0,0 +1,7 @@
{
"usingComponents": {
"van-dialog": "@vant/weapp/dialog/index",
"van-uploader": "@vant/weapp/uploader/index"
},
"navigationBarTitleText": "采购交车验收"
}
@@ -0,0 +1,136 @@
/* pages/handoverVehicle/procurementDelivery/procurementDelivery.wxss */
page {
height: 100vh;
background: #EFF1F4;
// overflow: hidden;
position: relative;
.container {
height: calc(100% - 88px);
overflow-y: auto;
.content {
background-color: #ffffff;
font-size: 28rpx;
padding:28rpx 20rpx;
margin-bottom: 16rpx;
.top {
color: #333F53;
font-size: 14px;
display: flex;
align-items: center;
justify-content: space-between;
.left {
display: flex;
align-items: center;
.line {
width: 8rpx;
height: 44rpx;
background: linear-gradient(180deg, #4E87FC 0%, #38B1FE 100%);
border-radius: 4rpx;
margin-right: 16rpx;
}
.title {
color: #2E3A4F;
font-weight: bold;
}
}
.right {
.btn {
display: flex;
align-items: center;
image {
width: 18px;
height: 18px;
margin-right: 6px;
display: block;
}
.val {
}
}
}
}
.box {
padding: 10px 0 0;
.row {
margin-bottom: 8px;
color: #333F53;
font-size: 14px;
.flex-between {
justify-content: space-between;
}
.noalign-center {
align-items: flex-start !important;
}
>view {
display: flex;
align-items: center;
.left {
color: #858CA0;
}
.right {
width: 76%;
text-align: right;
image {
// width: 84px;
// height: 84px;
width: calc(((100vw - 40rpx) * 0.7 - 12px) / 3) !important;
height: calc(((100vw - 40rpx) * 0.7 - 12px) / 3) !important;
display: inline-block;
// margin-left: 6px;
}
}
}
}
.row:last-child {
margin-bottom: 0;
}
.box-g {
padding: 12px;
margin-bottom: 8px;
background: #ECEFF5;
border-radius: 4px;
}
.box-g:last-child {
margin-bottom: 0;
}
}
}
}
.bottom {
width: 100%;
padding: 16px 12px 30px;
background: #fff;
box-sizing: border-box;
border-radius: 8px 8px 0 0;
box-shadow: 0px -2px 12px 0px rgba(0,0,0,0.2);
position: absolute;
bottom: 0;
left: 0;
.btn-box {
width: 100%;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
.btn {
width: 100%;
height: 40px;
line-height: 40px;
border-radius: 8px;
background: linear-gradient(90deg, #3B7CFC 0%, #548BFC 100%);
color: #fff;
font-size: 30rpx;
font-weight: bold;
text-align: center;
}
.btn-w50 {
width: calc((100% - 12px) / 2);
}
.btn1 {
background: #fff;
border: 1px solid #d6d6d6;
box-sizing: border-box;
color: #2E3A4F;
}
}
}
}
@@ -0,0 +1,174 @@
// pages/handoverVehicle/procurementDelivery/procurementDelivery.ts
import { deleteAction } from '../../../api/base';
import Dialog from '@vant/weapp/dialog/dialog';
Page({
/**
* 页面的初始数据
*/
data: {
showBox: {
base: true,
vehicle: true,
check: true
},
item: {} as any
},
showBoxInf(e: any) {
console.log(e);
let { fieldname } = e.currentTarget.dataset;
// let detail = e.detail;
let data: any = { ...this.data };
data.showBox[fieldname] = !data.showBox[fieldname];
this.setData(data);
},
previewImg(e: any) {
console.log(e);
let { index } = e.currentTarget.dataset;
// let { photoList } = this.data;
let list = [] as any;
// photoList.forEach((item: any) => {
// list.push(item.fileUrl);
// });
wx.previewImage({
current: list[index | 0], // 当前显示图片的http链接 默认urls[0]
urls: list // 需要预览的图片http链接列表
});
},
toDel() {
Dialog.confirm({
title: '提示',
message: '是否确认删除'
})
.then(() => {
// on confirm
let params = {
id: this.data.item.id
};
wx.showLoading({
title: '加载中'
});
deleteAction('api/vehicleCheck/delete', params).then((res: any) => {
wx.hideLoading();
if (res.code == 200) {
wx.showToast({
title: '删除成功',
icon: 'none'
});
setTimeout(() => {
wx.navigateBack({
delta: 1,
fail: e => {
console.log(e);
}
});
}, 500);
} else {
wx.showToast({
title: res.message,
icon: 'none'
});
}
});
})
.catch(() => {
// on cancel
});
},
toEdit() {
let that = this;
wx.navigateTo({
url: '../procurementDeliveryEdit/procurementDeliveryEdit',
success: function (res) {
// 通过eventChannel向被打开页面传送数据
res.eventChannel.emit('eventName', {
...that.data.item
});
},
fail: e => {
console.log(e);
}
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad() {
// 接收传参
const eventChannel = this.getOpenerEventChannel();
eventChannel &&
eventChannel.on &&
eventChannel.on('eventName', (data: any) => {
console.log('接收参数', data);
data.ckeckUrlList = [];
data.ensureUrlList = [];
data.otherUrlList = [];
if (data.ckeckUrl) {
for (let i = 0; i < data.ckeckUrl.split(',').length; i++) {
let pic = data.ckeckUrl.split(',')[i];
data.ckeckUrlList.push({
url: pic,
name: ''
});
}
}
if (data.ensureUrl) {
for (let i = 0; i < data.ensureUrl.split(',').length; i++) {
let pic = data.ensureUrl.split(',')[i];
data.ensureUrlList.push({
url: pic,
name: ''
});
}
}
if (data.otherUrl) {
for (let i = 0; i < data.otherUrl.split(',').length; i++) {
let pic = data.otherUrl.split(',')[i];
data.otherUrlList.push({
url: pic,
name: ''
});
}
}
this.setData({
item: data
});
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {},
/**
* 生命周期函数--监听页面显示
*/
onShow() {},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {}
});
@@ -0,0 +1,246 @@
<!--pages/handoverVehicle/procurementDelivery/procurementDelivery.wxml-->
<view class="container">
<view class="content">
<view class="top">
<view class="left">
<view class="line"></view>
<view class="title">基本信息</view>
</view>
<view class="right">
<view class="btn" wx:if="{{showBox.base}}" data-fieldName="base" catch:tap="showBoxInf">
<image src="../../../images/icon_up.png" mode=""/>
<view class="val">收起</view>
</view>
<view class="btn" wx:if="{{!showBox.base}}" data-fieldName="base" catch:tap="showBoxInf">
<image src="../../../images/icon_down.png" mode=""/>
<view class="val">展开</view>
</view>
</view>
</view>
<view class="box" wx:if="{{showBox.base}}">
<view class="row">
<view class="flex-between">
<view class="left">所属合同</view>
<view class="right">{{item.contractId_dictText ? item.contractId_dictText : '/'}}</view>
</view>
</view>
<!-- <view class="row">
<view class="flex-between">
<view class="left">所属项目</view>
<view class="right">{{item.projectId_dictText ? item.projectId_dictText : '/'}}</view>
</view>
</view> -->
<view class="row">
<view class="flex-between">
<view class="left">车辆种类</view>
<view class="right">{{item.vehicleType_dictText ? item.vehicleType_dictText : '/'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">交车模版</view>
<view class="right">{{item.templateId_dictText ? item.templateId_dictText : '/'}}</view>
</view>
</view>
</view>
</view>
<view class="content">
<view class="top">
<view class="left">
<view class="line"></view>
<view class="title">车辆({{item.vehicleList.length ? item.vehicleList.length : 0}}</view>
</view>
<view class="right">
<view class="btn" wx:if="{{showBox.vehicle}}" data-fieldName="vehicle" catch:tap="showBoxInf">
<image src="../../../images/icon_up.png" mode=""/>
<view class="val">收起</view>
</view>
<view class="btn" wx:if="{{!showBox.vehicle}}" data-fieldName="vehicle" catch:tap="showBoxInf">
<image src="../../../images/icon_down.png" mode=""/>
<view class="val">展开</view>
</view>
</view>
</view>
<view class="box" wx:if="{{showBox.vehicle}}">
<view class="box-g" wx:for="{{item.vehicleList}}" wx:key="id" wx:for-item="vItem">
<view class="row">
<view class="flex-between">
<view class="left">车牌号</view>
<view class="right">{{vItem.plateNumber ? vItem.plateNumber : '/'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">车辆型号</view>
<view class="right">{{vItem.vehicleModel ? vItem.vehicleModel : '/'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">车架号</view>
<view class="right">{{vItem.frameNumber ? vItem.frameNumber : '/'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">车辆类型</view>
<view class="right">{{vItem.vehicleType_dictText ? vItem.vehicleType_dictText : '/'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">品牌</view>
<view class="right">{{vItem.vehicleBrand_dictText ? vItem.vehicleBrand_dictText : '/'}}</view>
</view>
</view>
</view>
<view class="box-g" wx:if="{{item.vehicleList.length == 0}}">无车辆信息</view>
</view>
</view>
<view class="content">
<view class="top">
<view class="left">
<view class="line"></view>
<view class="title">验收信息</view>
</view>
<view class="right">
<view class="btn" wx:if="{{showBox.check}}" data-fieldName="check" catch:tap="showBoxInf">
<image src="../../../images/icon_up.png" mode=""/>
<view class="val">收起</view>
</view>
<view class="btn" wx:if="{{!showBox.check}}" data-fieldName="check" catch:tap="showBoxInf">
<image src="../../../images/icon_down.png" mode=""/>
<view class="val">展开</view>
</view>
</view>
</view>
<view class="box" wx:if="{{showBox.check}}">
<view class="box-g" wx:for="{{item.projectList}}" wx:key="index" wx:for-item="pItem">
<view class="row">
<view class="flex-between">
<view class="left">项目</view>
<view class="right">{{pItem.name ? pItem.name : '/'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">内容</view>
<view class="right">{{pItem.content ? pItem.content : '/'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">是否符合要求</view>
<view class="right">{{pItem.checkStatus == '1' ? '是' : '否'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">备注</view>
<view class="right">{{pItem.remark ? pItem.remark : '/'}}</view>
</view>
</view>
</view>
<view class="box-g" wx:if="{{item.projectList.length == 0}}">无项目信息</view>
<view class="row">
<view class="flex-between">
<view class="left">交车人</view>
<view class="right">{{item.sentVehicleUser ? item.sentVehicleUser : '/'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">验车人</view>
<view class="right">{{item.checkUserId_dictText ? item.checkUserId_dictText : '/'}}</view>
</view>
</view>
<!-- <view class="row">
<view class="flex-between">
<view class="left">接收人</view>
<view class="right">{{item.acceptUserId_dictText ? item.acceptUserId_dictText : '/'}}</view>
</view>
</view> -->
<view class="row">
<view class="flex-between">
<view class="left">初登时间</view>
<view class="right">{{item.registrationTime ? item.registrationTime : '/'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">验车时间</view>
<view class="right">{{item.checkTime ? item.checkTime : '/'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">验车地点</view>
<view class="right">{{item.checkAddress ? item.checkAddress : '/'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">验收结果</view>
<view class="right">{{item.checkStatus == '1' ? '合格' : '不合格'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between">
<view class="left">验收结论</view>
<view class="right">{{item.remark ? item.remark : '/'}}</view>
</view>
</view>
<view class="row">
<view class="flex-between noalign-center">
<view class="left">验收单</view>
<view class="right">
<view class="pic-box" wx:if="{{item.ckeckUrl}}">
<!-- <image src="{{item.ckeckUrl}}" mode="" catch:tap="previewImg"/> -->
<van-uploader
file-list="{{ item.ckeckUrlList }}"
deletable="{{ false }}"
max-count="{{ item.ckeckUrlList.length }}" />
</view>
<view wx:else="">/</view>
</view>
</view>
</view>
<!-- <view class="row">
<view class="flex-between noalign-center">
<view class="left">保函</view>
<view class="right">
<view class="pic-box" wx:if="{{item.ensureUrl}}">
<van-uploader
file-list="{{ item.ensureUrlList }}"
deletable="{{ false }}"
max-count="{{ item.ensureUrlList.length }}" />
</view>
<view wx:else="">/</view>
</view>
</view>
</view> -->
<view class="row">
<view class="flex-between noalign-center">
<view class="left">其他</view>
<view class="right">
<view class="pic-box" wx:if="{{item.otherUrl}}">
<!-- <image src="{{item.otherUrl}}" mode="" catch:tap="previewImg"/> -->
<van-uploader
file-list="{{ item.otherUrlList }}"
deletable="{{ false }}"
max-count="{{ item.otherUrlList.length }}" />
</view>
<view wx:else="">/</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="bottom">
<view class="btn-box">
<view class="btn btn1 {{item.status == '1' ? '' : 'btn-w50'}}" catch:tap="toDel">删除</view>
<view class="btn btn2 btn-w50" wx:if="{{item.status == '0'}}" catch:tap="toEdit">编辑</view>
</view>
<van-dialog id="van-dialog" />
</view>