Mr.Shi
2023-09-06 e065047450407e9b0448e2b3e7786f8959f35cf9
小程序
已添加1个文件
已修改2个文件
406 ■■■■■ 文件已修改
minipro_standard/common/config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/components/multipleMaterial.vue 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
minipro_standard/common/config.js
@@ -1,8 +1,8 @@
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: 'https://dmtest.ahapp.net/doumeeplant_api',
    // 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+)*$/,
    positiveInteger: /^[0-9]*[1-9][0-9]*$/,
minipro_standard/pages_adjust/components/multipleMaterial.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,312 @@
<template>
    <u-popup :show="show" :round="10" closeable @close="show = false">
        <view class="material-content bbox p30 rp">
            <view class="tc b f24 c2 mb20">选择物料</view>
            <v-Search @searchInput="searchInput" @submit="submit" :isShow="false" placeholder="搜索物料名称/编码" />
            <div class="content_total">共{{form.total}}条数据</div>
            <view class="scroll-content">
                <!-- refresher-enabled="true"
                :refresher-triggered="refreshing"
                @refresherrefresh="onRefresh" -->
                <scroll-view
                scroll-y="true"
                @scrolltolower="loadMore">
                    <view v-for="(item1, index) in list" :key="index" class="flex mb20" @click="jump(index)">
                        <view class="img36 mr20 pt10">
                            <u-checkbox-group style="display: block;" name="">
                                <u-checkbox :checked="item1.isActive"></u-checkbox>
                            </u-checkbox-group>
                        </view>
                        <view class="fx1">
                            <div class="page_content_title_top">
                                <span>{{ item1.materialName + ' | ' + item1.materialCode }}</span>
                            </div>
                            <div class="page_content_title_bottom">
                                <span class="green" v-if="item1.qualityType == 0">
                                    åˆæ ¼
                                    <text class="c1" decode>{{ splite }}</text>
                                </span>
                                <span class="orange" v-else-if="item1.qualityType == 1">
                                    ä¸è‰¯
                                    <text class="c1" decode>{{ splite }}</text>
                                </span>
                                <span class="red" v-else-if="item1.qualityType == 2">
                                    æŠ¥åºŸ
                                    <text class="c1" decode>{{ splite }}</text>
                                </span>
                                <span v-else>
                                    -
                                    <text class="c1" decode>{{ splite }}</text>
                                </span>
                                <span>
                                    {{item1.procedureName ? item1.procedureName : '-'}}
                                    <text class="c1" decode>{{ splite }}</text>
                                </span>
                                <span>{{item1.batch ? item1.batch : '-'}}</span>
                            </div>
                            <div class="mt20 plr25 ptb20 bg_f7 f26">
                                <div class="c2 mb10"><span class="c6">货位:</span>{{ item1.locationName }}</div>
                                <div class="c2"><span class="c6">数量:</span>{{ item1.num }}{{ item1.unitName }}</div>
                            </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> -->
            </view>
            <view style="height: 98rpx;"></view>
            <!-- <view class="">
                <u-safe-bottom></u-safe-bottom>
            </view> -->
            <view class="fixedBottom bottom cY">
                <view class="fx1 bbox plr30">
                    <u-checkbox-group style="display: block;" name="" @change="selectAll()">
                        <u-checkbox :checked="isAll" label="全选"></u-checkbox>
                    </u-checkbox-group>
                </view>
                <view class="submit sbtn_green bbox tc" @click="submitAction">{{ `提交(${totalNum})`}}</view>
            </view>
        </view>
    </u-popup>
</template>
<script>
    import vSearch from '@/components/Search.vue'
    import { choiceStockListPage } from '@/util/api/agencyAPI'
    export default {
        name: "selectMaterial",
        components: {
            vSearch
        },
        data() {
            return {
                show: false,
                splite: '&nbsp;|&nbsp;',
                form: {
                    capacity: 50,
                    page: 0,
                    total: 0,
                    smodelLabel: '',
                    categoryId: ''
                },
                list: [],
                loading: false,
                finished: false,
                refreshing: false,
                total: 0
            };
        },
        props: {
            warehouseId: {
                type: String,
                default: ''
            },
            warehouseQualityType: {
                type: String,
                default: ''
            },
            selected: {
                type: Array,
                default: []
            }
        },
        computed: {
            all() {
                for (let i = 0; i < this.list.length; i++) {
                    if (!this.list[i].isActive) {
                        return false
                    }
                }
                return true
            },
            totalNum() {
                let num = 0;
                this.list.forEach(item => {
                    if (item.isActive) {
                        num += 1
                    }
                })
                return num;
            }
        },
        methods: {
            open() {
                this.show = true
                this.refreshing = false
                this.finished = false
                this.list = []
                this.form.page = 0
                this.form.total = 0
                this.loadData()
            },
            jump(index) {
                this.list.forEach((item, i) => {
                    if (index === i) {
                        item.isActive = !item.isActive
                    }
                })
            },
            // æœç´¢æäº¤
            submit() {
                this.form.page = 0
                this.finished = false
                this.list = []
                this.onLoad()
            },
            // æœç´¢æ¡†
            searchInput(data) {
                this.form.page = 0
                this.finished = false
                this.list = []
                this.form.smodelLabel = data
                this.onLoad()
            },
            loadData() {
                if (!this.finished) {
                    this.loading = true;
                    this.form.page = this.form.page += 1
                    choiceStockListPage({
                        capacity: this.form.capacity,
                        page: this.form.page,
                        model: {
                            warehouseId: this.warehouseId,
                            warehouseQualityType: this.warehouseQualityType,
                            ids: this.selected.length > 0 ? this.selected.join(',') : ''
                        }
                    }).then(res => {
                        if (this.refreshing) {
                            this.list = []
                            this.refreshing = false;
                        }
                        this.loading = false;
                        if (res.code === 200 && res.data.records && res.data.records.length !== 0) {
                            this.form.total = res.data.total
                            res.data.records.forEach(element => {
                                element.isActive = false
                            })
                            this.list.push(...res.data.records)
                        } else {
                            this.finished = true;
                        }
                    }).catch(err => {
                        this.loading = false;
                        this.finished = true;
                        if (this.refreshing) {
                            this.list = []
                            this.refreshing = false;
                        }
                    })
                }
            },
            loadMore() {
                this.pages.page += 1
                this.loadData()
            },
            onRefresh() {
                if (this.refreshing) return
                this.refreshing = true;
                this.pages.page = 1
                this.loadData()
            },
            selectAll() {
                this.list.forEach(element => {
                    element.isActive = this.all
                })
            },
            submitAction () {
                this.show = false
                let arr = []
                this.list.forEach(element => {
                    if (element.isActive) {
                        arr.push(element)
                    }
                })
                this.$emit('value', arr)
            }
        }
    }
</script>
<style lang="scss" scoped>
    .material-content {
        display: flex;
        flex-direction: column;
        height: 1200rpx;
        box-sizing: border-box;
        .scroll-content {
            height: calc(1100rpx - env(safe-area-inset-bottom));
            overflow: scroll;
        }
    }
    .content_total {
        margin-top: 20rpx;
        margin-bottom: 20rpx;
        // padding: 24rpx 30rpx;
        // background: #F7F7F7;
        font-size: 24rpx;
        font-weight: 400;
        color: #666666;
    }
    .page_content_title_top {
        display: flex;
        align-items: center;
        justify-content: space-between;
        span {
            &:nth-child(1) {
                font-size: 30rpx;
                font-weight: 500;
                color: #222222;
            }
            &:nth-child(2) {
                flex-shrink: 0;
                font-size: 24rpx;
                font-weight: 400;
                color: #333333;
                // span {
                //     font-size: 24rpx;
                //     color: $nav-color;
                // }
            }
        }
    }
    .page_content_title_bottom {
        margin-top: 24rpx;
        span {
            font-size: 24rpx;
            font-weight: 400;
            color: #666666;
        }
    }
    .page_content_title {
        display: flex;
        flex-direction: column;
        margin-bottom: 10rpx;
    }
    .bottom {
        height: 98rpx;
        .submit {
            width: 272rpx;
            height: 98rpx;
            line-height: 98rpx;
        }
    }
</style>
minipro_standard/pages_adjust/pages/newTransfer/newTransfer.vue
@@ -29,26 +29,25 @@
        </view>
        <view class="zk_wl">
            <template v-if="view.MaterialList.length > 0">
                <van-swipe-cell v-for="(item, i) in view.MaterialList" :key="i">
                    <view class="zk_wl_item">
                <view class="zk_wl_item" v-for="(item, i) in view.MaterialList" :key="i">
                    <image class="shanchu" src="@/static/chuku_ic_delete@2x.png" mode="widthFix" @click="dele(i)"></image>
                        <text>{{item.materialName}}|{{item.materialCode}}</text>
                        <text>
                            <text class="green" v-if="item.qualityType === '0'">合格</text>
                            <text class="yellow" v-if="item.qualityType === '1'">不良</text>
                            <text class="red" v-if="item.qualityType === '2'">报废</text>
                            | <text>{{item.procedureName ? item.procedureName : '-'}} | </text>
                        <text class="green" v-if="item.qualityType === '0'">合格&nbsp;|</text>
                        <text class="yellow" v-if="item.qualityType === '1'">不良&nbsp;|</text>
                        <text class="red" v-if="item.qualityType === '2'">报废&nbsp;|</text>
                        <text>{{item.procedureName ? item.procedureName : '-'}}&nbsp;|&nbsp;</text>
                            <text>{{item.batch ? item.batch : '-'}}</text>
                        </text>
                        <text>货位:{{item.locationName}}</text>
                        <view class="zk_wl_item_num">
                            <text>转出数量({{item.unitName}}):</text>
                        <text>货位:{{item.locationName}}</text>
                        <view class="zk_wl_item_input">
                            <text>数量:</text>
                            <input type="number" v-model="item.total" placeholder="0" />
                            <text>{{item.unitName}}</text>
                        </view>
                    </view>
                    <template #right>
                        <van-button square type="danger" style="height: 100%;" text="删除" @click="dele(i)" />
                    </template>
                </van-swipe-cell>
                </view>
            </template>
            <view class="zk_wl_w" v-else>
                <text>暂无数据</text>
@@ -63,7 +62,12 @@
        <!-- é€‰æ‹©ä»“库 -->
        <Warehouse :show="view.Warehouse" @close="view.Warehouse = false" @value="getValue" />
        <!-- é€‰æ‹©ç‰©æ–™ -->
        <SelectMultipleMaterial ref="SelectMultipleMaterial" />
        <multipleMaterial
        :warehouseId="data.exWarehouseId.toString()"
        :warehouseQualityType="view.warehouseQualityType"
        :selected="view.MaterialList.map(item => item.id)"
        @value="getValueWL"
        ref="multipleMaterial" />
        <!--  å•据类型  -->
        <u-picker :show="view.type" :columns="view.documentTypeDate" keyName="name" @cancel="onCancel" @confirm="onConfirm"></u-picker>
    </view>
@@ -72,13 +76,13 @@
<script>
    import { setTime } from '@/util/utils.js'
    import { documentType } from '@/util/constData.js'
    import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
    import multipleMaterial from '../../components/multipleMaterial.vue'
    import Warehouse from '../../components/Warehouse.vue'
    import { createZK } from '@/util/api/agencyAPI'
    
    export default {
        components: {
            SelectMultipleMaterial,
            multipleMaterial,
            Warehouse
        },
        data() {
@@ -117,17 +121,21 @@
                            { name: '废品入库', id: 30 }
                        ]
                    ],
                    warehouseQualityType: '',
                    customFieldName: {
                        text: 'name'
                    }
                    warehouseQualityType: ''
                }
            };
        },
        methods: {
            // åˆ é™¤ç‰©æ–™
            dele(i) {
                this.view.MaterialList.splice(i, 1)
            },
            // ä»“库回调
            getValue(val) {
                if (this.view.status === 'c') {
                    if (this.data.exWarehouseId !== val.id) {
                        this.view.MaterialList = []
                    }
                    this.data.exWarehouse = val.name
                    this.data.exWarehouseId = val.id
                    this.data.outUserId = val.managerId
@@ -138,6 +146,14 @@
                    this.view.warehouseQualityType = val.tmodel.label
                }
                this.view.Warehouse = false
            },
            // ç‰©æ–™å›žè°ƒ
            getValueWL(val) {
                val.forEach(element => {
                    element.total = element.num
                })
                this.view.MaterialList.push(...val)
                this.view.Material = false
            },
            // ç¡®è®¤å•据类型
            onConfirm(val) {
@@ -178,8 +194,8 @@
                        proceduresId: element.procedureId,
                        inLocationId: null,
                        outLocationId: element.locationId,
                        inWarehouseId: data.exWarehouseId,
                        outWarehouseId: data.warehousingWarehouse
                        inWarehouseId: this.data.exWarehouseId,
                        outWarehouseId: this.data.warehousingWarehouse
                    })
                })
                createZK({
@@ -194,7 +210,7 @@
                    wtransferDetailBeanList
                }).then(res => {
                    if (res.code === 200) {
                        uni.showToast({ title: '创建成功!', icon: 'none', duration: 2000 });
                        uni.showToast({ title: '创建成功!', icon: 'success', duration: 2000 });
                        setTimeout(() => {
                            uni.navigateBack({ delta: 1 });
                        }, 2000)
@@ -221,7 +237,7 @@
                            // const { selected } = Material.value
                            // Material.value.selected = arr
                            // view.Material = true
                            this.$refs.SelectMultipleMaterial.open({})
                            this.$refs.multipleMaterial.open()
                        } else {
                            uni.showToast({ title: '请先选择入库仓库', icon: 'none', duration: 2000 });
                        }
@@ -314,6 +330,15 @@
                flex-direction: column;
                padding: 30rpx;
                border-bottom: 1rpx solid #e2e2e2;
                position: relative;
                .shanchu {
                    width: 48rpx;
                    height: 48rpx;
                    position: absolute;
                    top: 0;
                    right: 0;
                }
                .zk_wl_item_num {
                    display: flex;
@@ -321,15 +346,27 @@
                    justify-content: space-between;
                    margin-top: 30rpx;
                    .zk_wl_item_input {
                        display: flex;
                        align-items: center;
                    text {
                        font-size: 28rpx;
                            font-size: 26rpx;
                            font-family: PingFangSC-Regular, PingFang SC;
                        font-weight: 400;
                        color: #222222;
                            color: #666666;
                        }
                    }
                    text {
                        font-size: 26rpx;
                        font-family: PingFangSC-Regular, PingFang SC;
                        font-weight: 400;
                        color: #333333;
                        margin: 0 !important;
                    }
                    input {
                        width: 180rpx;
                        width: 140rpx;
                        height: 60rpx;
                        background: #FFFFFF;
                        border-radius: 8rpx;
@@ -384,6 +421,7 @@
            position: fixed;
            bottom: 0;
            left: 0;
            z-index: 999;
            padding-bottom: 68rpx;
            display: flex;
            align-items: center;