退料相关页面

This commit is contained in:
zzyuan 2024-11-20 14:24:17 +08:00
parent 26c1e3d2dc
commit 5ff53bfbd7
7 changed files with 595 additions and 34 deletions

View File

@ -72,12 +72,6 @@
"navigationBarTitleText": "领料出库" "navigationBarTitleText": "领料出库"
} }
}, },
{
"path": "pages/back/index",
"style": {
"navigationBarTitleText": "退料任务"
}
},
// 2. // 2.
{ {
"path": "pages/picking/outbound/details", "path": "pages/picking/outbound/details",
@ -98,7 +92,40 @@
"style": { "style": {
"navigationBarTitleText": "数量出库" "navigationBarTitleText": "数量出库"
} }
},
// 退
{
"path": "pages/back/index",
"style": {
"navigationBarTitleText": "退料任务"
}
},
{
"path": "pages/back/detail",
"style": {
"navigationBarTitleText": "退料任务详情"
}
},
{
"path": "pages/back/addBack",
"style": {
"navigationBarTitleText": "新增退料任务"
}
},
{
"path": "pages/back/backCode",
"style": {
"navigationBarTitleText": "退料编码"
}
},
{
"path": "pages/back/backNum",
"style": {
"navigationBarTitleText": "退料数量"
}
} }
], ],
"tabBar": { "tabBar": {
"color": "#2c2c2c", "color": "#2c2c2c",

144
src/pages/back/addBack.vue Normal file
View File

@ -0,0 +1,144 @@
<template>
<view class="accept page-common">
<div class="card">
<uni-forms :model="formData" label-width="150rpx" :border="true">
<uni-forms-item label="退料单位:" name="unitId">
<uni-data-select v-model="unitId"
:localdata="unitList" @change="getProject">
</uni-data-select>
</uni-forms-item>
<uni-forms-item label="退料工程:" name="proId">
<uni-data-select v-model="proId"
:localdata="proList" @change="getUnit">
</uni-data-select>
</uni-forms-item>
<uni-forms-item label="退料人:" name="backPerson">
<uni-easyinput v-model="backPerson" placeholder="请输入退料人" />
</uni-forms-item>
<uni-forms-item label="联系电话:" name="phone">
<uni-easyinput v-model="phone" placeholder="请输入联系电话" />
</uni-forms-item>
</uni-forms>
</div>
<div class="btn">
<button class="btn-cont" @click="clearForm">清空</button>
<button class="btn-cont" @click="confirmAdd">确认</button>
</div>
</view>
</template>
<script setup>
import { ref, reactive } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { getUnitList,getProjectList } from '../../services/back.js';
const formData = ref({})
const unitId = ref("")
const proId = ref("")
const unitList = ref([])
const proList = ref([])
const backPerson = ref("")
const phone = ref("")
//
const getUnit = () => {
let obj = {
"projectId":proId.value,
"isApp":true
}
getUnitList(obj).then(res => {
unitList.value = res.data.map(option => {
return {
value:option.unitId,
text:option.unitName,
}
});
}).catch(error => {
console.log(error)
})
}
//
const getProject = () => {
let obj = {
"unitId":unitId.value,
"isApp":true
}
getProjectList(obj).then(res => {
proList.value = res.data.map(option => {
return {
value:option.proId,
text:option.proName,
}
});
}).catch(error => {
console.log(error)
})
}
//
const clearForm = () => {
unitId.value=""
proId.value=""
backPerson.value=""
phone.value=""
getUnit()
getProject()
}
//
const confirmAdd = () => {
}
onLoad((options)=>{
console.log(options)
getUnit()
getProject()
// formData.value = JSON.parse(options.item)
})
</script>
<style lang="scss">
.accept {
padding: 10px;
height: 100%;
word-break: break-all;
}
.card {
padding: 10px;
background-color: #fff;
border-radius: 6px;
height: 60vh;
box-shadow: 0 2upx 4upx 0 rgba(0, 0, 0, 0.1);
}
.upload {
width: 80px;
height: 80px;
background-color: #f5f5f5;
border-radius: 6px;
display: flex;
justify-content: center;
align-items: center;
font-size: 20px;
color: #ccc;
margin-top: 10px;
}
.btn {
display: flex;
justify-content: space-around;
margin-top: 30px;
.btn-cont {
width: 40%;
height: 40px;
line-height: 40px;
text-align: center;
background-color: #3784fb;
color: #fff;
border-radius: 20px;
//
&:first-child {
background-color: #aacefb;
}
}
}
</style>

View File

@ -0,0 +1,84 @@
<template>
<view class="accept page-common">
<div class="card">
<uni-forms :model="formData" label-width="100" :border="true">
<!-- <uni-forms-item label="物资名称:" name="maTypeName">
<span>{{ formData.maTypeName }}</span>
</uni-forms-item>
<uni-forms-item label="物资规格:" name="typeName">
<span>{{ formData.typeName }}</span>
</uni-forms-item>
<uni-forms-item label="到货数量:" name="purchaseNum">
<span>{{ formData.purchaseNum }}</span>
</uni-forms-item> -->
</uni-forms>
</div>
<div class="btn">
<!-- <button class="btn-cont" @click="reject">取消</button> -->
<button class="btn-cont">确认</button>
</div>
</view>
</template>
<script setup>
import { ref, reactive } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
const formData = ref({})
onLoad((options)=>{
console.log(options)
formData.value = JSON.parse(options.taskInfo)
})
</script>
<style lang="scss">
.accept {
padding: 10px;
height: 100%;
word-break: break-all;
}
.card {
padding: 10px;
background-color: #fff;
border-radius: 6px;
box-shadow: 0 2upx 4upx 0 rgba(0, 0, 0, 0.1);
}
.upload {
width: 80px;
height: 80px;
background-color: #f5f5f5;
border-radius: 6px;
display: flex;
justify-content: center;
align-items: center;
font-size: 20px;
color: #ccc;
margin-top: 10px;
}
.btn {
display: flex;
justify-content: space-around;
margin-top: 30px;
.btn-cont {
width: 40%;
height: 40px;
line-height: 40px;
text-align: center;
background-color: #3784fb;
color: #fff;
border-radius: 20px;
//
&:first-child {
background-color: #aacefb;
}
}
}
</style>

View File

@ -0,0 +1,92 @@
<template>
<view class="accept page-common">
<div class="card">
<div>任务信息</div>
<uni-forms :model="formData" label-width="160rpx" :border="true">
<uni-forms-item label="退料单位" name="unitName">
<span>{{ formData.unitName }}</span>
</uni-forms-item>
<uni-forms-item label="退料工程:" name="proName">
<span>{{ formData.proName }}</span>
</uni-forms-item>
<uni-forms-item label="退料单号:" name="code">
<span>{{ formData.code }}</span>
</uni-forms-item>
<uni-forms-item label="退料人员:" name="backPerson">
<span>{{ formData.backPerson }}</span>
</uni-forms-item>
<uni-forms-item label="联系电话:" name="phone">
<span>{{ formData.phone }}</span>
</uni-forms-item>
</uni-forms>
</div>
<div class="card">
<div>任务信息</div>
</div>
<div class="btn">
<!-- <button class="btn-cont" @click="reject">取消</button> -->
<button class="btn-cont">确认</button>
</div>
</view>
</template>
<script setup>
import { ref, reactive } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
const formData = ref({})
onLoad((options)=>{
console.log(options)
formData.value = JSON.parse(options.taskInfo)
console.log(formData.value)
})
</script>
<style lang="scss">
.accept {
padding: 10px;
height: 100%;
word-break: break-all;
}
.card {
padding: 10px;
background-color: #fff;
border-radius: 6px;
box-shadow: 0 2upx 4upx 0 rgba(0, 0, 0, 0.1);
}
.upload {
width: 80px;
height: 80px;
background-color: #f5f5f5;
border-radius: 6px;
display: flex;
justify-content: center;
align-items: center;
font-size: 20px;
color: #ccc;
margin-top: 10px;
}
.btn {
display: flex;
justify-content: space-around;
margin-top: 30px;
.btn-cont {
width: 40%;
height: 40px;
line-height: 40px;
text-align: center;
background-color: #3784fb;
color: #fff;
border-radius: 20px;
//
&:first-child {
background-color: #aacefb;
}
}
}
</style>

177
src/pages/back/detail.vue Normal file
View File

@ -0,0 +1,177 @@
<template>
<!-- 新购验收详情 -->
<view class="accept page-common">
<uni-row :gutter="24" class="search-form">
<uni-col :span="12">
<view><uni-easyinput placeholder="请输入内容" v-model="searchValue"/></view>
</uni-col>
<uni-col :span="4">
<view class="search" @click="getTableList()">查询</view>
</uni-col>
<uni-col :span="4">
<view class="addBtn" >编码退料</view>
</uni-col>
<uni-col :span="4">
<view class="addBtn" >数量退料</view>
</uni-col>
</uni-row>
<div class="table-list-item"
v-for="(item, index) in tableList"
:key="index" @click="handleItem(item)">
<div class="title">
<span style="font-size: 15px; font-weight: 800">退料任务</span>
<!-- <span v-if="item.status == 2" style="color: #ff4d4f">未验收</span> -->
<!-- <span v-else-if="item.status != 2" style="color: #3784fb">已验收</span> -->
<!-- <span v-else-if="item.status == 12" style="color: #ff4d4f">不合格</span> -->
</div>
<div class="line"></div>
<uni-row :gutter="24">
<uni-col :span="8">物资名称</uni-col>
<uni-col :span="16"><div class="cont">{{ item.typeName }}</div></uni-col>
</uni-row>
<uni-row :gutter="24">
<uni-col :span="8">规格型号</uni-col>
<uni-col :span="16"><div class="cont">{{ item.typeModel }}</div></uni-col>
</uni-row>
<uni-row :gutter="24">
<uni-col :span="8">退料数量</uni-col>
<uni-col :span="16"><div class="cont">{{ item.preNum }}</div></uni-col>
</uni-row>
<uni-row :gutter="24">
<uni-col :span="8">单位</uni-col>
<uni-col :span="16"><div class="cont">{{ item.unitName }}</div></uni-col>
</uni-row>
<uni-row :gutter="24" v-if="item.status != 2">
<uni-col :span="8">管理模式</uni-col>
<uni-col :span="16">
<div class="cont" v-if="item.manageType==0">编码管理</div>
<div class="cont" v-if="item.manageType==1">数量管理</div>
</uni-col>
</uni-row>
</div>
</view>
</template>
<script setup>
import { ref, reactive } from 'vue'
import { getBackInfo } from '../../services/back.js';
import { onLoad,onShow } from '@dcloudio/uni-app'
const searchValue = ref('')
const id = ref('')
const taskId = ref('')
const statusList = ref(["2","12"])
const tableList = ref([])
const taskInfo = ref({})
const getTableList = () => {
// let obj = {
// "id":id.value,
// // "taskId":taskId.value,
// // "statusList":statusList.value,
// }
// console.log(obj)
getBackInfo(id.value).then(res => {
console.log(res)
taskInfo.value = res.data.backApplyInfo;
tableList.value = res.data.backApplyDetailsList;
console.log(taskInfo.value)
}).catch(error => {
console.log(error)
})
}
const search = () => {
console.log('🚀 ~ search ~ searchValue:', searchValue.value)
}
const handleItem = (item) => {
console.log('🚀 ~ handleItem ~ item:', item)
if (item.manageType == 0) {//
uni.navigateTo({ url: `/pages/back/backCode?taskInfo=${JSON.stringify(taskInfo.value)}` })
} else if(item.manageType == 1) {//
uni.navigateTo({ url: `/pages/back/backNum?taskInfo=${JSON.stringify(taskInfo.value)}` })
}
}
onLoad((options)=>{
console.log(options)
id.value = options.id
taskId.value = options.taskId
getTableList()
})
onShow(()=>{
getTableList()
})
</script>
<style lang="scss" scoped>
.accept {
height: 100%;
word-break: break-all;
overflow-y: auto;
.complete-btn {
display: flex;
padding: 20rpx;
.btn {
display: flex;
flex-direction: column;
align-items: center;
font-size: 30rpx;
font-weight: 800;
}
.bt-line {
width: 80rpx;
height: 4rpx;
background-color: #3784fb;
}
}
.search-form {
display: flex;
align-items: center;
box-sizing: content-box;
margin-top: 10px;
font-size: 14px;
}
.search {
height: 60rpx;
background-color: #3784fb;
text-align: center;
line-height: 60rpx;
color: #fff;
border-radius: 5px;
font-size: 12px;
}
.addBtn {
height: 60rpx;
background-color: #3784fb;
text-align: center;
line-height: 60rpx;
color: #fff;
border-radius: 5px;
font-size: 12px;
}
}
.table-list-item {
margin: 20rpx 0;
padding: 20rpx;
background-color: #fff;
min-height: 300rpx;
border-radius: 10rpx;
.title {
display: flex;
justify-content: space-between;
align-items: center;
}
.cont {
display: flex;
justify-content: flex-end;
line-height: 1.9;
}
.line {
margin: 20rpx 0;
height: 1px;
background-color: #e8e8e8;
}
}
</style>

View File

@ -12,7 +12,7 @@
</view> </view>
</view> </view>
<uni-row :gutter="24" class="search-form"> <uni-row :gutter="24" class="search-form">
<uni-col :span="10"> <uni-col :span="8">
<view> <view>
<uni-datetime-picker <uni-datetime-picker
type="date" type="date"
@ -22,7 +22,7 @@
/> />
</view> </view>
</uni-col> </uni-col>
<uni-col :span="10"> <uni-col :span="8">
<view> <view>
<uni-easyinput placeholder="请输入项目名称" /> <uni-easyinput placeholder="请输入项目名称" />
</view> </view>
@ -30,6 +30,9 @@
<uni-col :span="4"> <uni-col :span="4">
<view class="search" @click="getTableList()">搜索</view> <view class="search" @click="getTableList()">搜索</view>
</uni-col> </uni-col>
<uni-col :span="4">
<view class="addBtn" @click="goAdd()">新增</view>
</uni-col>
</uni-row> </uni-row>
<div <div
@ -44,56 +47,56 @@
</div> </div>
<div class="line"></div> <div class="line"></div>
<uni-row :gutter="24"> <uni-row :gutter="24">
<uni-col :span="6">申请时间</uni-col> <uni-col :span="8">申请时间</uni-col>
<uni-col :span="18" <uni-col :span="16"
><div class="cont">{{ item.createTime }}</div></uni-col ><div class="cont">{{ item.createTime }}</div></uni-col
> >
</uni-row> </uni-row>
<uni-row :gutter="24"> <uni-row :gutter="24">
<uni-col :span="6">退料单号</uni-col> <uni-col :span="8">退料单号</uni-col>
<uni-col :span="18" <uni-col :span="16"
><div class="cont">{{ item.code }}</div></uni-col ><div class="cont">{{ item.code }}</div></uni-col
> >
</uni-row> </uni-row>
<uni-row :gutter="24"> <uni-row :gutter="24">
<uni-col :span="6">退料物资</uni-col> <uni-col :span="8">退料物资</uni-col>
<uni-col :span="18" <uni-col :span="16"
><div class="cont">{{ item.typeName }}</div></uni-col ><div class="cont">{{ item.typeName }}</div></uni-col
> >
</uni-row> </uni-row>
<uni-row :gutter="24"> <uni-row :gutter="24">
<uni-col :span="6">退料单位</uni-col> <uni-col :span="8">退料单位</uni-col>
<uni-col :span="18" <uni-col :span="16"
><div class="cont">{{ item.unitName }}</div></uni-col ><div class="cont">{{ item.unitName }}</div></uni-col
> >
</uni-row> </uni-row>
<uni-row :gutter="24"> <uni-row :gutter="24">
<uni-col :span="6">工程名称</uni-col> <uni-col :span="8">工程名称</uni-col>
<uni-col :span="18" <uni-col :span="16"
><div class="cont">{{ item.proName }}</div></uni-col ><div class="cont">{{ item.proName }}</div></uni-col
> >
</uni-row> </uni-row>
<uni-row :gutter="24"> <uni-row :gutter="24">
<uni-col :span="6">退料人</uni-col> <uni-col :span="8">退料人</uni-col>
<uni-col :span="18" <uni-col :span="16"
><div class="cont">{{ item.backPerson }}</div></uni-col ><div class="cont">{{ item.backPerson }}</div></uni-col
> >
</uni-row> </uni-row>
<uni-row :gutter="24"> <uni-row :gutter="24">
<uni-col :span="6">联系电话</uni-col> <uni-col :span="8">联系电话</uni-col>
<uni-col :span="18" <uni-col :span="16"
><div class="cont">{{ item.phone }}</div></uni-col ><div class="cont">{{ item.phone }}</div></uni-col
> >
</uni-row> </uni-row>
<uni-row :gutter="24"> <uni-row :gutter="24">
<uni-col :span="6">已退数量</uni-col> <uni-col :span="8">已退数量</uni-col>
<uni-col :span="18" <uni-col :span="16"
><div class="cont">{{ }}</div></uni-col ><div class="cont">{{ }}</div></uni-col
> >
</uni-row> </uni-row>
<uni-row :gutter="24"> <uni-row :gutter="24">
<uni-col :span="6">备注</uni-col> <uni-col :span="8">备注</uni-col>
<uni-col :span="18" <uni-col :span="16"
><div class="cont">{{ item.remark }}</div></uni-col ><div class="cont">{{ item.remark }}</div></uni-col
> >
</uni-row> </uni-row>
@ -113,7 +116,7 @@ import { onLoad } from '@dcloudio/uni-app'
const active = ref(1) const active = ref(1)
const tableList = ref([]) const tableList = ref([])
const taskStatus = ref("2") const taskStatus = ref("2")
//
const getTableList = () => { const getTableList = () => {
let obj = { let obj = {
"pageNum":"1", "pageNum":"1",
@ -128,7 +131,7 @@ const getTableList = () => {
console.log(error) console.log(error)
}) })
} }
//tab
const changeTab = (index) => { const changeTab = (index) => {
active.value = index active.value = index
if (index == 1) { if (index == 1) {
@ -139,11 +142,19 @@ const changeTab = (index) => {
getTableList() getTableList()
} }
} }
//
const maskClick = () => {} const maskClick = () => {}
//
const goAdd = () => {
uni.navigateTo({ url: `/pages/back/addBack` })
}
//
const handleItem = (item) => { const handleItem = (item) => {
console.log('🚀 ~ handleItem ~ item:', item) console.log('🚀 ~ handleItem ~ item:', item)
uni.navigateTo({ url: `/pages/new-purchase/accept/acceptDetails?id=${item.id}&taskId=${item.taskId}` }) uni.navigateTo({ url: `/pages/back/detail?id=${item.id}&taskId=${item.taskId}` })
} }
onLoad((options) => { onLoad((options) => {
getTableList() getTableList()
}) })
@ -183,6 +194,13 @@ onLoad((options) => {
line-height: 70rpx; line-height: 70rpx;
color: #fff; color: #fff;
} }
.addBtn {
height: 70rpx;
background-color: #3784fb;
text-align: center;
line-height: 70rpx;
color: #fff;
}
} }
.table-list-item { .table-list-item {
margin: 20rpx 0; margin: 20rpx 0;

View File

@ -9,11 +9,30 @@ import { http } from '@/utils/http'
}) })
} }
// 退料任务详情接口
export const getBackInfo = (id) => {
return http({
method: 'GET',
url: '/material/back_apply_info/'+id
})
}
// 单位下拉选
export const getUnitList = (data) => {
return http({
method: 'POST',
url: '/material/select/getUnitList',
data:data,
})
}
// 工程下拉选
export const getProjectList = (data) => {
return http({
method: 'POST',
url: '/material/select/getProjectList',
data:data,
})
}