| | |
| | | <template>
|
| | | <view>
|
| | | <workOrderInfo :orederMessage="info" />
|
| | | <view class="bg_cate">
|
| | | <view @click="clickIten(index)" :class="typeView == index ? 'bg_cate_item active' : 'bg_cate_item'"
|
| | | v-for="(item, index) in cate" :key="index">{{ item.name }}</view>
|
| | | <view class="content">
|
| | | <workOrderInfo :orederMessage="info" /> |
| | | <view class="bg_cate"> |
| | | <view @click="clickIten(index)" :class="typeView == index ? 'bg_cate_item active' : 'bg_cate_item'" |
| | | v-for="(item, index) in cate" :key="index">{{ item.name }}</view> |
| | | </view>
|
| | | <div class="bg_list" v-if="typeView === 0">
|
| | | <div v-if="typeView==0" class="bg_list">
|
| | | <div class="bg_list_item">
|
| | | <div class="bg_list_item_top">
|
| | | <div class="bg_list_item_top_left">
|
| | | <div class="bg_list_item_top_left_x bg_m"></div>
|
| | | <span>投料明细</span>
|
| | | </div>
|
| | | <div class="bg_list_item_top_right" @click="jumpTL">
|
| | | <!-- v-if="proxy.$auth('h5:workorderinput:create') && (info.bomType !== 1 || info.bomType == 0 || !info.bomType)" -->
|
| | | <!-- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" /> -->
|
| | | <!-- <img src="@/static/gongdan_ic_shoudong@2x.ong" alt="" /> -->
|
| | | <image src="../../static/gongdan_ic_shoudong@2x.png" class="img28" mode=""></image>
|
| | | <span class="cm">新增投料</span>
|
| | | </div>
|
| | | </div>
|
| | |
|
| | | <template v-if="feedingData && feedingData.length > 0">
|
| | | <u-swipe-action>
|
| | | <u-swipe-action-item v-for="(item, index) in feedingData" :key="index" :options="options"
|
| | | @click="deleItem(item.id, 'T')">
|
| | | <div class="bg_list_item_h">
|
| | | <view class="plr30 bg_w">
|
| | | <view >
|
| | | <div v-for="(item, index) in feedingData" :key="index" class="bg_list_item_h">
|
| | | <div class="bg_list_item_num">
|
| | | <div class="bg_list_item_num_item">
|
| | | <!-- <span>{{item.code}}</span> -->
|
| | | <div class="bg_list_item_num_item_wl">
|
| | | <span> {{ item.materialName || '墙体砖' }}{{ item.procedureName ? ` | ${item.procedureName}` : ''
|
| | | }}</span>
|
| | | <div class="bg_list_item_num_item_wl_lx">
|
| | | <span class="green" v-if="item.qualityType == 0">合格 / </span>
|
| | | <span class="orange" v-if="item.qualityType == 1">不良 / </span>
|
| | | <span class="red" v-if="item.qualityType == 2">报废 / </span>
|
| | | <span class="green" v-if="item.qualityType == 0">合格<text class="c6" decode>{{ split }}</text></span>
|
| | | <span class="orange" v-if="item.qualityType == 1">不良<text class="c6" decode>{{ split }}</text></span>
|
| | | <span class="red" v-if="item.qualityType == 2">报废<text class="c6" decode>{{ split }}</text></span>
|
| | | <span>{{ item.locationName }}</span>
|
| | | <span>{{ item.batch ? ` / ${item.batch}` : '' }}</span>
|
| | | <span v-if="item.batch"><text class="c6" decode>{{ split }}</text>{{ item.batch }}</span>
|
| | | </div>
|
| | | </div>
|
| | | <div class="bg_list_item_num_item_sr">
|
| | | <!-- :disabled="!proxy.$auth('h5:workorderinput:update')" --> |
| | | <!-- <view class="cY"> |
| | | <span>{{item.num}}{{ item.unitName }}</span> |
| | | <image src="../../../static/ic_edit@2x.png" class="img48" mode=""></image> |
| | | <span class="red">删除</span> |
| | | </view> --> |
| | | <view class="cY"> |
| | | <input v-model="item.num" |
| | | @blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)" |
| | | type="number" /> |
| | | <span class="cm">保存</span> |
| | | <view class="cY">
|
| | | <view class="mr10">{{ item.num }}</view> |
| | | <span>{{ item.unitName }}</span>
|
| | | </view>
|
| | | |
| | |
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </u-swipe-action-item>
|
| | | </u-swipe-action>
|
| | | </view>
|
| | | </view>
|
| | |
|
| | | </template>
|
| | | <template v-else>
|
| | |
| | | <div class="bg_list_item_top_left">
|
| | | <div class="bg_list_item_top_left_x bg_m"></div>
|
| | | <span>产出明细</span>
|
| | | </div> |
| | | <div class="bg_list_item_top_right" @click="proRecord"> |
| | | <span style="color: #4275FC;">查看检验记录</span> |
| | | <u-icon name="arrow-right" color="#4275FC" /> |
| | | </div>
|
| | | </div>
|
| | | <div class="bg_list_item_h">
|
| | | <div class="bg_list_item_num">
|
| | | <div class="bg_list_item_num plr30">
|
| | | <div class="bg_list_item_num_item">
|
| | | <span>良品数{{ info.umodel ? `(${info.umodel.name})` : '' }}</span>
|
| | | <div class="bg_list_item_num_item_sr">
|
| | | <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
|
| | | <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
|
| | | <input type="number" v-model="produceFrom.qualified"
|
| | | @blur="changeCC('0', produceFrom.qualified, produceFrom.qualifiedId)"
|
| | | placeholder="请输入" />
|
| | | <view class="mr10">{{ produceFrom.qualified }}</view>
|
| | | <span v-if="info.umodel">{{ info.umodel.name }}</span>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | <div class="bg_list_item_h">
|
| | | <div class="bg_list_item_num">
|
| | | <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
|
| | | <div class="bg_list_item_num plr30">
|
| | | <div class="bg_list_item_num_item">
|
| | | <span>不良数{{ info.umodel ? `(${info.umodel.name})` : '' }}</span>
|
| | | <div class="bg_list_item_num_item_sr">
|
| | | <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
|
| | | <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
|
| | | <input type="number" v-model="produceFrom.undesirable"
|
| | | @blur="changeCC('1', produceFrom.undesirable, produceFrom.undesirableId)"
|
| | | placeholder="请输入" />
|
| | | <view class="mr10">{{ produceFrom.undesirable }}</view>
|
| | | <span v-if="info.umodel">{{ info.umodel.name }}</span>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | <div class="bg_list_item_h" v-if="produceFrom.undesirable > 0">
|
| | | <div class="bg_list_item_num">
|
| | | <div class="bg_list_item_num_item" @click="badShow = true">
|
| | | <span>不良项</span>
|
| | | <div class="bg_list_item_num_item_sr">
|
| | | <span class="wulll" :style="{ color: form.defectiveName ? '#305ED5' : '' }">{{ form.defectiveName ?
|
| | | form.defectiveName : '设置' }}</span>
|
| | | <image src="../../../static/ic_ar@2x.png" class="img_ar" mode=""></image>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | <div class="bg_plan" @click="TimeShow = true">
|
| | | <div class="bg_plan_label">
|
| | | <span>报工时长</span>
|
| | | </div>
|
| | | <div class="bg_plan_label_val">
|
| | | <span
|
| | | :style="{ color: form.durationName ? '#333' : '' }">{{ form.durationName ? form.durationName : '请选择' }}</span>
|
| | | <image src="../../../static/ic_ar@2x.png" class="img_ar" mode=""></image>
|
| | | </div>
|
| | | </div>
|
| | | <div class="bg_list_item" v-if="arrType && arrType.length > 0">
|
| | | <div class="bg_list_item_top">
|
| | | <div class="bg_list_item_top_left">
|
| | | <div class="bg_list_item_top_left_x bg_m"></div>
|
| | | <span>工资绩效</span>
|
| | | </div>
|
| | | </div>
|
| | | <div class="bg_list_item_h">
|
| | | <div class="bg_list_item_num">
|
| | | <div class="bg_list_item_num_item">
|
| | | <span>计件方式</span>
|
| | | <div class="bg_list_item_num_item_list">
|
| | | <div :class="form.index == index ? 'bg_list_item_num_item_list_item active' : 'bg_list_item_num_item_list_item'"
|
| | | v-for="(item, index) in arrType" :key="index"
|
| | | @click="clickPerformanceType(item, index)">
|
| | | {{ item.name }}
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | <div class="bg_list_item_num">
|
| | | <div class="bg_list_item_num_item">
|
| | | <span>工资单价</span>
|
| | | <div class="bg_list_item_num_item_sr">
|
| | | <span class="color1">{{ (arrType[form.index].salary / 10 / 10).toFixed(2) }}元/{{ arrType[form.index].type ==
|
| | | 0 ? '件' : '时' }}</span>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | <div class="bg_list_item_num">
|
| | | <div class="bg_list_item_num_item">
|
| | | <span>预计工资</span>
|
| | | <div class="bg_list_item_num_item_sr">
|
| | | <span class="color1">{{ expectedSalary }}元</span>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | <div class="bg_list_item_num">
|
| | | <div class="bg_list_item_num_item">
|
| | | <span>达标率</span>
|
| | | <div class="bg_list_item_num_item_sr">
|
| | | <span class="color1">{{ complianceRate }}%</span>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | |
|
| | | </div> |
| | | <div class="bg_list_item"> |
| | | <div class="bg_list_item_top"> |
| | | <div class="bg_list_item_top_left"> |
| | | <div class="bg_list_item_top_left_x bg_m"></div> |
| | | <span>工资绩效</span> |
| | | </div> |
| | | </div> |
| | | <div class="bg_list_item_h mb40 "> |
| | | <div class="bg_list_item_num plr30" style="display: block;"> |
| | | <div class="bX ptb15"> |
| | | <div class="f30 c2">预计工资</div> |
| | | <div class="f28" style="color:#4275FC">{{ (performance.salary / 10 / 10).toFixed(2) }}元</div> |
| | | </div> |
| | | <div class="f24 c6"> |
| | | {{ performance.salaryType == 0 ? '计件' : '计时' }} | |
| | | {{ (performance.salaryPrice / 10 / 10).toFixed(2) }}元/{{ performance.salaryType == |
| | | 0 ? '件' : '时' }} | |
| | | 达标率:{{ complianceRate }}% |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div>
|
| | | <div class="details_dj" v-if="typeView === 1">
|
| | |
|
| | | <div class="details_dj_list">
|
| | | <u-swipe-action>
|
| | | <u-swipe-action-item v-for="(item, index) in djData" :key="index" :options="options"
|
| | | @click="dele(item.id)">
|
| | | <div class="details_dj_list_item">
|
| | | <span>{{ item.attrName }}:{{ item.val }}</span>
|
| | | <span>{{ item.userName }} {{ item.createTime }}</span>
|
| | | </div>
|
| | | </u-swipe-action-item>
|
| | | </u-swipe-action>
|
| | | </div>
|
| | | </div>
|
| | | <!-- v-if="info.status === 2 || info.procedureNeedcheck === 1" -->
|
| | | <template>
|
| | | <div class="bh_zw"></div>
|
| | | <div class="bg_footer bg_f7">
|
| | | <div class="bg_footer_submit bg_m" v-if="typeView == 0" @click="submit">确认报工</div>
|
| | | <!-- proxy.$auth('h5:workorder:processRecord') && -->
|
| | | <div class="bg_footer_submit1" @click="jumpdj" v-if="typeView == 1">
|
| | | <image src="../../../static/gongdan_ic_shoudong@2x.png" class="fornt-img" mode=""></image>
|
| | | <span>新增点检</span>
|
| | | </div>
|
| | | </div>
|
| | | </template>
|
| | | <u-datetime-picker :show="TimeShow" @cancel="TimeShow=false" @confirm="timeConfirm" v-model="form.time"
|
| | | mode="time"></u-datetime-picker>
|
| | | <u-popup :show="badShow" @close="badShow=false" :round="8" closeable zIndex="20000">
|
| | | <view class="rp p40 contanir">
|
| | | <view class="c2 b tc">不良项</view>
|
| | | <view class="content bl_list">
|
| | | <div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)">
|
| | | <div class="bl_list_item_left"> |
| | | <u-checkbox-group> |
| | | <u-checkbox :checked="item.active" :label="item.name" |
| | | :name="item.name"> |
| | | </u-checkbox> |
| | | </u-checkbox-group>
|
| | | </div>
|
| | | <div class="bl_list_item_right">
|
| | | <input type="number" @click.stop v-model="item.num" placeholder="0" />
|
| | | </div>
|
| | | </div>
|
| | | </view>
|
| | | <view class="flex ap tc bottom-view">
|
| | | <view class="fx1 ml20 ptb20 sbtn_green" @click="confirm">确定</view>
|
| | | </view>
|
| | | </view>
|
| | | </u-popup>
|
| | | <div v-else class="bg_list"> |
| | | <template v-if="djData && djData.length > 0"> |
| | | <div class="details_dj"> |
| | | <div class="details_dj_list"> |
| | | <view v-for="(item, index) in djData" :key="index"> |
| | | <div class="details_dj_list_item"> |
| | | <span>{{ item.attrName }}:{{ item.val }}</span> |
| | | <span>{{ item.userName }} {{ item.createTime }}</span> |
| | | </div> |
| | | </view> |
| | | <!-- <scroll-view scroll-y="true" refresher-enabled="true" @scrolltolower="getLists"> |
| | | |
| | | </scroll-view> --> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <template v-else> |
| | | <div class="kong"> |
| | | <span>暂无数据</span> |
| | | </div> |
| | | </template> |
| | | </div> |
| | | </div> |
| | | |
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import workOrderInfo from '@/components/workOrderInfo.vue' |
| | | import { |
| | | queryById, |
| | | createMaterial, |
| | | createMaterialStandard |
| | | import workOrderInfo from '@/components/workOrderInfo.vue'
|
| | | import {
|
| | | getBarcodeContent,
|
| | | queryById,
|
| | | getOrocessRecord,
|
| | | deleteCT,
|
| | | updateById,
|
| | | comfirmDone,
|
| | | comfirmDoneStandard,
|
| | | getListByCondition,
|
| | | allForStandard,
|
| | | pageDJ,
|
| | | deletedj,
|
| | | dealWorkorderRecordStandard,
|
| | | getWorkorderRecordListStandard,
|
| | | createMaterial,
|
| | | createMaterialStandard
|
| | | } from '@/util/api/WorkOrderAPI'
|
| | | import {
|
| | | categoryExtList,
|
| | | queryOne,
|
| | | queryList
|
| | | } from '@/util/api/PlanningAPI'
|
| | | import {
|
| | | REGULAR
|
| | | } from '@/util/utils'
|
| | | export default {
|
| | | components: {
|
| | | workOrderInfo
|
| | | },
|
| | | data() {
|
| | | return {
|
| | | cate: [{
|
| | | name: '生产'
|
| | | },
|
| | | {
|
| | | name: '点检'
|
| | | }
|
| | | ],
|
| | | return { |
| | | cate: [{ |
| | | name: '生产' |
| | | }, |
| | | { |
| | | name: '点检' |
| | | } |
| | | ], |
| | | split: ' / ',
|
| | | workorderId: '',
|
| | | form: {
|
| | | time: '',
|
| | | efective: [],
|
| | |
| | | duration: 0,
|
| | | type: 0,
|
| | | index: 0
|
| | | }, |
| | | },
|
| | | info: {},
|
| | | TimeShow: false,
|
| | | badShow: false,
|
| | | typeView: 0,
|
| | | feedingData: [{
|
| | | id: 0,
|
| | | materialName: '墙体砖',
|
| | | procedureName: '压制',
|
| | | qualityType: 1,
|
| | | locationName: 'CP-01',
|
| | | batch: '20230713',
|
| | | num: 2,
|
| | | maxNum: 10,
|
| | | unitAttribute: 1,
|
| | | unitName: '块'
|
| | | }],
|
| | | feedingData: [],
|
| | | options: [{
|
| | | text: '删除',
|
| | | style: {
|
| | | backgroundColor: 'red',
|
| | | }
|
| | | }],
|
| | | arrType: [{
|
| | | name: '计时',
|
| | | type: 1,
|
| | | salary: 1000,
|
| | | },
|
| | | {
|
| | | name: '计件',
|
| | | type: 0,
|
| | | salary: 100
|
| | | },
|
| | | ],
|
| | | arrType: [],
|
| | | // 产出合格/不良
|
| | | produceFrom: {
|
| | | qualifiedId: '',
|
| | | qualified: '', // 合格
|
| | | undesirableId: '',
|
| | | undesirable: 5 // 不良
|
| | | }, |
| | | pages: { |
| | | capacity: 10, |
| | | page: 1, |
| | | total: 0 |
| | | },
|
| | | djData: [{
|
| | | attrName: '出水时间',
|
| | | val: '2022-05-28 16:3',
|
| | | userName: '张三 ',
|
| | | createTime: '2022-05-28 16:32:'
|
| | | }],
|
| | | cateList: [{
|
| | | active: false,
|
| | | name: '毛刺',
|
| | | num: 0
|
| | | }]
|
| | | djData: [],
|
| | | cateList: [],
|
| | | finished: true, |
| | | performance: {}
|
| | | };
|
| | | },
|
| | | computed: {
|
| | | expectedSalary() {
|
| | | if (this.arrType.length === 0) return 0;
|
| | | // 按件计算
|
| | | if (this.arrType[this.form.index].type == 0) {
|
| | | if (!this.produceFrom.qualified) return 0
|
| | | if (this.arrType[this.form.index].unqualified == 1) { // 是否计入不良品
|
| | | let total = Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)
|
| | | return (total * (this.arrType[this.form.index].salary / 100)).toFixed(2) || 0
|
| | | } else {
|
| | | return (Number(this.produceFrom.qualified) * (this.arrType[this.form.index].salary / 100)).toFixed(
|
| | | 2) || 0
|
| | | }
|
| | | } else {
|
| | | if (!this.form.duration) return 0;
|
| | | let h = (this.form.duration / 60 / 60).toFixed(2)
|
| | | return (Number(h) * (this.arrType[this.form.index].salary / 10 / 10)).toFixed(2) || 0
|
| | | onLoad(obj) {
|
| | | this.workorderId = obj.id
|
| | | this.queryByIds()
|
| | | this.getOrocessRecords()
|
| | | this.getData() |
| | | this.pageDJs()
|
| | | this.getOrocessRecordCC()
|
| | | uni.$on('spotAdd', () => {
|
| | | if (this.typeView == 1) {
|
| | | this.pages.page = 1
|
| | | this.pageDJs()
|
| | | }
|
| | | },
|
| | | complianceRate() {
|
| | | if (this.arrType.length === 0) return 0;
|
| | | if (!this.produceFrom.qualified && !this.produceFrom.undesirable) return 0;
|
| | | if (!this.form.duration) return 0;
|
| | | if (!this.arrType[this.form.index].num) return 0;
|
| | | // 按件计算
|
| | | // if (infoBox.value.type == 0) {
|
| | | if (this.arrType[this.form.index].unqualified == 1) { // 是否计入不良品
|
| | | let a = ((Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)) / (this.form
|
| | | .duration / 3600)).toFixed(2)
|
| | | let b = (this.arrType[this.form.index].num / (this.arrType[form.index].times / 3600)).toFixed(2)
|
| | | })
|
| | | },
|
| | | computed: {
|
| | | complianceRate() { |
| | | if (!this.performance) return 0; |
| | | let {duration, salaryNum, salaryTimes, qualifiedNum, unqualifiedNum, salaryUnqualified} = this.performance |
| | | // 报工时长 |
| | | if (!duration) return 0; |
| | | // 报工数量 |
| | | if (!qualifiedNum && !unqualifiedNum) return 0; |
| | | // 标准数量、时长 |
| | | if (!salaryNum || !salaryTimes) return 0 |
| | | |
| | | if (salaryUnqualified == 1) { // 是否计入不良品
|
| | | let a = ((Number(qualifiedNum) + Number(unqualifiedNum)) / (duration / 3600)).toFixed(2)
|
| | | let b = (salaryNum / (salaryTimes / 3600)).toFixed(2) |
| | | return ((Number(a) / Number(b)) * 100).toFixed(2)
|
| | | // let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / )
|
| | | // return total * infoBox.value.salary;
|
| | | } else {
|
| | | let a = (this.produceFrom.qualified / (this.form.duration / 3600)).toFixed(2)
|
| | | let b = (this.arrType[this.form.index].num / (this.arrType[this.form.index].times / 3600)).toFixed(2)
|
| | | } else { |
| | | let a = (qualifiedNum / (duration / 3600)).toFixed(2)
|
| | | let b = (salaryNum / (salaryTimes / 3600)).toFixed(2) |
| | | return ((Number(a) / Number(b)) * 100).toFixed(2)
|
| | | // return Number(from.qualified) * infoBox.value.salary;
|
| | | }
|
| | | }
|
| | | }, |
| | | onLoad(obj) { |
| | | this.workorderId = obj.id |
| | | queryById(this.workorderId) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | this.info = res.data |
| | | this.deviceId = res.data.pgmodel.id |
| | | } |
| | | }) |
| | | },
|
| | | methods: {
|
| | | click() {
|
| | |
|
| | | getData() {
|
| | | categoryExtList({
|
| | | cateType: "3"
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | | res.data.forEach(item => {
|
| | | item.active = false
|
| | | item.num = ''
|
| | | })
|
| | | this.cateList = res.data
|
| | | }
|
| | | })
|
| | | },
|
| | | clickIten(index) {
|
| | | this.typeView = index
|
| | | if (this.typeView == 1) {
|
| | | this.pages.page = 1
|
| | | this.finished = true
|
| | | this.pageDJs()
|
| | | }
|
| | | },
|
| | | getLists() { |
| | | if (!this.finished) {
|
| | | return
|
| | | }
|
| | | this.finished = false
|
| | | this.pages.page += 1
|
| | | this.pageDJs()
|
| | | },
|
| | | timeConfirm({
|
| | | value
|
| | |
| | | if (unitAttribute == 0 && num != '') {
|
| | | if (!REGULAR.positiveInteger.test(num)) {
|
| | | obj.num = obj.ynum
|
| | | Toast({
|
| | | message: '只能输入正整数'
|
| | | })
|
| | | uni.$u.toast('只能输入正整数')
|
| | | return
|
| | | }
|
| | | }
|
| | | if (unitAttribute == 1 && num != '') {
|
| | | if (!REGULAR.number.test(num)) {
|
| | | Toast({
|
| | | message: '只能输入正整数或小数(最多四位)'
|
| | | })
|
| | | uni.$u.toast('只能输入正整数或小数(最多四位)')
|
| | |
|
| | | obj.num = obj.ynum
|
| | | return
|
| | | }
|
| | | }
|
| | | if (num > maxNum) {
|
| | | obj.num = obj.ynum
|
| | | Toast.fail({
|
| | | message: '超出工装总数'
|
| | | })
|
| | | uni.$u.toast('超出工装总数')
|
| | |
|
| | | return
|
| | | }
|
| | | } else if (type === 'C' && num > info.value.planNum) {
|
| | | obj.num = obj.ynum
|
| | | Toast.fail({
|
| | | message: '产出数量不能超过计划数量'
|
| | | })
|
| | | uni.$u.toast('产出数量不能超过计划数量')
|
| | |
|
| | | return
|
| | | }
|
| | | // updateById({ id, num }).then(res => {
|
| | | // if (res.code === 200 && type === 'T') {
|
| | | // getOrocessRecords()
|
| | | // } else if (res.code === 200 && type === 'C') {
|
| | | // // getOrocessRecordCC()
|
| | | // }
|
| | | // })
|
| | |
|
| | | },
|
| | | clickPerformanceType(item, index) {
|
| | | this.form.index = index
|
| | | this.form.type = item.type
|
| | | },
|
| | | submit() {},
|
| | | jumpdj() {},
|
| | | pageDJs() {},
|
| | | dele(id) {
|
| | | // deletedj(id)
|
| | | // .then(res => {
|
| | | // if (res.code === 200) {
|
| | | // djData.value = []
|
| | | // finished.value = false
|
| | | // page.page = 1
|
| | | // djData.value = []
|
| | | // pageDJs()
|
| | | // }
|
| | | // })
|
| | | submit() {
|
| | |
|
| | | },
|
| | | confirm() { |
| | | // console.log('confirm');
|
| | | jumpdj() {
|
| | | uni.navigateTo({
|
| | | url: `/pages_adjust/pages/spotCheck/spotCheck?id=${this.workorderId}`
|
| | | })
|
| | | }, |
| | | proRecord() { |
| | | uni.navigateTo({ |
| | | url: `/pages_inspect/pages/InspectionRecords/InspectionRecords?id=${this.workorderId}` |
| | | }) |
| | | },
|
| | | pageDJs() { |
| | | pageDJ({
|
| | | capacity: this.pages.capacity,
|
| | | page: this.pages.page,
|
| | | model: {
|
| | | workorderId: this.workorderId
|
| | | }
|
| | | }).then(res => {
|
| | | let {
|
| | | data
|
| | | } = res
|
| | | if (data.page == 1) {
|
| | | this.djData = []
|
| | | }
|
| | | this.djData.push(...data.records)
|
| | | // loading.value = false
|
| | | }).catch(err => {
|
| | | // loading.value = false
|
| | | // finished.value = true
|
| | | })
|
| | | .finally(() => {
|
| | | this.finished = true
|
| | | })
|
| | | },
|
| | | dele(id) {
|
| | | deletedj(id)
|
| | | .then(res => {
|
| | | if (res.code === 200) {
|
| | | this.finished = false
|
| | | this.pages.page = 1
|
| | | this.pageDJs()
|
| | | }
|
| | | })
|
| | | },
|
| | | confirm() {
|
| | | let isOpen = false
|
| | | this.cateList.forEach((item, index) => {
|
| | | if (item.active) {
|
| | | isOpen = true
|
| | | }
|
| | | })
|
| | | if (!isOpen) {
|
| | | uni.showToast({
|
| | | title: '请选择不良项',
|
| | | duration: 2000,
|
| | | icon: 'none'
|
| | | })
|
| | | return
|
| | | }
|
| | | let arr = []
|
| | | let total = 0
|
| | | let name = ''
|
| | | this.cateList.forEach((item, index) => {
|
| | | if (item.active) {
|
| | | if (item.num <= 0) {
|
| | | uni.showToast({
|
| | | title: '不良数量必须大于0',
|
| | | duration: 2000,
|
| | | icon: 'none'
|
| | | })
|
| | | return
|
| | | }
|
| | | total = total += item.num
|
| | | arr.push(item)
|
| | | name += item.name + item.num + ';'
|
| | | }
|
| | | })
|
| | | if (total != Number(this.produceFrom.undesirable)) {
|
| | | uni.showToast({
|
| | | title: '不良数必须等于产出不良数',
|
| | | duration: 2000,
|
| | | icon: 'none'
|
| | | })
|
| | | return
|
| | | }
|
| | | this.form.defective = arr
|
| | | this.form.defectiveName = name
|
| | | this.badShow = false
|
| | | },
|
| | | changeChecked(i) {
|
| | | this.cateList[i].active = !this.cateList[i].active
|
| | | },
|
| | | queryByIds() {
|
| | | queryById(this.workorderId)
|
| | | .then(res => { |
| | | this.info = res.data
|
| | | queryList({
|
| | | deleted: 0,
|
| | | departId: res.data.factoryId,
|
| | | materialId: res.data.materialId,
|
| | | procedureId: res.data.procedureId
|
| | | }).then(result => {
|
| | | if (result.code === 200) {
|
| | | if (result.data && result.data.length > 0) {
|
| | | result.data.forEach((item, index) => {
|
| | | item.name = item.type == 0 ? '计件' : '计时'
|
| | | item.id = item.type
|
| | | item.active = index == 0
|
| | | })
|
| | | this.arrType = result.data
|
| | | } else {
|
| | | this.arrType = []
|
| | | }
|
| | | }
|
| | | })
|
| | | })
|
| | | },
|
| | | getOrocessRecords() {
|
| | | this.feedingData = []
|
| | | allForStandard({
|
| | | workorderId: this.workorderId,
|
| | | type: 0
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | | this.feedingData = res.data
|
| | | }
|
| | | })
|
| | | },
|
| | | getOrocessRecordCC() {
|
| | | getWorkorderRecordListStandard({
|
| | | workorderId: this.workorderId
|
| | | }).then(res => { |
| | | debugger |
| | | // console.log(res.data[0]); |
| | | if (res.data.length > 0) { |
| | | this.produceFrom.qualified = res.data[0].qualifiedNum |
| | | this.produceFrom.undesirable = res.data[0].unqualifiedNum |
| | | this.performance = res.data[0] |
| | | }
|
| | | })
|
| | | },
|
| | | jumpTL() {
|
| | | uni.navigateTo({
|
| | | // url: ''
|
| | | url: `/pages_adjust/pages/manualFeed/manualFeed?id=${this.workorderId}`
|
| | | })
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss" scoped>
|
| | | <style lang="scss" scoped> |
| | | .content { |
| | | height: 100vh; |
| | | background-color: #f7f7f7; |
| | | }
|
| | | .bg_cate {
|
| | | width: 100%;
|
| | | height: 88rpx;
|
| | | background: #FFFFFF;
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
|
| | | // border-top: 20rpx solid #f7f7f7;
|
| | | .active {
|
| | | box-sizing: border-box;
|
| | | color: #305ED5 !important;
|
| | |
| | | width: 100%;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | margin-top: 30rpx;
|
| | | // margin-top: 30rpx;
|
| | |
|
| | | .bg_list_item {
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | // margin-bottom: 40rpx;
|
| | | border-bottom: 40rpx #f7f7f7 solid;
|
| | | // border-bottom: 40rpx #f7f7f7 solid;
|
| | |
|
| | | .kong {
|
| | | text-align: center;
|
| | | padding: 30rpx 0;
|
| | | background: #ffffff;
|
| | | font-size: 25rpx;
|
| | |
|
| | | span {
|
| | | color: #474747;
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | .bg_list_item_top {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | padding-left: 30rpx;
|
| | | padding-right: 30rpx;
|
| | | margin-bottom: 30rpx;
|
| | | padding: 30rpx; |
| | | background-color: #f7f7f7;
|
| | |
|
| | | .bg_list_item_top_left {
|
| | | display: flex;
|
| | |
| | |
|
| | | .bg_list_item_h {
|
| | | width: 100%;
|
| | | padding: 0 30rpx;
|
| | | box-sizing: border-box;
|
| | | background: white;
|
| | |
|
| | | border-bottom: 1rpx solid #E5E5E5; |
| | | padding: 15rpx 0; |
| | | &:last-child { |
| | | border: none !important; |
| | | }
|
| | | .bg_list_item_num {
|
| | | width: 100%;
|
| | | min-height: 98rpx;
|
| | | background: white;
|
| | | background: white; |
| | | box-sizing: border-box;
|
| | | display: flex;
|
| | | justify-content: center;
|
| | | align-items: center;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | |
|
| | | &:last-child {
|
| | | border: none !important;
|
| | | }
|
| | |
|
| | | .kong {
|
| | | text-align: center;
|
| | | font-size: 25rpx;
|
| | |
| | | display: flex;
|
| | | align-items: center;
|
| | | // height: 118rpx;
|
| | | padding: 15rpx 0;
|
| | | // padding: 15rpx 0;
|
| | | box-sizing: border-box;
|
| | | justify-content: space-between;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | | // border-bottom: 3rpx solid #111;
|
| | |
|
| | | &:last-child {
|
| | | border: none;
|
| | |
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: flex-end;
|
| | |
|
| | | font-size: 28rpx;
|
| | | .color1 {
|
| | | font-size: 28rpx;
|
| | | |
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #333333;
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | } |
| | | .kong { |
| | | text-align: center; |
| | | padding: 30rpx 0; |
| | | // background: #ffffff; |
| | | font-size: 25rpx; |
| | | |
| | | span { |
| | | color: #474747; |
| | | } |
| | | }
|
| | | </style> |