Mr.Zhang
2023-09-18 ca2200ba53b236e8902b706c444375408c782f07
09-18 小程序
已修改22个文件
2817 ■■■■ 文件已修改
minipro_standard/common/css/lib.css 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/components/InOutInfo.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/components/Search.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/components/myTabber.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/components/workOrderInfo.vue 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages/allocation/allocation.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages/index/index.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages/login/login.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/OrderDetail/OrderDetail.vue 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/reportingForWork/reportingForWork.vue 404 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/spotCheck/spotCheck.vue 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/workOrder/workOrder.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/workOrderReporting/workOrderReporting.vue 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_inspect/pages/InOperation/InOperation.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_inspect/pages/OutOperation/OutOperation.vue 1570 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni.scss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/l-calendar/components/l-calendar/l-calendar.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform_web/src/components/system/role/OperaRoleWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform_web/src/views/system/role.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/common/css/lib.css
@@ -118,8 +118,9 @@
.rp { position: relative; }
.ap { position: absolute; }
.orange{ color: #EA531B !important;}
.green{ color: #65C35D !important;}
.orange{ color: #EA531B !important;}
.yellow{ color: #F5A400 !important;}.bg_yellow{background-color: #F5A400}
.green{ color: #00BF97 !important;}.bg_green{background-color: #00BF97}
.blue{ color: #3C77DA !important;}
.red{ color: #f00 !important;}
.white{ color: #fff !important;}
@@ -128,7 +129,7 @@
.wc{color:#F98107 !important;}
.cm {color: #305ED5}
.c1{color: #111}.c2{color: #222}.c3{ color: #333;}.c6{ color: #666;}.cc{ color: #ccc;}.cf{ color: #fff;}
.c1{color: #111!important;}.c2{color: #222!important;}.c3{ color: #333!important;}.c6{ color: #666!important;}.cc{ color: #ccc!important;}.cf{ color: #fff!important;}
/* /deep/ .uicon-close .u-icon--right{ position: absolute; right: 30rpx; top: 30rpx; z-index: 999;} */
.popCloseBtn{ position: absolute; width:50rpx; height:50rpx; right: 20rpx; top: 20rpx;}
.fixedTL{ position: absolute; left: 0; top: 0;}
minipro_standard/components/InOutInfo.vue
@@ -1,7 +1,7 @@
<template>
    <view class="p30 bg_w f26 info-style">
        <view v-if="isOut" class="cm b f32">计划出库日期:{{ info.outPlandate }}</view>
        <view v-else class="cm b f32">计划入库日期:{{ info.inPlandate || info.planDate }}</view>
        <view v-if="isOut" class="cm b f32">计划出库日期:{{ info.outPlandate||'' }}</view>
        <view v-else class="cm b f32">计划入库日期:{{ info.inPlandate || info.planDate || '' }}</view>
        <view class="c2 mt25">
            <text class="c6">来源类型:</text>
            {{ typeTstr(info.originType) }}
minipro_standard/components/Search.vue
@@ -1,4 +1,5 @@
<template>
    <view class="search">
        <view class="search_box">
            <view class="search_input">
@@ -10,7 +11,7 @@
                <image @click="openCate()" src="@/static/filter@2x.png" mode="widthFix">
            </view>
        </view>
        <u-popup closeOnClickOverlay :show="open" @close="open=false" :round="10" mode="bottom">
        <u-popup closeOnClickOverlay :show="open" @close="close" :round="10" mode="bottom">
            <scroll-view scroll-y class="content">
                <slot name="content"></slot>
            </scroll-view>
@@ -42,7 +43,12 @@
            },
            // 打开弹窗
            openCate() {
                this.$emit('scrollerBan', true)
                this.open = true
            },
            close() {
                this.open = false
                this.$emit('scrollerBan', false)
            },
            // 重置
            closes() {
@@ -83,7 +89,7 @@
            justify-content: space-between;
            padding-left: 40rpx;
            padding-right: 40rpx;
            padding-bottom: env(safe-area-inset-bottom);
            padding-bottom: calc(env(safe-area-inset-bottom) + 20rpx);
            box-sizing: border-box;
            position: fixed;
            bottom: 0;
minipro_standard/components/myTabber.vue
@@ -2,6 +2,7 @@
    <view>
        <u-tabbar
            :value="index"
            :customStyle="{paddingTop: '5px',paddingBottom: '5px',}"
            @change="change"
            fixed
            activeColor="#222"
@@ -31,6 +32,7 @@
                    <image src="@/static/nav_wode@2x.png" class="icon-style" mode=""></image>
                </view>
            </u-tabbar-item>
        </u-tabbar>
    </view>
</template>
minipro_standard/components/workOrderInfo.vue
@@ -2,84 +2,123 @@
    <view class="p30 bg_w order-info">
        <view class="bX">
            <view class="cY">
                <view class="mr10 b">{{ `${orederMessage.mmodel.name} |${orederMessage.procedureName}`}}</view>
                <u-tag size="mini" bgColor="#03AF76" text="正常"></u-tag>
                <view class="mr10 b">{{ `${orederMessage.mmodel.name || ''} | ${orederMessage.procedureName || ''}`}}
                </view>
                <!-- <u-tag size="mini" bgColor="#03AF76" text="正常"></u-tag> -->
                <div class="type bg_green" v-if="orederMessage.type === 0">正常</div>
                <div class="type bg_yellow" v-if="orederMessage.type === 2">返工返修</div>
            </view>
            <view class="status" :class="orederMessage.status==0?'wc':orederMessage.status==1?'green':orederMessage.status==3?'blue':orederMessage.status==7?'green':'c6'">{{ stausToStr(orederMessage.status) }}</view>
        </view>
        <view class="f24 c6 mt20">工单编号:{{ orederMessage.code || '-' }}</view>
        <view class="f24 mt20 bg_f7 ptb20 plr30 n">
            <view class="c2 mb20">
                <span class="c6">物料编码:</span>
                {{ orederMessage.mmodel ? orederMessage.mmodel.code : '-' }}
            </view>
            <view class="c2 mb20">
                <span class="c6">计划开工:</span>
                {{ orederMessage.planDate || '-' }}
            </view>
            <view class="c2 mb20">
                <span class="c6">生产批次:</span>
                {{ orederMessage.batch || '-' }}
            </view>
            <view class="c2 mb20">
                <span class="c6">计划数量:</span>
                {{ orederMessage.planNum || '-' }}{{ orederMessage.umodel ? orederMessage.umodel.name : '-' }}
            </view>
            <view class="c2 mb20">
                <span class="c6">生产设备:</span>
                {{ orederMessage.pgmodel ? `${orederMessage.pgmodel.code} - ${orederMessage.pgmodel.name}` : '-' }}
            </view>
            <view class="c2 flex">
                <view class="c6" style="flex-shrink: 0;">生产人员:</view>
                <view class="flex1">
                    {{ orederMessage.proUserList ? orederMessage.proUserList.map(item => item.proUserDepartName).join(' / ') : '-' }}
                </view>
            </view>
            <view class="status"
                :class="orederMessage.status==0?'wc':orederMessage.status==1?'green':orederMessage.status==3?'blue':orederMessage.status==7?'green':'c6'">
                {{ stausToStr(orederMessage.status) }}</view>
        </view>
        <view class="f24 c6 mt20">工单编号:{{ orederMessage.code || '-' }}</view>
        <view class="f24 mt20 bg_f7 ptb20 plr30 n">
            <view class="c2 mb20">
                <span class="c6">物料编码:</span>
                {{ orederMessage.mmodel ? orederMessage.mmodel.code : '-' }}
            </view>
            <view class="c2 mb20">
                <span class="c6">计划开工:</span>
                {{ orederMessage.planDate || '-' }}
            </view>
            <view class="c2 mb20">
                <span class="c6">生产批次:</span>
                {{ orederMessage.batch || '-' }}
            </view>
            <view class="c2 mb20">
                <span class="c6">计划数量:</span>
                {{ orederMessage.planNum || '-' }}{{ orederMessage.umodel ? orederMessage.umodel.name : '-' }}
            </view>
            <view class="c2 mb20">
                <span class="c6">生产设备:</span>
                {{ orederMessage.pgmodel ? `${orederMessage.pgmodel.code} - ${orederMessage.pgmodel.name}` : '-' }}
            </view>
            <view class="c2 flex">
                <view class="c6" style="flex-shrink: 0;">生产人员:</view>
                <view class="flex1">
                    {{ orederMessage.proUserList ? orederMessage.proUserList.map(item => item.proUserDepartName).join(' / ') : '-' }}
                </view>
            </view>
        </view>
    </view>
</template>
<script>
    export default {
        name: "workOrderInfo",
        props: {
            orederMessage: {
                type: Object,
                default: () => {}
            }
        name: "workOrderInfo",
        props: {
            orederMessage: {
                type: Object,
                default: () => {}
            }
        },
        data() {
            return {
                status: [
                    { status: 0, label: '已创建' },
                    { status: 1, label: '已备料' },
                    { status: 2, label: '已完工检' },
                    { status: 3, label: '已检验' },
                    { status: 4, label: '已报工' },
                    { status: 5, label: '已入库' },
                    { status: 6, label: '已取消' },
                    { status: 7, label: '进行中' }
                status: [{
                        status: 0,
                        label: '已创建'
                    },
                    {
                        status: 1,
                        label: '已备料'
                    },
                    {
                        status: 2,
                        label: '已完工检'
                    },
                    {
                        status: 3,
                        label: '已检验'
                    },
                    {
                        status: 4,
                        label: '已报工'
                    },
                    {
                        status: 5,
                        label: '已入库'
                    },
                    {
                        status: 6,
                        label: '已取消'
                    },
                    {
                        status: 7,
                        label: '生产中'
                    }
                ]
            };
        },
        methods: {
            stausToStr(status) {
                let temp = this.status.find(item => item.status == status)
                return temp ? temp.label : '-'
            }
        },
        methods: {
            stausToStr(status) {
                let temp = this.status.find(item => item.status == status)
                return temp ? temp.label : '-'
            }
        }
    }
</script>
<style lang="scss">
.status {
    height: 26rpx;
    font-size: 26rpx;
    font-weight: 400;
    color: #666666;
    line-height: 26rpx;
}
// .order-info {
//     border-bottom: 20rpx #f7f7f7 solid;
// }
<style lang="scss" scoped>
    .status {
        height: 26rpx;
        font-size: 26rpx;
        font-weight: 400;
        color: #666666;
        line-height: 26rpx;
    }
    .type {
        padding: 0 8rpx;
        color: white;
        margin-left: 10rpx;
        height: 38rpx;
        line-height: 38rpx;
        font-size: 22rpx;
        border: 8rpx;
    }
    // .order-info {
    //     border-bottom: 20rpx #f7f7f7 solid;
    // }
</style>
minipro_standard/pages/allocation/allocation.vue
@@ -60,7 +60,9 @@
            <button class="fp_footer_submit" @click="submit">确认</button>
        </view>
        <!-- 选择日期 -->
        <u-calendar :show="timeShow" @close="timeShow = false" @confirm="timeConfirm"></u-calendar>
        <!-- <u-calendar :show="timeShow" @close="timeShow = false" @confirm="timeConfirm"></u-calendar> -->
        <l-calendar :lunar="false" v-model="timeShow" @change="timeConfirm" :isRange="true" activeBgColor="#305ED5"
            rangeColor="#305ED5" rangeBgColor="rgba(48, 80, 213, 0.1)"></l-calendar>
        <!-- 选择设备 -->
        <u-picker :show="show1" :columns="equipment" @confirm="confirm" @cancel="show1 = false" keyName="text"></u-picker>
    </view>
@@ -105,22 +107,12 @@
                this.form.equipmentId = val.value[0].id
                this.form.equipmentName = val.value[0].text
                this.personnelData = []
                getFindAll({
                    deviceId: this.form.equipmentId
                }).then(res => {
                    if (res.code === 200 && res.data && res.data.length !== 0) {
                        this.form.personnelId = []
                        let arr = []
                        res.data.forEach((item) => {
                            arr.push({ text: item.dmodel.name + '-' + item.umodel.name, id: item.userId })
                        })
                        this.personnelData = arr
                    }
                    this.show1 = false
                })
                this.getUser()
            },
            timeConfirm(val) {
                this.form.startTime = val[0]
                // this.form.startTime = val[0]
                this.listData.startDate = val.startDate
                this.listData.endDate = val.endDate
                this.timeShow = false
            },
            // 提交分配
@@ -153,9 +145,27 @@
                            res.data.forEach((element) => {
                                arr.push({ text: element.code + '-' + element.name, id: element.id, checked: false })
                            })
                            this.form.equipmentId = arr[0].id
                            this.form.equipmentName = arr[0].text
                            this.getUser()
                            this.equipment.push(arr)
                        }
                    })
            },
            getUser() {
                getFindAll({
                    deviceId: this.form.equipmentId
                }).then(res => {
                    if (res.code === 200 && res.data && res.data.length !== 0) {
                        this.form.personnelId = []
                        let arr = []
                        res.data.forEach((item) => {
                            arr.push({ text: item.dmodel.name + '-' + item.umodel.name, id: item.userId })
                        })
                        this.personnelData = arr
                    }
                    this.show1 = false
                })
            }
        }
    }
minipro_standard/pages/index/index.vue
@@ -1,5 +1,8 @@
<template>
    <view class="index">
<template>
    <page-meta :page-style="ban ?'overflow: hidden;': ''"/>
    <view class="index" >
        <!-- :class="ban?'scroll-ban': ''" -->
        <!-- <view class="mask" @tap="tapMask" @touchmove="moveHandle"></view> -->
        <!-- <web-view v-if="show" @onPostMessage="onMessage" :src="'https://dmtest.ahapp.net/doumeeplant_h5/#/appletLogin?code=' + code"></web-view> -->
        <!-- {{$store.state.statusbarHeight}} -->
        
@@ -10,7 +13,7 @@
                    待办</view>
                <div class="content_search">
                    <v-Search @searchInput="searchInput" @submit="confirm" @reset="resetType" :isShow="true"
                        placeholder="搜索关键字">
                        placeholder="搜索关键字" @scrollerBan="$event => ban=$event">
                        <template v-slot:content>
                            <view class="rp contanir">
                                <view class="c2 b">类型</view>
@@ -35,7 +38,7 @@
            </view>
        </u-sticky>
        
        <scroll-view :style="{height: height}" v-if="projectList.length" scroll-y refresher-enabled="true" :refresher-triggered="triggered" @scrolltolower="loadMore"
        <scroll-view   :style="{height: height}" v-if="projectList.length" scroll-y refresher-enabled="true" :refresher-triggered="triggered" @scrolltolower="loadMore"
            @refresherrefresh="refresh"
        >
            <view v-for="(item, index) in projectList" :key="index">
@@ -58,7 +61,7 @@
            </view>
        </scroll-view>
        <view v-else class="tc c6">暂无数据...</view>
        <u-popup :show="show" @close="close" :round="8" zIndex="20000">
        <!-- <u-popup :show="show" @close="close" :round="8" zIndex="20000">
            <view class="rp p40 contanir">
                <view class="c2 b">类型</view>
                <view class="content">
@@ -73,7 +76,7 @@
                    <view class="fx1 ptb20 sbtn_gray c9" @click="resetType">重置</view>
                    <view class="fx1 ml20 ptb20 sbtn_green" @click="confirm">确定</view>
                </view>
            </view>
            </view> -->
        </u-popup>
        <myTabbar :index="0" />
    </view>
@@ -98,6 +101,7 @@
        },
        data() {
            return {
                ban: false,
                height: '',
                top: '',
                code: '',
@@ -183,7 +187,7 @@
                    .in(this)
                    .select('.content_search')
                    .boundingClientRect((rect) => {
                        that.height = `calc(100vh - ${rect.height + 80}px)`
                        that.height = `calc(100vh - ${rect.height + 150}px)`
                        that.top = `${rect.height}px`
                    })
                    .exec()
@@ -211,6 +215,10 @@
                    .then(res => {
                        this.tagList[0].num = res.data.startNum
                        this.tagList[1].num = res.data.endNum
                        this.$store.commit('SETNUM', {
                            d: res.data.startNum,
                            y: res.data.endNum
                        })
                    })
                    .catch(err => {})
            },
@@ -409,13 +417,15 @@
            },
            resetType() {
                this.type = ''
                this.searchForm.type = ''
                this.searchForm.type = ''
                this.ban =false
                this.confirm()
                
            },
            confirm() {
                this.searchForm.type = this.type
                this.show = false
                this.ban =false
                this.search()
            },
            search() {
@@ -557,5 +567,15 @@
    }
    .content_search_x {
        height: 24rpx;
    }
    .mask {
        z-index: 8000;
        position: fixed;
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        height: 100vh;
        background-color: rgba(0, 0, 0, 0.5);
    }
</style>
minipro_standard/pages/login/login.vue
@@ -7,7 +7,8 @@
        </view>
        <view class="bg_w rd8 ptb30 pl40 bbox com-input flex input-height">
            <image src="@/static/login_ic_code@2x.png" mode="" class="img40 mr25"></image>
            <input placeholder="企业代码" border="none" v-model="form.companyId"/>
            <!-- <input placeholder="企业代码" border="none" v-model="form.companyId"/> -->
            <u--input placeholder="企业代码" border="none" v-model="form.companyId"></u--input>
        </view>
        <view class="bg_w rd8 ptb30 pl40 bbox mt40 flex input-height">
            <image src="@/static/login_ic_phone@2x.png" mode="" class="img40 mr25"></image>
minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue
@@ -39,10 +39,11 @@
                            <span class="purple" v-if="item.status === 3">已检验</span>
                            <span v-if="item.status === 4">已报工</span>
                            <span v-if="item.status === 5">已入库</span>
                            <span v-if="item.status === 6">已取消</span>
                            <span v-if="item.status === 6">已取消</span>
                            <span v-if="item.status === 7">生产中</span>
                        </div>
                    </div>
                    <span>工单编码: {{item.code}}</span>
                    <span class="f24">工单编码: {{item.code}}</span>
                    <div class="content_list_item_content">
                        <div class="content_list_item_content_item">
                            <div class="content_list_item_content_item_label">物料编码:</div>
@@ -379,7 +380,7 @@
                        width: 80%;
                        span {
                            font-size: 32rpx;
                            font-size: 24rpx;
                            font-weight: 500;
                            color: #333333;
                            overflow: hidden;
minipro_standard/pages_adjust/pages/OrderDetail/OrderDetail.vue
@@ -1,7 +1,11 @@
<template>
    <view>
        <workOrderInfo :orederMessage="info" />
        <div class="bg_list">
    <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 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">
@@ -11,9 +15,9 @@
                </div>
                <template v-if="feedingData && feedingData.length > 0">
                    <view>
                        <view v-for="(item, index) in feedingData" :key="index">
                            <div class="bg_list_item_h">
                    <view class="plr30">
                        <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">
                                        <div class="bg_list_item_num_item_wl">
@@ -30,7 +34,7 @@
                                        <div class="bg_list_item_num_item_sr">
                                            <view class="cY">
                                                <view class="mr10">{{ item.num }}</view>
                                                <span v-if="info.umodel">{{ info.umodel.name }}</span>
                                                <span>{{ item.unitName }}</span>
                                            </view>
                                        </div>
@@ -59,7 +63,7 @@
                    </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">
@@ -70,7 +74,7 @@
                    </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">
@@ -85,21 +89,72 @@
                <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>
                        <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 class="bg_list_item_num">
                        <div class="bg_list_item_num_item">
                            <span>计件方式</span>
                            <div class="bg_list_item_num_item_list">
                                {{ performance.salaryType == 0 ? '计件' : '计时' }}
                            </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">{{ (performance.salaryPrice / 10 / 10).toFixed(2) }}元/{{ performance.salaryType ==
                            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">{{ complianceRate }}%</span>
                            </div>
                        </div>
                    </div> -->
                </div>
            </div>
        </div>
        <div v-else 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> -->
                <template v-if="djData && djData.length > 0">
                    <div class="details_dj">
                        <div class="details_dj_list">
                            <scroll-view scroll-y="true" refresher-enabled="true" @scrolltolower="getLists">
                                <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>
                            <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>
@@ -109,50 +164,7 @@
                    </div>
                </template>
            </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">
                    <div class="bg_list_item_num">
                        <div class="bg_list_item_num_item">
                            <span>计件方式</span>
                            <div class="bg_list_item_num_item_list">
                                {{ performance.salaryType == 0 ? '计件' : '计时' }}
                            </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">{{ (performance.salaryPrice / 10 / 10).toFixed(2) }}元/{{ performance.salaryType ==
                            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">{{ (performance.salary / 10 / 10).toFixed(2) }}元</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>
        
    </view>
</template>
@@ -189,7 +201,14 @@
            workOrderInfo
        },
        data() {
            return {
            return {
                cate: [{
                        name: '生产'
                    },
                    {
                        name: '点检'
                    }
                ],
                workorderId: '',
                form: {
                    time: '',
@@ -248,19 +267,22 @@
            complianceRate() {
                if (!this.performance) return 0;
                if (!this.performance.duration) return 0;
                if (!this.performance.salaryNum || this.performance.salaryTimes) return 0
                
                if (!this.performance.qualifiedNum && !this.performance.unqualifiedNum) return 0;
                if (this.performance.salaryUnqualified == 1) { // 是否计入不良品
                    let a = ((Number(this.performance.qualifiedNum) + Number(this.performance.unqualifiedNum)) / (this.performance
                        .duration / 3600)).toFixed(2)
                    let b = (this.performance.salaryNum / (this.performance.salaryTimes / 3600)).toFixed(2)
                    let b = (this.performance.salaryNum / (this.performance.salaryTimes / 3600)).toFixed(2)
                    debugger
                    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.performance.qualifiedNum / (this.performance.duration / 3600)).toFixed(2)
                    // let b = (this.arrType[this.form.index].num / (this.arrType[this.form.index].times / 3600)).toFixed(2)
                    let b = (this.performance.salaryNum / (this.performance.salaryTimes / 3600)).toFixed(2)
                    let b = (this.performance.salaryNum / (this.performance.salaryTimes / 3600)).toFixed(2)
                    debugger
                    return ((Number(a) / Number(b)) * 100).toFixed(2)
                }
            }
@@ -484,8 +506,7 @@
                getWorkorderRecordListStandard({
                    workorderId: this.workorderId
                }).then(res => {
                    console.log(res.data[0]);
                    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
@@ -503,14 +524,18 @@
    }
</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;
@@ -542,16 +567,7 @@
            // margin-bottom: 40rpx;
            // 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;
@@ -621,23 +637,21 @@
            .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;
@@ -651,10 +665,10 @@
                        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;
@@ -1054,5 +1068,15 @@
                }
            }
        }
    }
    .kong {
        text-align: center;
        padding: 30rpx 0;
        // background: #ffffff;
        font-size: 25rpx;
        span {
            color: #474747;
        }
    }
</style>
minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue
@@ -41,7 +41,7 @@
                    <div class="tl_list_item">
                        <div class="tl_list_item_label">投料数量{{ item.unitAttribute }}</div>
                        <div class="tl_list_item_go">
                            <input type="text" @blur="changeNumber(item.num, index, item.unitAttribute)"
                            <input type="text"  @blur="changeNumber(item.num, index, item.unitAttribute)"
                                v-model="item.num" />
                        </div>
                    </div>
@@ -153,26 +153,21 @@
                    unitAttribute: ''
                })
            },
            changeNumber(num, index, unitAttribute) {
            changeNumber(num, index, unitAttribute) {
                if (unitAttribute === 0 && num !== '') {
                    if (!positiveInteger.test(num)) {
                        uni.$u.toast({
                            message: '只能输入正整数'
                        })
                        uni.$u.toast('只能输入正整数')
                        this.materialList[index].num = ''
                    }
                } else if (unitAttribute === 1 && num !== '') {
                    if (!number.test(num)) {
                        uni.$u.toast({
                            message: '只能输入正整数或小数(最多四位)'
                        })
                        uni.$u.toast('只能输入正整数或小数(最多四位)')
                        this.materialList[index].num = ''
                    }
                }
                if (num <= 0) {
                    uni.$u.toast({
                        message: '投料数量不能小于等于0'
                    })
                    uni.$u.toast('投料数量不能小于等于0')
                    this.materialList[index].num = ''
                }
            },
minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue
@@ -33,10 +33,10 @@
                    <image class="shanchu" src="@/static/chuku_ic_delete@2x.png" mode="widthFix" @click="dele(i)"></image>
                    <text>{{item.materialName}}|{{item.materialCode}}</text>
                    <text>
                        <text class="green" v-if="item.qualityType === '0'">合格&nbsp;|</text>
                        <text class="yellow" v-if="item.qualityType === '1'">不良&nbsp;|</text>
                        <text class="red" v-if="item.qualityType === '2'">报废&nbsp;|</text>
                        <text>{{item.procedureName ? item.procedureName : '-'}}&nbsp;|&nbsp;</text>
                        <text class="green" v-if="item.qualityType === '0'" decode>合格<text class="c6" decode>{{ division }}</text></text>
                        <text class="yellow" v-if="item.qualityType === '1'" decode>不良<text class="c6" decode>{{ division }}</text></text>
                        <text class="red" v-if="item.qualityType === '2'" decode>报废<text class="c6" decode>{{ division }}</text></text>
                        <text decode>{{item.procedureName ? item.procedureName : '-'}}{{division}}</text>
                        <text>{{item.batch ? item.batch : '-'}}</text>
                    </text>
                    <view class="zk_wl_item_num">
@@ -87,6 +87,7 @@
        },
        data() {
            return {
                division: '&nbsp;/&nbsp;',
                data: {
                    type: '',
                    outUserId: '',
@@ -211,6 +212,7 @@
                }).then(res => {
                    if (res.code === 200) {
                        uni.showToast({ title: '创建成功!', icon: 'success', duration: 2000 });
                        this.$store.dispatch('getUpcomingNum')
                        setTimeout(() => {
                            uni.navigateBack({ delta: 1 });
                        }, 2000)
@@ -272,7 +274,7 @@
                }
                text {
                    font-size: 30rpx;
                    font-size: 24rpx;
                    font-weight: 400;
                    color: #222222;
                }
@@ -384,7 +386,7 @@
                text {
                    &:nth-child(1) {
                        font-size: 30rpx;
                        font-size: 24rpx;
                        font-weight: 500;
                        color: #222222;
                        margin-bottom: 24rpx;
minipro_standard/pages_adjust/pages/reportingForWork/reportingForWork.vue
@@ -15,202 +15,205 @@
                <image src="@/static/ic_ar@2x.png" alt="" />
            </view>
        </view>
        <view class="bg_list">
            <view class="bg_list_item">
                <view class="bg_list_item_top">
                    <view class="bg_list_item_top_left">
                        <view class="bg_list_item_top_left_x"></view>
                        <text>生产信息</text>
                    </view>
                </view>
                <view class="bg_list_item_h">
                    <view class="bg_list_item_num" @click="openDev">
                        <view class="bg_list_item_num_item">
                            <text>生产设备</text>
                            <view class="bg_list_item_num_item_sr">
                                <text :style="{color: from.deviceName ? '#333' : ''}">{{from.deviceName ? from.deviceName : '请选择'}}</text>
                                <image src="@/static/ic_ar@2x.png" alt="" />
                            </view>
        <template v-if="plansId">
            <view class="bg_list">
                <view class="bg_list_item">
                    <view class="bg_list_item_top">
                        <view class="bg_list_item_top_left">
                            <view class="bg_list_item_top_left_x"></view>
                            <text>生产信息</text>
                        </view>
                    </view>
                    <view class="bg_list_item_num" @click="userShow = true">
                        <view class="bg_list_item_num_item">
                            <text>生产人员</text>
                            <view class="bg_list_item_num_item_sr">
                                <text :style="{color: from.userName ? '#333' : ''}">{{from.userName ? from.userName : '请选择'}}</text>
                                <image src="@/static/ic_ar@2x.png" alt="" />
                            </view>
                        </view>
                    </view>
                </view>
            </view>
            <view class="bg_list_item">
                <view class="bg_list_item_top">
                    <view class="bg_list_item_top_left">
                        <view class="bg_list_item_top_left_x"></view>
                        <text>生产投料</text>
                    </view>
                    <view class="bg_list_item_top_right" @click="openMaterial" v-if="(hasBom == 1 && bomType != 1) || hasBom == 0">
                        <image src="@/static/gongdan_ic_shoudong@2x.png" alt="" />
                        <text>新增投料</text>
                    </view>
                </view>
                <template v-if="wuList.length > 0 && !(hasBom == 1 && bomType == 1)">
                    <van-swipe-cell v-for="(item, index) in wuList" :key="index">
                        <view class="bg_list_item_h">
                            <view class="bg_list_item_num">
                                <view class="bg_list_item_num_item">
                                    <view class="bg_list_item_num_item_wl">
                                        <text>{{ item.materialName }}{{ item.procedureName ? ` | ${item.procedureName}` : '' }}</text>
                                        <view class="bg_list_item_num_item_wl_lx">
                                            <text class="green" v-if="item.qualityType == 0">合格&nbsp;/&nbsp;</text>
                                            <text class="yellow" v-if="item.qualityType == 1">不良&nbsp;/&nbsp;</text>
                                            <text class="red" v-if="item.qualityType == 2">报废&nbsp;/&nbsp;</text>
                                            <text>{{ item.locationName || '-' }}&nbsp;/&nbsp;</text>
                                            <text>{{ item.batch || '-' }}</text>
                                        </view>
                                    </view>
                                    <view class="bg_list_item_num_item_sr">
                                        <u--input
                                            placeholder="请输入"
                                            border="surround"
                                            type="number"
                                            :customStyle="{width: '100%'}"
                                            v-model="item.num"
                                            @input="inputwl(index)"
                                          ></u--input>
                                        <!-- <input type="number" v-model="item.num" @input="inputwl(index)" /> -->
                                        <text>{{ item.unitName }}</text>
                                    </view>
                    <view class="bg_list_item_h">
                        <view class="bg_list_item_num" @click="openDev">
                            <view class="bg_list_item_num_item">
                                <text>生产设备</text>
                                <view class="bg_list_item_num_item_sr">
                                    <text :style="{color: from.deviceName ? '#333' : ''}">{{from.deviceName ? from.deviceName : '请选择'}}</text>
                                    <image src="@/static/ic_ar@2x.png" alt="" />
                                </view>
                            </view>
                        </view>
                        <template #right>
                            <van-button style="height: 100%;" @click="deleItem(index)" square text="删除" type="danger" />
                        </template>
                    </van-swipe-cell>
                </template>
                <template v-else-if="wuList.length == 0 && !(hasBom == 1 && bomType == 1)">
                    <view class="kong">
                        <text>暂无数据</text>
                    </view>
                </template>
                <view class="kong" v-if="hasBom == 1 && bomType == 1">
                    <text>当前工序无需投料</text>
                </view>
            </view>
            <view class="bg_list_item bottomval">
                <view class="bg_list_item_top">
                    <view class="bg_list_item_top_left">
                        <view class="bg_list_item_top_left_x"></view>
                        <text>产出明细</text>
                    </view>
                </view>
                <view class="bg_list_item_h">
                    <view class="bg_list_item_num">
                        <view class="bg_list_item_num_item">
                            <text><text>*</text>良品数</text>
                            <view class="bg_list_item_num_item_sr">
                                <u--input
                                    placeholder="请输入"
                                    border="surround"
                                    type="number"
                                    :customStyle="{width: '180rpx'}"
                                    v-model="from.qualified"
                                    @input="changeNum(1)"
                                  ></u--input>
                                <!-- <input type="number" v-model="from.qualified" @input="changeNum(1)" placeholder="请输入" /> -->
                                <text v-if="from.processPlan">{{from.processPlan.unitName}}</text>
                        <view class="bg_list_item_num" @click="userShow = true">
                            <view class="bg_list_item_num_item">
                                <text>生产人员</text>
                                <view class="bg_list_item_num_item_sr">
                                    <text :style="{color: from.userName ? '#333' : ''}">{{from.userName ? from.userName : '请选择'}}</text>
                                    <image src="@/static/ic_ar@2x.png" alt="" />
                                </view>
                            </view>
                        </view>
                    </view>
                    <view class="bg_list_item_num">
                        <view class="bg_list_item_num_item">
                            <text>不良数</text>
                            <view class="bg_list_item_num_item_sr">
                                <u--input
                                    placeholder="请输入"
                                    border="surround"
                                    type="number"
                                    :customStyle="{width: '180rpx'}"
                                    v-model="from.undesirable"
                                    @input="changeNum(2)"
                                  ></u--input>
                                <!-- <input type="number" v-model="from.undesirable" @input="changeNum(2)" placeholder="请输入" /> -->
                                <text v-if="from.processPlan">{{from.processPlan.unitName}}</text>
                </view>
                <view class="bg_list_item">
                    <view class="bg_list_item_top">
                        <view class="bg_list_item_top_left">
                            <view class="bg_list_item_top_left_x"></view>
                            <text>生产投料</text>
                        </view>
                        <view class="bg_list_item_top_right" @click="openMaterial" v-if="(hasBom == 1 && bomType != 1) || hasBom == 0">
                            <image src="@/static/gongdan_ic_shoudong@2x.png" alt="" />
                            <text>新增投料</text>
                        </view>
                    </view>
                    <template v-if="wuList.length > 0 && !(hasBom == 1 && bomType == 1)">
                        <van-swipe-cell v-for="(item, index) in wuList" :key="index">
                            <view class="bg_list_item_h">
                                <view class="bg_list_item_num">
                                    <view class="bg_list_item_num_item">
                                        <view class="bg_list_item_num_item_wl">
                                            <text>{{ item.materialName }}{{ item.procedureName ? ` | ${item.procedureName}` : '' }}</text>
                                            <view class="bg_list_item_num_item_wl_lx">
                                                <text class="green" v-if="item.qualityType == 0">合格&nbsp;/&nbsp;</text>
                                                <text class="yellow" v-if="item.qualityType == 1">不良&nbsp;/&nbsp;</text>
                                                <text class="red" v-if="item.qualityType == 2">报废&nbsp;/&nbsp;</text>
                                                <text>{{ item.locationName || '-' }}&nbsp;/&nbsp;</text>
                                                <text>{{ item.batch || '-' }}</text>
                                            </view>
                                        </view>
                                        <view class="bg_list_item_num_item_sr">
                                            <u--input
                                                placeholder="请输入"
                                                border="surround"
                                                type="number"
                                                :customStyle="{width: '100%'}"
                                                v-model="item.num"
                                                @input="inputwl(index)"
                                              ></u--input>
                                            <!-- <input type="number" v-model="item.num" @input="inputwl(index)" /> -->
                                            <text>{{ item.unitName }}</text>
                                        </view>
                                    </view>
                                </view>
                            </view>
                            <template #right>
                                <van-button style="height: 100%;" @click="deleItem(index)" square text="删除" type="danger" />
                            </template>
                        </van-swipe-cell>
                    </template>
                    <template v-else-if="wuList.length == 0 && !(hasBom == 1 && bomType == 1)">
                        <view class="kong">
                            <text>暂无数据</text>
                        </view>
                    </template>
                    <view class="kong" v-if="hasBom == 1 && bomType == 1">
                        <text>当前工序无需投料</text>
                    </view>
                </view>
                <view class="bg_list_item bottomval">
                    <view class="bg_list_item_top">
                        <view class="bg_list_item_top_left">
                            <view class="bg_list_item_top_left_x"></view>
                            <text>产出明细</text>
                        </view>
                    </view>
                    <view class="bg_list_item_h">
                        <view class="bg_list_item_num">
                            <view class="bg_list_item_num_item">
                                <text><text>*</text>良品数</text>
                                <view class="bg_list_item_num_item_sr">
                                    <u--input
                                        placeholder="请输入"
                                        border="surround"
                                        type="number"
                                        :customStyle="{width: '180rpx'}"
                                        v-model="from.qualified"
                                        @input="changeNum(1)"
                                      ></u--input>
                                    <!-- <input type="number" v-model="from.qualified" @input="changeNum(1)" placeholder="请输入" /> -->
                                    <text v-if="from.processPlan">{{from.processPlan.unitName}}</text>
                                </view>
                            </view>
                        </view>
                        <view class="bg_list_item_num">
                            <view class="bg_list_item_num_item">
                                <text>不良数</text>
                                <view class="bg_list_item_num_item_sr">
                                    <u--input
                                        placeholder="请输入"
                                        border="surround"
                                        type="number"
                                        :customStyle="{width: '180rpx'}"
                                        v-model="from.undesirable"
                                        @input="changeNum(2)"
                                      ></u--input>
                                    <!-- <input type="number" v-model="from.undesirable" @input="changeNum(2)" placeholder="请输入" /> -->
                                    <text v-if="from.processPlan">{{from.processPlan.unitName}}</text>
                                </view>
                            </view>
                        </view>
                        <view class="bg_list_item_num" v-if="from.undesirable > 0">
                            <view class="bg_list_item_num_item" @click="openBL">
                                <!-- <text>*</text> -->
                                <text>不良项</text>
                                <view class="bg_list_item_num_item_sr">
                                    <text class="wulll" :style="{color: from.defectiveName ? '#305ED5' : ''}">{{from.defectiveName ? from.defectiveName : '设置'}}</text>
                                    <image src="@/static/ic_ar@2x.png" alt="" />
                                </view>
                            </view>
                        </view>
                    </view>
                    <view class="bg_list_item_num" v-if="from.undesirable > 0">
                        <view class="bg_list_item_num_item" @click="openBL">
                            <!-- <text>*</text> -->
                            <text>不良项</text>
                            <view class="bg_list_item_num_item_sr">
                                <text class="wulll" :style="{color: from.defectiveName ? '#305ED5' : ''}">{{from.defectiveName ? from.defectiveName : '设置'}}</text>
                                <image src="@/static/ic_ar@2x.png" alt="" />
                </view>
                <view class="bg_plan" @click="TimeShow = true">
                    <view class="bg_plan_label">
                        <text>报工时长</text>
                    </view>
                    <view class="bg_plan_label_val">
                        <text :style="{color: from.durationName ? '#333' : ''}">{{from.durationName ? from.durationName : '请选择'}}</text>
                        <image src="@/static/ic_ar@2x.png" alt="" />
                    </view>
                </view>
                <view class="bg_list_item" v-if="arrType && arrType.length > 0 && from.duration > 0">
                    <view class="bg_list_item_top">
                        <view class="bg_list_item_top_left">
                            <view class="bg_list_item_top_left_x"></view>
                            <text>工资绩效</text>
                        </view>
                    </view>
                    <view class="bg_list_item_h">
                        <view class="bg_list_item_num">
                            <view class="bg_list_item_num_item">
                                <text>计件方式</text>
                                <view class="bg_list_item_num_item_list">
                                    <view :class="item.active ? '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(index)">{{ item.name }}</view>
                                </view>
                            </view>
                        </view>
                        <view class="bg_list_item_num">
                            <view class="bg_list_item_num_item">
                                <text>工资单价</text>
                                <view class="bg_list_item_num_item_sr">
                                    <text class="color1">{{(arrType[from.index].salary / 10 / 10).toFixed(2)}}元/{{arrType[from.index].type == 0 ? '件' : '时'}}</text>
                                </view>
                            </view>
                        </view>
                        <view class="bg_list_item_num">
                            <view class="bg_list_item_num_item">
                                <text>预计工资</text>
                                <view class="bg_list_item_num_item_sr">
                                    <text class="color1">{{expectedSalary}}元</text>
                                </view>
                            </view>
                        </view>
                        <view class="bg_list_item_num">
                            <view class="bg_list_item_num_item">
                                <text>达标率</text>
                                <view class="bg_list_item_num_item_sr">
                                    <text class="color1">{{complianceRate}}%</text>
                                </view>
                            </view>
                        </view>
                    </view>
                </view>
            </view>
            <view class="bg_plan" @click="TimeShow = true">
                <view class="bg_plan_label">
                    <text>报工时长</text>
                </view>
                <view class="bg_plan_label_val">
                    <text :style="{color: from.durationName ? '#333' : ''}">{{from.durationName ? from.durationName : '请选择'}}</text>
                    <image src="@/static/ic_ar@2x.png" alt="" />
                </view>
            <!--  报工按钮  -->
            <view class="bh_zw"></view>
            <view class="bg_footer">
                <view class="bg_footer_submit1" @click="continueSubmit">继续报工</view>
                <view class="bg_footer_submit" @click="submit">提交</view>
            </view>
            <view class="bg_list_item" v-if="arrType && arrType.length > 0 && from.duration > 0">
                <view class="bg_list_item_top">
                    <view class="bg_list_item_top_left">
                        <view class="bg_list_item_top_left_x"></view>
                        <text>工资绩效</text>
                    </view>
                </view>
                <view class="bg_list_item_h">
                    <view class="bg_list_item_num">
                        <view class="bg_list_item_num_item">
                            <text>计件方式</text>
                            <view class="bg_list_item_num_item_list">
                                <view :class="item.active ? '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(index)">{{ item.name }}</view>
                            </view>
                        </view>
                    </view>
                    <view class="bg_list_item_num">
                        <view class="bg_list_item_num_item">
                            <text>工资单价</text>
                            <view class="bg_list_item_num_item_sr">
                                <text class="color1">{{(arrType[from.index].salary / 10 / 10).toFixed(2)}}元/{{arrType[from.index].type == 0 ? '件' : '时'}}</text>
                            </view>
                        </view>
                    </view>
                    <view class="bg_list_item_num">
                        <view class="bg_list_item_num_item">
                            <text>预计工资</text>
                            <view class="bg_list_item_num_item_sr">
                                <text class="color1">{{expectedSalary}}元</text>
                            </view>
                        </view>
                    </view>
                    <view class="bg_list_item_num">
                        <view class="bg_list_item_num_item">
                            <text>达标率</text>
                            <view class="bg_list_item_num_item_sr">
                                <text class="color1">{{complianceRate}}%</text>
                            </view>
                        </view>
                    </view>
                </view>
            </view>
        </view>
        <!--  报工按钮  -->
        <view class="bh_zw"></view>
        <view class="bg_footer">
            <view class="bg_footer_submit1" @click="continueSubmit">继续报工</view>
            <view class="bg_footer_submit" @click="submit">提交</view>
        </view>
        </template>
        <!-- 生产人员 -->
        <user :show="userShow" @close="userShow = false" @value="onConfirm1" />
        <!-- 生产设备 -->
@@ -301,34 +304,39 @@
            ...mapState(['userInfo']),
            // 预计工资
            expectedSalary() {
                if (this.arrType.length === 0) return 0;
                if (this.arrType[this.from.index].type == 0) {
                    if (!this.from.qualified) return 0
                    if (this.arrType[this.from.index].unqualified == 1) {   // 是否计入不良品
                        let total = Number(this.from.qualified) + Number(this.from.undesirable)
                        return (total * (this.arrType[from.index].salary / 10 / 10)).toFixed(2)
                let { index, qualified, undesirable, duration } = this.from
                let temp = this.arrType[index]
                if (temp.type == 0) {
                    if (!qualified) return 0
                    if (temp.unqualified == 1) {   // 是否计入不良品
                        let total = Number(qualified) + Number(undesirable)
                        return (total * (temp.salary / 10 / 10)).toFixed(2)
                    } else {
                        return (Number(this.from.qualified) * (this.arrType[this.from.index].salary / 10 / 10)).toFixed(2)
                        return (Number(qualified) * (temp.salary / 10 / 10)).toFixed(2)
                    }
                } else {
                    if (!this.from.duration) return 0;
                    let h = (this.from.duration / 60 / 60).toFixed(2)
                    return (Number(h) * (this.arrType[this.from.index].salary / 10 / 10)).toFixed(2)
                    if (!duration) return 0;
                    let h = (duration / 60 / 60).toFixed(2)
                    return (Number(h) * (temp.salary / 10 / 10)).toFixed(2)
                }
            },
            // 达标率
            complianceRate() {
                if (this.arrType.length === 0) return 0;
                if (!this.from.qualified && !this.from.undesirable) return 0;
                if (!this.from.duration) return 0;
                if (!this.arrType[this.from.index].num) return 0;
                if (this.arrType[this.from.index].unqualified == 1) {   // 是否计入不良品
                    let a = ((Number(this.from.qualified) + Number(this.from.undesirable)) / (this.from.duration / 3600)).toFixed(2)
                    let b = (this.arrType[this.from.index].num / (this.arrType[this.from.index].times / 3600)).toFixed(2)
                let { index, qualified, undesirable, duration } = this.from
                let temp = this.arrType[index]
                if (!qualified && !undesirable) return 0;
                if (!duration) return 0;
                if (!temp.num) return 0;
                if (temp.unqualified == 1) {   // 是否计入不良品
                    let a = ((Number(qualified) + Number(undesirable)) / (duration / 3600)).toFixed(2)
                    let b = (temp.num / (temp.times / 3600)).toFixed(2)
                    return ((Number(a) / Number(b)) * 100).toFixed(2)
                } else {
                    let a = (this.from.qualified / (this.from.duration / 3600)).toFixed(2)
                    let b = (this.arrType[this.from.index].num / (this.arrType[this.from.index].times / 3600)).toFixed(2)
                    let a = (qualified / (duration / 3600)).toFixed(2)
                    let b = (temp.num / (temp.times / 3600)).toFixed(2)
                    return ((Number(a) / Number(b)) * 100).toFixed(2)
                }
            }
@@ -360,8 +368,8 @@
                this.wuList = []
                this.from.defective = []
                this.from.defectiveName = ''
                this.from.userName = ''
                this.from.userId = ''
                // this.from.userName = ''
                // this.from.userId = ''
                // 获取设备
                getDeviceByCondition({ procedureId: data.obj.procedureId })
                    .then(res1 => {
minipro_standard/pages_adjust/pages/spotCheck/spotCheck.vue
@@ -25,7 +25,7 @@
                        </div>
                    </div>
                    <div class="tl_list_item" v-if="item.type === ''">
                        <div class="tl_list_item_label">属性值</div>
                        <div class="tl_list_item_label">属性值1</div>
                        <div class="tl_list_item_go">
                            <input type="text" v-model="item.num" placeholder="请输入" />
                        </div>
@@ -34,7 +34,8 @@
                        <div class="tl_list_item_label">属性值</div>
                        <div class="tl_list_item_go">
                            <u-radio-group v-model="item.num" placement="row" @change="radioSelect">
                                <u-radio v-for="(item1, i) in item.data" :key="i" activeColor="#4275FC" :name="item1" :label="item1">
                                <u-radio v-for="(item1, i) in item.data" :key="i" activeColor="#4275FC" :name="item1"
                                    :label="item1">
                                </u-radio>
                            </u-radio-group>
                        </div>
@@ -42,7 +43,7 @@
                    <div class="tl_list_item" v-else-if="item.type === 1">
                        <div class="tl_list_item_label">属性值</div>
                        <div class="tl_list_item_go">
                            <u-checkbox-group v-model="item.num" placement="row" >
                            <u-checkbox-group v-model="item.num" placement="row">
                                <u-checkbox v-for="(item1, i) in item.data" :key="i" :label="item1" :name="item1">
                                </u-checkbox>
                            </u-checkbox-group>
@@ -53,15 +54,13 @@
                        <div class="tl_list_item_go">
                            <input type="text" v-model="item.num" :placeholder="item.tips" />
                        </div>
                    </div><div class="tl_list_item" v-else-if="item.type === 3">
                    </div>
                    <div class="tl_list_item" v-else-if="item.type === 3">
                        <div class="tl_list_item_label">属性值</div>
                        <div class="tl_list_item_go">
                            <u--input v-model="item.num" :placeholder="item.tips"
                                placeholder="请输入内容"
                                    type="digit"
                                border="surround"
                              ></u--input>
                            <input   />
                        <div class="tl_list_item_go">
                            <input v-model="item.num" type="digit" :placeholder="item.tips" />
                            <!-- <u--input v-model="item.num" :placeholder="item.tips" type="digit"
                                border="surround"></u--input> -->
                        </div>
                    </div>
                    <div class="tl_list_item" @click="openTimer(index)" v-else-if="item.type === 4">
@@ -74,64 +73,6 @@
                </div>
            </u-swipe-action-item>
        </u-swipe-action>
        <!-- <van-swipe-cell v-for="(item, index) in formList" :key="index">
            <div class="tl_list">
                <div class="tl_list_item" @click="open(index)">
                    <div class="tl_list_item_label">生产属性</div>
                    <div class="tl_list_item_go">
                        <span
                            :style="item.attributeName ? 'color: #000;' : ''">{{ item.attributeName ? item.attributeName : '请选择'}}</span>
                        <van-icon name="arrow" color="#999999" />
                    </div>
                </div>
                <div class="tl_list_item" v-if="item.type === ''">
                    <div class="tl_list_item_label">属性值</div>
                    <div class="tl_list_item_go">
                        <input type="text" v-model="item.num" placeholder="请输入" />
                    </div>
                </div>
                <div class="tl_list_item" v-else-if="item.type === 0">
                    <div class="tl_list_item_label">属性值</div>
                    <div class="tl_list_item_go">
                        <u-radio-group v-model="item.num" placement="row">
                            <u-radio v-for="(item1, i) in item.data" :key="i" activeColor="#4275FC" :label="item1">
                            </u-radio>
                        </u-radio-group>
                    </div>
                </div>
                <div class="tl_list_item" v-else-if="item.type === 1">
                    <div class="tl_list_item_label">属性值</div>
                    <div class="tl_list_item_go">
                        <u-checkbox-group v-model="item.num" placement="row">
                            <u-checkbox v-for="(item1, i) in item.data" :key="i" :label="item1" :name="item1">
                            </u-checkbox>
                        </u-checkbox-group>
                    </div>
                </div>
                <div class="tl_list_item" v-else-if="item.type === 2">
                    <div class="tl_list_item_label">属性值</div>
                    <div class="tl_list_item_go">
                        <input type="text" v-model="item.num" :placeholder="item.tips" />
                    </div>
                </div>
                <div class="tl_list_item" v-else-if="item.type === 3">
                    <div class="tl_list_item_label">属性值</div>
                    <div class="tl_list_item_go">
                        <input type="text" v-model="item.num" :placeholder="item.tips" />
                    </div>
                </div>
                <div class="tl_list_item" @click="openTimer(index)" v-else-if="item.type === 4">
                    <div class="tl_list_item_label">属性值</div>
                    <div class="tl_list_item_go">
                        <span :style="item.num ? 'color: #000;' : ''">{{item.num ? item.num : item.tips}}</span>
                        <u-icon name="arrow" color="#999999" />
                    </div>
                </div>
            </div>
            <template #right>
                <van-button square style="height: 100%;" type="danger" text="删除" @click="dele(index)" />
            </template>
        </van-swipe-cell> -->
        <div class="tl_zw"></div>
        <div class="tl_footer">
@@ -139,6 +80,8 @@
        </div>
        <u-picker :show="show" :columns="[gzqjData]" title="选择生产属性" @confirm="gzqjConfirm" @cancel="show=false">
        </u-picker>
        <u-datetime-picker :show="timer" v-model="value1" @cancel="timer=false" @confirm="onConfirm" mode="datetime">
        </u-datetime-picker>
    </view>
</template>
@@ -159,9 +102,14 @@
        data() {
            return {
                options1: [{
                    text: '删除'
                    text: '删除',
                    style: {
                        backgroundColor: '#f00',
                    }
                }],
                value1: Number(new Date()),
                show: false,
                timer: false,
                index: '',
                workOrderId: '',
                info: {},
@@ -223,6 +171,11 @@
                this.index = index
                this.show = true
            },
            // 打开日期插件
            openTimer(index) {
                this.index = index
                this.timer = true
            },
            gzqjConfirm({
                value
            }) {
@@ -270,35 +223,44 @@
                    return
                }
                this.formList.splice(index, 1)
            },
            radioSelect(v) {
                console.log(v);
            },
            onConfirm(value) {
                console.log(value);
                this.formList.forEach((item, index) => {
                    if (this.index === index) {
                        item.num = setTimeO(new Date(value.value), '-')
                    }
                })
                this.timer = false;
            },
            radioSelect(v) {
                console.log(v);
            },
            submit() {
                let isOpen = true
                let attrList = []
                this.formList.forEach(item => {
                let isOpen = true
                let attrList = []
                this.formList.forEach(item => {
                    console.log('-------', item);
                    if (item.type === 1) {
                    if (item.type === 1) {
                        if (item.attribute === '' || item.num.length === 0) {
                            isOpen = false
                            isOpen = false
                            return
                        } else {
                            attrList.push({
                                val: item.num.join(' '),
                                attrId: item.attribute
                            })
                        } else {
                            attrList.push({
                                val: item.num.join(' '),
                                attrId: item.attribute
                            })
                        }
                    } else {
                    } else {
                        if (item.attribute === '' || item.num === '') {
                            isOpen = false
                            isOpen = false
                            return
                        } else {
                            attrList.push({
                                val: item.num,
                                attrId: item.attribute
                            })
                        } else {
                            attrList.push({
                                val: item.num,
                                attrId: item.attribute
                            })
                        }
                    }
                })
@@ -306,13 +268,13 @@
                    uni.$u.toast('请将信息填写完整')
                    return
                }
                createDJ({
                    attrList: attrList,
                    id: this.workOrderId
                }).then(res => {
                    if (res.code === 200) {
                        uni.$emit('spotAdd')
                    if (res.code === 200) {
                        uni.$emit('spotAdd')
                        uni.$u.toast('创建成功')
                        setTimeout(() => {
                            uni.navigateBack()
@@ -379,7 +341,7 @@
            flex-direction: column;
            background: white;
            padding: 0 30rpx;
            margin-bottom: 20rpx;
            // margin-bottom: 20rpx;
            .tl_list_item {
                min-height: 98rpx;
@@ -394,7 +356,7 @@
                .tl_list_item_label {
                    font-size: 30rpx;
                    font-weight: 400;
                    font-weight: 400;
                    flex-shrink: 1;
                    color: #222222;
                }
@@ -402,8 +364,9 @@
                .tl_list_item_go {
                    display: flex;
                    align-items: center;
                    flex: 1;
                    flex: 1;
                    justify-content: flex-end;
                    input {
                        text-align: right;
                        width: 450rpx;
@@ -454,13 +417,15 @@
                justify-content: center;
            }
        }
    }
    /deep/ .u-checkbox-group {
        flex-wrap: wrap;
        max-width: 100%;
    }
    /deep/ .u-radio-group {
        flex-wrap: wrap;
        max-width: 100%;
    }
    /deep/ .u-checkbox-group {
        flex-wrap: wrap;
        max-width: 100%;
    }
    /deep/ .u-radio-group {
        flex-wrap: wrap;
        max-width: 100%;
    }
</style>
minipro_standard/pages_adjust/pages/workOrder/workOrder.vue
@@ -42,7 +42,7 @@
                            <span v-if="item.status === 4">已报工</span>
                            <span v-if="item.status === 5">已入库</span>
                            <span v-if="item.status === 6">已取消</span>
                            <span class="green" v-if="item.status === 7">进行中</span>
                            <span class="green" v-if="item.status === 7">生产中</span>
                        </div>
                    </div>
                    <span class="f24">工单编号: {{item.code}}</span>
@@ -162,18 +162,15 @@
                this.searchForm = {
                    mixParam: '',
                    startDate: '',
                    endDate: gsdate(new Date()),
                    // endDate: gsdate(new Date()),
                    endDate: '',
                    statusList: []
                }
                this.page.page = 1
                this.pageCounts()
                this.loadData()
                this.search()
            },
            searchInput(data) {
                this.searchForm.mixParam = data
                this.page.page = 1
                this.pageCounts()
                this.loadData()
                this.search()
            },
            loadData() {
                getList({
@@ -202,11 +199,10 @@
            pageCounts() {
                pageCount({
                    ...this.searchForm,
                    endDate: this.searchForm.endDate || '',
                    endDate: this.searchForm.endDate || null,
                    statusList: this.searchForm.statusList.length === 0 ? this.tagList[0].id : this.searchForm
                        .statusList
                }).then(res => {
                    console.log(res);
                    if (res.code === 200) {
                        this.tagList[0].num = String(res.data.startNum)
                        this.tagList[1].num = String(res.data.ingNum)
@@ -219,10 +215,11 @@
                this.page.page = 1
                this.loadData()
            },
            dateConfirm(v) {
            dateConfirm(v) {
                console.log(v);
                this.isOpenDate = false
                this.searchForm.startDate = v[0]
                this.searchForm.endDate = v[v.length - 1]
                this.searchForm.startDate = v.startDate
                this.searchForm.endDate = v.endDate
            },
            getLists() {
                this.page.page += 1
@@ -231,12 +228,12 @@
            onRefresh() {
                if (this.triggered) return
                this.triggered = true;
                this.page.page = 1
                this.loadData()
                this.search()
            },
            search() {
                this.page.page = 1
                this.loadData()
                this.pageCounts()
            },
            jump(item) {
                // uni.navigateTo({
@@ -375,7 +372,7 @@
                        width: 80%;
                        span {
                            font-size: 32rpx;
                            font-size: 24rpx;
                            font-weight: 500;
                            color: #333333;
                            overflow: hidden;
minipro_standard/pages_adjust/pages/workOrderReporting/workOrderReporting.vue
@@ -1,4 +1,5 @@
<template>
<template>
    <page-meta :page-style="(badShow||statistics) ?'overflow: hidden;': ''"/>
    <view>
        <view class="tips-label">当前任务需要质检;产出后,请耐心等待质检员检验,并根据检验结果调整产出数据后再报工。</view>
        <workOrderInfo :orederMessage="info" />
@@ -124,8 +125,9 @@
                        :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="form.duration && arrType && arrType.length > 0">
            </div>
            <!-- form.duration &&  -->
            <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>
@@ -175,31 +177,38 @@
        </div>
        <div class="details_dj" v-if="typeView === 1">
            <div class="details_dj_list">
                <scroll-view scroll-y="true" refresher-enabled="true" @scrolltolower="getLists">
                    <u-swipe-action v-for="(item, index) in djData" :key="index">
                        <u-swipe-action-item :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>
                </scroll-view>
            <div class="details_dj_list">
                <u-swipe-action v-for="(item, index) in djData" :key="index">
                    <u-swipe-action-item :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 v-if="info.status === 2 || info.procedureNeedcheck === 1">
        <!-- v-if="info.status === 2 || info.procedureNeedcheck === 1" -->
        <!-- status 0已创建、1已备料、2已完工、3已检验、4已报工、5已入库、6已取消、7生产中 -->
        <!-- procedureNeedcheck 工序是否需要检验才能报工 0是 1否 -->
        <template v-if="typeView == 0 &&( info.status === 2 || info.procedureNeedcheck === 1 )">
            <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>
        </template>
        <template v-if="typeView == 1 && info.status !== 4 && info.procedureNeedcheck !== 5 && info.procedureNeedcheck !== 6">
            <div class="bh_zw"></div>
            <div class="bg_footer bg_f7">
                <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>
        </template>
        <u-safe-bottom></u-safe-bottom>
        <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">
@@ -375,23 +384,24 @@
                    return (Number(h) * (this.arrType[this.form.index].salary / 10 / 10)).toFixed(2) || 0
                }
            },
            complianceRate() {
            complianceRate() {
                let { index, duration } = this.form
                let { qualified, undesirable } = this.produceFrom
                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 (!qualified && !undesirable) return 0;
                if (!duration) return 0;
                if (!this.arrType[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)
                if (this.arrType[index].unqualified == 1) { // 是否计入不良品
                    let a = ((Number(qualified) + Number(undesirable)) / (duration / 3600)).toFixed(2)
                    let b = (this.arrType[index].num / (this.arrType[index].times / 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)
                    let a = (qualified / (duration / 3600)).toFixed(2)
                    let b = (this.arrType[index].num / (this.arrType[index].times / 3600)).toFixed(2)
                    return ((Number(a) / Number(b)) * 100).toFixed(2)
                    // return Number(from.qualified) * infoBox.value.salary;
                }
@@ -461,7 +471,6 @@
            timeConfirm({
                value
            }) {
                console.log(value)
                let h = Number(value.substring(0, 2))
                let m = Number(value.substring(3, 5))
                let s = 0
@@ -876,11 +885,11 @@
                            })
                            return
                        }
                        total = total += item.num
                        total += Number(item.num)
                        arr.push(item)
                        name += item.name + item.num + ';'
                    }
                })
                })
                if (total != Number(this.produceFrom.undesirable)) {
                    uni.showToast({
                        title: '不良数必须等于产出不良数',
@@ -1048,7 +1057,11 @@
                padding: 0 30rpx;
                box-sizing: border-box;
                background: white;
                &:last-child {
                    .bg_list_item_num{
                        border: none !important;
                    }
                }
                .bg_list_item_num {
                    width: 100%;
                    min-height: 98rpx;
@@ -1057,11 +1070,6 @@
                    justify-content: center;
                    align-items: center;
                    border-bottom: 1rpx solid #E5E5E5;
                    &:last-child {
                        border: none !important;
                    }
                    .kong {
                        text-align: center;
                        font-size: 25rpx;
@@ -1142,9 +1150,9 @@
                        span {
                            flex-shrink: 0;
                            overflow: hidden;
                            text-overflow: ellipsis;
                            white-space: nowrap;
                            // overflow: hidden;
                            // text-overflow: ellipsis;
                            // white-space: nowrap;
                            b {
                                font-size: 30rpx;
@@ -1209,9 +1217,9 @@
                            .wulll {
                                width: 400rpx;
                                text-align: right;
                                overflow: hidden;
                                white-space: nowrap;
                                text-overflow: ellipsis;
                                // overflow: hidden;
                                // white-space: nowrap;
                                // text-overflow: ellipsis;
                            }
                            span {
@@ -1233,7 +1241,7 @@
        padding: 30rpx;
        box-sizing: border-box;
        background: #FFFFFF;
        margin-bottom: 40rpx;
        // margin-bottom: 40rpx;
        display: flex;
        align-items: center;
        justify-content: space-between;
minipro_standard/pages_inspect/pages/InOperation/InOperation.vue
@@ -86,7 +86,7 @@
                                        <span>{{item.locationName ? item.locationName : '-'}}</span>
                                    </div>
                                </div>
                                <div class="items">
                                <div class="items f24">
                                    <div class="label">数量:</div>
                                    <div class="nr">
                                        <input type="text" v-model="item.scanNum" placeholder="请输入" />
@@ -97,8 +97,8 @@
                            <div class="itemy" v-for="(item1, idx) in item.woutboundRedisCodeBeanList" :key="idx">
                                <div class="label">工装{{item1.scanCode}}:</div>
                                <div class="nr">{{item1.num}}{{item1.unitName}}</div>
                                <div class="dele" @click="dele(item1)">
                                    <image src="../../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
                                <div class="dele" @click="woScanMaterialBeanList.splice(index, 1)">
                                    <image src="../../../static/chuku_ic_delete@2x.png" class="img48" mode=""></image>
                                </div>
                            </div>
                        </div>
@@ -129,7 +129,7 @@
                                        <span>{{item1.locationName}}</span>
                                    </div>
                                </div>
                                <div class="itemy_item">
                                <div class="itemy_item f24">
                                    <div class="label">数量:</div>
                                    <div class="nr">
                                        <!-- @input="inputNum(item1)"  -->
@@ -137,9 +137,11 @@
                                        <span>{{item1.unitName}}</span>
                                    </div>
                                </div>
                                <!-- @click="dele()" -->
                                <div class="dele" @click="dele(idx)">
                                    <image src="../../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
                                <!-- @click="dele()" dele(index) {
                 this.outboundList.splice(index, 1)
            }, -->
                                <div class="dele" @click="seleMateriaList.splice(index, 1)">
                                    <image src="../../../static/chuku_ic_delete@2x.png" class="img48" mode=""></image>
                                </div>
                            </div>
                        </div>
@@ -737,6 +739,7 @@
                    display: flex;
                    align-items: center;
                    margin-top: 15rpx;
                    font-size: 24rpx;
                }
                .page_yxwl_list_item_num {
minipro_standard/pages_inspect/pages/OutOperation/OutOperation.vue
@@ -1,785 +1,811 @@
<template>
    <view>
        <InOutInfo :info="info" />
        <uni-collapse @change="change" @close="close" @open="open">
            <uni-collapse-item :open="item1.wtransferDetailList.length" v-if="type==7" v-for="(item1, index) in warehouseList" :key="index">
                <view class="p30 cY" style="border-bottom: 4rpx solid #f7f7f7;" slot="title">
                    <image src="../../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image>
                    <view>{{ item1.warehouseName }}</view>
                </view>
                <view class="p30">
                    <div class="page_dck">
                        <div class="page_dck_title">
                            <div class="page_dck_title_x"></div>
                            <span>待出库物料</span>
                        </div>
                    </div>
                    <div class="page_content" v-for="(item, index) in item1.wtransferDetailList" :key="index"
                        :name="index">
                        <div class="page_content_title">
                            <div class="page_content_title_top">
                                <span>{{ item.materialName + ' | ' + item.materialCode }}</span>
                                <span>待出<span>{{ item.outPlannum }}</span> {{ item.unitName }}</span>
                            </div>
                            <div class="page_content_title_bottom">
                                <span class="green" v-if="item.qualityType === 0">合格&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span class="error" v-else-if="item.qualityType === 2">报废&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span v-else>-&nbsp;/&nbsp;</span>
                                <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</span>
                                <span>{{item.batch ? item.batch : '-'}}</span>
                            </div>
                        </div>
                        <div class="page_content_list" v-for="(childer, idxs) in item.wstockExtListVOList"  v-if="childer.batch == item.batch"  :key="idxs">
                            <div class="page_content_list_item">
                                <div class="page_content_list_item_label">出库货位:</div>
                                <div class="page_content_list_item_nr">{{ childer.locationName }}</div>
                            </div>
                            <div class="page_content_list_items">
                                <div class="page_content_list_item_label">数量:</div>
                                <div class="page_content_list_item_nr">{{ childer.num }}{{ childer.unitName }}</div>
                            </div>
                            <div class="page_content_list_item">
                                <div class="page_content_list_item_label">批次号:</div>
                                <div class="page_content_list_item_nr">{{ childer.batch ? childer.batch : '-' }}</div>
                            </div>
                        </div>
                    </div>
                </view>
            </uni-collapse-item>
            <uni-collapse-item v-if="type==8">
                <view class="p30 cY" style="border-bottom: 4rpx solid #f7f7f7;" slot="title">
                    <image src="../../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image>
                    <view>{{ info.warehouseName }}</view>
                </view>
                <view class="p30">
                    <div class="page_dck">
                        <div class="page_dck_title">
                            <div class="page_dck_title_x"></div>
                            <span>待出库物料</span>
                        </div>
                    </div>
                    <div class="page_content" v-for="(item, index) in woutboundDetailsWait" :key="index" :name="index">
                        <div class="page_content_title">
                            <div class="page_content_title_top">
                                <span>{{ item.materialName + ' | ' + item.materialCode }}</span>
                                <span>待出 <span>{{ item.num }}</span> {{ item.unitName }}</span>
                            </div>
                            <div class="page_content_title_bottom">
                                <span class="green" v-if="item.qualityType === 0">合格&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span class="error" v-else-if="item.qualityType === 2">报废&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span v-else>-&nbsp;/&nbsp;</span>
                                <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</span>
                                <span>{{item.batch ? item.batch : '-'}}</span>
                            </div>
                        </div>
                        <div class="page_content_list" v-for="(items, ind) in item.wstockExtListVOList" v-if="items.batch == item.batch" :key="ind">
                            <div class="page_content_list_item">
                                <div class="page_content_list_item_label">批次号1:</div>
                                <div class="page_content_list_item_nr">{{ items.batch ? items.batch : '-' }}</div>
                            </div>
                            <div class="page_content_list_items">
                                <div class="page_content_list_item_label">数量:</div>
                                <div class="page_content_list_item_nr">{{ items.num }}{{ items.umodel.name }}</div>
                            </div>
                            <div class="page_content_list_item" v-if="items.lmodel">
                                <div class="page_content_list_item_label">出库货位:</div>
                                <div class="page_content_list_item_nr">{{ items.lmodel.unionName }}</div>
                            </div>
                        </div>
                    </div>
                </view>
            </uni-collapse-item>
        </uni-collapse>
        <div class="page_h"></div>
        <div class="page_yxwl">
            <div class="page_yxwl_title">
                <div class="left">
                    <div class="page_yxwl_title_x"></div>
                    <span>已选择物料</span>
                </div>
                <div class="right" v-if="isZKD" @click="openxz">
                    <image src="../../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>手动出库</span>
                </div>
            </div>
            <div class="page_yxwl_list" v-if="outboundList.length > 0">
                <div class="page_yxwl_list_item" v-for="(item, index) in outboundList" :key="index">
                    <div class="page_yxwl_list_item_top">
                        <div class="page_yxwl_list_item_top_left">{{ item.materialName }} | {{ item.materialCode }}
                        </div>
                    </div>
                    <div class="page_yxwl_list_item_sx">
                        <span class="green" v-if="item.qualityType == 0">合格&nbsp;<span>/</span></span>
                        <span class="yellow" v-else-if="item.qualityType == 1">不良&nbsp;<span>/</span></span>
                        <span class="red" v-else-if="item.qualityType == 2">报废&nbsp;<span>/</span></span>
                        <span v-else>-&nbsp;/&nbsp;</span>
                        <span>&nbsp;{{ item.procedureName ? item.procedureName : '-' }}&nbsp;/&nbsp;</span>
                        <span>&nbsp;{{ item.batch ? item.batch : '-' }}</span>
                    </div>
                    <div class="page_yxwl_list_item_num">
                        <div class="item">
                            <div class="label">出库货位:</div>
                            <div class="nr">
                                <span>{{ item.locationName }}</span>
                            </div>
                        </div>
                        <div class="item">
                            <div class="label">数量:</div>
                            <div class="nr">
                                <!-- @input="changeNum(item)" -->
                                <input type="number" v-model="item.num" placeholder="请输入">
                                <span>{{ item.unitName }}</span>
                            </div>
                        </div>
                        <div class="dele" @click="dele(index)">
                            <!-- <img src="@/assets/icon/chuku_ic_delete@2x.png" alt="" /> -->
                            <image src="../../../static/chuku_ic_delete@2x.png" class="img24" mode=""></image>
                        </div>
                    </div>
                </div>
            </div>
            <div class="page_yxwl_kong" v-else>暂无数据</div>
        </div>
        <div class="page_zw"></div>
        <!--    提交按钮    -->
        <div class="page_footer">
            <div class="page_footer_ck" @click="submit">
                <span>确认出库</span>
            </div>
        </div>
        <SelectTraMultipleMaterial ref="selectTraMultipleMaterial" @selectes="selectMaterail" />
    </view>
</template>
<script>
    import InOutInfo from '@/components/InOutInfo.vue'
    import SelectTraMultipleMaterial from '@/components/SelectTraMultipleMaterial.vue'
    import {
        QRCodeType
    } from '@/common/config.js'
    import {
        outScanAppliances,
        wTransferForInOut,
        wTransferForInOutUpload,
        wOutBoundForInOut,
        wOutBoundForUpload,
        transferToOutNew
    } from '@/util/api/ExWarehouse'
    import {
        getDB
    } from '@/util/api/agencyAPI'
    export default {
        components: {
            InOutInfo,
            SelectTraMultipleMaterial
        },
        data() {
            return {
                type: '',
                id: '',
                dbid: '',
                isZKD: false,
                show: false,
                info: {
<template>
    <view>
        <InOutInfo :info="info" />
        <uni-collapse @change="change" @close="close" @open="open">
            <uni-collapse-item :open="item1.wtransferDetailList.length" v-if="type==7"
                v-for="(item1, index) in warehouseList" :key="index">
                <view class="p30 cY" style="border-bottom: 4rpx solid #f7f7f7;" slot="title">
                    <image src="../../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image>
                    <view>{{ item1.warehouseName }}</view>
                </view>
                <view class="p30">
                    <div class="page_dck">
                        <div class="page_dck_title">
                            <div class="page_dck_title_x"></div>
                            <span>待出库物料</span>
                        </div>
                    </div>
                    <div class="page_content" v-for="(item, index) in item1.wtransferDetailList" :key="index"
                        :name="index">
                        <div class="page_content_title">
                            <div class="page_content_title_top">
                                <span>{{ item.materialName + ' | ' + item.materialCode }}</span>
                                <span>待出<span>{{ item.outPlannum }}</span> {{ item.unitName }}</span>
                            </div>
                            <div class="page_content_title_bottom">
                                <span class="green" v-if="item.qualityType === 0">合格&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span class="error" v-else-if="item.qualityType === 2">报废&nbsp;<span
                                        class="black">/</span>&nbsp;</span>
                                <span v-else>-&nbsp;/&nbsp;</span>
                                <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</span>
                                <span>{{item.batch ? item.batch : '-'}}</span>
                            </div>
                        </div>
                        <div class="page_content_list" v-for="(childer, idxs) in item.wstockExtListVOList" :key="idxs">
                            <div class="page_content_list_item">
                                <div class="page_content_list_item_label">出库货位:</div>
                                <div class="page_content_list_item_nr">{{ childer.locationName }}</div>
                            </div>
                            <div class="page_content_list_items">
                                <div class="page_content_list_item_label">数量:</div>
                                <div class="page_content_list_item_nr">{{ childer.num }}{{ childer.unitName }}</div>
                            </div>
                            <div class="page_content_list_item">
                                <div class="page_content_list_item_label">批次号:</div>
                                <div class="page_content_list_item_nr">{{ childer.batch ? childer.batch : '-' }}</div>
                            </div>
                        </div>
                    </div>
                </view>
            </uni-collapse-item>
            <uni-collapse-item v-if="type==8">
                <view class="p30 cY" style="border-bottom: 4rpx solid #f7f7f7;" slot="title">
                    <image src="../../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image>
                    <view>{{ info.warehouseName }}</view>
                </view>
                <view class="p30">
                    <div class="page_dck">
                        <div class="page_dck_title">
                            <div class="page_dck_title_x"></div>
                            <span>待出库物料</span>
                        </div>
                    </div>
                    <div class="page_content" v-for="(item, index) in woutboundDetailsWait" :key="index" :name="index">
                        <div class="page_content_title">
                            <div class="page_content_title_top">
                                <span>{{ item.materialName + ' | ' + item.materialCode }}</span>
                                <span>待出 <span>{{ item.num }}</span> {{ item.unitName }}</span>
                            </div>
                            <div class="page_content_title_bottom">
                                <span class="green" v-if="item.qualityType === 0">合格<text class="c6" decode>{{ split}}</text></span>
                                <span class="warning" v-else-if="item.qualityType === 1">不良<text class="c6" decode>{{ split}}</text></span>
                                <span class="error" v-else-if="item.qualityType === 2">报废<text class="c6" decode>{{ split}}</text></span>
                                <span v-else>-<text class="c6" decode>{{ split}}</text></span>
                                <span>{{item.procedureName ? item.procedureName : '-'}}<text class="c6" decode>{{ split}}</text></span>
                                <span>{{item.batch ? item.batch : '-'}}</span>
                            </div>
                        </div>
                        <div class="page_content_list" v-for="(items, ind) in item.wstockExtListVOList" :key="ind">
                            <div class="page_content_list_item">
                                <div class="page_content_list_item_label">批次号1:</div>
                                <div class="page_content_list_item_nr">{{ items.batch ? items.batch : '-' }}</div>
                            </div>
                            <div class="page_content_list_items">
                                <div class="page_content_list_item_label">数量:</div>
                                <div class="page_content_list_item_nr">{{ items.num }}{{ items.umodel.name }}</div>
                            </div>
                            <div class="page_content_list_item" v-if="items.lmodel">
                                <div class="page_content_list_item_label">出库货位:</div>
                                <div class="page_content_list_item_nr">{{ items.lmodel.unionName }}</div>
                            </div>
                        </div>
                    </div>
                </view>
            </uni-collapse-item>
        </uni-collapse>
        <div class="page_h"></div>
        <div class="page_yxwl">
            <div class="page_yxwl_title">
                <div class="left">
                    <div class="page_yxwl_title_x"></div>
                    <span>已选择物料</span>
                </div>
                <div class="right" v-if="isZKD" @click="openxz">
                    <image src="../../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image>
                    <span>手动出库</span>
                </div>
            </div>
            <div class="page_yxwl_list" v-if="outboundList.length > 0">
                <div class="page_yxwl_list_item" v-for="(item, index) in outboundList" :key="index">
                    <div class="page_yxwl_list_item_top">
                        <div class="page_yxwl_list_item_top_left">{{ item.materialName }} | {{ item.materialCode }}
                        </div>
                    </div>
                    <div class="page_yxwl_list_item_sx">
                        <span class="green" v-if="item.qualityType == 0">合格t<text class="c6" decode>{{ split}}</text></span>
                        <span class="yellow" v-else-if="item.qualityType == 1">不良<text class="c6" decode>{{ split}}</text></span>
                        <span class="red" v-else-if="item.qualityType == 2">报废<text class="c6" decode>{{ split}}</text></span>
                        <span v-else>-<text class="c6" decode>{{ split}}</text></span>
                        <span>{{ item.procedureName ? item.procedureName : '-' }}<text class="c6" decode>{{ split}}</text></span>
                        <span>{{ item.batch ? item.batch : '-' }}</span>
                    </div>
                    <div class="page_yxwl_list_item_num">
                        <div class="item">
                            <div class="label">出库货位:</div>
                            <div class="nr">
                                <span>{{ item.locationName }}</span>
                            </div>
                        </div>
                        <div class="item f24">
                            <div class="label">数量:</div>
                            <div class="nr">
                                <!-- @input="changeNum(item)" -->
                                <input type="number" v-model="item.num" placeholder="请输入">
                                <span>{{ item.unitName }}</span>
                            </div>
                        </div>
                        <div class="dele" @click="dele(index)">
                            <!-- <img src="@/assets/icon/chuku_ic_delete@2x.png" alt="" /> -->
                            <image src="../../../static/chuku_ic_delete@2x.png" class="img48" mode=""></image>
                        </div>
                    </div>
                </div>
            </div>
            <div class="page_yxwl_kong" v-else>暂无数据</div>
        </div>
        <div class="page_zw"></div>
        <!--    提交按钮    -->
        <div class="page_footer">
            <div class="page_footer_ck" @click="submit">
                <span>确认出库</span>
            </div>
        </div>
        <SelectTraMultipleMaterial ref="selectTraMultipleMaterial" @selectes="selectMaterail" />
    </view>
</template>
<script>
    import InOutInfo from '@/components/InOutInfo.vue'
    import SelectTraMultipleMaterial from '@/components/SelectTraMultipleMaterial.vue'
    import {
        QRCodeType
    } from '@/common/config.js'
    import {
        outScanAppliances,
        wTransferForInOut,
        wTransferForInOutUpload,
        wOutBoundForInOut,
        wOutBoundForUpload,
        transferToOutNew
    } from '@/util/api/ExWarehouse'
    import {
        getDB
    } from '@/util/api/agencyAPI'
    export default {
        components: {
            InOutInfo,
            SelectTraMultipleMaterial
        },
        data() {
            return {
                type: '',
                id: '',
                dbid: '',
                isZKD: false,
                show: false,
                info: {
                },
                mainOrder: '',
                warehouseId: '',
                ids: [],
                warehouseList: [{
                }],
                woutboundDetailsWait: [],
                outboundList: []
            };
        },
        onLoad(option) {
            this.type = option.type
            this.id = option.id
            this.isZKD = this.type == QRCodeType.ZKD
            this.dbid = option.dbid
            if (option.dbid) {
                this.getDBs(option.dbid)
            } else {
                this.getInfo()
            }
        },
        methods: {
            // 判断是否完成
            getDBs(dbid) {
                getDB(dbid)
                    .then(res => {
                        let {
                            data
                        } = res
                        if (data.status == 1) {
                            // 已完成
                        } else {
                            this.getInfo()
                split: '&nbsp;/&nbsp;',
                mainOrder: '',
                warehouseId: '',
                ids: [],
                warehouseList: [{
                }],
                woutboundDetailsWait: [],
                outboundList: []
            };
        },
        onLoad(option) {
            this.type = option.type
            this.id = option.id
            this.isZKD = this.type == QRCodeType.ZKD
            this.dbid = option.dbid
            if (option.dbid) {
                this.getDBs(option.dbid)
            } else {
                this.getInfo()
            }
        },
        methods: {
            // 判断是否完成
            getDBs(dbid) {
                getDB(dbid)
                    .then(res => {
                        let {
                            data
                        } = res
                        if (data.status == 1) {
                            // 已完成
                        } else {
                            this.getInfo()
                        }
                    })
                    .catch(err => {})
            },
            getInfo() {
                let infoAction
                let data = {
                    id: this.id
                }
                if (this.type == QRCodeType.CKD) {
                    infoAction = wOutBoundForInOut
                    data.wOutboundType = '0'
                } else if (this.type == QRCodeType.ZKD) {
                    infoAction = wTransferForInOut
                    data.wTransferType = '0'
                }
                infoAction(data).then(res => {
                    this.mainOrder = res.data.id
                    if (this.isZKD) {
                        this.info = res.data.wtransfer
                        this.warehouseList = res.data.wtransferWarehouseList
                        this.warehouseId = this.warehouseList[0].warehouseId
                    } else {
                        this.info = res.data.woutbound
                        this.woutboundDetailsWait = res.data.woutboundDetailsWait
                        this.warehouseId = this.woutboundDetailsWait[0].warehouseId
                    }
                }).catch(err => {
                    uni.$u.toast(err)
                    uni.navigateBack()
                })
            },
            change() {},
            close() {},
            open() {},
            openxz() {
                this.$refs.selectTraMultipleMaterial.open({
                    transferId: this.id,
                    warehouseId: this.warehouseId
                })
            },
            selectMaterail(v) {
                let tempList = this.warehouseList[0].wtransferDetailList
                let materials = JSON.parse(JSON.stringify(v.materials))
                tempList.forEach(item => {
                    let isOutList = false
                    this.outboundList.forEach(selected => {
                        if (selected.newId == item.id) {
                            isOutList = true
                            return
                        }
                    })
                    .catch(err => {})
            },
            getInfo() {
                let infoAction
                let data = {
                    id: this.id
                }
                if (this.type == QRCodeType.CKD) {
                    infoAction = wOutBoundForInOut
                    data.wOutboundType = '0'
                } else if (this.type == QRCodeType.ZKD) {
                    infoAction = wTransferForInOut
                    data.wTransferType = '0'
                }
                infoAction(data).then(res => {
                    this.mainOrder = res.data.id
                    if (this.isZKD) {
                        this.info = res.data.wtransfer
                        this.warehouseList = res.data.wtransferWarehouseList
                        this.warehouseId = this.warehouseList[0].warehouseId
                    } else {
                        this.info = res.data.woutbound
                        this.woutboundDetailsWait = res.data.woutboundDetailsWait
                        this.warehouseId = this.woutboundDetailsWait[0].warehouseId
                    }
                }).catch(err => {
                    uni.$u.toast(err)
                    uni.navigateBack()
                })
            },
            change() {},
            close() {},
            open() {},
            openxz() {
                this.$refs.selectTraMultipleMaterial.open({
                    transferId: this.id,
                    warehouseId: this.warehouseId
                })
            },
            selectMaterail(v) {
                let tempList = this.warehouseList[0].wtransferDetailList
                let materials = v.materials
                materials.forEach(materail => {
                    tempList.forEach(item => {
                        item.wstockExtListVOList.forEach(hw => {
                            if (materail.materialId == hw.materialId && materail.procedureId == hw
                                .procedureId && materail.qualityType == hw.qualityType && materail.batch ==
                                hw.batch) {
                                let isExist = false
                                this.outboundList.forEach(selected => {
                                    if (selected.newId == item.id) {
                                        isExist = true
                    if (!isOutList) {
                        materials.forEach((materail, index) => {
                            if (item.batch) {
                                // 精确匹配
                                if (materail.materialId == item.materialId &&
                                        materail.procedureId == item.procedureId &&
                                        materail.qualityType == item.qualityType &&
                                        materail.batch == item.batch
                                    ) {
                                        this.addToOutList(materail, item)
                                        materials.splice(index, 1)
                                        return
                                    }
                                })
                                if (isExist) {
                                    uni.$u.toast('该物料已存在')
                                }
                            } else {
                                if (materail.materialId == item.materialId &&
                                        materail.procedureId == item.procedureId &&
                                        materail.qualityType == item.qualityType
                                    ) {
                                    this.addToOutList(materail, item)
                                    materials.splice(index, 1)
                                    return
                                }
                                let obj = JSON.parse(JSON.stringify(materail))
                                obj.newId = item.id
                                this.outboundList.push(obj)
                            }
                        })
                    })
                    }
                })
            },
            dele(index) {
                 this.outboundList.splice(index, 1)
            },
            submit() {
                if (this.type == QRCodeType.ZKD) {
                    if (this.outboundList.length > 0) {
                        let result = this.outboundList.reduce((a, b) => {
                            if (a[b.newId]) {
                                a[b.newId].push(b);
                            } else {
                                a[b.newId] = [b];
                            }
                            return a;
                        }, {});
                        let tempList = this.warehouseList[0].wtransferDetailList
                        for (let i = 0; i < tempList.length; i++) {
                            let item = tempList[i]
                            for (let a in result) {
                                if (item.id == a) {
                                    let total = 0
                                    for (let b = 0; b < result[a].length; b++) {
                                        total = Number(total) + Number(result[a][b].num)
                                    }
                                    if (!total || total <= 0) {
                                        uni.$u.toast('出库物料数量必须大于0')
                                        return
                                    }
                                    console.log(total, item.outPlannum);
                                    if (total > item.outPlannum) {
                                        uni.$u.toast('出库数量不能大于待出库数量')
                                        return
                                    }
                                }
                            }
                        }
                        let submitTransferOutDetailDTOList = []
                        this.outboundList.forEach(item => {
                            tempList.forEach(child => {
                                if (item.newId == child.id) {
                                    submitTransferOutDetailDTOList.push({
                                        outNum: item.num,
                                        wstockId: item.id,
                                        wtransferDetailId: child.id
                                    })
                                }
                            })
                        })
                        transferToOutNew({
                            submitTransferOutDetailDTOList,
                            wtransferId: this.id
                        }).then(res => {
                            if (res.code === 200) {
                                this.$store.dispatch('getUpcomingNum')
                                uni.$u.toast('操作成功')
                                uni.$emit('success')
                                uni.redirectTo({
                                    url: `/pages_adjust/pages/warehousingDetails/warehousingDetails?id=${this.id}&dbid=${this.dbid}`
                                })
                                // setTimeout(() => {
                                //   router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
                                // }, 2000)
                            }
                        })
                    } else {
                        uni.$u.toast('请选择出库物料')
            addToOutList(materail, item) {
                let isExist = false
                this.outboundList.forEach(selected => {
                    if (selected.newId == materail.id) {
                        isExist = true
                        return
                    }
                } else if (this.type === QRCodeType.CKD) {
                    wOutBoundForUpload({
                        id: this.id,
                        wOutboundType: 0
                    }).then(res => {
                        if (res.code === 200) {
                            this.$store.dispatch('getUpcomingNum')
                            uni.$u.toast('操作成功')
                            uni.$emit('success')
                            uni.redirectTo({
                                url: `/pages_adjust/pages/outboundDetails/outboundDetails?id=${this.id}`
                            })
                            // setTimeout(() => {
                            //   // router.go(-1)
                            //   router.replace({ name: 'wOutboundDetail', query: { id: info.value.wtransfer.id } })
                            // }, 2000)
                        }
                    })
                })
                if (isExist) {
                    uni.$u.toast('该物料已存在')
                } else {
                    let obj = JSON.parse(JSON.stringify(materail))
                    obj.newId = item.id
                    this.outboundList.push(obj)
                    console.log(this.outboundList);
                }
            }
        }
    }
</script>
<style lang="scss">
    .page_dck {
        .page_dck_title {
            display: flex;
            align-items: center;
            .page_dck_title_x {
                width: 8rpx;
                height: 30rpx;
                background: #4275FC;
                border-radius: 2rpx;
                margin-right: 16rpx;
            }
            span {
                font-size: 32rpx;
                font-weight: 500;
                color: #222222;
            }
        }
    }
    .page_content {
        margin-top: 36rpx;
        .page_content_title {
            display: flex;
            flex-direction: column;
            margin-bottom: 10rpx;
            .page_content_title_top {
                display: flex;
                align-items: center;
                justify-content: space-between;
                span {
                    &:nth-child(1) {
                        font-size: 30rpx;
                        font-weight: 500;
                        color: #222222;
                    }
                    &:nth-child(2) {
                        flex-shrink: 0;
                        font-size: 24rpx;
                        font-weight: 400;
                        color: #333333;
                        span {
                            font-size: 24rpx;
                            color: $nav-color;
                        }
                    }
                }
            }
            .page_content_title_bottom {
                .green {
                    color: $nav-stateColor7 !important;
                    .black {
                        color: black !important;
                    }
                }
                .warning {
                    color: $nav-stateColor5 !important;
                    .black {
                        color: black !important;
                    }
                }
                .error {
                    color: $nav-stateColor4 !important;
                    .black {
                        color: black !important;
                    }
                }
                span {
                    font-size: 24rpx;
                    font-weight: 400;
                    color: #666666;
                }
            }
        }
        .lineBorder {
            border: none !important;
            padding-bottom: 0 !important;
            margin-bottom: 24rpx;
        }
        .page_content_list {
            width: 100%;
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            &:first-child {
                margin: 0;
            }
            &:last-child {
                border: none;
            }
            .page_content_list_nums {
                width: 30%;
                display: flex;
                .page_content_list_num_label {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #666666;
                }
                .page_content_list_num_nr {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #222222;
                }
            }
            .page_content_list_num {
                width: 70%;
                display: flex;
                .page_content_list_num_label {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #666666;
                }
                .page_content_list_num_nr {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #222222;
                }
            }
            .page_content_list_items {
                width: 30%;
                display: flex;
                margin-top: 24rpx;
                .page_content_list_item_label {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #666666;
                    flex-shrink: 0;
                }
                .page_content_list_item_nr {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #222222;
                }
            }
            .page_content_list_item {
                width: 70%;
                display: flex;
                .page_content_list_item_label {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #666666;
                    flex-shrink: 0;
                }
                .page_content_list_item_nr {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #222222;
                }
            }
        }
    }
    .page_h {
        height: 20rpx;
    }
    .page_yxwl {
        padding: 30rpx;
        background: #ffffff;
        .page_yxwl_title {
            display: flex;
            align-items: center;
            justify-content: space-between;
            .page_yxwl_title_x {
                width: 8rpx;
                height: 30rpx;
                background: #4275FC;
                border-radius: 2rpx;
                margin-right: 16rpx;
            }
            span {
                font-size: 32rpx;
                font-weight: 500;
                color: #222222;
            }
            .left {
                display: flex;
                align-items: center;
                .page_yxwl_title_x {
                    width: 8rpx;
                    height: 30rpx;
                    background: #4275FC;
                    border-radius: 2rpx;
                    margin-right: 16rpx;
                }
                span {
                    font-size: 32rpx;
                    font-weight: 500;
                    color: #222222;
                }
            }
            .right {
                display: flex;
                align-items: center;
                img {
                    width: 28rpx;
                    height: 28rpx;
                    margin-right: 14rpx;
                }
                span {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #222222;
                }
            }
        }
        .page_yxwl_list {
            display: flex;
            flex-direction: column;
            padding-bottom: 30rpx;
            border-bottom: 1rpx solid #ececec;
            &:last-child {
                margin-bottom: 0;
                border: none;
            }
            .page_yxwl_list_item {
                margin-top: 28rpx;
                .page_yxwl_list_item_top {
                    display: flex;
                    align-items: center;
                    justify-content: space-between;
                    .page_yxwl_list_item_top_left {
                        font-size: 30rpx;
                        font-weight: 500;
                        color: #222222;
                    }
                }
                .page_yxwl_list_item_sx {
                    display: flex;
                    align-items: center;
                    margin-top: 15rpx;
                }
                .page_yxwl_list_item_num {
                          display: flex;
                          position: relative;
                          margin-top: 36rpx;
                          &:first-child {
                            margin-top: 0;
                          }
                          .dele {
                            position: absolute;
                            right: -30rpx;
                            width: 48rpx;
                            height: 48rpx;
                            img {
                              width: 100%;
                              height: 100%;
                            }
                          }
                          .item {
                            width: 50%;
                            display: flex;
                            align-items: center;
                            .label {
                              flex-shrink: 0;
                              font-size: 26rpx;
                              font-weight: 400;
                              color: #666666;
                              flex-shrink: 0;
                            }
                            .nr {
                              flex: 1;
                              display: flex;
                              align-items: center;
                              input {
                                width: 130rpx;
                                height: 40rpx;
                                border-radius: 8rpx;
                                border: 1rpx solid #E5E5E5;
                                margin-right: 10rpx;
                              }
                              span {
                                font-size: 26rpx;
                                font-weight: 400;
                                color: #222222;
                              }
                            }
                          }
                        }
            }
        }
        .page_yxwl_kong {
            padding: 50rpx 0;
            font-size: 25rpx;
            display: flex;
            align-items: center;
            justify-content: center;
        }
    }
    .page_zw {
        height: 160rpx;
    }
    .page_footer {
        width: calc(100% - 60rpx);
        background: #F7F7F7;
        display: flex;
        align-items: center;
        justify-content: space-between;
        position: fixed;
        bottom: 0;
        left: 30rpx;
        padding-bottom: 68rpx;
        z-index: 9999;
        .page_footer_qr {
            flex: 1;
            height: 88rpx;
            background: #fff;
            box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
            border-radius: 8rpx;
            font-size: 32rpx;
            font-weight: 500;
            color: $nav-color;
            display: flex;
            align-items: center;
            justify-content: center;
            img {
                width: 30rpx;
                height: 30rpx;
                margin-right: 12rpx;
            }
        }
        .page_footer_ck {
            flex: 1;
            height: 88rpx;
            background: $nav-color;
            box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
            border-radius: 8rpx;
            font-size: 32rpx;
            font-weight: 500;
            color: #FFFFFF;
            display: flex;
            align-items: center;
            justify-content: center;
        }
    }
            },
            dele(index) {
                this.outboundList.splice(index, 1)
            },
            submit() {
                if (this.type == QRCodeType.ZKD) {
                    if (this.outboundList.length > 0) {
                        let result = this.outboundList.reduce((a, b) => {
                            if (a[b.newId]) {
                                a[b.newId].push(b);
                            } else {
                                a[b.newId] = [b];
                            }
                            return a;
                        }, {});
                        let tempList = this.warehouseList[0].wtransferDetailList
                        for (let i = 0; i < tempList.length; i++) {
                            let item = tempList[i]
                            for (let a in result) {
                                if (item.id == a) {
                                    let total = 0
                                    for (let b = 0; b < result[a].length; b++) {
                                        total = Number(total) + Number(result[a][b].num)
                                    }
                                    if (!total || total <= 0) {
                                        uni.$u.toast('出库物料数量必须大于0')
                                        return
                                    }
                                    console.log(total, item.outPlannum);
                                    if (total > item.outPlannum) {
                                        uni.$u.toast('出库数量不能大于待出库数量')
                                        return
                                    }
                                }
                            }
                        }
                        let submitTransferOutDetailDTOList = []
                        this.outboundList.forEach(item => {
                            tempList.forEach(child => {
                                if (item.newId == child.id) {
                                    submitTransferOutDetailDTOList.push({
                                        outNum: item.num,
                                        wstockId: item.id,
                                        wtransferDetailId: child.id
                                    })
                                }
                            })
                        })
                        transferToOutNew({
                            submitTransferOutDetailDTOList,
                            wtransferId: this.id
                        }).then(res => {
                            if (res.code === 200) {
                                this.$store.dispatch('getUpcomingNum')
                                uni.$u.toast('操作成功')
                                uni.$emit('success')
                                uni.redirectTo({
                                    url: `/pages_adjust/pages/warehousingDetails/warehousingDetails?id=${this.id}&dbid=${this.dbid}`
                                })
                                // setTimeout(() => {
                                //   router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } })
                                // }, 2000)
                            }
                        })
                    } else {
                        uni.$u.toast('请选择出库物料')
                    }
                } else if (this.type === QRCodeType.CKD) {
                    wOutBoundForUpload({
                        id: this.id,
                        wOutboundType: 0
                    }).then(res => {
                        if (res.code === 200) {
                            this.$store.dispatch('getUpcomingNum')
                            uni.$u.toast('操作成功')
                            uni.$emit('success')
                            uni.redirectTo({
                                url: `/pages_adjust/pages/outboundDetails/outboundDetails?id=${this.id}`
                            })
                            // setTimeout(() => {
                            //   // router.go(-1)
                            //   router.replace({ name: 'wOutboundDetail', query: { id: info.value.wtransfer.id } })
                            // }, 2000)
                        }
                    })
                }
            }
        }
    }
</script>
<style lang="scss">
    .page_dck {
        .page_dck_title {
            display: flex;
            align-items: center;
            .page_dck_title_x {
                width: 8rpx;
                height: 30rpx;
                background: #4275FC;
                border-radius: 2rpx;
                margin-right: 16rpx;
            }
            span {
                font-size: 32rpx;
                font-weight: 500;
                color: #222222;
            }
        }
    }
    .page_content {
        margin-top: 36rpx;
        .page_content_title {
            display: flex;
            flex-direction: column;
            margin-bottom: 10rpx;
            .page_content_title_top {
                display: flex;
                align-items: center;
                justify-content: space-between;
                span {
                    &:nth-child(1) {
                        font-size: 30rpx;
                        font-weight: 500;
                        color: #222222;
                    }
                    &:nth-child(2) {
                        flex-shrink: 0;
                        font-size: 24rpx;
                        font-weight: 400;
                        color: #333333;
                        span {
                            font-size: 24rpx;
                            color: $nav-color;
                        }
                    }
                }
            }
            .page_content_title_bottom {
                .green {
                    color: $nav-stateColor7 !important;
                    .black {
                        color: black !important;
                    }
                }
                .warning {
                    color: $nav-stateColor5 !important;
                    .black {
                        color: black !important;
                    }
                }
                .error {
                    color: $nav-stateColor4 !important;
                    .black {
                        color: black !important;
                    }
                }
                span {
                    font-size: 24rpx;
                    font-weight: 400;
                    color: #666666;
                }
            }
        }
        .lineBorder {
            border: none !important;
            padding-bottom: 0 !important;
            margin-bottom: 24rpx;
        }
        .page_content_list {
            width: 100%;
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            &:first-child {
                margin: 0;
            }
            &:last-child {
                border: none;
            }
            .page_content_list_nums {
                width: 30%;
                display: flex;
                .page_content_list_num_label {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #666666;
                }
                .page_content_list_num_nr {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #222222;
                }
            }
            .page_content_list_num {
                width: 70%;
                display: flex;
                .page_content_list_num_label {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #666666;
                }
                .page_content_list_num_nr {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #222222;
                }
            }
            .page_content_list_items {
                width: 30%;
                display: flex;
                margin-top: 24rpx;
                .page_content_list_item_label {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #666666;
                    flex-shrink: 0;
                }
                .page_content_list_item_nr {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #222222;
                }
            }
            .page_content_list_item {
                width: 70%;
                display: flex;
                .page_content_list_item_label {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #666666;
                    flex-shrink: 0;
                }
                .page_content_list_item_nr {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #222222;
                }
            }
        }
    }
    .page_h {
        height: 20rpx;
    }
    .page_yxwl {
        padding: 30rpx;
        background: #ffffff;
        .page_yxwl_title {
            display: flex;
            align-items: center;
            justify-content: space-between;
            .page_yxwl_title_x {
                width: 8rpx;
                height: 30rpx;
                background: #4275FC;
                border-radius: 2rpx;
                margin-right: 16rpx;
            }
            span {
                font-size: 32rpx;
                font-weight: 500;
                color: #222222;
            }
            .left {
                display: flex;
                align-items: center;
                .page_yxwl_title_x {
                    width: 8rpx;
                    height: 30rpx;
                    background: #4275FC;
                    border-radius: 2rpx;
                    margin-right: 16rpx;
                }
                span {
                    font-size: 32rpx;
                    font-weight: 500;
                    color: #222222;
                }
            }
            .right {
                display: flex;
                align-items: center;
                img {
                    width: 28rpx;
                    height: 28rpx;
                    margin-right: 14rpx;
                }
                span {
                    font-size: 26rpx;
                    font-weight: 400;
                    color: #222222;
                }
            }
        }
        .page_yxwl_list {
            display: flex;
            flex-direction: column;
            padding-bottom: 30rpx;
            border-bottom: 1rpx solid #ececec;
            &:last-child {
                margin-bottom: 0;
                border: none;
            }
            .page_yxwl_list_item {
                margin-top: 28rpx;
                .page_yxwl_list_item_top {
                    display: flex;
                    align-items: center;
                    justify-content: space-between;
                    .page_yxwl_list_item_top_left {
                        font-size: 30rpx;
                        font-weight: 500;
                        color: #222222;
                    }
                }
                .page_yxwl_list_item_sx {
                    display: flex;
                    align-items: center;
                    margin-top: 15rpx;
                    font-size: 24rpx;
                }
                .page_yxwl_list_item_num {
                    display: flex;
                    position: relative;
                    margin-top: 36rpx;
                    &:first-child {
                        margin-top: 0;
                    }
                    .dele {
                        position: absolute;
                        right: -30rpx;
                        width: 48rpx;
                        height: 48rpx;
                        img {
                            width: 100%;
                            height: 100%;
                        }
                    }
                    .item {
                        width: 50%;
                        display: flex;
                        align-items: center;
                        .label {
                            flex-shrink: 0;
                            font-size: 26rpx;
                            font-weight: 400;
                            color: #666666;
                            flex-shrink: 0;
                        }
                        .nr {
                            flex: 1;
                            display: flex;
                            align-items: center;
                            input {
                                width: 130rpx;
                                height: 40rpx;
                                border-radius: 8rpx;
                                border: 1rpx solid #E5E5E5;
                                margin-right: 10rpx;
                            }
                            span {
                                font-size: 26rpx;
                                font-weight: 400;
                                color: #222222;
                            }
                        }
                    }
                }
            }
        }
        .page_yxwl_kong {
            padding: 50rpx 0;
            font-size: 25rpx;
            display: flex;
            align-items: center;
            justify-content: center;
        }
    }
    .page_zw {
        height: 160rpx;
    }
    .page_footer {
        width: calc(100% - 60rpx);
        background: #F7F7F7;
        display: flex;
        align-items: center;
        justify-content: space-between;
        position: fixed;
        bottom: 0;
        left: 30rpx;
        padding-bottom: 68rpx;
        z-index: 9999;
        .page_footer_qr {
            flex: 1;
            height: 88rpx;
            background: #fff;
            box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
            border-radius: 8rpx;
            font-size: 32rpx;
            font-weight: 500;
            color: $nav-color;
            display: flex;
            align-items: center;
            justify-content: center;
            img {
                width: 30rpx;
                height: 30rpx;
                margin-right: 12rpx;
            }
        }
        .page_footer_ck {
            flex: 1;
            height: 88rpx;
            background: $nav-color;
            box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
            border-radius: 8rpx;
            font-size: 32rpx;
            font-weight: 500;
            color: #FFFFFF;
            display: flex;
            align-items: center;
            justify-content: center;
        }
    }
</style>
minipro_standard/uni.scss
@@ -111,6 +111,7 @@
image {
    display: block;
}
/* #endif */
minipro_standard/uni_modules/l-calendar/components/l-calendar/l-calendar.vue
@@ -691,7 +691,7 @@
            justify-content: center;
            flex-direction: column;
            background-color: #fff;
            padding: 0 42rpx env(safe-area-inset-bottom);
            padding: 0 42rpx calc(env(safe-area-inset-bottom) + 20rpx);
            box-sizing: border-box;
            font-size: 24rpx;
            color: #666;
@@ -703,7 +703,7 @@
            
            .calendar-btn {
                width: 100%;
                button {
                    background-color: #305ED5;
                    color: #fff;
platform_web/src/components/system/role/OperaRoleWindow.vue
@@ -68,7 +68,7 @@
        for (const key in this.form) {
          this.form[key] = target[key]
        }
        this.type = type
        this.form.type = type
      })
    },
    confirm () {
platform_web/src/views/system/role.vue
@@ -16,7 +16,7 @@
    <!-- 表格和分页 -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['system:role:create', 'system:role:delete']">
        <li v-permissions="['system:role:create']"><el-button type="primary" @click="$refs.operaRoleWindow.open('新建角色', null, 1)" icon="el-icon-plus">新建</el-button></li>
        <li v-permissions="['system:role:create']"><el-button type="primary" @click="$refs.operaRoleWindow.open('新建角色', null, 0)" icon="el-icon-plus">新建</el-button></li>
        <li v-permissions="['system:role:delete']"><el-button @click="deleteByIdInBatch" icon="el-icon-delete">删除</el-button></li>
      </ul>
      <el-table
@@ -48,9 +48,9 @@
          fixed="right"
        >
          <template v-if="isAdmin || (row.code !== adminCode && userInfo.roles.findIndex(code => code === row.code) === -1)" slot-scope="{row}">
            <el-button type="text" @click="$refs.operaRoleWindow.open('编辑角色', row, 1)"  v-permissions="['system:role:update']">编辑</el-button>
            <el-button type="text" @click="$refs.permissionConfigWindow.open(row)" v-permissions="['system:role:createRolePermission']">配置权限</el-button>
            <el-button type="text" @click="$refs.menuConfigWindow.open('授权菜单', row)" icon="el-icon-menu" v-permissions="['system:role:createRoleMenu']">授权菜单</el-button>
            <el-button type="text" @click="$refs.operaRoleWindow.open('编辑角色', row, 0)"  v-permissions="['system:role:update']">编辑</el-button>
            <el-button type="text" @click="$refs.permissionConfigWindow.open(row, 0)" v-permissions="['system:role:createRolePermission']">配置权限</el-button>
            <el-button type="text" @click="$refs.menuConfigWindow.open('授权菜单', row, 0)" icon="el-icon-menu" v-permissions="['system:role:createRoleMenu']">授权菜单</el-button>
            
            <el-button v-if="!row.fixed" type="text" style="color: red" @click="deleteById(row)" v-permissions="['system:role:delete']">删除</el-button>
          </template>