Mr.Shi
2023-09-05 16cd5600efc6f94ed617cb09e1a2dd579017ddef
Merge branch 'dev' of ssh://139.186.142.91:29418/productDev/dmMes into dev
已添加2个文件
已修改16个文件
1814 ■■■■ 文件已修改
minipro_standard/common/config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/components/LabelSelection.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/components/SelectMultipleMaterial.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/components/selectMaterial.vue 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/components/workOrderInfo.vue 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages.json 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages/index/index.vue 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/OrderDetail/OrderDetail.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/spotCheck/spotCheck.vue 446 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/workOrder/workOrder.vue 453 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/workOrderReporting/workOrderReporting.vue 204 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/store/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/util/request/responseInterceptors.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/util/utils.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform_web/src/views/system/loginLog.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/api/system/SystemDictController.java 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application-standardPro.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/common/config.js
@@ -1,7 +1,7 @@
module.exports = {
    // baseUrl: 'http://106.14.20.42/test_hfznzz/',
    // baseUrl: 'https://hefei.dtkey.cn/test_hfznzz/',
    baseUrl: 'http://192.168.0.15:10021/',
    baseUrl: 'http://192.168.0.15:10021',
    // baseUrl: 'https://dmtest.ahapp.net/doumeeplant_api',
    phoneRegular: /^1[3456789]\d{9}$/,
    mailboxRegular: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
minipro_standard/components/LabelSelection.vue
@@ -1,10 +1,10 @@
<template>
    <scroll-view class="tag" scroll-x>
        <view class="tag_list">
            <view v-for="item in TagList"
                :key="item.id"
                :class="{'tag_item': true, 'tagActive': item.id == activeId}"
                @click="change(item)">
            <view v-for="(item, index) in TagList"
                :key="index"
                :class="{'tag_item': true, 'tagActive': index == activeId}"
                @click="change(item, index)">
                <text>{{item.name}}</text>
                <text v-if="isShow && item.num">({{item.num}})</text>
            </view>
@@ -21,27 +21,27 @@
        },
        data() {
            return {
                activeId: ''
                activeId: 0
            };
        },
        methods: {
            change(item) {
                if (this.activeId !== item.id) {
                    this.activeId = item.id
            change(item, index) {
                if (this.activeId !== index) {
                    this.activeId = index
                    this.$emit('change', item.id)
                }
            }
        },
        watch: {
            TagList: {
                immediate: true,
                handler(news, old) {
                    let list = news
                    if (list && list.length !== 0) {
                        this.activeId = list[0].id
                    }
                }
            }
            // TagList: {
            //     immediate: true,
            //     handler(news, old) {
            //         let list = news
            //         if (list && list.length !== 0) {
            //             this.activeId = list[0].id
            //         }
            //     }
            // }
        }
    }
</script>
@@ -80,6 +80,7 @@
                text {
                    font-size: 26rpx;
                    font-weight: 400;
                    line-height: 26rpx;
                    color: #555555;
                }
            }
minipro_standard/components/SelectMultipleMaterial.vue
@@ -6,12 +6,12 @@
            </v-Search>
            <div class="content_total">共{{pages.total}}条数据</div>
            <view class="scroll-content">
                <u-list @scrolltoupper="scrolltoupper" @scrolltolower="scrolltolower">
                    <u-list-item v-for="(item1, index) in list" :key="index">
                        <view class="flex mb20" @click="selectMaterialAction(index)">
                <scroll-view scroll-y="true" refresher-enabled="true" :refresher-triggered="refreshing" @scrolltolower="loadMore"
                    @refresherrefresh="onRefresh">
                    <view v-for="(item1, index) in list" :key="index" class="flex mb20" @click="selectMaterialAction(index)">
                            <view class="img36 mr20 pt10">
                                <u-checkbox-group style="display: block;" name="" @change="selectMaterialAction(index)">
                                    <u-checkbox :checked="item1.isActive"></u-checkbox>
                                <u-checkbox :checked="selectIndex.includes(index)"></u-checkbox>
                                </u-checkbox-group>
                            </view>
                            <view class="fx1">
@@ -47,8 +47,12 @@
                                </div>
                            </view>
                        </view>
                </scroll-view>
                <!-- <u-list @scrolltoupper="scrolltoupper" @scrolltolower="scrolltolower">
                    <u-list-item v-for="(item1, index) in list" :key="index">
                    </u-list-item>
                </u-list>
                </u-list> -->
            </view>
                <view style="height: 98rpx;"></view>
            <!-- <view class="">
@@ -60,7 +64,7 @@
                        <u-checkbox :checked="isAll" label="全选"></u-checkbox>
                    </u-checkbox-group>
                </view>
                <view class="submit sbtn_green bbox tc">提交()</view>
                <view class="submit sbtn_green bbox tc" @click="submitAction">{{ `提交(${selectIndex.length})`}}</view>
            </view>
        </view>
    </u-popup>
@@ -68,6 +72,10 @@
<script>
    import vSearch from '@/components/Search.vue'
    import {
        choiceStockListPage,
        choiceStockPageForStandard
    } from '@/util/api/agencyAPI'
    export default {
        name: "selectMaterial",
        components: {
@@ -78,118 +86,85 @@
                show: false,
                splite:'&nbsp;|&nbsp;',
                isAll: false,
                refreshing: false,
                pages: {
                    size: 10,
                    index: 1,
                    capacity: 10,
                    page: 1,
                    total: 0
                },
                list: []
                list: [],
                selectIndex: []
            };
        },
        methods: {
            open(target) {
                this.show = true
                this.refreshing = false
                this.workorderId = target.workorderId
                this.deviceId = target.deviceId
                this.list = []
                this.selectIndex = []
                // console.log(this.selectIndex);
                this.pages = {
                    size: 10,
                    index: 1,
                    capacity: 10,
                    page: 1,
                    total: 0
                }
                this.loadData()
            },
            loadData() {
                this.list = [{
                    batch: '1',
                    materialName: 'dsadas',
                    materialCode: '1m0001',
                    locationName: 'a仓2号位',
                    num: '1',
                    unitName: '块',
                    qualityType: 0,
                    procedureName: '压制',
                    isActive: false
                },
                {
                    batch: '1',
                    materialName: 'dsadas',
                    materialCode: '1m0001',
                    locationName: 'a仓2号位',
                    num: '1',
                    unitName: '块',
                    qualityType: 0,
                    procedureName: '压制',
                    isActive: false
                },
                {
                    batch: '1',
                    materialName: 'dsadas',
                    materialCode: '1m0001',
                    locationName: 'a仓2号位',
                    num: '1',
                    unitName: '块',
                    qualityType: 0,
                    procedureName: '压制',
                    isActive: false
                },
                {
                    batch: '1',
                    materialName: 'dsadas',
                    materialCode: '1m0001',
                    locationName: 'a仓2号位',
                    num: '1',
                    unitName: '块',
                    qualityType: 0,
                    procedureName: '压制',
                    isActive: false
                },
                {
                    batch: '1',
                    materialName: 'dsadas',
                    materialCode: '1m0001',
                    locationName: 'a仓2号位',
                    num: '1',
                    unitName: '块',
                    qualityType: 0,
                    procedureName: '压制',
                    isActive: false
                },
                {
                    batch: '1',
                    materialName: 'dsadas',
                    materialCode: '1m0001',
                    locationName: 'a仓2号位',
                    num: '1',
                    unitName: '块',
                    qualityType: 0,
                    procedureName: '压制',
                    isActive: false
                },
                {
                    batch: '1',
                    materialName: 'dsadas',
                    materialCode: '1m0001',
                    locationName: 'a仓2号位',
                    num: '1',
                    unitName: '块',
                    qualityType: 0,
                    procedureName: '压制',
                    isActive: false
                choiceStockPageForStandard({
                    ...this.pages,
                    model: {
                        workorderId: this.workorderId,
                        deviceId: this.deviceId
                }
                ]
                }).then(res => {
                    let {data} = res
                    if (data.page == 1) {
                        this.list = [];
                    }
                    this.pages.page = data.page
                    this.pages.total = data.total
                    this.list.push(...data.records)
                }).catch((err) => {
                })
                .finally(() => {
                    this.refreshing = false;
                })
            },
            scrolltoupper() {
            loadMore() {
                this.pages.page += 1
                this.loadData()
            },
            scrolltolower() {
            onRefresh() {
                if (this.refreshing) return
                this.refreshing = true;
                this.pages.page = 1
                this.loadData()
            },
            selectMaterialAction(index) {
                // console.log('12');
                this.list[index].isActive = !this.list[index].isActive
                let i = this.selectIndex.findIndex(item => item==index)
                if (i == -1 ) {
                    this.selectIndex.push(index)
                } else {
                    this.selectIndex.splice(i)
                }
            },
            selectAll() {}
            selectAll() {
                this.selectIndex = []
                this.selectIndex = [...new Array(this.list.length).keys()]
            },
            submitAction () {
                this.show = false
                let selectValue = []
                this.selectIndex.forEach(item => {
                    selectValue.push(this.list[item])
                })
                this.$emit('selectes', { materials: selectValue })
            }
        }
    }
    /* 
@@ -202,6 +177,7 @@
        flex-direction: column;
        height: 1200rpx;
        box-sizing: border-box;
        .scroll-content {
            height: calc(1100rpx - env(safe-area-inset-bottom));
            overflow: scroll;
@@ -263,8 +239,10 @@
    }
    .bottom {
        height: 98rpx;
        .submit {
            width: 272rpx;
            height: 98rpx;
minipro_standard/components/selectMaterial.vue
@@ -2,9 +2,9 @@
    <u-popup :show="show" :round="10" closeable @close="show=false">
        <view class="material-content bbox p30">
            <view class="tc b f24 c2">选择物料</view>
            <u-list @scrolltoupper="scrolltoupper" @scrolltolower="scrolltolower">
                <u-list-item v-for="(item1, index) in list" :key="index">
                    <view class="" style="height: 20px;" @click="jump(item1)">
            <scroll-view scroll-y="true" refresher-enabled="true" :refresher-triggered="refreshing"
                @scrolltolower="loadMore" @refresherrefresh="onRefresh">
                <view v-for="(item1, index) in list" :key="index" class="" style="height: 20px;" @click="jump(item1)">
                        <div class="page_content_title_top">
                            <span>{{ item1.materialName + ' | ' + item1.materialCode }}</span>
                        </div>
@@ -13,8 +13,7 @@
                            <span>{{ item1.num }}{{ item1.unitName }}</span>
                        </div>
                        <div class="page_content_title_bottom">
                            <span class="green" v-if="item1.qualityType == 0">合格&nbsp;<span
                                    class="c1">/</span>&nbsp;</span>
                        <span class="green" v-if="item1.qualityType == 0">合格&nbsp;<span class="c1">/</span>&nbsp;</span>
                            <span class="orange" v-else-if="item1.qualityType == 1">不良&nbsp;<span
                                    class="c1">/</span>&nbsp;</span>
                            <span class="red" v-else-if="item1.qualityType == 2">报废&nbsp;<span
@@ -24,21 +23,29 @@
                            <span>{{item1.batch ? item1.batch : '-'}}</span>
                        </div>
                    </view>
            </scroll-view>
            <!-- <u-list @scrolltoupper="scrolltoupper" @scrolltolower="scrolltolower">
                <u-list-item v-for="(item1, index) in list" :key="index">
                </u-list-item>
            </u-list>
            </u-list> -->
        </view>
    </u-popup>
</template>
<script>
    import {
        choiceStockListPage,
        choiceStockPageForStandard
    } from '@/util/api/agencyAPI'
    export default {
        name: "selectMaterial",
        data() {
            return {
                show: false,
                refreshing: false,
                pages: {
                    size: 10,
                    index: 1,
                    capacity: 10,
                    page: 1,
                    total: 0
                },
                list: [
@@ -49,34 +56,59 @@
        methods: {
            open(target) {
                this.show = true
                this.refreshing = false
                this.workorderId = target.workorderId
                this.deviceId = target.deviceId
                this.list = []
                this.pages = {
                    size: 10,
                    index: 1,
                    capacity: 10,
                    page: 1,
                    total: 0
                }
                this.loadData()
            },
            loadData() {
                this.list = [{
                    batch: '1',
                    materialName: 'dsadas',
                    materialCode: '1m0001',
                    locationName: 'a仓2号位',
                    num: '1',
                    unitName: '块',
                    qualityType: 0,
                    procedureName: '压制',
                }]
                // this.list = [{
                //     batch: '1',
                //     materialName: 'dsadas',
                //     materialCode: '1m0001',
                //     locationName: 'a仓2号位',
                //     num: '1',
                //     unitName: '块',
                //     qualityType: 0,
                //     procedureName: '压制',
                // }]
                choiceStockPageForStandard({
                        ...this.pages,
                        model: {
                            workorderId: this.workorderId,
                            deviceId: this.deviceId
                        }
                    }).then(res => {
                        let {
                            data
                        } = res
                        if (data.page == 1) {
                            this.list = [];
                        }
                        this.pages.page = data.page
                        this.pages.total = data.total
                        this.list.push(...data.records)
                    }).catch((err) => {
                    })
                    .finally(() => {
                        this.refreshing = false;
                    })
            },
            scrolltoupper() {
                console.log('scrolltoupper');
            loadMore() {
                this.pages.page += 1
                this.loadData()
            },
            scrolltolower() {
                console.log('scrolltolower');
            onRefresh() {
                if (this.refreshing) return
                this.refreshing = true;
                this.pages.page = 1
                this.loadData()
            },
            jump(item) {
minipro_standard/components/workOrderInfo.vue
@@ -2,7 +2,7 @@
    <view class="p30 bg_w order-info">
        <view class="bX">
            <view class="cY">
                <view class="mr10 b">墙体砖|码垛</view>
                <view class="mr10 b">{{ `${orederMessage.mmodel.name} |${orederMessage.procedureName}`}}</view>
                <u-tag size="mini" bgColor="#03AF76" text="正常"></u-tag>
            </view>
            <view class="status" :class="orederMessage.status==0?'wc':orederMessage.status==1?'green':orederMessage.status==3?'blue':orederMessage.status==7?'green':'c6'">{{ stausToStr(1) }}</view>
@@ -11,28 +11,28 @@
        <view class="mt20 bg_f7 ptb20 plr30 n">
            <view class="c2 mb20">
                <span class="c6">物料编码:</span>
                {{ orederMessage.mmodel ? orederMessage.mmodel.code : '03K-0K-0-1' }}
                {{ orederMessage.mmodel ? orederMessage.mmodel.code : '-' }}
            </view>
            <view class="c2 mb20">
                <span class="c6">计划开工:</span>
                {{ orederMessage.planDate || '2022/01/11' }}
                {{ orederMessage.planDate || '-' }}
            </view>
            <view class="c2 mb20">
                <span class="c6">生产批次:</span>
                {{ orederMessage.batch || 'PH20221023001' }}
                {{ orederMessage.batch || '-' }}
            </view>
            <view class="c2 mb20">
                <span class="c6">计划数量:</span>
                {{ orederMessage.planNum || '1000' }}{{ orederMessage.umodel ? orederMessage.umodel.name : 'A1' }}
                {{ orederMessage.planNum || '-' }}{{ orederMessage.umodel ? orederMessage.umodel.name : '-' }}
            </view>
            <view class="c2 mb20">
                <span class="c6">生产设备:</span>
                {{ orederMessage.pgmodel ? `${orederMessage.pgmodel.code} - ${orederMessage.pgmodel.name}` : 'A1' }}
                {{ 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(' / ') : '侯泽慧-和县飞骏新型建材' }}
                    {{ orederMessage.proUserList ? orederMessage.proUserList.map(item => item.proUserDepartName).join(' / ') : '-' }}
                </view>
            </view>
        </view>
@@ -43,7 +43,10 @@
    export default {
        name: "workOrderInfo",
        props: {
            orederMessage: {}
            orederMessage: {
                type: Object,
                default: () => {}
            }
        },
        data() {
            return {
minipro_standard/pages.json
@@ -108,20 +108,16 @@
                "enablePullDownRefresh": false
            }
        }
        ,{
        }, {
            "path" : "pages/OutOperation/OutOperation",
            "style" :
            {
            "style": {
                "navigationBarTitleText": "出库操作",
                "enablePullDownRefresh": false
            }
            
        }
        ,{
        }, {
            "path" : "pages/InOperation/InOperation",
            "style" :
            {
            "style": {
                "navigationBarTitleText": "入库操作",
                "enablePullDownRefresh": false
            }
@@ -234,6 +230,20 @@
                        "navigationBarTitleText": "选择工序计划",
                        "enablePullDownRefresh": false
                    }
                }, {
                    "path": "pages/workOrder/workOrder",
                    "style": {
                        "navigationBarTitleText": "生产工单",
                        "enablePullDownRefresh": false
                    }
                }, {
                    "path": "pages/spotCheck/spotCheck",
                    "style": {
                        "navigationBarTitleText": "生产点检",
                        "enablePullDownRefresh": false
                    }
                }
            ]
        },
minipro_standard/pages/index/index.vue
@@ -10,21 +10,22 @@
                    å¾…办</view>
                <view class="cY">
                    <u-search placeholder="搜索关键字" bgColor="#f7f7f7" :showAction="false" @search="scrolltoupper"
                        shape="square" v-model="searchForm.name"></u-search>
                        shape="square" v-model="searchForm.mixParam"></u-search>
                    <image src="../../static/filter@2x.png" class="img48 ml20" @click="filterAction" mode=""></image>
                </view>
                <view class="cY mt30">
                    <view class="sbtn rd8" :class="searchForm.status==0?'sbtn_green':'sbtn_black_rim'"
                        @click="selectType(0)">待办</view>
                    <view class="sbtn rd8 ml20" :class="searchForm.status==1?'sbtn_green':'sbtn_black_rim'"
                        @click="selectType(1)">已办</view>
                    <view v-for="item in tagList" :key="item.id" class="sbtn rd8 mr10"
                        :class="searchForm.status==item.id?'sbtn_green':'sbtn_black_rim'" @click="selectType(item.id)">
                        {{`${item.name}(${item.num})`}}
                    </view>
                </view>
            </view>
        </u-sticky>
        <u-list :showScrollbar="false" @scrolltolower="scrolltolower" @scrolltoupper="scrolltoupper"
            :height="windowHeight - (statusbarHeight + navHeight + 120) + 'px'">
            <u-list-item v-for="(item, index) in projectList" :key="index">
        <scroll-view v-if="projectList.length" :style="windowHeight - (statusbarHeight + navHeight + 120) + 'px'"
            scroll-y="true" refresher-enabled="true" :refresher-triggered="triggered" :refresher-threshold="100"
            refresher-background="lightgreen" @refresherpulling="scrolltolower" @refresherrefresh="scrolltoupper"
            @refresherrestore="onRestore" @refresherabort="onAbort">
            <view v-for="(item, index) in projectList" :key="index">
                <view class="box_list">
                    <view class="box_list_item" @click="jump(item)">
                        <view class="box_list_item_icon">
@@ -41,16 +42,16 @@
                        </view>
                    </view>
                </view>
            </u-list-item>
        </u-list>
            </view>
        </scroll-view>
        <view v-else class="tc c6">暂无数据...</view>
        <u-popup :show="show" @close="close" :round="8" zIndex="20000">
            <view class="rp p40 contanir">
                <view class="c2 b">类型</view>
                <view class="content">
                    <u-grid col="2" :border="false">
                        <u-grid-item v-for="item in types" :key="item.id">
                            <view class="ptb20 c9 type-style tc rd10"
                                :class="type===item.id?'sbtn_green':'sbtn_gray'"
                            <view class="ptb20 c9 type-style tc rd10" :class="type===item.id?'sbtn_green':'sbtn_gray'"
                                @click="type=item.id">{{ item.name }}</view>
                        </u-grid-item>
                    </u-grid>
@@ -67,6 +68,10 @@
<script>
    import myTabbar from "@/components/myTabber.vue"
    import {
        getList,
        pageCount
    } from '@/util/api/agencyAPI'
    import {
        mapState
    } from 'vuex'
@@ -116,156 +121,196 @@
                        name: '客退/返品回厂检验'
                    }
                ],
                tagList: [{
                        id: 0,
                        name: '待办',
                        num: 0
                    },
                    {
                        id: 1,
                        name: '已办',
                        num: 0
                    }
                ],
                type: '',
                searchForm: {
                    name: '',
                    mixParam: '',
                    status: 0,
                    type: ''
                },
                projectList: [{
                        title: '212132',
                        createTime: '2023-08-28',
                        content: 'asdsadsax手打大萨达的啊实打as'
                page: {
                    total: 0,
                    capacity: 10,
                    page: 1,
                    },
                    {
                        title: '212132',
                        createTime: '2023-08-28',
                        content: 'asdsadsax手打大萨达的啊实打as'
                    },
                    {
                        title: '212132',
                        createTime: '2023-08-28',
                        content: 'asdsadsax手打大萨达的啊实打as'
                    },
                    {
                        title: '212132',
                        createTime: '2023-08-28',
                        content: 'asdsadsax手打大萨达的啊实打as'
                    },
                ]
                projectList: []
            }
        },
        computed: {
            ...mapState(['statusbarHeight', 'navHeight']),
        },
        async mounted() {
            await this.$store.dispatch('getUpcomingNum')
            this.tagList[0].num = this.$store.state.upcomingNum.d
            this.tagList[1].num = this.$store.state.upcomingNum.y
        },
        onLoad() {
            uni.getSystemInfo({
                success: res => {
                    this.windowHeight = res.windowHeight
                }
            })
            var that = this
            uni.login({
                provider: 'weixin',
                success: function(loginRes) {
                    // console.log(loginRes);
                    that.code = loginRes.code
                }
            });
            this.loadData()
        },
        methods: {
            scrolltolower() {},
            scrolltoupper() {},
            loadData() {
                getList({
                        model: this.searchForm,
                        ...this.page
                    })
                    .then(res => {
                        let data = res.data
                        if (data.page == 1) {
                            this.projectList = []
                        }
                        this.page.page = data.page
                        this.page.total = data.total
                        this.projectList.push(...data.records)
                    })
                    .catch(err => {
                    })
            },
            onRestore() {
                this.triggered = 'restore'; // éœ€è¦é‡ç½®
                console.log("onRestore");
            },
            onAbort() {
                console.log("onAbort");
            },
            scrolltolower() {
                this.page.page = 1
                this.loadData()
            },
            scrolltoupper() {
                this.page.page += 1
                this.loadData()
            },
            selectType(status) {
                if (this.searchForm.status == status) return
                this.searchForm.status = status
                this.scrolltoupper()
                this.scrolltolower()
            },
            jump(item) {
                if ((item.type === 0 || item.type === 2 || item.type === 5) && item.status === 0) { // è·³è½¬å‡ºåº“(转库单)
                    router.push({
                        name: 'issueOperation',
                  uni.navigateTo({
                      url: 'pages/OutOperation/OutOperation',
                        query: {
                            id: item.objId,
                            dbid: item.id,
                            type: 7
                        }
                    })
                    // router.push({
                    //     name: 'issueOperation',
                    //     query: {
                    //         id: item.objId,
                    //         dbid: item.id,
                    //         type: 7
                    //     }
                    // })
                } else if ((item.type === 0 || item.type === 2 || item.type === 5) && item.status === 1) {
                    router.push({
                        name: 'wTransferDetail',
                        query: {
                            id: item.objId,
                            status: item.status,
                            type: item.type,
                            dbid: item.id
                        }
                    })
                    // router.push({ name: 'wTransferDetail', query: { id: item.objId, status: 0, type: item.type, dbid: item.id } })
                    // router.push({
                    //     name: 'wTransferDetail',
                    //     query: {
                    //         id: item.objId,
                    //         status: item.status,
                    //         type: item.type,
                    //         dbid: item.id
                    //     }
                    // })
                } else if ((item.type === 1 || item.type === 4 || item.type === 6) && item.status === 0) { // è·³è½¬å…¥åº“(转库单)
                    if (item.type === 4) { // è·³è½¬å®Œå·¥å…¥åº“详情
                        router.push({
                            name: 'completionDetails',
                            query: {
                                id: item.objId,
                                dbid: item.id,
                                type: 7,
                                isShow: 1,
                                Type: item.type
                            }
                        })
                        // router.push({
                        //     name: 'completionDetails',
                        //     query: {
                        //         id: item.objId,
                        //         dbid: item.id,
                        //         type: 7,
                        //         isShow: 1,
                        //         Type: item.type
                        //     }
                        // })
                        return
                    }
                    router.push({
                        name: 'warehousing',
                    uni.navigateTo({
                        url: '/pages/InOperation/InOperation',
                        query: {
                            id: item.objId,
                            dbid: item.id,
                            type: 7
                        }
                    })
                    // router.push({
                    //     name: 'warehousing',
                    //     query: {
                    //         id: item.objId,
                    //         dbid: item.id,
                    //         type: 7
                    //     }
                    // })
                } else if ((item.type === 1 || item.type === 4 || item.type === 6) && item.status === 1) {
                    if (item.type === 4) { // è·³è››å®Œå·¥å…¥åº“详情
                        router.push({
                            name: 'completionDetails',
                            query: {
                                id: item.objId,
                                dbid: item.id,
                                type: 7,
                                isShow: 2
                            }
                        })
                        // router.push({
                        //     name: 'completionDetails',
                        //     query: {
                        //         id: item.objId,
                        //         dbid: item.id,
                        //         type: 7,
                        //         isShow: 2
                        //     }
                        // })
                        return
                    }
                    router.push({
                        name: 'wTransferDetail',
                        query: {
                            id: item.objId
                        }
                    })
                    // router.push({
                    //     name: 'wTransferDetail',
                    //     query: {
                    //         id: item.objId
                    //     }
                    // })
                } else if (item.type === 3 && item.status === 0) { // ç¡®è®¤å¤‡æ–™
                    router.push({
                        name: 'orderStock',
                        query: {
                            id: item.objId,
                            dbid: item.id
                        }
                    })
                    // router.push({
                    //     name: 'orderStock',
                    //     query: {
                    //         id: item.objId,
                    //         dbid: item.id
                    //     }
                    // })
                } else if (item.type === 3 && item.status === 1) { // å¤‡æ–™ï¼ˆè½¬åº“单详情)
                    // router.push({ name: 'wInboundDetail', query: { id: item.objId } })
                    router.push({
                        name: 'wTransferDetail',
                        query: {
                            id: item.objId
                        }
                    })
                    // router.push({
                    //     name: 'wTransferDetail',
                    //     query: {
                    //         id: item.objId
                    //     }
                    // })
                } else if (item.type === 9 && item.status === 0) { // è°ƒæ•´å…¥åº“(入库单)
                    router.push({
                        name: 'warehousing',
                        query: {
                            id: item.objId,
                            dbid: item.id,
                            type: 9
                        }
                    })
                    // router.push({
                    //     name: 'warehousing',
                    //     query: {
                    //         id: item.objId,
                    //         dbid: item.id,
                    //         type: 9
                    //     }
                    // })
                } else if (item.type === 9 && item.status === 1) {
                    router.push({
                        name: 'wInboundDetail',
                        query: {
                            id: item.objId
                        }
                    })
                    // router.push({
                    //     name: 'wInboundDetail',
                    //     query: {
                    //         id: item.objId
                    //     }
                    // })
                }
            },
            filterAction() {
minipro_standard/pages_adjust/pages/OrderDetail/OrderDetail.vue
@@ -1,6 +1,6 @@
<template>
    <view>
        <workOrderInfo :orederMessage="{proUserList:[]}" />
        <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>
@@ -233,6 +233,11 @@
<script>
    import workOrderInfo from '@/components/workOrderInfo.vue'
    import {
        queryById,
        createMaterial,
        createMaterialStandard
    } from '@/util/api/WorkOrderAPI'
    export default {
        components: {
            workOrderInfo
@@ -255,6 +260,7 @@
                    type: 0,
                    index: 0
                },
                info: {},
                TimeShow: false,
                badShow: false,
                typeView: 0,
@@ -348,6 +354,16 @@
                }
            }
        },
        onLoad(obj) {
            this.workorderId = obj.id
            queryById(this.workorderId)
                .then(res => {
                    if (res.code === 200) {
                        this.info = res.data
                        this.deviceId = res.data.pgmodel.id
                    }
                })
        },
        methods: {
            click() {
minipro_standard/pages_adjust/pages/manualFeed/manualFeed.vue
@@ -1,6 +1,6 @@
<template>
    <view class="tl">
        <workOrderInfo :orederMessage="{proUserList:[]}" />
        <workOrderInfo :orederMessage="info" />
        <div class="tl_title">
            <div class="tl_title_left">
                <div class="tl_title_left_x"></div>
@@ -49,15 +49,19 @@
            </u-swipe-action-item>
        </u-swipe-action>
        <SelectMaterial ref="selectMaterial" @selectAction="getValue"/>
        <SelectMultipleMaterial ref="selectMultipleMaterial"/>
        <!-- <SelectMultipleMaterial ref="selectMultipleMaterial" @selected="getMaterails"/> -->
    </view>
</template>
<script>
    import workOrderInfo from '@/components/workOrderInfo.vue'
    import SelectMaterial from '@/components/selectMaterial.vue'
    import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
    // import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
    import {
        queryById,
        createMaterial,
        createMaterialStandard
    } from '@/util/api/WorkOrderAPI'
    import {
        positiveInteger,
        number
@@ -66,10 +70,12 @@
        components: {
            workOrderInfo,
            SelectMaterial,
            SelectMultipleMaterial
            // SelectMultipleMaterial
        },
        data() {
            return {
                deviceId: '',
                workorderId: '',
                // formList: [{
                //     id: Date.now(),
                //     toolingTypeId: '', // å·¥è£…类型
@@ -82,6 +88,7 @@
                //     dw: '', // ç‰©æ–™å•位
                //     unitAttribute: ''
                // }],
                info: {},
                materialList: [{
                    id: '',
                    materialName: '',
@@ -101,10 +108,24 @@
                }],
            };
        },
        onLoad(obj) {
            this.workorderId = obj.id
            queryById(this.workorderId)
                .then(res => {
                    if (res.code === 200) {
                        this.info = res.data
                        this.deviceId = res.data.pgmodel.id
                    }
                })
        },
        methods: {
            open1(index) {
                // this.$refs.selectMaterial.open({})
                this.$refs.selectMultipleMaterial.open({})
                this.index = index
                this.$refs.selectMaterial.open({
                    workorderId: this.workorderId,
                    deviceId: this.deviceId
                })
            },
            deleItem(index) {
                if (this.materialList.length === 1) {
@@ -150,10 +171,29 @@
                    this.materialList[index].num = ''
                }
            },
            getValue(item) {
                console.log(item);
            getValue(v) {
                for (let i = 0; i < this.materialList.length; i++) {
                    if (item.id === this.materialList[i].id) {
                        uni.$u.toast({
                            message: '不能重复选择相同物料'
                        })
                        return
            }
        }
                this.materialList[this.index].id = item.id
                this.materialList[this.index].materialName = item.materialName
                this.materialList[this.index].num = item.num
                this.materialList[this.index].batch = item.batch
                this.materialList[this.index].locationName = item.locationName
                this.materialList[this.index].materialCode = item.materialCode
                this.materialList[this.index].procedureName = item.procedureName
                this.materialList[this.index].qualityType = item.qualityType
                this.materialList[this.index].unitAttribute = item.unitAttribute
            },
            // getMaterails({materials}) {
            //     console.log(item);
            // }
        }
    }
</script>
minipro_standard/pages_adjust/pages/spotCheck/spotCheck.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,446 @@
<template>
    <view class="tl">
        <V-WorkOrderInfo :orederMessage="info"></V-WorkOrderInfo>
        <div class="tl_title">
            <div class="tl_title_left">
                <div class="tl_title_left_x"></div>
                <span>生产点检</span>
            </div>
            <div class="tl_title_right" @click="add">
                <image src="../../static/gongdan_ic_shoudong@2x.png" class="img24" mode=""></image>
                <!-- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" /> -->
                <span>增加属性</span>
            </div>
        </div>
        <u-swipe-action>
            <u-swipe-action-item v-for="(item, index) in formList" :key="index" :options="options1"
                @click="dele(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>
                            <!-- <van-radio-group v-model="item.num" direction="horizontal">
                                <van-radio :name="item1" checked-color="#4275FC" v-for="(item1, i) in item.data" :key="i">
                                    {{item1}}
                                </van-radio>
                            </van-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 || 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>
            </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">
            <button class="tl_footer_submit" v-preventReClick @click="submit">提交</button>
        </div>
        <u-picker :show="show" :columns="[gzqjData]" title="选择生产属性" @confirm="gzqjConfirm" @cancel="show=false">
        </u-picker>
    </view>
</template>
<script>
    import VWorkOrderInfo from '@/components/workOrderInfo.vue'
    import {
        setTimeO
    } from '@/util/utils.js'
    import {
        queryById,
        getJdList,
        createDJ
    } from '@/util/api/WorkOrderAPI'
    export default {
        components: {
            VWorkOrderInfo
        },
        data() {
            return {
                options1: [{
                    text: '删除'
                }],
                show: false,
                index: '',
                workOrderId: '',
                info: {},
                gzqjData: [],
                formList: [{
                    id: Date.now(),
                    attribute: '', // å±žæ€§å€¼
                    attributeName: '', // å±žæ€§å€¼åç§°
                    data: '', // æ•°æ®
                    type: '', // ç±»åž‹
                    tips: '', // æç¤ºå­
                    num: '' // æ•°é‡
                }]
            }
        },
        onLoad(obj) {
            this.workOrderId = obj.id
            this.queryByIds()
            this.getJdLists()
        },
        methods: {
            queryByIds() {
                queryById(this.workOrderId)
                    .then(res => {
                        console.log(res);
                        this.info = res.data
                    })
            },
            getJdLists() {
                getJdList({
                        workOrderID: this.workOrderId
                    })
                    .then(res => {
                        if (res.code === 200 && res.data && res.data.length !== 0) {
                            res.data.forEach(item => {
                                this.gzqjData.push({
                                    text: item.name,
                                    id: item.id,
                                    type: item.type,
                                    data: item.remark ? item.remark.split(' ') : '',
                                    tips: item.tips
                                })
                            })
                        }
                    })
            },
            add() {
                this.formList.push({
                    id: Date.now(),
                    attribute: '',
                    attributeName: '',
                    num: '',
                    type: '',
                    data: '',
                    tips: ''
                })
            },
            open(index) {
                this.index = index
                this.show = true
            },
            gzqjConfirm({
                value
            }) {
                console.log(value);
                let temp = value[0]
                this.formList[this.index] = {
                    attribute: temp.id,
                    attributeName: temp.text,
                    type: temp.type,
                    data: temp.data,
                    tips: temp.tips,
                    num: '',
                }
                if (temp.type === 1) {
                    this.formList[this.index].num = []
                } else if (temp.type === 0) {
                    this.formList[this.index].num = temp.data[0]
                } else if (temp.type === 4) {
                    this.formList[this.index].num = setTimeO(new Date(), '-')
                }
                // this.formList.forEach((item, index) => {
                //         if (this.index === index) {
                //             item.attribute = value.id
                //             item.attributeName = value.text
                //             item.type = value.type
                //             item.data = value.data
                //             item.tips = value.tips
                //             console.log(value)
                //             item.num = ''
                // if (item.type === 1) {
                //     item.num = []
                // } else if (item.type === 0) {
                //     item.num = item.data[0]
                // }
                // if (value.type === 4) {
                //     formList.value[indexs.value].num = setTimeO(new Date(), '-')
                // }
                //         }
                //     })
                this.show = false
            },
            dele(index) {
                if (this.formList.length === 1) {
                    uni.$u.toast('至少保留一条点检信息')
                    return
                }
                this.formList.splice(index, 1)
            },
            submit() {
                let isOpen = true
                let attrList = []
                this.formList.forEach(item => {
                    if (item.type === 1) {
                        if (item.attribute === '' || item.num.length === 0) {
                            isOpen = false
                            return
                        } else {
                            attrList.push({
                                val: item.num.join(' '),
                                attrId: item.attribute
                            })
                        }
                    } else {
                        if (item.attribute === '' || item.num === '') {
                            isOpen = false
                            return
                        } else {
                            attrList.push({
                                val: item.num,
                                attrId: item.attribute
                            })
                        }
                    }
                })
                if (!isOpen) {
                    uni.$u.toast('请将信息填写完整')
                    return
                }
                createDJ({
                    attrList: attrList,
                    id: this.workOrderId
                }).then(res => {
                    if (res.code === 200) {
                        uni.$u.toast('创建成功')
                        setTimeout(() => {
                            uni.navigateBack()
                        }, 1000)
                    }
                })
            }
        }
    }
</script>
<style lang="scss" scoped>
    .tl {
        width: 100%;
        height: 100%;
        position: absolute;
        background: #F7F7F7;
        .tl_title {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 30rpx;
            .tl_title_left {
                display: flex;
                align-items: center;
                .tl_title_left_x {
                    width: 8rpx;
                    height: 30rpx;
                    background: $nav-color;
                    border-radius: 2rpx;
                    margin-right: 12rpx;
                }
                span {
                    font-size: 32rpx;
                    font-weight: 500;
                    color: #222222;
                }
            }
            .tl_title_right {
                display: flex;
                align-items: center;
                img {
                    width: 28rpx;
                    height: 28rpx;
                    margin-right: 12rpx;
                }
                span {
                    font-size: 28rpx;
                    font-weight: 400;
                    color: $nav-color;
                }
            }
        }
        .tl_list {
            display: flex;
            flex-direction: column;
            background: white;
            padding: 0 30rpx;
            margin-bottom: 20rpx;
            .tl_list_item {
                min-height: 98rpx;
                display: flex;
                align-items: center;
                justify-content: space-between;
                border-bottom: 1rpx solid #E5E5E5;
                &:last-child {
                    border: none;
                }
                .tl_list_item_label {
                    font-size: 30rpx;
                    font-weight: 400;
                    color: #222222;
                }
                .tl_list_item_go {
                    display: flex;
                    align-items: center;
                    input {
                        text-align: right;
                        width: 450rpx;
                        height: 60rpx;
                        border-radius: 8rpx;
                        border: 1rpx solid #E5E5E5;
                        padding: 0 30rpx;
                        box-sizing: border-box;
                        font-size: 28rpx;
                        font-weight: 400;
                        color: #333333;
                    }
                    span {
                        font-size: 28rpx;
                        font-weight: 400;
                        color: #999999;
                        margin-right: 10rpx;
                    }
                }
            }
        }
        .tl_zw {
            height: 160rpx;
        }
        .tl_footer {
            width: 100%;
            position: fixed;
            bottom: 0;
            left: 0;
            padding: 0 30rpx 68rpx 30rpx;
            box-sizing: border-box;
            .tl_footer_submit {
                width: 690rpx;
                height: 88rpx;
                border: none;
                background: #4275FC;
                box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
                border-radius: 8rpx;
                font-size: 30rpx;
                font-weight: 500;
                color: #FFFFFF;
                display: flex;
                align-items: center;
                justify-content: center;
            }
        }
    }
</style>
minipro_standard/pages_adjust/pages/workOrder/workOrder.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,453 @@
<template>
    <view class="content p30">
        <div class="content_search">
            <v-Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true"
                placeholder="搜索工单编码/工序名称">
                <template v-slot:content>
                    <div class="Search_item">
                        <div class="Search_item_label">计划日期</div>
                        <div class="Search_item_content" @click="isOpenDate = true">
                            <div class="Search_item_content_a" :style="searchForm.startDate ? 'color: #000;' : ''">
                                {{ searchForm.startDate ? searchForm.startDate : '开始日期'}}
                            </div>
                            <span>-</span>
                            <div class="Search_item_content_a" :style="searchForm.endDate ? 'color: #000;' : ''">
                                {{ searchForm.endDate ? searchForm.endDate : '结束日期'}}
                            </div>
                        </div>
                    </div>
                </template>
            </v-Search>
            <div class="content_search_x"></div>
            <v-LableSelection :TagList="tagList" :isShow="true" @change="clickTag"></v-LableSelection>
        </div>
        <div class="content_total mt20">共{{page.total}}条数据</div>
        <scroll-view scroll-y="true" refresher-enabled="true" :refresher-triggered="triggered" @scrolltolower="getLists"
            @refresherrefresh="onRefresh">
            <div class="content_list">
                <div class="content_list_item" v-for="(item, i) in list" :key="i" @click="jump(item)">
                    <div class="content_list_item_top">
                        <div class="content_list_item_top_left">
                            <span v-if="item.mmodel">{{item.mmodel.name}} | {{item.procedureName}}</span>
                            <div class="content_list_item_top_left_tag" v-if="item.urgent">优先{{item.urgent}}</div>
                            <div class="content_list_item_top_left_tag backgreen" v-if="item.type === 0">正常</div>
                            <div class="content_list_item_top_left_tag backyellow" v-if="item.type === 2">返工返修</div>
                            <div class="content_list_item_top_left_tagW" v-if="item.paused === 1">停</div>
                        </div>
                        <div class="content_list_item_top_right">
                            <span class="yellow" v-if="item.status === 0">已创建</span>
                            <span class="green" v-if="item.status === 1">已备料</span>
                            <span v-if="item.status === 2">已完工检</span>
                            <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 class="green" v-if="item.status === 7">进行中</span>
                        </div>
                    </div>
                    <span>工单编号: {{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>
                            <div class="content_list_item_content_item_nr" v-if="item.mmodel">{{item.mmodel.code}}</div>
                        </div>
                        <div class="content_list_item_content_item">
                            <div class="content_list_item_content_item_label">计划开工:</div>
                            <div class="content_list_item_content_item_nr">{{item.planDate}}</div>
                        </div>
                        <div class="content_list_item_content_item">
                            <div class="content_list_item_content_item_label">生产批次:</div>
                            <div class="content_list_item_content_item_nr">{{item.batch}}</div>
                        </div>
                        <div class="content_list_item_content_item">
                            <div class="content_list_item_content_item_label">计划数量:</div>
                            <div class="content_list_item_content_item_nr" v-if="item.umodel">
                                {{item.planNum}}{{item.umodel.name}}
                            </div>
                        </div>
                        <div class="content_list_item_content_item">
                            <div class="content_list_item_content_item_label">生产设备:</div>
                            <div class="content_list_item_content_item_nr" v-if="item.pgmodel">{{item.pgmodel.code}}
                            </div>
                        </div>
                        <div class="content_list_item_content_item" v-if="item.status === 5">
                            <div class="content_list_item_content_item_label">完工数量:</div>
                            <div class="content_list_item_content_item_nr">{{item.proNum}}</div>
                        </div>
                    </div>
                </div>
            </div>
        </scroll-view>
        <u-calendar :show="isOpenDate" mode="range" @confirm="dateConfirm"></u-calendar>
    </view>
</template>
<script>
    import vSearch from '@/components/Search.vue'
    import vLableSelection from '@/components/LabelSelection.vue'
    import {
        getList,
        pageCount
    } from '@/util/api/WorkOrderAPI.js'
    export default {
        components: {
            vSearch,
            vLableSelection
        },
        data() {
            return {
                isOpenDate: false,
                tagList: [{
                        id: [0, 1],
                        name: '待生产',
                        num: '0'
                    },
                    {
                        id: [2, 3, 7],
                        name: '生产中',
                        num: '0'
                    },
                    {
                        id: [4, 5, 6],
                        name: '已完成',
                        num: '0'
                    }
                ],
                triggered: false,
                _freshing: false,
                searchForm: {
                    mixParam: '',
                    startDate: '',
                    endDate: '',
                    statusList: []
                },
                page: {
                    total: 0,
                    capacity: 10,
                    page: 1
                },
                list: [],
            }
        },
        onLoad() {
            this.pageCounts()
            this.loadData()
        },
        methods: {
            loadData() {
                getList({
                        ...this.page,
                        model: {
                            ...this.searchForm,
                            endDate: this.searchForm.endDate ? (this.searchForm.endDate + ' 23:59:59') : '',
                            statusList: this.searchForm.statusList.length === 0 ? this.tagList[0].id : this.searchForm
                                .statusList
                        }
                    })
                    .then(res => {
                        let {
                            data
                        } = res
                        if (data.page == 1) {
                            this.list = []
                        }
                        this.page.total = data.total
                        this.page.page = data.page
                        this.list.push(...data.records)
                        this.triggered = false
                    })
            },
            pageCounts() {
                pageCount({
                    ...this.searchForm,
                    endDate: this.searchForm.endDate ? (this.searchForm.endDate + ' 23:59:59') : '',
                    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)
                        this.tagList[2].num = String(res.data.endNum)
                    }
                })
            },
            clickTag(v) {
                this.searchForm.statusList = v
                this.page.page = 1
                this.loadData()
            },
            dateConfirm(v) {
                this.isOpenDate = false
                this.searchForm.startDate = v[0]
                this.searchForm.endDate = v[v.length - 1]
            },
            getLists() {
                this.page.page += 1
                this.loadData()
            },
            onRefresh() {
                if (this.triggered) return
                this.triggered = true;
                this.page.page = 1
                this.loadData()
            },
            jump(item) {
                // uni.navigateTo({
                //     url: `/pages_adjust/pages/OrderDetail/OrderDetail?id=${item.id}`
                // })
                if (item.status === 4 || item.status === 6 || item.paused === 1) {
                    uni.navigateTo({
                        url: `/pages_adjust/pages/OrderDetail/OrderDetail?id=${item.id}`
                    })
                } else {
                    uni.navigateTo({
                        url: `/pages_adjust/pages/workOrderReporting/workOrderReporting?id=${item.id}`
                    })
                }
            }
        }
    }
</script>
<style lang="scss" scoped>
    .content {
        .content_code {
            position: fixed;
            right: 30rpx;
            bottom: 100rpx;
            img {
                width: 138rpx;
                height: 138rpx;
            }
        }
        .content_top {
            top: 0 !important;
        }
        .content_search {
            background: white;
            z-index: 9;
            .Search_item {
                margin-bottom: 40rpx;
                .Search_item_label {
                    font-size: 30rpx;
                    font-weight: 500;
                    color: #222222;
                }
                .Search_item_content {
                    display: flex;
                    align-items: center;
                    justify-content: space-between;
                    margin-top: 30rpx;
                    .tag {
                        display: flex;
                        flex-wrap: wrap;
                        align-items: center;
                        .tag_active {
                            background: $nav-color !important;
                            color: #ffffff !important;
                        }
                        .tag_item {
                            width: 156rpx;
                            height: 70rpx;
                            box-sizing: border-box;
                            background: #F2F2F2;
                            border-radius: 8rpx;
                            font-size: 26rpx;
                            font-weight: 400;
                            color: #333333;
                            display: flex;
                            align-items: center;
                            justify-content: center;
                            margin-right: 22rpx;
                            margin-bottom: 22rpx;
                            &:nth-child(4n) {
                                margin-right: 0;
                            }
                        }
                    }
                    span {
                        font-size: 26rpx;
                        font-weight: 400;
                        color: #333333;
                    }
                    .Search_item_content_a {
                        width: 308rpx;
                        height: 70rpx;
                        background: #F7F7F7;
                        border-radius: 8rpx;
                        border: 1rpx solid #EEEEEE;
                        font-size: 26rpx;
                        font-weight: 400;
                        color: #B2B2B2;
                        display: flex;
                        align-items: center;
                        justify-content: center;
                    }
                }
            }
            .content_search_x {
                height: 24rpx;
            }
        }
        .content_total {
            padding: 24rpx 30rpx;
            background: #F7F7F7;
            font-size: 24rpx;
            font-weight: 400;
            color: #666666;
        }
        .content_list {
            width: 100%;
            height: 100%;
            display: flex;
            flex-direction: column;
            .content_list_item {
                background: white;
                padding: 30rpx;
                display: flex;
                flex-direction: column;
                border-bottom: 1rpx solid #ececec;
                span {
                    color: #5a5a5a;
                    margin-top: 15rpx;
                }
                .content_list_item_top {
                    display: flex;
                    align-items: center;
                    justify-content: space-between;
                    .content_list_item_top_left {
                        display: flex;
                        align-items: center;
                        width: 80%;
                        span {
                            font-size: 32rpx;
                            font-weight: 500;
                            color: #333333;
                            overflow: hidden;
                            white-space: nowrap;
                            text-overflow: ellipsis;
                            -o-text-overflow: ellipsis;
                        }
                        .content_list_item_top_left_tagW {
                            margin-top: 14rpx;
                            flex-shrink: 0;
                            box-sizing: border-box;
                            padding: 5rpx 10rpx;
                            background: $nav-stateColor5;
                            border-radius: 8rpx;
                            font-size: 22rpx;
                            font-weight: 400;
                            color: #FFFFFF;
                            margin-left: 16rpx;
                            display: flex;
                            align-items: center;
                            justify-content: center;
                        }
                        .content_list_item_top_left_tag {
                            margin-top: 14rpx;
                            flex-shrink: 0;
                            padding: 5rpx 10rpx;
                            background: $nav-stateColor4;
                            border-radius: 8rpx;
                            font-size: 22rpx;
                            font-weight: 400;
                            color: #FFFFFF;
                            margin-left: 16rpx;
                            display: flex;
                            align-items: center;
                            justify-content: center;
                        }
                    }
                    .content_list_item_top_right {
                        font-size: 26rpx;
                        font-weight: 400;
                        color: #666666;
                        flex-shrink: 0;
                        .purple {
                            color: $nav-color !important;
                        }
                        .green {
                            color: $nav-stateColor6 !important;
                        }
                        .yellow {
                            color: $nav-stateColor1 !important;
                        }
                    }
                }
                .content_list_item_content {
                    padding: 24rpx 30rpx;
                    background: #F7F7F7;
                    border-radius: 16rpx;
                    display: flex;
                    flex-wrap: wrap;
                    justify-content: space-between;
                    margin-top: 25rpx;
                    .content_list_item_content_item {
                        width: 50%;
                        display: flex;
                        margin-top: 24rpx;
                        &:nth-child(1) {
                            margin-top: 0 !important;
                        }
                        &:nth-child(2) {
                            margin-top: 0 !important;
                        }
                        .content_list_item_content_item_label {
                            font-size: 24rpx;
                            font-weight: 400;
                            color: #666666;
                            flex-shrink: 0;
                        }
                        .content_list_item_content_item_nr {
                            flex: 1;
                            overflow: hidden;
                            white-space: nowrap;
                            text-overflow: ellipsis;
                            -o-text-overflow: ellipsis;
                            font-size: 24rpx;
                            font-weight: 400;
                            color: #222222;
                            margin-right: 10rpx;
                        }
                    }
                }
            }
        }
    }
</style>
minipro_standard/pages_adjust/pages/workOrderReporting/workOrderReporting.vue
@@ -1,7 +1,7 @@
<template>
    <view>
        <view class="tips-label">当前任务需要质检;产出后,请耐心等待质检员检验,并根据检验结果调整产出数据后再报工。</view>
        <workOrderInfo :orederMessage="{proUserList:[]}" />
        <workOrderInfo :orederMessage="info" />
        <!-- <u-tabs :list="tab" lineColor="#305ED5" :activeStyle="{color:'#305ED5'}" lineWidth="50%" :itemStyle="{width: '50%', boxSizing: 'border-box', height: '88rpx'}" @click="click"></u-tabs> -->
        <view class="bg_cate">
            <view @click="clickIten(index)" :class="typeView == index ? 'bg_cate_item active' : 'bg_cate_item'"
@@ -14,7 +14,9 @@
                        <div class="bg_list_item_top_left_x bg_m"></div>
                        <span>投料明细</span>
                    </div>
                    <div class="bg_list_item_top_right" @click="jumpTL">
                    <!-- proxy.$auth('h5:workorderinput:create') &&  -->
                    <div class="bg_list_item_top_right" @click="jumpTL"
                        v-if="info.bomType !== 1 || info.bomType == 0 || !info.bomType">
                        <!-- v-if="proxy.$auth('h5:workorderinput:create') && (info.bomType !== 1 || info.bomType == 0 || !info.bomType)" -->
                        <!-- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" /> -->
                        <!-- <img src="@/static/gongdan_ic_shoudong@2x.ong" alt="" /> -->
@@ -175,6 +177,7 @@
        <div class="details_dj" v-if="typeView === 1">
            <div class="details_dj_list">
                <u-swipe-action>
                    <u-swipe-action-item v-for="(item, index) in djData" :key="index" :options="options"
                        @click="dele(item.id)">
@@ -206,9 +209,8 @@
                <view class="content bl_list">
                    <div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)">
                        <div class="bl_list_item_left">
                            <u-checkbox-group>
                                <u-checkbox  :key="index" :checked="item.active" :label="item.name"
                                    :name="item.name">
                            <u-checkbox-group @change="changeChecked(i)">
                                <u-checkbox :key="index" :checked="item.active" :label="item.name" :name="item.name">
                                </u-checkbox>
                            </u-checkbox-group>
                        </div>
@@ -227,6 +229,26 @@
<script>
    import workOrderInfo from '@/components/workOrderInfo.vue'
    import {
        getBarcodeContent,
        queryById,
        getOrocessRecord,
        deleteCT,
        updateById,
        comfirmDone,
        comfirmDoneStandard,
        getListByCondition,
        allForStandard,
        pageDJ,
        deletedj,
        dealWorkorderRecordStandard,
        getWorkorderRecordListStandard
    } from '@/util/api/WorkOrderAPI'
    import {
        categoryExtList,
        queryOne,
        queryList
    } from '@/util/api/PlanningAPI'
    export default {
        components: {
            workOrderInfo
@@ -252,18 +274,22 @@
                TimeShow: false,
                badShow: false,
                typeView: 0,
                feedingData: [{
                    id: 0,
                    materialName: '墙体砖',
                    procedureName: '压制',
                    qualityType: 1,
                    locationName: 'CP-01',
                    batch: '20230713',
                    num: 2,
                    maxNum: 10,
                    unitAttribute: 1,
                    unitName: '块'
                }],
                workorderId: '',
                info: {},
                feedingData: [
                    // {
                    //     id: 0,
                    //     materialName: '墙体砖',
                    //     procedureName: '压制',
                    //     qualityType: 1,
                    //     locationName: 'CP-01',
                    //     batch: '20230713',
                    //     num: 2,
                    //     maxNum: 10,
                    //     unitAttribute: 1,
                    //     unitName: '块'
                    // },
                ],
                options: [{
                    text: '删除',
                    style: {
@@ -286,7 +312,7 @@
                    qualifiedId: '',
                    qualified: '', // åˆæ ¼
                    undesirableId: '',
                    undesirable: 5 // ä¸è‰¯
                    undesirable: '' // ä¸è‰¯
                },
                djData: [{
                    attrName: '出水时间',
@@ -294,12 +320,25 @@
                    userName: '张三 ',
                    createTime: '2022-05-28 16:32:'
                }],
                cateList: [{
                    active: false,
                    name: '毛刺',
                    num: 0
                }]
                cateList: [
                    // {
                    //     active: false,
                    //     name: '毛刺',
                    //     num: 0
                    // },
                ],
                pages: {
                    capacity: 10,
                    page: 1,
                    total: 0
                }
            };
        },
        onLoad(obj) {
            this.workorderId = obj.id
            this.queryByIds()
            this.getOrocessRecords()
            this.getData()
        },
        computed: {
            expectedSalary() {
@@ -343,6 +382,55 @@
            }
        },
        methods: {
            queryByIds() {
                queryById(this.workorderId)
                    .then(res => {
                        this.info = res.data
                        queryList({
                            deleted: 0,
                            departId: res.data.factoryId,
                            materialId: res.data.materialId,
                            procedureId: res.data.procedureId
                        }).then(result => {
                            if (result.code === 200) {
                                if (result.data && result.data.length > 0) {
                                    result.data.forEach((item, index) => {
                                        item.name = item.type == 0 ? '计件' : '计时'
                                        item.id = item.type
                                        item.active = index == 0
                                    })
                                    this.arrType = result.data
                                } else {
                                    this.arrType = []
                                }
                            }
                        })
                    })
            },
            getOrocessRecords() {
                this.feedingData = []
                allForStandard({
                    workorderId: this.workorderId,
                    type: 0
                }).then(res => {
                    if (res.code === 200) {
                        this.feedingData = res.data
                    }
                })
            },
            getData() {
                categoryExtList({
                    cateType: "3"
                }).then(res => {
                    if (res.code === 200) {
                        res.data.forEach(item => {
                            item.active = false
                            item.num = ''
                        })
                        this.cateList = res.data
                    }
                })
            },
            click() {
            },
@@ -410,12 +498,42 @@
                //   }
                // })
            },
            changeCC(downType, num, recordId) {
                if (!num) return
                console.log(Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable))
                if ((Number(this.produceFrom.qualified) + Number(this.produceFrom.undesirable)) > this.info.planNum) {
                    uni.showToast({ title:'产出数量不能大于计划数量', duration: 2000, icon:'none' })
                    return
                }
                if (num >= 0) {
                    this.form.defective = []
                    this.form.defectiveName = ''
                    // dealWorkorderRecordStandard({
                    //     downType, num, recordId, workorderId: route.query.id
                    // }).then(res => {
                    //     if (res.code === 200) {
                    //         getOrocessRecordCC()
                    //     }
                    // })
                } else {
                    if (downType == 0) {
                        this.produceFrom.qualified = 0
                    } else {
                        this.produceFrom.undesirable = 0
                    }
                    uni.showToast({ title:'产出数量不能小于', duration: 2000, icon:'none' })
                }
            },
            clickPerformanceType(item, index) {
                this.form.index = index
                this.form.type = item.type
            },
            submit() {},
            jumpdj() {},
            jumpdj() {
                uni.navigateTo({
                    url: `/pages_adjust/pages/spotCheck/spotCheck?id=${this.workorderId}`
                })
            },
            pageDJs() {},
            dele(id) {
                // deletedj(id)
@@ -430,11 +548,47 @@
                //     })
            },
            confirm() {
                // console.log('confirm');
                console.log('confirm', this.cateList);
                let isOpen = false
                this.cateList.forEach((item, index) => {
                    if (item.active) {
                        isOpen = true
                    }
                })
                if (!isOpen) {
                    uni.showToast({ title:'请选择不良项', duration: 2000, icon:'none' })
                    return
                }
                let arr = []
                let total = 0
                let name = ''
                this.cateList.forEach((item, index) => {
                    if (item.active) {
                        if (item.num <= 0) {
                            uni.showToast({ title:'不良数量必须大于0', duration: 2000, icon:'none' })
                            return
                        }
                        total = total += item.num
                        arr.push(item)
                        name += item.name + item.num + ';'
                    }
                })
                if (total != Number(this.produceFrom.undesirable)) {
                    uni.showToast({ title:'不良数必须等于产出不良数', duration: 2000, icon:'none' })
                    return
                }
                this.form.defective = arr
                this.form.defectiveName = name
                this.badShow = false
            },
            changeChecked(i) {
                this.cateList[i].active = !this.cateList[i].active
            },
            jumpTL() {
                uni.navigateTo({
                    // url: ''
                    url: `/pages_adjust/pages/manualFeed/manualFeed?id=${this.workorderId}`
                })
            }
        }
    }
minipro_standard/store/index.js
@@ -100,10 +100,10 @@
                menuButtonWidth
            })
        },
        async getUpcomingNum() {
        async getUpcomingNum(context) {
            let res = await pageCount({})
            if (res.code === 200) {
                content.commit('SETNUM', {
                context.commit('SETNUM', {
                    d: res.data.startNum,
                    y: res.data.endNum
                })
minipro_standard/util/request/responseInterceptors.js
@@ -17,13 +17,11 @@
            uni.showToast({ title: response.data.message, icon: 'none', duration: 2000 });
        }
        return data || {}
    }, (response) => {
    }, (error) => {
        uni.hideLoading();
        let code;
        let code  = error.code
        if (error.code === "ECONNABORTED") {
            code = 999
        } else {
            code = error.response.status
        }
        switch (code) {
            case 404:
@@ -36,6 +34,6 @@
                uni.showToast({ title: '请求超时', icon: 'none', duration: 2000 });
                break;
        }
        return Promise.reject(response)
        return Promise.reject(error)
    })
}
minipro_standard/util/utils.js
@@ -27,4 +27,19 @@
    return [year, Sign, month , Sign, day, ' ', hour , ':', minute, ':', second ].join('');
}
export { gsdate, setTime }
/***
 *
 * @param time æ—¥æœŸ å¹´æœˆæ—¥æ—¶åˆ†ç§’
 * @param Sign é—´éš”
 */
function setTimeO (time, Sign) {
    let year = time.getFullYear();
    let month = time.getMonth() + 1 >= 10 ? time.getMonth() + 1 : `0${time.getMonth() + 1}`;
    let day = time.getDate() >= 10 ? time.getDate() : `0${time.getDate()}`;
    let hour = time.getHours() >= 10 ? time.getHours() : `0${time.getHours()}`;
    let minute = time.getMinutes() >= 10 ? time.getMinutes() : `0${time.getMinutes()}`;
    let second = time.getSeconds() >= 10 ? time.getSeconds() : `0${time.getSeconds()}`;
    return [year, Sign, month , Sign, day, ' ', hour , ':', minute, ':', '00' ].join('');
}
export { gsdate, setTime, setTimeO }
platform_web/src/views/system/loginLog.vue
@@ -2,7 +2,7 @@
  <TableLayout :permissions="['system:loginLog:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="登录用户名" prop="loginUsername">
      <el-form-item label="用户名" prop="loginUsername">
        <el-input v-model="searchForm.loginUsername" placeholder="请输入登录用户名" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <!-- <el-form-item label="登录IP" prop="ip">
@@ -10,13 +10,13 @@
      </el-form-item>
      <el-form-item label="服务器IP" prop="serverIp">
        <el-input v-model="searchForm.serverIp" placeholder="请输入服务器IP" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="是否登录成功" prop="success">
      </el-form-item>-->
      <el-form-item label="状态" prop="success">
        <el-select v-model="searchForm.success" placeholder="请选择是否登录状态" clearable @change="search">
          <el-option value="true" label="登录成功"/>
          <el-option value="false" label="登录失败"/>
        </el-select>
      </el-form-item> -->
      </el-form-item>
      <el-form-item label="来源" prop="orgin">
        <el-select v-model="searchForm.orgin" placeholder="请选择登录来源" clearable @change="search">
          <el-option value="0" label="PC登陆"/>
@@ -26,7 +26,7 @@
          <el-option value="4" label="微信小程序"/>
        </el-select>
      </el-form-item>
      <!-- <el-form-item label="登录时间" prop="loginTime">
      <el-form-item label="时间" prop="loginTime">
        <el-date-picker
          v-model="searchDateRange"
          type="datetimerange"
@@ -36,7 +36,7 @@
          end-placeholder="结束时间"
          @change="handleSearchTimeChange"
        ></el-date-picker>
      </el-form-item> -->
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button :loading="isWorking.export" @click="exportExcel">导出</el-button>
server/src/main/java/doumeemes/api/system/SystemDictController.java
server/src/main/resources/application-standardPro.yml
@@ -6,7 +6,6 @@
      timeout: PT3H  #表示12小时
spring:
  # æ•°æ®æºé…ç½®
  datasource:
    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/doumee_mes_standard_pro?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8