业务办理
This commit is contained in:
parent
14057b3dcb
commit
ef7ecf76e1
|
|
@ -22,19 +22,6 @@
|
||||||
@clear="clearPro"
|
@clear="clearPro"
|
||||||
></eselect>
|
></eselect>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-row :gutter="30" style="display: flex; align-items: center;margin-bottom: 10px;">
|
|
||||||
|
|
||||||
<uni-col :span="15">
|
|
||||||
<uni-forms-item label="开始时间" name="reduceStartTime" label-width="90rpx" >
|
|
||||||
<uni-datetime-picker type="date" :clear-icon="false" v-model="formData.reduceStartTime" @change="changeStartTime"/>
|
|
||||||
</uni-forms-item>
|
|
||||||
</uni-col>
|
|
||||||
<uni-col :span="15">
|
|
||||||
<uni-forms-item label="结束时间" name="reduceEndTime" label-width="90rpx" >
|
|
||||||
<uni-datetime-picker type="date" :clear-icon="false" v-model="formData.reduceEndTime" @change="changeEndTime"/>
|
|
||||||
</uni-forms-item>
|
|
||||||
</uni-col>
|
|
||||||
</uni-row>
|
|
||||||
<uni-row :gutter="30" style="display: flex; align-items: center;margin-bottom: 10px;">
|
<uni-row :gutter="30" style="display: flex; align-items: center;margin-bottom: 10px;">
|
||||||
|
|
||||||
<uni-col :span="15">
|
<uni-col :span="15">
|
||||||
|
|
@ -55,6 +42,19 @@
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
</uni-col>
|
</uni-col>
|
||||||
</uni-row>
|
</uni-row>
|
||||||
|
<uni-row :gutter="30" style="display: flex; align-items: center;margin-bottom: 10px;">
|
||||||
|
|
||||||
|
<uni-col :span="15">
|
||||||
|
<uni-forms-item label="开始时间" name="reduceStartTime" label-width="90rpx" >
|
||||||
|
<uni-datetime-picker type="date" :clear-icon="false" v-model="formData.reduceStartTime" @change="changeStartTime"/>
|
||||||
|
</uni-forms-item>
|
||||||
|
</uni-col>
|
||||||
|
<uni-col :span="15">
|
||||||
|
<uni-forms-item label="结束时间" name="reduceEndTime" label-width="90rpx" >
|
||||||
|
<uni-datetime-picker type="date" :clear-icon="false" v-model="formData.reduceEndTime" @change="changeEndTime"/>
|
||||||
|
</uni-forms-item>
|
||||||
|
</uni-col>
|
||||||
|
</uni-row>
|
||||||
<uni-forms-item label="附件">
|
<uni-forms-item label="附件">
|
||||||
<div class="upload-wrapper" style="display: flex; flex-wrap: wrap;">
|
<div class="upload-wrapper" style="display: flex; flex-wrap: wrap;">
|
||||||
<!-- 上传按钮,仅当上传图片数量少于 3 张时显示 -->
|
<!-- 上传按钮,仅当上传图片数量少于 3 张时显示 -->
|
||||||
|
|
@ -73,6 +73,9 @@
|
||||||
<uni-col :span="8">
|
<uni-col :span="8">
|
||||||
<view class="addBtn" @click="submitNum">减免申请</view>
|
<view class="addBtn" @click="submitNum">减免申请</view>
|
||||||
</uni-col>
|
</uni-col>
|
||||||
|
<uni-col :span="8">
|
||||||
|
<view class="addBtn" @click="handleClean" v-if="num1>0">一键去除</view>
|
||||||
|
</uni-col>
|
||||||
</uni-row>
|
</uni-row>
|
||||||
</uni-forms>
|
</uni-forms>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -96,10 +99,10 @@
|
||||||
<!-- 表格数据行 -->
|
<!-- 表格数据行 -->
|
||||||
<uni-tr v-for="(item,index) in typeList" :key="item.id">
|
<uni-tr v-for="(item,index) in typeList" :key="item.id">
|
||||||
<uni-td style="font-size: 24rpx;text-align: center;">
|
<uni-td style="font-size: 24rpx;text-align: center;">
|
||||||
<uni-datetime-picker type="date" :clear-icon="false" v-model="item.reduceStartTime" />
|
<uni-datetime-picker type="date" :key="componentKey" :clear-icon="false" v-model="item.reduceStartTime" @change="(e) =>updateReduceStart(item,e)"/>
|
||||||
</uni-td>
|
</uni-td>
|
||||||
<uni-td style="font-size: 24rpx;text-align: center;">
|
<uni-td style="font-size: 24rpx;text-align: center;">
|
||||||
<uni-datetime-picker type="date" :clear-icon="false" v-model="item.reduceEndTime" />
|
<uni-datetime-picker type="date" :key="componentKey" :clear-icon="false" v-model="item.reduceEndTime" @change="(e) =>updateReduceEnd(item,e)"/>
|
||||||
</uni-td>
|
</uni-td>
|
||||||
<uni-td style="font-size: 24rpx;text-align: center;">
|
<uni-td style="font-size: 24rpx;text-align: center;">
|
||||||
<uni-easyinput
|
<uni-easyinput
|
||||||
|
|
@ -133,7 +136,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup >
|
<script setup >
|
||||||
import { ref, reactive } from 'vue'
|
import { ref, reactive,nextTick } from 'vue'
|
||||||
import eselect from '@/components/tree-select/eselect.vue'
|
import eselect from '@/components/tree-select/eselect.vue'
|
||||||
import { onLoad,onReady } from '@dcloudio/uni-app'
|
import { onLoad,onReady } from '@dcloudio/uni-app'
|
||||||
import { getUnitList,getProjectList,getThreeType,getFourType,getDirefList,insertApp,getAgreementInfoById,getTypeDataList,leaseTask } from '../../services/back.js';
|
import { getUnitList,getProjectList,getThreeType,getFourType,getDirefList,insertApp,getAgreementInfoById,getTypeDataList,leaseTask } from '../../services/back.js';
|
||||||
|
|
@ -163,11 +166,14 @@ const typeId = ref("")//类型
|
||||||
const maCodeSelectList = ref([])
|
const maCodeSelectList = ref([])
|
||||||
const typeCode = ref("")//规格型号
|
const typeCode = ref("")//规格型号
|
||||||
const typeList = ref([])
|
const typeList = ref([])
|
||||||
|
const typeListTemp = ref([])
|
||||||
const bmFileInfos = ref([])//图片数组
|
const bmFileInfos = ref([])//图片数组
|
||||||
// 定义 form 引用
|
// 定义 form 引用
|
||||||
const form = ref(null)
|
const form = ref(null)
|
||||||
const reduceStartTime = ref('')
|
const reduceStartTime = ref('')
|
||||||
const reduceEndTime = ref('')
|
const reduceEndTime = ref('')
|
||||||
|
const componentKey = ref(0)
|
||||||
|
const num1 = ref(0)
|
||||||
|
|
||||||
// 定义表单验证规则
|
// 定义表单验证规则
|
||||||
const rules = ref({
|
const rules = ref({
|
||||||
|
|
@ -346,6 +352,10 @@ const selectMaCode = (e) => {
|
||||||
const paramList = res.data
|
const paramList = res.data
|
||||||
paramList.forEach(item => {
|
paramList.forEach(item => {
|
||||||
item.reduceNum = item.num;
|
item.reduceNum = item.num;
|
||||||
|
item.reduceDays = 0;
|
||||||
|
item.reduceLeaseMoney = 0;
|
||||||
|
item.reduceStartTime = null;
|
||||||
|
item.reduceEndTime = null;
|
||||||
typeList.value.push(item)
|
typeList.value.push(item)
|
||||||
})
|
})
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
|
|
@ -368,64 +378,92 @@ const selectMaCode = (e) => {
|
||||||
console.log(typeList.value)
|
console.log(typeList.value)
|
||||||
}
|
}
|
||||||
//提交
|
//提交
|
||||||
const submitNum = async() => {
|
const submitNum = () => {
|
||||||
|
|
||||||
console.log(typeList.value)
|
console.log(typeList.value)
|
||||||
// 直接使用引用调用验证方法
|
// 直接使用引用调用验证方法
|
||||||
form.value.validate((valid)=>{
|
form.value.validate(async(valid)=>{
|
||||||
console.log('🚀 ~ submitNum ~ valid:', valid)
|
console.log('🚀 ~ submitNum ~ valid:', valid)
|
||||||
if(!valid){
|
if(!valid){
|
||||||
// 校验 preNum 必须大于 0
|
if(bmFileInfos.value.length==0){
|
||||||
|
await uni.showToast({
|
||||||
|
title: '请上传附件!',
|
||||||
|
icon: 'none',
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 校验 reduceNum 必须大于 0
|
||||||
if (typeList.value.length === 0) {
|
if (typeList.value.length === 0) {
|
||||||
console.log('🚀 ~ submitNum ~ typeList.value:', typeList.value)
|
console.log('🚀 ~ submitNum ~ typeList.value:', typeList.value)
|
||||||
uni.showToast({
|
await uni.showToast({
|
||||||
title: '请添加减免申请数据',
|
title: '请添加减免申请数据',
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for (let i = 0; i < typeList.value.length; i++) {
|
let index = typeList.value.findIndex(item => new Date(item.reduceEndTime) < new Date(item.reduceStartTime))
|
||||||
if (typeList.value[i].preNum <= 0 || !typeList.value[i].preNum) {
|
let index2 = typeList.value.findIndex(item => item.reduceNum > item.num)
|
||||||
|
let index3 = typeList.value.findIndex(item => item.reduceNum == 0)
|
||||||
|
let index4 = typeList.value.findIndex(item => item.reduceStartTime==null || new Date(item.reduceStartTime).getTime()==0)
|
||||||
|
let index5 = typeList.value.findIndex(item => item.reduceEndTime==null || new Date(item.reduceEndTime).getTime()==0)
|
||||||
|
console.log(index,index2,index3,index4,index5)
|
||||||
|
if(index3>-1){
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '预领数量不能为空或等于0',
|
title: '减免数量不能为0!',
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}else if(index4>-1){
|
||||||
}
|
uni.showToast({
|
||||||
let obj = {
|
title: '请先去除减免时间不符合的数据!',
|
||||||
"leaseApplyInfo":{
|
icon: 'none',
|
||||||
"unitId":unitId.value,
|
duration: 1000
|
||||||
"projectId":proId.value,
|
})
|
||||||
"agreementId":agreementId.value,
|
return
|
||||||
"leasePerson":formData.value.leasePerson,
|
}else if(index5>-1){
|
||||||
"phone":formData.value.phone,
|
uni.showToast({
|
||||||
"standardConfigId":configId.value,
|
title: '请先去除减免时间不符合的数据!',
|
||||||
"applyCode":formData.value.applyCode,
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}else if(index2>-1){
|
||||||
|
uni.showToast({
|
||||||
|
title: '减免数量不能大于领料数量!',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}else if(index>-1){
|
||||||
|
uni.showToast({
|
||||||
|
title: '结束时间不能小于开始时间!',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}else{
|
||||||
|
uni.showToast({
|
||||||
|
title: '提交成功!',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
|
||||||
},
|
|
||||||
"leaseApplyDetailsList":typeList.value
|
|
||||||
}
|
}
|
||||||
console.log(obj)
|
|
||||||
leaseTask(obj).then( res => {
|
|
||||||
console.log(res)
|
// for (let i = 0; i < typeList.value.length; i++) {
|
||||||
if(res.code==200){
|
// if (typeList.value[i].reduceNum <= 0 || !typeList.value[i].reduceNum) {
|
||||||
console.log('xxxxxxxxxxxxxxxx')
|
// uni.showToast({
|
||||||
uni.showToast({ title: '申请成功', icon: 'none',duration: 1000
|
// title: '减免数量不能为空或等于0',
|
||||||
})
|
// icon: 'none',
|
||||||
setTimeout(() => {
|
// })
|
||||||
uni.navigateBack({
|
// return
|
||||||
delta: 1
|
// }
|
||||||
});
|
// }
|
||||||
}, 1000);
|
|
||||||
}else{
|
|
||||||
console.log('yyyyyyyyyyyyy')
|
|
||||||
uni.showToast({ title: res.msg, icon: 'none',duration: 1000 })
|
|
||||||
}
|
|
||||||
}).catch(error => {
|
|
||||||
console.log(error)
|
|
||||||
})
|
|
||||||
}else{
|
}else{
|
||||||
|
console.log('xxxxxxxxxxxxxxxxxxxxxxxxxx')
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
@ -500,7 +538,9 @@ const changeStartTime = (e) => {
|
||||||
});
|
});
|
||||||
// 强制更新视图,确保列表中的减免时间立即更新
|
// 强制更新视图,确保列表中的减免时间立即更新
|
||||||
typeList.value = [...typeList.value];
|
typeList.value = [...typeList.value];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
updateNum();
|
||||||
// formData.value.reduceStartTime = e.detail.value
|
// formData.value.reduceStartTime = e.detail.value
|
||||||
}
|
}
|
||||||
// 结束时间
|
// 结束时间
|
||||||
|
|
@ -571,6 +611,135 @@ const changeEndTime = (e) => {
|
||||||
});
|
});
|
||||||
// 强制更新视图,确保列表中的减免时间立即更新
|
// 强制更新视图,确保列表中的减免时间立即更新
|
||||||
typeList.value = [...typeList.value];
|
typeList.value = [...typeList.value];
|
||||||
|
}
|
||||||
|
updateNum();
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateReduceStart = (row,e) => {
|
||||||
|
console.log('🚀 ~ updateReduceStart ~ e:', e)
|
||||||
|
let startTime = new Date(row.reduceStartTime);
|
||||||
|
let startTimeTemp = row.reduceStartTime
|
||||||
|
let endTime = new Date(row.reduceEndTime);
|
||||||
|
let endTimeTemp = row.reduceEndTime
|
||||||
|
let pickStartTime = new Date(row.startTime);
|
||||||
|
let pickEndTime = new Date(row.endTime);
|
||||||
|
// 判断减免开始时间和结束时间是否在领料日期和退料日期之间
|
||||||
|
if (startTime < pickStartTime || startTime > pickEndTime) {
|
||||||
|
console.log(row.reduceStartTime, '....>');
|
||||||
|
|
||||||
|
row.reduceStartTime = null
|
||||||
|
row.reduceDays = 0
|
||||||
|
row.reduceLeaseMoney = 0
|
||||||
|
console.log('11111111111111111111111111111', row.reduceStartTime);
|
||||||
|
nextTick(() => {
|
||||||
|
// 强制更新视图
|
||||||
|
typeList.value = [...typeList.value];
|
||||||
|
componentKey.value++;
|
||||||
|
uni.showToast({
|
||||||
|
title: '请选择有效的减免开始时间!',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}else if (startTimeTemp!=null && endTimeTemp!=null && endTime >= startTime) {
|
||||||
|
const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
|
||||||
|
const diffDays = Math.ceil(Math.abs((endTime - startTime) / oneDay)) + (endTime - startTime === 0 ? 1 : 1);
|
||||||
|
row.reduceDays = diffDays
|
||||||
|
if(row.reduceNum && row.reduceDays && row.leasePrice){
|
||||||
|
row.reduceLeaseMoney = row.reduceDays*row.leasePrice*row.reduceNum
|
||||||
|
}
|
||||||
|
// row.leaseDays = diffDays;
|
||||||
|
}else if(endTimeTemp!=null && endTime<startTime){
|
||||||
|
row.reduceStartTime = null
|
||||||
|
row.reduceDays = 0
|
||||||
|
row.reduceLeaseMoney = 0
|
||||||
|
nextTick(() => {
|
||||||
|
// 强制更新视图
|
||||||
|
typeList.value = [...typeList.value];
|
||||||
|
componentKey.value++;
|
||||||
|
uni.showToast({
|
||||||
|
title: '请选择有效的减免开始时间!',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
row.reduceDays = 0
|
||||||
|
row.reduceLeaseMoney = 0
|
||||||
|
// 强制更新视图
|
||||||
|
typeList.value = [...typeList.value];
|
||||||
|
}
|
||||||
|
// 强制更新视图,确保列表中的减免时间立即更新
|
||||||
|
typeList.value = [...typeList.value];
|
||||||
|
updateNum();
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateReduceEnd = (row,e) => {
|
||||||
|
let startTime = new Date(row.reduceStartTime);
|
||||||
|
let startTimeTemp = row.reduceStartTime
|
||||||
|
let endTimeTemp = row.reduceEndTime
|
||||||
|
let endTime = new Date(row.reduceEndTime);
|
||||||
|
let pickStartTime = new Date(row.startTime);
|
||||||
|
let pickEndTime = new Date(row.endTime);
|
||||||
|
// 判断减免开始时间和结束时间是否在领料日期和退料日期之间
|
||||||
|
if( endTime < pickStartTime || endTime > pickEndTime){
|
||||||
|
row.reduceEndTime = null
|
||||||
|
row.reduceDays = 0
|
||||||
|
row.reduceLeaseMoney = 0
|
||||||
|
nextTick(() => {
|
||||||
|
// 强制更新视图
|
||||||
|
typeList.value = [...typeList.value];
|
||||||
|
componentKey.value++;
|
||||||
|
uni.showToast({
|
||||||
|
title: '请选择有效的减免结束时间!',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}else if (startTimeTemp!=null && endTimeTemp!=null && endTime >= startTime) {
|
||||||
|
const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
|
||||||
|
const diffDays = Math.ceil(Math.abs((endTime - startTime) / oneDay)) + (endTime - startTime === 0 ? 1 : 1);
|
||||||
|
row.reduceDays = diffDays
|
||||||
|
if(row.reduceNum && row.reduceDays && row.leasePrice){
|
||||||
|
row.reduceLeaseMoney = row.reduceDays*row.leasePrice*row.reduceNum
|
||||||
|
}
|
||||||
|
|
||||||
|
}else if(startTimeTemp!=null && endTime<startTime){
|
||||||
|
row.reduceEndTime = null
|
||||||
|
row.reduceDays = 0
|
||||||
|
row.reduceLeaseMoney = 0
|
||||||
|
nextTick(() => {
|
||||||
|
// 强制更新视图
|
||||||
|
typeList.value = [...typeList.value];
|
||||||
|
componentKey.value++;
|
||||||
|
uni.showToast({
|
||||||
|
title: '请选择有效的减免结束时间!',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
row.reduceDays = 0
|
||||||
|
row.reduceLeaseMoney = 0
|
||||||
|
// 强制更新视图
|
||||||
|
typeList.value = [...typeList.value];
|
||||||
|
}
|
||||||
|
// 强制更新视图,确保列表中的减免时间立即更新
|
||||||
|
typeList.value = [...typeList.value];
|
||||||
|
updateNum();
|
||||||
|
}
|
||||||
|
const handleClean = () => {
|
||||||
|
// 过滤掉不符合的数据
|
||||||
|
typeList.value = typeList.value.filter((item, index) => {
|
||||||
|
return index === typeList.value.length - 1 || (item.reduceStartTime && item.reduceEndTime);
|
||||||
|
});
|
||||||
|
// // 更新符合和不符合的数据条数
|
||||||
|
updateNum();
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateNum = () => {
|
||||||
|
if (formData.value.reduceStartTime && formData.value.reduceEndTime) {
|
||||||
|
num1.value= typeList.value.filter(item =>!item.reduceStartTime ||!item.reduceEndTime).length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -591,34 +760,46 @@ onLoad((options) => {
|
||||||
})
|
})
|
||||||
//上传
|
//上传
|
||||||
const uploadImg = (item) => {
|
const uploadImg = (item) => {
|
||||||
|
if(bmFileInfos.value.length>=3){
|
||||||
|
uni.showToast({
|
||||||
|
title: '最多上传3张图片!',
|
||||||
|
icon: 'none',
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
uni.chooseImage({
|
uni.chooseImage({
|
||||||
count: 1, //图片可选择数量
|
count: 3 - bmFileInfos.value.length, //图片可选择数量
|
||||||
sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有
|
sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有
|
||||||
sourceType: ['album', 'camera',], //album 从相册选图,camera 使用相机,默认二者都有。
|
sourceType: ['album', 'camera',], //album 从相册选图,camera 使用相机,默认二者都有。
|
||||||
success: res => {
|
success: res => {
|
||||||
console.log(res)
|
console.log(res)
|
||||||
let imgFiles = res.tempFilePaths //图片的本地文件路径列表
|
let imgFiles = res.tempFilePaths //图片的本地文件路径列表
|
||||||
|
imgFiles.forEach((filePath) => {
|
||||||
|
console.log('2222222222222222222222')
|
||||||
|
bmFileInfos.value.push({urlTemp:filePath})
|
||||||
|
})
|
||||||
|
console.log('🚀 ~ uploadImg ~ imgFiles:', imgFiles)
|
||||||
// imgBeseUrl.value = imgFiles[0]
|
// imgBeseUrl.value = imgFiles[0]
|
||||||
// console.log('本地地址', imgFiles)
|
// console.log('本地地址', imgFiles)
|
||||||
// console.log('请求地址', baseURL+"/file/upload")
|
// console.log('请求地址', baseURL+"/file/upload")
|
||||||
|
bmFileInfos.value.forEach((item,index) => {
|
||||||
uni.uploadFile({
|
uni.uploadFile({
|
||||||
// url: baseURL+"/file/upload",//app
|
// url: baseURL+"/file/upload",//app
|
||||||
url: "/file/upload",//h5
|
url: "/file/upload",//h5
|
||||||
filePath: imgFiles[0],
|
filePath: item.urlTemp,
|
||||||
name: 'file',
|
name: 'file',
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
res = JSON.parse(res.data)
|
res = JSON.parse(res.data)
|
||||||
console.log('上传成功', res.code);
|
console.log('上传成功', res.code);
|
||||||
console.log('上传成功', res.data);
|
console.log('上传成功', res.data);
|
||||||
if(res.code&&res.code==200){
|
if(res.code&&res.code==200){
|
||||||
let obj = {
|
bmFileInfos.value[index] = {
|
||||||
"name":res.data.name,
|
...bmFileInfos.value[index],
|
||||||
"url":res.data.url
|
name: res.data.name,
|
||||||
}
|
url: res.data.url
|
||||||
item.bmFileInfos.value = [obj]
|
};
|
||||||
uni.showToast({ title: '上传成功', icon: 'none' })
|
uni.showToast({ title: '上传成功', icon: 'none' })
|
||||||
}else{
|
}else{
|
||||||
item.bmFileInfos.value = []
|
|
||||||
uni.showToast({ title: '上传失败', icon: 'none' })
|
uni.showToast({ title: '上传失败', icon: 'none' })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -626,10 +807,17 @@ const uploadImg = (item) => {
|
||||||
console.error('上传失败', err);
|
console.error('上传失败', err);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// this.$refs.vForm.clearValidate()
|
// this.$refs.vForm.clearValidate()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const deleteImg = (index) => {
|
||||||
|
bmFileInfos.value.splice(index, 1);
|
||||||
|
// bmFileInfosTemp.value.splice(index, 1);
|
||||||
|
};
|
||||||
|
|
||||||
//删除
|
//删除
|
||||||
const delRow = (index) => {
|
const delRow = (index) => {
|
||||||
console.log(index)
|
console.log(index)
|
||||||
|
|
@ -645,6 +833,7 @@ const onChangeNumber = (item) => {
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
// item.directNum = Number(String(item.directNum).replace(/[^\d.]/g,''))
|
// item.directNum = Number(String(item.directNum).replace(/[^\d.]/g,''))
|
||||||
|
|
||||||
|
|
||||||
if (Number(item.reduceNum)<= 0) {
|
if (Number(item.reduceNum)<= 0) {
|
||||||
item.reduceNum = 0;
|
item.reduceNum = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -654,6 +843,11 @@ const onChangeNumber = (item) => {
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
})
|
})
|
||||||
item.reduceNum = maxNum;
|
item.reduceNum = maxNum;
|
||||||
|
}else{
|
||||||
|
if(item.reduceNum && item.reduceDays && item.leasePrice){
|
||||||
|
item.reduceLeaseMoney = item.reduceDays*item.leasePrice*item.reduceNum
|
||||||
|
}
|
||||||
|
typeList.value = [...typeList.value];
|
||||||
}
|
}
|
||||||
},500)
|
},500)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<view class="accept page-common">
|
<view class="accept page-common">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<uni-forms :model="formData" ref="form" label-width="200rpx" :rule="rules.value" :border="true" >
|
<uni-forms :model="formData" ref="form" label-width="200rpx" :rule="rules.value" :border="true" >
|
||||||
<uni-forms-item label="领用单位:" name="unitId" >
|
<uni-forms-item label="领用单位" name="unitId" >
|
||||||
<eselect
|
<eselect
|
||||||
style="width: 100%; height: 90rpx"
|
style="width: 100%; height: 90rpx"
|
||||||
v-model="formData.unitId"
|
v-model="formData.unitId"
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
@clear="clearUnit"
|
@clear="clearUnit"
|
||||||
></eselect>
|
></eselect>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="领用工程:" name="proId" >
|
<uni-forms-item label="领用工程" name="proId" >
|
||||||
<eselect
|
<eselect
|
||||||
style="width: 100%; height: 90rpx"
|
style="width: 100%; height: 90rpx"
|
||||||
v-model="formData.proId"
|
v-model="formData.proId"
|
||||||
|
|
@ -22,16 +22,16 @@
|
||||||
@clear="clearPro"
|
@clear="clearPro"
|
||||||
></eselect>
|
></eselect>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="采购申请编号:" name="applyCode" >
|
<uni-forms-item label="采购申请编号" name="applyCode" >
|
||||||
<uni-easyinput v-model="formData.applyCode" maxlength="10" placeholder="请输入领料人" />
|
<uni-easyinput v-model="formData.applyCode" maxlength="10" placeholder="请输入领料人" />
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="领料人:" name="leasePerson" >
|
<uni-forms-item label="领料人" name="leasePerson" >
|
||||||
<uni-easyinput v-model="formData.leasePerson" maxlength="10" placeholder="请输入领料人" />
|
<uni-easyinput v-model="formData.leasePerson" maxlength="10" placeholder="请输入领料人" />
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="联系电话:" name="phone" >
|
<uni-forms-item label="联系电话" name="phone" >
|
||||||
<uni-easyinput v-model="formData.phone" maxlength="11" placeholder="请输入联系电话" />
|
<uni-easyinput v-model="formData.phone" maxlength="11" placeholder="请输入联系电话" />
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
<uni-forms-item label="标准配置:" name="configId" >
|
<uni-forms-item label="标准配置" name="configId" >
|
||||||
<eselect
|
<eselect
|
||||||
style="width: 100%; height: 90rpx"
|
style="width: 100%; height: 90rpx"
|
||||||
v-model="formData.configId"
|
v-model="formData.configId"
|
||||||
|
|
@ -41,6 +41,20 @@
|
||||||
@clear="clearConfig"
|
@clear="clearConfig"
|
||||||
></eselect>
|
></eselect>
|
||||||
</uni-forms-item>
|
</uni-forms-item>
|
||||||
|
<uni-forms-item label="附件" label-width="100rpx" v-if="flagFile">
|
||||||
|
<div class="upload-wrapper" style="display: flex; flex-wrap: wrap;">
|
||||||
|
<!-- 上传按钮,仅当上传图片数量少于 3 张时显示 -->
|
||||||
|
<div class="upload" @click="uploadImg" v-if="bmFileInfos.length < 3">+</div>
|
||||||
|
<!-- 动态展示已上传的图片 -->
|
||||||
|
<div class="upload" @click="uploadImg" v-for="(img, index) in bmFileInfos" :key="index">
|
||||||
|
<div class="image-container">
|
||||||
|
<image :src="img.urlTemp" style="width: 160rpx;height: 160rpx;" mode=""></image>
|
||||||
|
<!-- 删除 logo,这里用一个 span 模拟,可替换为实际的 logo 图片 -->
|
||||||
|
<span class="delete-logo" @click.stop="deleteImg(index)">×</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</uni-forms-item>
|
||||||
</uni-forms>
|
</uni-forms>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|
@ -152,9 +166,10 @@ const typeId = ref("")//类型
|
||||||
const maCodeSelectList = ref([])
|
const maCodeSelectList = ref([])
|
||||||
const typeCode = ref("")//规格型号
|
const typeCode = ref("")//规格型号
|
||||||
const typeList = ref([])
|
const typeList = ref([])
|
||||||
|
const bmFileInfos = ref([])//图片数组
|
||||||
// 定义 form 引用
|
// 定义 form 引用
|
||||||
const form = ref(null)
|
const form = ref(null)
|
||||||
|
const flagFile = ref(false)
|
||||||
|
|
||||||
|
|
||||||
// 定义表单验证规则
|
// 定义表单验证规则
|
||||||
|
|
@ -242,6 +257,10 @@ const getUnit = () => {
|
||||||
}
|
}
|
||||||
//工程
|
//工程
|
||||||
const getProject = async (e) => {
|
const getProject = async (e) => {
|
||||||
|
flagFile.value = false
|
||||||
|
if (e.typeKey == 'fbs') {
|
||||||
|
flagFile.value = true
|
||||||
|
}
|
||||||
console.log('🚀 ~ getProject ~ e:', e)
|
console.log('🚀 ~ getProject ~ e:', e)
|
||||||
unitId.value = e?.id || ''
|
unitId.value = e?.id || ''
|
||||||
formData.value.unitId = e?.id || ''
|
formData.value.unitId = e?.id || ''
|
||||||
|
|
@ -402,15 +421,24 @@ const submitNum = async() => {
|
||||||
|
|
||||||
console.log(typeList.value)
|
console.log(typeList.value)
|
||||||
// 直接使用引用调用验证方法
|
// 直接使用引用调用验证方法
|
||||||
form.value.validate((valid)=>{
|
form.value.validate(async(valid)=>{
|
||||||
console.log('🚀 ~ submitNum ~ valid:', valid)
|
console.log('🚀 ~ submitNum ~ valid:', valid)
|
||||||
if(!valid){
|
if(!valid){
|
||||||
|
if(flagFile.value && bmFileInfos.value.length==0){
|
||||||
|
await uni.showToast({
|
||||||
|
title: '请上传附件',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
// 校验 preNum 必须大于 0
|
// 校验 preNum 必须大于 0
|
||||||
if (typeList.value.length === 0) {
|
if (typeList.value.length === 0) {
|
||||||
console.log('🚀 ~ submitNum ~ typeList.value:', typeList.value)
|
console.log('🚀 ~ submitNum ~ typeList.value:', typeList.value)
|
||||||
uni.showToast({
|
await uni.showToast({
|
||||||
title: '请添加申请数据',
|
title: '请添加申请数据',
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -419,6 +447,7 @@ const submitNum = async() => {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '预领数量不能为空或等于0',
|
title: '预领数量不能为空或等于0',
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
|
duration: 1000
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -432,7 +461,7 @@ const submitNum = async() => {
|
||||||
"phone":formData.value.phone,
|
"phone":formData.value.phone,
|
||||||
"standardConfigId":configId.value,
|
"standardConfigId":configId.value,
|
||||||
"applyCode":formData.value.applyCode,
|
"applyCode":formData.value.applyCode,
|
||||||
|
"bmFileInfos": bmFileInfos.value,
|
||||||
},
|
},
|
||||||
"leaseApplyDetailsList":typeList.value
|
"leaseApplyDetailsList":typeList.value
|
||||||
}
|
}
|
||||||
|
|
@ -480,34 +509,46 @@ onLoad((options) => {
|
||||||
})
|
})
|
||||||
//上传
|
//上传
|
||||||
const uploadImg = (item) => {
|
const uploadImg = (item) => {
|
||||||
|
if(bmFileInfos.value.length>=3){
|
||||||
|
uni.showToast({
|
||||||
|
title: '最多上传3张图片!',
|
||||||
|
icon: 'none',
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
uni.chooseImage({
|
uni.chooseImage({
|
||||||
count: 1, //图片可选择数量
|
count: 3 - bmFileInfos.value.length, //图片可选择数量
|
||||||
sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有
|
sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有
|
||||||
sourceType: ['album', 'camera',], //album 从相册选图,camera 使用相机,默认二者都有。
|
sourceType: ['album', 'camera',], //album 从相册选图,camera 使用相机,默认二者都有。
|
||||||
success: res => {
|
success: res => {
|
||||||
console.log(res)
|
console.log(res)
|
||||||
let imgFiles = res.tempFilePaths //图片的本地文件路径列表
|
let imgFiles = res.tempFilePaths //图片的本地文件路径列表
|
||||||
|
imgFiles.forEach((filePath) => {
|
||||||
|
console.log('2222222222222222222222')
|
||||||
|
bmFileInfos.value.push({urlTemp:filePath})
|
||||||
|
})
|
||||||
|
console.log('🚀 ~ uploadImg ~ imgFiles:', imgFiles)
|
||||||
// imgBeseUrl.value = imgFiles[0]
|
// imgBeseUrl.value = imgFiles[0]
|
||||||
// console.log('本地地址', imgFiles)
|
// console.log('本地地址', imgFiles)
|
||||||
// console.log('请求地址', baseURL+"/file/upload")
|
// console.log('请求地址', baseURL+"/file/upload")
|
||||||
|
bmFileInfos.value.forEach((item,index) => {
|
||||||
uni.uploadFile({
|
uni.uploadFile({
|
||||||
// url: baseURL+"/file/upload",//app
|
// url: baseURL+"/file/upload",//app
|
||||||
url: "/file/upload",//h5
|
url: "/file/upload",//h5
|
||||||
filePath: imgFiles[0],
|
filePath: item.urlTemp,
|
||||||
name: 'file',
|
name: 'file',
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
res = JSON.parse(res.data)
|
res = JSON.parse(res.data)
|
||||||
console.log('上传成功', res.code);
|
console.log('上传成功', res.code);
|
||||||
console.log('上传成功', res.data);
|
console.log('上传成功', res.data);
|
||||||
if(res.code&&res.code==200){
|
if(res.code&&res.code==200){
|
||||||
let obj = {
|
bmFileInfos.value[index] = {
|
||||||
"name":res.data.name,
|
...bmFileInfos.value[index],
|
||||||
"url":res.data.url
|
name: res.data.name,
|
||||||
}
|
url: res.data.url
|
||||||
item.bmFileInfos.value = [obj]
|
};
|
||||||
uni.showToast({ title: '上传成功', icon: 'none' })
|
uni.showToast({ title: '上传成功', icon: 'none' })
|
||||||
}else{
|
}else{
|
||||||
item.bmFileInfos.value = []
|
|
||||||
uni.showToast({ title: '上传失败', icon: 'none' })
|
uni.showToast({ title: '上传失败', icon: 'none' })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -515,10 +556,16 @@ const uploadImg = (item) => {
|
||||||
console.error('上传失败', err);
|
console.error('上传失败', err);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// this.$refs.vForm.clearValidate()
|
// this.$refs.vForm.clearValidate()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const deleteImg = (index) => {
|
||||||
|
bmFileInfos.value.splice(index, 1);
|
||||||
|
// bmFileInfosTemp.value.splice(index, 1);
|
||||||
|
};
|
||||||
//删除
|
//删除
|
||||||
const delRow = (index) => {
|
const delRow = (index) => {
|
||||||
console.log(index)
|
console.log(index)
|
||||||
|
|
@ -736,4 +783,49 @@ const clearConfig = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 上传区域样式
|
||||||
|
.upload {
|
||||||
|
width: 160rpx;
|
||||||
|
height: 160rpx;
|
||||||
|
background-color: #f7f8fa;
|
||||||
|
border: 2rpx dashed #d9d9d9;
|
||||||
|
border-radius: 12rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 48rpx;
|
||||||
|
color: #bfbfbf;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
border-color: #3784fb;
|
||||||
|
}
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 12rpx;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.image-container {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-logo {
|
||||||
|
position: absolute;
|
||||||
|
top: 5px;
|
||||||
|
right: 5px;
|
||||||
|
font-size: 20px;
|
||||||
|
color: white;
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue