gaojs
5 months ago
4 changed files with 570 additions and 0 deletions
@ -0,0 +1,355 @@ |
|||
<template> |
|||
<!-- 添加维修工单 --> |
|||
<view class="container"> |
|||
<view class="title"> |
|||
<span>*</span>申领信息 |
|||
</view> |
|||
<u-form :model="form" ref="formRef" label-width="160rpx"> |
|||
<u-form-item label="工单编号" prop="number" required class='disabled'> |
|||
<view disabled>{{ form.number}}</view> |
|||
</u-form-item> |
|||
<u-form-item label="申请编号" prop="applyNumber" required class='disabled'> |
|||
<view disabled>{{ form.applyNumber}}</view> |
|||
</u-form-item> |
|||
<u-form-item label="申请人ID" prop="applyer" required class='disabled'> |
|||
<view disabled>{{ form.applyer}}</view> |
|||
</u-form-item> |
|||
<u-form-item label="申请时间" prop="createTime" required class='disabled'> |
|||
<view class="time">{{`${$time.formatDate(form.createTime)}`}}</view> |
|||
</u-form-item> |
|||
</u-form> |
|||
<view class="title"> |
|||
<span>*</span>备件明细 |
|||
</view> |
|||
<view class="list"> |
|||
<view class="item " v-for="(item,index) in subList" :key="index"> |
|||
<view class="item-box"> |
|||
<view class="spare-title"> |
|||
<view class="title-txt"> |
|||
备件名称:{{item.sparePartsName}} |
|||
</view> |
|||
</view> |
|||
<u-row gutter="16"> |
|||
<u-col :span="24"> |
|||
<view class="dec"> |
|||
备件编号:{{item.sparePartsCode}} |
|||
</view> |
|||
</u-col> |
|||
<u-col :span="24"> |
|||
<view class="dec" v-if="item.status==1"> |
|||
流程状态:未出库 |
|||
</view> |
|||
<view class="dec" v-if="item.status==2"> |
|||
流程状态:出库中 |
|||
</view> |
|||
<view class="dec" v-if="item.status==3"> |
|||
流程状态:已出库 |
|||
</view> |
|||
</u-col> |
|||
<u-col :span="24"> |
|||
<view class="dec"> |
|||
库存数量:{{item.currentQty}} |
|||
</view> |
|||
</u-col> |
|||
<u-col :span="24"> |
|||
<view class="dec"> |
|||
申请数量:{{item.applyQty}} |
|||
</view> |
|||
</u-col> |
|||
<u-col :span="24"> |
|||
<view class="dec"> |
|||
已出库数量:{{item.outedQty}} |
|||
</view> |
|||
</u-col> |
|||
</u-row> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view class="footer"> |
|||
<view class="btns"> |
|||
<button class="reset" @click="reset">重置</button> |
|||
<button class="reset" @click="total">合计</button> |
|||
<button class="sure" @click="submit" :loading='loading' :disabled='loading'>确定</button> |
|||
</view> |
|||
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script setup lang="ts"> |
|||
import { |
|||
onLoad |
|||
} from '@dcloudio/uni-app' |
|||
import { |
|||
ref, |
|||
getCurrentInstance |
|||
} from 'vue' |
|||
|
|||
|
|||
import * as outLocationApi from "@/api/eam/location" |
|||
|
|||
|
|||
const { proxy } = getCurrentInstance() |
|||
const loading = ref(false) |
|||
const status = ref('loadmore') //是否显示没有更多了 |
|||
const subList = ref([])//备件列表信息 |
|||
const outedQty = ref('')//已出库数量 |
|||
|
|||
const form = ref({ |
|||
id:'', |
|||
number: '', |
|||
applyNumber: '', |
|||
applyer: '', |
|||
createTime: '', |
|||
|
|||
}) |
|||
const params = ref({ |
|||
masterId:'', |
|||
pageNo: 1, |
|||
pageSize: 10, |
|||
}) |
|||
|
|||
// 触发提交表单 |
|||
function submit() { |
|||
if (outedQty.value.length === 0) { |
|||
proxy.$modal.showToast('请先合计') |
|||
return; |
|||
} |
|||
proxy.$modal.confirm('是否添加出库信息').then(() => { |
|||
proxy.$modal.loading('加载中') |
|||
loading.value = true |
|||
outLocationApi.outLocationCreat(form.value).then((res) => { |
|||
proxy.$modal.closeLoading() |
|||
if (res.data) { |
|||
proxy.$modal.showToast('添加成功') |
|||
setTimeout(() => { |
|||
proxy.$tab.navigateBack() |
|||
loading.value = false |
|||
}, 1500) |
|||
} else { |
|||
proxy.$modal.showToast('添加失败') |
|||
loading.value = false |
|||
} |
|||
}).catch(() => { |
|||
proxy.$modal.closeLoading() |
|||
loading.value = false |
|||
}) |
|||
}) |
|||
|
|||
} |
|||
// 重置 |
|||
function reset() { |
|||
if(subList.value.length != 0){ |
|||
subList.value.forEach((item) => { |
|||
item.outedQty = '' |
|||
}) |
|||
} |
|||
} |
|||
|
|||
// 合计 |
|||
function total() { |
|||
if(subList.value.length != 0){ |
|||
subList.value.forEach((item) => { |
|||
if( parseInt(item.applyQty) > parseInt(item.currentQty) ){ |
|||
item.outedQty = item.currentQty |
|||
}else{ |
|||
item.outedQty = item.applyQty |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
// 获取订单备件列表信息 |
|||
async function getInLocationDetail() { |
|||
if (status.value == 'nomore') return; |
|||
status.value = 'loading'; |
|||
proxy.$modal.loading('加载中') |
|||
params.value.masterId = form.value.id |
|||
await outLocationApi.getOutLocationDetailPage(params.value).then((res) => { |
|||
proxy.$modal.closeLoading() |
|||
if (res.data.list.length > 0) { |
|||
subList.value = subList.value.concat(res.data.list); |
|||
params.value.pageNo++; |
|||
status.value = 'loadmore' |
|||
} else { |
|||
status.value = 'nomore' |
|||
} |
|||
}).catch(() => { }) |
|||
} |
|||
|
|||
//加载 |
|||
onLoad(async (option) => { |
|||
let formData = JSON.parse(decodeURIComponent(option.data)) |
|||
form.value.number = formData.number |
|||
form.value.applyNumber = formData.applyNumber |
|||
form.value.applyer = formData.applyer |
|||
form.value.createTime = formData.createTime |
|||
form.value.id = formData.id |
|||
await getInLocationDetail() |
|||
}) |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.add-form-container { |
|||
min-height: calc(100vh - 140rpx); |
|||
background: white; |
|||
padding: 0px 0rpx 140rpx; |
|||
} |
|||
|
|||
.u-form-item { |
|||
padding: 20rpx 30rpx; |
|||
} |
|||
|
|||
.disabled { |
|||
background: #f5f5f5; |
|||
} |
|||
|
|||
.footer { |
|||
position: fixed; |
|||
bottom: 0px; |
|||
left: 0px; |
|||
width: 100%; |
|||
z-index: 22; |
|||
} |
|||
|
|||
.btns { |
|||
display: flex; |
|||
|
|||
|
|||
button { |
|||
flex: 1; |
|||
} |
|||
|
|||
.sure { |
|||
background: #409eff; |
|||
color: white; |
|||
border-radius: 0px; |
|||
|
|||
&::after { |
|||
border: 1px solid #409eff; |
|||
border-radius: 0px; |
|||
} |
|||
} |
|||
|
|||
.reset { |
|||
background: #F5F5F5; |
|||
border-radius: 0px; |
|||
|
|||
&::after { |
|||
border-radius: 0px; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.right-button { |
|||
background: #409eff; |
|||
color: white; |
|||
padding: 0rpx 30rpx; |
|||
border-radius: 16rpx; |
|||
text-align: center; |
|||
font-size: 28rpx; |
|||
} |
|||
|
|||
.select { |
|||
display: flex; |
|||
align-items: center; |
|||
height: 72rpx; |
|||
width: 100%; |
|||
|
|||
.input { |
|||
flex: 1; |
|||
font-size: 28rpx; |
|||
color: #000000; |
|||
} |
|||
|
|||
.placeholder { |
|||
flex: 1; |
|||
font-size: 28rpx; |
|||
color: rgb(192, 196, 204); |
|||
|
|||
} |
|||
} |
|||
|
|||
.title { |
|||
padding: 32rpx 0rpx; |
|||
position: relative; |
|||
|
|||
span { |
|||
position: absolute; |
|||
left: -16rpx; |
|||
color: #fa3534; |
|||
top: 19px; |
|||
} |
|||
} |
|||
|
|||
.list { |
|||
padding: 0rpx 30rpx; |
|||
|
|||
.item { |
|||
display: flex; |
|||
margin-bottom: 20rpx; |
|||
|
|||
.item-box { |
|||
background: #F5F5F5; |
|||
border-radius: 12rpx; |
|||
flex: 1; |
|||
width: 0rpx; |
|||
} |
|||
|
|||
.spare-title { |
|||
padding: 20rpx 30rpx; |
|||
border-bottom: 1px solid #e4e4e4; |
|||
|
|||
.title-txt { |
|||
color: #409eff; |
|||
font-size: 30rpx; |
|||
font-weight: bold; |
|||
} |
|||
} |
|||
|
|||
.dec { |
|||
color: #9c9c9c; |
|||
padding: 20rpx 30rpx 20rpx; |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
.add-btn { |
|||
display: flex; |
|||
justify-content: flex-start; |
|||
align-items: center; |
|||
} |
|||
|
|||
.popup-title { |
|||
text-align: center; |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
color: #409eff; |
|||
padding: 30rpx 30rpx 0px |
|||
} |
|||
|
|||
.popup { |
|||
width: 600rpx; |
|||
padding: 30rpx 0rpx 30rpx; |
|||
|
|||
} |
|||
|
|||
.popup-footer { |
|||
display: flex; |
|||
border-top: 1px solid #e4e4e4; |
|||
|
|||
view { |
|||
line-height: 100rpx; |
|||
flex: 1; |
|||
text-align: center; |
|||
|
|||
&.sure { |
|||
color: #409eff; |
|||
} |
|||
} |
|||
} |
|||
|
|||
::v-deep .u-checkbox-group { |
|||
display: grid !important; |
|||
} |
|||
</style> |
@ -0,0 +1,190 @@ |
|||
<template> |
|||
<!-- 领用入库 --> |
|||
<view class="container"> |
|||
<!-- <u-navbar back-icon-color='#fff' :background="{ background: '#409eff'}" back-text="" title-color='#fff' |
|||
title="领用入库"> |
|||
</u-navbar> --> |
|||
<!-- <Search @search='search' @screen='screen' /> --> |
|||
<view class="list"> |
|||
<view class="item" v-for="(item,index) in list" :key="index" @click="openDetail(item)"> |
|||
<view class="title"> |
|||
<view class="title-txt"> |
|||
{{item.number}} |
|||
</view> |
|||
<!-- <view class="time"> |
|||
{{`${$time.formatDate(item.createTime)}`}} |
|||
</view> --> |
|||
</view> |
|||
<view class="dec"> |
|||
编号:<span>{{item.number}}</span> |
|||
</view> |
|||
<view class="dec"> |
|||
申请单号:<span>{{item.applyNumber}}</span> |
|||
</view> |
|||
<view class="dec"> |
|||
<view>流程状态: |
|||
<u-tag text="待审核" v-if="item.status==0" bg-color='rgba(255,255,255,0)' color='#3399FF' |
|||
border-color='#3399FF' type="primary" shape='circle' /> |
|||
<u-tag text="已撤回" v-if="item.status==1" bg-color='rgba(255,255,255,0)' color='#3399FF' |
|||
border-color='#3399FF' type="primary" shape='circle' /> |
|||
<u-tag text="审核中" v-if="item.status==3" bg-color='rgba(255,255,255,0)' color='#3399FF' |
|||
border-color='#3399FF' type="primary" shape='circle' /> |
|||
<u-tag text="已通过" v-if="item.status==4" bg-color='rgba(255,255,255,0)' color='#3399FF' |
|||
border-color='#3399FF' type="primary" shape='circle' /> |
|||
<u-tag text="已驳回" v-if="item.status==5" bg-color='rgba(255,255,255,0)' color='#3399FF' |
|||
border-color='#3399FF' type="primary" shape='circle' /> |
|||
<u-tag text="已完成" v-if="item.status==6" bg-color='rgba(255,255,255,0)' color='#3399FF' |
|||
border-color='#3399FF' type="primary" shape='circle' /> |
|||
</view> |
|||
</view> |
|||
<view class="dec"> |
|||
申请人ID:<span>{{item.applyer}}</span> |
|||
</view> |
|||
<view class="dec"> |
|||
审核人:<span>{{item.approver}}</span> |
|||
</view> |
|||
<view class="dec"> |
|||
审核内容:<span>{{item.approveContent}}</span> |
|||
</view> |
|||
<view class="dec"> |
|||
审核时间:<span>{{`${$time.formatDate(item.approveTime)}`}}</span> |
|||
</view> |
|||
<view class="dec"> |
|||
申请时间:<span>{{`${$time.formatDate(item.createTime)}`}}</span> |
|||
</view> |
|||
<view class="bottom"> |
|||
<view class="status"> |
|||
<u-tag text="待审批" v-if="item.status==0" bg-color='rgba(255,255,255,0)' color='#fe8463' |
|||
border-color='#fe8463' type="primary" shape='circle' /> |
|||
<u-tag text="审批通过" v-else-if="item.status==1" bg-color='rgba(255,255,255,0)' color='#2EC7C9' |
|||
border-color='#2EC7C9' type="info" shape='circle' /> |
|||
<u-tag text="审批驳回" v-else-if="item.status==2" bg-color='rgba(255,255,255,0)' color='#e01f54' |
|||
border-color='#e01f54' type="success" shape='circle' /> |
|||
<u-tag text="出库中" v-else-if="item.status==3" bg-color='rgba(255,255,255,0)' color='#005eaa' |
|||
border-color='#005eaa ' type="error" shape='circle' /> |
|||
<u-tag text="完成" v-else-if="item.status==4" bg-color='rgba(255,255,255,0)' color='#2ba471' |
|||
border-color='#2ba471' type="info" shape='circle' /> |
|||
<u-tag text="撤单" v-else-if="item.status==5" bg-color='rgba(255,255,255,0)' color='#d7d7d7' |
|||
border-color='#d7d7d7 ' type="warning" shape='circle' /> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script setup lang="ts"> |
|||
import { |
|||
onLoad, |
|||
onShow, |
|||
onReachBottom |
|||
} from '@dcloudio/uni-app' |
|||
import { |
|||
ref, |
|||
getCurrentInstance |
|||
} from 'vue' |
|||
|
|||
import * as outLocationApi from "@/api/eam/location" |
|||
|
|||
|
|||
import auth from '@/plugins/auth' |
|||
const { proxy } = getCurrentInstance() |
|||
const params = ref({ |
|||
pageNo: 1, |
|||
pageSize: 10, |
|||
}) |
|||
const status = ref('loadmore') //是否显示没有更多了 |
|||
const list = ref([]) |
|||
|
|||
function openDetail(item){ |
|||
proxy.$tab.navigateTo(`/pages/eam/outLocation/detail?data=${encodeURIComponent(JSON.stringify(item))}`) |
|||
} |
|||
async function getList() { |
|||
if (status.value == 'nomore') return; |
|||
status.value = 'loading'; |
|||
proxy.$modal.loading('加载中') |
|||
await outLocationApi.getOutLocationPage(params.value).then((res) => { |
|||
proxy.$modal.closeLoading() |
|||
if (res.data.list.length > 0) { |
|||
list.value = list.value.concat(res.data.list); |
|||
params.value.pageNo++; |
|||
status.value = 'loadmore' |
|||
} else { |
|||
status.value = 'nomore' |
|||
} |
|||
}).catch(() => { }) |
|||
} |
|||
onLoad((option) => { |
|||
if (option.type) params.value.type = option.type; |
|||
}) |
|||
onShow(() => { |
|||
params.value.pageNo = 1 |
|||
list.value = [] |
|||
status.value = 'loadmore' |
|||
getList() |
|||
}) |
|||
onReachBottom(() => { |
|||
getList() |
|||
}) |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.container{ |
|||
background: #f5f5f5; |
|||
min-height: 100vh; |
|||
} |
|||
.list { |
|||
background: #f5f5f5; |
|||
margin-top: 20rpx; |
|||
|
|||
.item { |
|||
padding: 30rpx 30rpx 0px 30rpx; |
|||
margin-top: 20rpx; |
|||
background: white; |
|||
position: relative; |
|||
|
|||
.title { |
|||
display: flex; |
|||
align-items: center; |
|||
padding-bottom: 20rpx; |
|||
|
|||
.title-txt { |
|||
color: #409eff; |
|||
font-weight: bold; |
|||
font-size: 36rpx; |
|||
width: 0px; |
|||
flex: 1; |
|||
} |
|||
|
|||
.time { |
|||
color: #919191; |
|||
|
|||
} |
|||
} |
|||
|
|||
.dec { |
|||
padding-bottom: 20rpx; |
|||
|
|||
span { |
|||
color: #999999; |
|||
} |
|||
} |
|||
|
|||
.last { |
|||
padding-bottom: 30rpx; |
|||
} |
|||
|
|||
.bottom { |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
border-top: 1px solid #E4E4E4; |
|||
padding: 20rpx 0px; |
|||
height: 90rpx; |
|||
|
|||
} |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue