<!-- 查看皮毛净明细 -->
|
<template>
|
<view class="main">
|
<u-empty mode="data"
|
icon="http://cdn.uviewui.com/uview/empty/data.png"
|
textSize="30"
|
iconSize="1000"
|
text="暂无数据"
|
v-if="showWeigh.length===0"></u-empty>
|
<view class="main-block"
|
v-for="(item,i) in showWeigh"
|
:key="item.id">
|
<view class="weigh-item">
|
<view class="item">
|
<view class="concrete"
|
:style="{ backgroundImage: `url(${onlineurl}/appimg/image/banner/skin.png)`, backgroundSize: 'cover', backgroundRepeat: 'no-repeat' }">
|
皮
|
</view>
|
<view class="num">{{ item.skin }}</view>
|
</view>
|
<view class="item">
|
<view class="concrete"
|
:style="{ backgroundImage: `url(${onlineurl}/appimg/image/banner/hair.png)`, backgroundSize: 'cover', backgroundRepeat: 'no-repeat' }">
|
毛
|
</view>
|
<view class="num">{{ item.hair }}</view>
|
</view>
|
<view class="item">
|
<view class="concrete"
|
:style="{ backgroundImage: `url(${onlineurl}/appimg/image/banner/clean.png)`, backgroundSize: 'cover', backgroundRepeat: 'no-repeat' }">
|
净
|
</view>
|
<view class="num">{{ item.clean }}</view>
|
</view>
|
</view>
|
<view class="discount">
|
<view class="rate">
|
<view class="label-text">
|
扣渣
|
</view>
|
<view v-if='roleType===4&&!flag'
|
class="count-input">
|
<u--input placeholder="请输入扣渣"
|
border="bottom"
|
clearable
|
v-model="item.cinderWeight"
|
@input='v=>discountInputHandle(v,i,item.clean)'></u--input>
|
</view>
|
<view v-else-if='flag'
|
class="count">{{ item.cinderWeight }}
|
</view>
|
</view>
|
<view class="weigh">
|
<view class="label-text">
|
扣渣后净重
|
</view>
|
<view class="count">{{ item.weight }}</view>
|
</view>
|
</view>
|
<view class="level">
|
<view style="width: 140rpx;">
|
<u--text text="物资明细"
|
size='32'></u--text>
|
</view>
|
<view class="tag-select"
|
@click="goodsPopoverShow(i)"
|
v-if='roleType===4'>
|
<text>
|
{{item.breed+"/"+item.spec||item.modifygoodsName||'暂无'}}
|
</text>
|
</view>
|
</view>
|
<view class="level"
|
v-if='item.modifygoodsName||globalShowWeigh[i].modifyProductName'>
|
<view style="width: 180rpx;">
|
<u--text text="品名与规格"
|
size='32'></u--text>
|
</view>
|
<view class="tag-select"
|
@click="productNamePopoverShow(i)">
|
<text>
|
{{!flag?(globalShowWeigh[i].modifyProductName?globalShowWeigh[i].modifyProductName:item.modifygoodsName):(item.breed+'/'+item.spec)}}
|
</text>
|
</view>
|
</view>
|
<view class="unqualifiedBreed">
|
<view style="width: 180rpx;">
|
<u--text text="不合格品名"
|
size='32'></u--text>
|
</view>
|
<view class="tag-select"
|
@click="selectunqualifiedBreed(i)">
|
<text>
|
{{!flag?(globalShowWeigh[i].unqualifiedBreed?globalShowWeigh[i].unqualifiedBreed:item.unqualifiedBreed):(item.unqualifiedBreed||"请选择")}}
|
</text>
|
</view>
|
</view>
|
<view class="notice-num">
|
<view class="num-text">
|
<u--text text="不合格重量"
|
size='32'></u--text>
|
</view>
|
<view class="num-input"
|
v-if='roleType===4&&!flag'>
|
<u--input placeholder="请输入不合格重量"
|
border="bottom"
|
clearable
|
v-model="item.unqualifiedWeight"
|
@input='v=>unqualifiedWeightInputHandle(v,i,item.clean)'></u--input>
|
</view>
|
<view class="num-show"
|
v-else-if="flag">
|
{{item.unqualifiedWeight}}
|
</view>
|
</view>
|
<view class="notice-num">
|
<view class="num-text"
|
style="margin-left: 10rpx;">
|
<u--text text="通知数量"
|
size='32'></u--text>
|
</view>
|
<view class="num-input"
|
v-if='roleType===4&&!flag'>
|
<u--input placeholder="请输入通知数量"
|
border="bottom"
|
clearable
|
v-model="item.num"></u--input>
|
</view>
|
<view class="num-show"
|
v-else-if="flag">
|
{{item.num}}
|
</view>
|
</view>
|
<view style="display: flex;margin-top: 20rpx;margin-left: 20rpx;"
|
v-if="item.isImage">
|
<view style="width: 100px;"
|
v-for="(val,index) in item.inspectionJpg"
|
:key="index">
|
<u--image :showLoading="true"
|
:src="`${BaseUrl}${val}`"
|
width="80px"
|
height="80px">
|
<view slot="error"
|
style="font-size: 24rpx;">加载失败</view>
|
</u--image>
|
</view>
|
</view>
|
<view v-else-if='!item.isImage&&!flag'
|
style="margin: 30rpx 80rpx;">
|
<u-upload :fileList="item.fileList"
|
deletable
|
@afterRead="afterRead"
|
@delete="deletePic"
|
:name="i"
|
multiple
|
:maxCount="4"
|
width="250"
|
height="150"
|
:previewFullImage="true">
|
</u-upload>
|
</view>
|
<!-- 物资明细 -->
|
<u-action-sheet :actions="goodsList"
|
:show="goodsShow"
|
cancelText='取消'
|
:closeOnClickOverlay='true'
|
@close='goodsNameClose'
|
@select="goodsselectClick"></u-action-sheet>
|
<!-- 品名与规格 -->
|
<view class="">
|
<u-action-sheet :actions="actionsList"
|
:show="actionShow"
|
cancelText='取消'
|
:closeOnClickOverlay='true'
|
@close='productNameClose'
|
@select="selectClick"></u-action-sheet>
|
</view>
|
<!-- 不合格品名 -->
|
<view class="">
|
<u-action-sheet :actions="actionsList"
|
:show="unqualifiedShow"
|
cancelText='取消'
|
:closeOnClickOverlay='true'
|
@close='unqualifiedClose'
|
@select="selectUnqualifiedClick"></u-action-sheet>
|
</view>
|
</view>
|
<view class="confirm-button"
|
v-if='roleType===4&&!flag'>
|
<u-button type="primary"
|
shape="circle"
|
text="确认"
|
@click="confirmInput"
|
:loading="loading"
|
loading-text="确认"></u-button>
|
</view>
|
</view>
|
</template>
|
|
<script>
|
import BigNumber from "bignumber.js"
|
import { BaseUrl } from '@/api/publicInterface.js';
|
import { onlineurl } from '@/api/request.js'
|
import { mapState, mapMutations } from "vuex"
|
export default {
|
data() {
|
return {
|
orderPlanId: "",
|
coalDetailsData: {},
|
showWeigh: [],
|
showWeighCopy: [],
|
discountrate: "",
|
loading: false,
|
show: false,
|
selectIndex: null,
|
// 物资明细
|
goodsList: [],
|
goodsShow: false,
|
goodsIndex: null,
|
// 产品列表
|
actionsList: [],
|
actionShow: false,
|
actionIndex: null,
|
onlineurl,
|
havedInput: false,
|
flag: false,
|
orderCode: null,
|
modifyProductName: null,
|
// 是否修改
|
isModify: false,
|
// 上传图片
|
fileList1: [],
|
BaseUrl,
|
// 不合格品名
|
unqualifiedShow: false,
|
unqualifiedIndex: null,
|
dataForm: {},
|
// // 判断是修改品名与规格还是不合格品名
|
ModifiedOrderIndex: null,
|
willProductName: true,
|
willUnqualified: true,
|
alterProductName: false,
|
alterUnqualified: false,
|
// 存储中间态
|
showWeighCopyStorge: [],
|
havedSubmit: false
|
};
|
},
|
computed: {
|
...mapState(["globalShowWeigh"]),
|
roleType() {
|
return uni.getStorageSync('roleType')
|
},
|
showWeighCopyStorgeOther() {
|
return uni.getStorageSync('showWeighCopyStorgeOther')
|
}
|
},
|
onLoad(params) {
|
this.orderPlanId = params.orderPlanId ? params.orderPlanId : '';
|
this.flag = params.flag ? params.flag : false;
|
this.roleType === 1 ? this.GetOrderPlan() : this.getTakeCoal()
|
this.ModifiedOrderIndex = params.index
|
this.alterProductName = params.productName === "true" || false
|
this.alterUnqualified = params.unqualified === "true" || false
|
this.havedSubmit = params.havedSubmit === "true" || false
|
},
|
methods: {
|
...mapMutations(['changeglobalShowWeigh']),
|
getTakeCoal() {
|
uni.showLoading({
|
title: '加载中'
|
});
|
this.$reqGet('getTakeCoal', { takeCoalId: this.orderPlanId }).then(res => {
|
if (res.code == 0) {
|
uni.hideLoading()
|
this.coalDetailsData = res.data;
|
this.orderCode = res.data.orderCode
|
this.showWeigh = this.coalDetailsData.tmTaskCoalItems ? this.coalDetailsData
|
.tmTaskCoalItems : [];
|
this.showWeigh = this.showWeigh.map(v => {
|
return {
|
...v,
|
modifyProductName: '',
|
modifygoodsName: '',
|
fileList: [],
|
inspectionJpg: v.inspectionJpg.split(','),
|
isImage: v.inspectionJpg
|
}
|
})
|
this.showWeighCopy = JSON.parse(JSON.stringify(this.showWeigh))
|
uni.setStorageSync("showWeighCopyStorge", this.showWeighCopy)
|
if (this.havedSubmit) {
|
this.changeglobalShowWeigh(uni.getStorageSync('showWeighCopyStorgeOther'))
|
} else {
|
this.changeglobalShowWeigh(uni.getStorageSync('showWeighCopyStorge'))
|
}
|
} else {
|
this.$u.toast('加载失败')
|
uni.hideLoading()
|
}
|
}).then(() => {
|
this.$reqGet('getMaterialDetailByOrderCode', { orderCode: this.orderCode }).then(r => {
|
this.goodsList = r.data.map(v => {
|
return {
|
...v,
|
name: v.breed + '/' + v.spec
|
}
|
})
|
uni.hideLoading()
|
})
|
})
|
},
|
GetOrderPlan() {
|
uni.showLoading({ title: '加载中...' });
|
this.$reqGet('GetOrderPlan').then(res => {
|
if (res.data) {
|
this.coalDetailsData = res.data;
|
this.orderCode = res.data.orderCode
|
this.showWeigh = this.coalDetailsData[this.index].tmTaskCoals ? this.coalDetailsData[
|
this.index].tmTaskCoals : [],
|
uni.hideLoading();
|
} else {
|
this.$u.toast('加载失败')
|
uni.hideLoading()
|
}
|
});
|
},
|
getJcProductList() {
|
this.$reqGet('getJcProductList').then(res => {
|
if (res.code === 0) {
|
this.actionsList = res.data.map(v => {
|
return {
|
...v,
|
name: v.secondCategoryName + v.spec
|
}
|
})
|
}
|
})
|
},
|
// 点击确认
|
confirmInput() {
|
this.loading = true
|
this.showWeigh = this.showWeigh.map((v, i) => {
|
return {
|
...v,
|
unqualifiedBreed: this.globalShowWeigh[i].unqualifiedBreed ? this.globalShowWeigh[i]
|
.unqualifiedBreed : v.unqualifiedBreed,
|
breed: this.globalShowWeigh[i].modifyProductName ? this.globalShowWeigh[i].breed : v.breed,
|
spec: this.globalShowWeigh[i].modifyProductName ? this.globalShowWeigh[i].spec : v.spec,
|
inspectionJpg: v.fileList.map(v => v.url.replace(BaseUrl, '')).join(',')
|
|
}
|
})
|
this.$reqPost('updateTmTaskCoalItem', this.showWeigh, 'json').then(
|
res => {
|
if (res.code == 0) {
|
this.loading = false
|
this.$u.toast('操作成功,即将返回上一页')
|
setTimeout(() => {
|
uni.navigateBack({
|
delta: 1
|
})
|
}, 800)
|
} else {
|
this.loading = false
|
this.$u.toast(res.msg ? res.msg : '操作失败')
|
}
|
})
|
},
|
// 物资明细
|
goodsPopoverShow(index) {
|
if (this.roleType === 4 && !this.flag) {
|
this.goodsShow = true
|
this.goodsIndex = index
|
}
|
|
},
|
goodsNameClose() {
|
this.goodsShow = false
|
},
|
goodsselectClick(val) {
|
this.showWeigh[this.goodsIndex].modifygoodsName = val.name
|
this.showWeigh[this.goodsIndex].itemId = val.itemId
|
this.showWeigh[this.goodsIndex].num = val.num
|
this.showWeigh[this.goodsIndex].numUnit = val.numUnit
|
this.showWeigh[this.goodsIndex].remark = val.remark
|
this.showWeigh[this.goodsIndex].breed = val.breed
|
this.showWeigh[this.goodsIndex].spec = val.spec
|
this.showWeigh[this.goodsIndex].weightUnit = val.weightUnit
|
},
|
// 品名与规格
|
productNamePopoverShow(index) {
|
if (this.roleType === 4 && !this.flag) {
|
// this.actionShow = true
|
// this.actionIndex = index
|
uni.navigateTo({
|
url: `/pages/public-page/selectSpecifications/selectSpecifications?index=${index}&takeCoalId=${this.orderPlanId}&productName=${this.willProductName}`
|
})
|
}
|
},
|
productNameClose() {
|
this.actionShow = false
|
},
|
selectClick(val) {
|
this.showWeighCopy[this.actionIndex].modifyProductName = val.name
|
this.showWeighCopy[this.actionIndex].breed = val.secondCategoryName
|
this.showWeighCopy[this.actionIndex].spec = val.spec
|
},
|
// 折扣率输入
|
discountInputHandle(value, index, clean) {
|
this.showWeigh[index].cinderWeight = Number(value)
|
if (clean) {
|
let x = new BigNumber(clean)
|
let y = new BigNumber(value)
|
this.showWeigh[index].weight = x.minus(y).toFixed(2)
|
}
|
},
|
// 选择不合格品名
|
selectunqualifiedBreed(index) {
|
if (this.roleType === 4 && !this.flag) {
|
// this.unqualifiedShow = true
|
// this.unqualifiedIndex = index
|
uni.navigateTo({
|
url: `/pages/public-page/selectSpecifications/selectSpecifications?index=${index}&takeCoalId=${this.orderPlanId}&unqualified=${this.willUnqualified}`
|
})
|
}
|
},
|
unqualifiedClose() {
|
this.unqualifiedShow = false
|
},
|
selectUnqualifiedClick(val) {
|
this.showWeigh[this.unqualifiedIndex].unqualifiedBreed = val.secondCategoryName + val.spec
|
},
|
// 不合格重量输入
|
unqualifiedWeightInputHandle(value, index, clean) {
|
let x = new BigNumber(clean)
|
let y = new BigNumber(value)
|
let z = new BigNumber(this.showWeigh[index].cinderWeight)
|
this.showWeigh[index].weight = x.minus(y).minus(z).toFixed(2) || ''
|
},
|
// 删除图片
|
deletePic(event) {
|
this.showWeigh[event.name].fileList.splice(event.index, 1);
|
},
|
// 新增图片
|
async afterRead(event) {
|
// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
|
let lists = [].concat(event.file);
|
let fileListLen = this.showWeigh[event.name].fileList.length;
|
lists.map(item => {
|
this.showWeigh[event.name].fileList.push({
|
...item,
|
status: 'uploading',
|
message: '上传中'
|
});
|
});
|
for (let i = 0; i < lists.length; i++) {
|
const result = await this.uploadFilePromise(lists[i].url, event.name);
|
let item = this.showWeigh[event.name].fileList[fileListLen];
|
this.showWeigh[event.name].fileList.splice(
|
fileListLen,
|
1,
|
Object.assign(item, {
|
status: 'success',
|
message: '上传成功',
|
url: result
|
})
|
);
|
fileListLen++;
|
}
|
},
|
uploadFilePromise(url, num) {
|
return new Promise((resolve, reject) => {
|
let a = uni.uploadFile({
|
url: BaseUrl + '/admin/sys-file/uploadUnToken',
|
filePath: url,
|
name: 'file',
|
formData: {},
|
success: res => {
|
resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
|
}
|
});
|
});
|
},
|
},
|
}
|
</script>
|
|
<style lang="scss"
|
scoped>
|
@mixin flex {
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
}
|
|
/deep/ .u-picker {
|
height: 600rpx;
|
}
|
|
.main {
|
width: 96%;
|
height: 100%;
|
min-height: 400rpx;
|
background-color: #fff;
|
margin: 10rpx auto;
|
display: flex;
|
flex-direction: column;
|
|
.main-block {
|
width: 690rpx;
|
min-height: 360rpx;
|
margin: vww(20) auto;
|
padding: vww(5);
|
background: #ffffff;
|
box-shadow: 4rpx 6rpx 51rpx 0rpx rgba(73, 120, 240, 0.11);
|
border-radius: 20rpx;
|
overflow: hidden;
|
position: relative;
|
|
.weigh-item {
|
width: 100%;
|
height: vww(36);
|
margin: vww(10);
|
@include flex;
|
justify-content: space-around;
|
|
.item {
|
min-width: vww(50);
|
height: vww(45);
|
font-size: 21rpx;
|
font-weight: 400;
|
color: #ffffff;
|
text-align: center;
|
line-height: vww(30);
|
@include flex;
|
|
.concrete {
|
width: vww(36);
|
height: vww(36);
|
}
|
|
.num {
|
font-size: 40rpx;
|
font-weight: 300;
|
color: #303030;
|
}
|
}
|
}
|
|
.discount {
|
@include flex;
|
justify-content: space-around;
|
width: 100%;
|
line-height: vww(36);
|
|
.rate,
|
.weigh {
|
width: 50%;
|
height: vww(80);
|
display: flex;
|
align-items: center;
|
justify-content: space-around;
|
flex-direction: column;
|
|
.count-input {
|
width: 70%;
|
border-bottom: 1px solid rgb(218, 219, 222);
|
}
|
}
|
|
.weigh {
|
justify-content: space-between;
|
}
|
|
.count {
|
font-size: 40rpx;
|
color: rgb(242, 70, 79);
|
}
|
|
}
|
|
.notice-num {
|
@extend .discount;
|
align-items: center;
|
justify-content: space-evenly;
|
margin-left: 50rpx;
|
margin-top: 30rpx;
|
|
.num-text {
|
width: 30%;
|
}
|
|
.num-input {
|
width: 60%;
|
border-bottom: 1px solid rgb(218, 219, 222);
|
}
|
|
.num-show {
|
width: 60%;
|
color: #303030
|
}
|
}
|
|
.unqualifiedBreed {
|
@extend .level;
|
}
|
|
.level {
|
width: 89%;
|
margin: 30rpx 80rpx;
|
display: flex;
|
justify-content: flex-start;
|
|
.tag-select {
|
flex: 1;
|
margin-left: 14rpx;
|
text-align: center;
|
white-space: nowrap;
|
overflow: hidden;
|
text-overflow: ellipsis;
|
border: 1rpx solid rgb(60, 156, 255);
|
padding: 8rpx 14rpx;
|
color: rgb(60, 156, 255);
|
font-size: 26rpx;
|
|
.tag-select_text {
|
// width: vww(180);
|
// border: 1rpx solid rgb(60, 156, 255);
|
// padding: 8rpx 14rpx;
|
// color: rgb(60, 156, 255);
|
// font-size: 26rpx;
|
}
|
}
|
}
|
|
.select-button {
|
width: 100%;
|
@include flex;
|
justify-content: flex-end;
|
margin-bottom: 40rpx;
|
position: absolute;
|
right: vww(-120);
|
bottom: vww(-10);
|
|
/deep/ .u-button {
|
width: 180rpx !important;
|
}
|
}
|
|
}
|
|
.confirm-button {
|
width: 100%;
|
@include flex;
|
justify-content: center;
|
margin-bottom: 40rpx;
|
}
|
}
|
</style>
|