Mr.Zhang
2023-09-18 ca2200ba53b236e8902b706c444375408c782f07
09-18 小程序
已修改22个文件
719 ■■■■■ 文件已修改
minipro_standard/common/css/lib.css 5 ●●●●● 补丁 | 查看 | 原始文档 | 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 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages/allocation/allocation.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages/index/index.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages/login/login.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/OrderDetail/OrderDetail.vue 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/reportingForWork/reportingForWork.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/spotCheck/spotCheck.vue 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/workOrder/workOrder.vue 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/workOrderReporting/workOrderReporting.vue 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_inspect/pages/InOperation/InOperation.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_inspect/pages/OutOperation/OutOperation.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni.scss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/uni_modules/l-calendar/components/l-calendar/l-calendar.vue 2 ●●● 补丁 | 查看 | 原始文档 | 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
@@ -119,7 +119,8 @@
.ap { position: absolute; }
.orange{ color: #EA531B !important;}
.green{ color: #65C35D !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,10 +2,15 @@
    <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>
            <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>
                <!-- <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">
@@ -50,15 +55,38 @@
        },
        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: '生产中'
                    }
                ]
            };
        },
@@ -71,7 +99,7 @@
    }
</script>
<style lang="scss">
<style lang="scss" scoped>
.status {
    height: 26rpx;
    font-size: 26rpx;
@@ -79,6 +107,17 @@
    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;
// }
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>
    <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>
@@ -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 => {})
            },
@@ -410,12 +418,14 @@
            resetType() {
                this.type = ''
                this.searchForm.type = ''
                this.ban =false
                this.confirm()
                
            },
            confirm() {
                this.searchForm.type = this.type
                this.show = false
                this.ban =false
                this.search()
            },
            search() {
@@ -558,4 +568,14 @@
    .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
@@ -40,9 +40,10 @@
                            <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 === 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>
    <view class="content">
        <workOrderInfo :orederMessage="info" />
        <div class="bg_list">
        <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 class="plr30">
                    <view>
                        <view v-for="(item, index) in feedingData" :key="index">
                            <div class="bg_list_item_h">
                            <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,47 +89,32 @@
                <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>
                        </div>
                    </div>
                </template>
                <template v-else>
                    <div class="kong">
                        <span>暂无数据</span>
                    </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_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> -->
                    <!-- <div class="bg_list_item_num">
                        <div class="bg_list_item_num_item">
                            <span>工资单价</span>
                            <div class="bg_list_item_num_item_sr">
@@ -134,14 +123,7 @@
                            </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>
@@ -149,8 +131,38 @@
                                <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">
                            <view v-for="(item, index) in djData" :key="index">
                                <div class="details_dj_list_item">
                                    <span>{{ item.attrName }}:{{ item.val }}</span>
                                    <span>{{ item.userName }} {{ item.createTime }}</span>
                                </div>
                            </view>
                            <!-- <scroll-view scroll-y="true" refresher-enabled="true" @scrolltolower="getLists">
                            </scroll-view> -->
                        </div>
                    </div>
                </template>
                <template v-else>
                    <div class="kong">
                        <span>暂无数据</span>
                    </div>
                </template>
            </div>
        </div>
        
@@ -190,6 +202,13 @@
        },
        data() {
            return {
                cate: [{
                        name: '生产'
                    },
                    {
                        name: '点检'
                    }
                ],
                workorderId: '',
                form: {
                    time: '',
@@ -248,12 +267,14 @@
            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)
                    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;
@@ -261,6 +282,7 @@
                    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)
                    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
@@ -504,13 +525,17 @@
</script>
<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;
                    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;
@@ -1055,4 +1069,14 @@
            }
        }
    }
    .kong {
        text-align: center;
        padding: 30rpx 0;
        // background: #ffffff;
        font-size: 25rpx;
        span {
            color: #474747;
        }
    }
</style>
minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue
@@ -154,25 +154,20 @@
                })
            },
            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,6 +15,7 @@
                <image src="@/static/ic_ar@2x.png" alt="" />
            </view>
        </view>
        <template v-if="plansId">
        <view class="bg_list">
            <view class="bg_list_item">
                <view class="bg_list_item_top">
@@ -211,6 +212,8 @@
            <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,67 +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>
                            </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">
                            <u--input v-model="item.num" :placeholder="item.tips"
                                placeholder="请输入内容"
                                    type="digit"
                                border="surround"
                              ></u--input>
                            <input   />
                        </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-right" color="#999999" size="20"></u-icon>
                        </div>
                    </div>
                </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 v-for="(item1, i) in item.data" :key="i" activeColor="#4275FC" :name="item1"
                                    :label="item1">
                            </u-radio>
                        </u-radio-group>
                    </div>
@@ -117,21 +58,21 @@
                <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" />
                            <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">
                    <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" />
                            <u-icon name="arrow-right" color="#999999" size="20"></u-icon>
                    </div>
                </div>
            </div>
            <template #right>
                <van-button square style="height: 100%;" type="danger" text="删除" @click="dele(index)" />
            </template>
        </van-swipe-cell> -->
            </u-swipe-action-item>
        </u-swipe-action>
        <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,6 +223,15 @@
                    return
                }
                this.formList.splice(index, 1)
            },
            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);
@@ -379,7 +341,7 @@
            flex-direction: column;
            background: white;
            padding: 0 30rpx;
            margin-bottom: 20rpx;
            // margin-bottom: 20rpx;
            .tl_list_item {
                min-height: 98rpx;
@@ -404,6 +366,7 @@
                    align-items: center;
                    flex: 1;
                    justify-content: flex-end;
                    input {
                        text-align: right;
                        width: 450rpx;
@@ -455,10 +418,12 @@
            }
        }
    }
    /deep/ .u-checkbox-group {
        flex-wrap: wrap;
        max-width: 100%;
    }
    /deep/ .u-radio-group {
        flex-wrap: wrap;
        max-width: 100%;
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)
@@ -220,9 +216,10 @@
                this.loadData()
            },
            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>
    <page-meta :page-style="(badShow||statistics) ?'overflow: hidden;': ''"/>
    <view>
        <view class="tips-label">当前任务需要质检;产出后,请耐心等待质检员检验,并根据检验结果调整产出数据后再报工。</view>
        <workOrderInfo :orederMessage="info" />
@@ -125,7 +126,8 @@
                    <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">
            <!-- 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>
@@ -176,7 +178,6 @@
        <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">
@@ -185,21 +186,29 @@
                            </div>
                        </u-swipe-action-item>
                    </u-swipe-action>
                </scroll-view>
            </div>
        </div>
        <!-- v-if="info.status === 2 || info.procedureNeedcheck === 1" -->
        <template 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>
        <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">
@@ -376,22 +385,23 @@
                }
            },
            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,7 +885,7 @@
                            })
                            return
                        }
                        total = total += item.num
                        total += Number(item.num)
                        arr.push(item)
                        name += item.name + item.num + ';'
                    }
@@ -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
@@ -2,7 +2,8 @@
    <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">
            <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>
@@ -33,7 +34,7 @@
                                <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" 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>
@@ -69,18 +70,15 @@
                                <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 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" v-if="items.batch == item.batch" :key="ind">
                        <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>
@@ -108,7 +106,8 @@
                </div>
                <div class="right" v-if="isZKD" @click="openxz">
                    <image src="../../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>手动出库</span>
                    <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">
@@ -119,12 +118,12 @@
                    </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>
                        <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">
@@ -133,7 +132,7 @@
                                <span>{{ item.locationName }}</span>
                            </div>
                        </div>
                        <div class="item">
                        <div class="item f24">
                            <div class="label">数量:</div>
                            <div class="nr">
                                <!-- @input="changeNum(item)" -->
@@ -143,7 +142,7 @@
                        </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>
                            <image src="../../../static/chuku_ic_delete@2x.png" class="img48" mode=""></image>
                        </div>
                    </div>
                </div>
@@ -193,6 +192,7 @@
                info: {
                },
                split: '&nbsp;/&nbsp;',
                mainOrder: '',
                warehouseId: '',
                ids: [],
@@ -269,34 +269,58 @@
            },
            selectMaterail(v) {
                let tempList = this.warehouseList[0].wtransferDetailList
                let materials = v.materials
                materials.forEach(materail => {
                let materials = JSON.parse(JSON.stringify(v.materials))
                    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
                    let isOutList = false
                                this.outboundList.forEach(selected => {
                                    if (selected.newId == item.id) {
                            isOutList = true
                            return
                        }
                    })
                    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
                                }
                            } else {
                                if (materail.materialId == item.materialId &&
                                        materail.procedureId == item.procedureId &&
                                        materail.qualityType == item.qualityType
                                    ) {
                                    this.addToOutList(materail, item)
                                    materials.splice(index, 1)
                                    return
                                }
                            }
                        })
                    }
                })
            },
            addToOutList(materail, item) {
                let isExist = false
                this.outboundList.forEach(selected => {
                    if (selected.newId == materail.id) {
                                        isExist = true
                                        return
                                    }
                                })
                                if (isExist) {
                                    uni.$u.toast('该物料已存在')
                                    return
                                }
                } else {
                                let obj = JSON.parse(JSON.stringify(materail))
                                obj.newId = item.id
                                this.outboundList.push(obj)
                    console.log(this.outboundList);
                            }
                        })
                    })
                })
            },
            dele(index) {
                 this.outboundList.splice(index, 1)
@@ -664,6 +688,7 @@
                    display: flex;
                    align-items: center;
                    margin-top: 15rpx;
                    font-size: 24rpx;
                }
                .page_yxwl_list_item_num {
@@ -748,6 +773,7 @@
        left: 30rpx;
        padding-bottom: 68rpx;
        z-index: 9999;
        .page_footer_qr {
            flex: 1;
            height: 88rpx;
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;
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>