ll
liukangdong
2025-01-24 e597d2905326e907f4ff5ad3665b882239b6fb11
ll
已修改8个文件
1158 ■■■■ 文件已修改
admin/src/views/stock/components/AssetSel.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/stock/components/OutEdit.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/stock/record.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/manifest.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/inventory/detail.vue 1012 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/inventory/index.vue 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/login.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/workOrder/wait.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/stock/components/AssetSel.vue
@@ -55,6 +55,7 @@
        total: 0
      },
      isOut: false,
      warehouseId: false,
      list: [],
      selList: [],
      cateList: [],
@@ -79,7 +80,7 @@
      this.selList = val
    },
    getList(page) {
      const { pagination, searchForm, isOut } = this
      const { pagination, searchForm, isOut, warehouseId } = this
      this.listLoading = true
      if(page){pagination.page = page}
      console.log('isOut', isOut);
@@ -88,7 +89,7 @@
      fn({
        capacity: pagination.pageSize,
        page: pagination.page,
        model: {...searchForm,status: 0}
        model: {...searchForm,status: 0, warehouseId}
      }).then((res) => {
        this.listLoading = false
        this.list = res.records
admin/src/views/stock/components/OutEdit.vue
@@ -4,7 +4,7 @@
    <el-form :model="param" ref="form" :rules="rules">
      <div class="df_ac">
        <el-form-item class="w3" label="出库仓库" prop="warehouseId">
          <el-select :disabled="param.id" v-model="param.warehouseId" placeholder="请选择">
          <el-select :disabled="param.id" @change="changeStore" v-model="param.warehouseId" placeholder="请选择">
            <el-option v-for="op in storeList" :key="op.id" :label="op.name" :value="op.id"></el-option>
          </el-select>
        </el-form-item>
@@ -116,6 +116,9 @@
        }
      })
    },
    changeStore() {
      this.list = []
    },
    initData() {
      this.$set(this.param, 'doneDate', dayjs().format('YYYY-MM-DD'))
      getStoreList({ capacity: 9999, page: 1, model: {status: 0} }).then(res => {
@@ -139,10 +142,12 @@
    },
    handleOpenMaterial() {
      if(!this.param.warehouseId) return Message.warning('请先选择出库仓库')
      this.isShowSel = true
      this.$nextTick(() => {
        this.$refs.AssetSelRef.isShowModal = true
        this.$refs.AssetSelRef.isOut = true
        this.$refs.AssetSelRef.warehouseId = this.param.warehouseId
        this.$refs.AssetSelRef.getList()
        console.log('-----');
        
admin/src/views/stock/record.vue
@@ -142,7 +142,7 @@
        this.isShowOutDetail = true
        this.$nextTick(() => {
          this.$refs.OutDetailRef.visible = true
          this.$refs.OutDetailRef.getDetail(row.outInBoundId)
          this.$refs.OutDetailRef.getDetail(item.outInBoundId)
        })
      }
    },
h5/manifest.json
@@ -131,7 +131,7 @@
                    // "target" : "http://172.20.10.7:10010", // 代理服务器域名或IP地址
                    // "target" : "http://192.168.0.163:10010", // 代理服务器域名或IP地址
                    // "target" : "http://10.50.250.253:8088/gateway_interface", // 代理服务器域名或IP地址
                    "target" : "https://zhcg.fnwtzx.com/gateway_interface", // 代理服务器域名或IP地址
                    "target" : "https://dmtest.ahapp.net/gateway_interface", // 代理服务器域名或IP地址
                    "changeOrigin" : true, // 允许跨域 
                    "pathRewrite" : {
                        "^/gateway_interface" : ""
h5/pages/inventory/detail.vue
@@ -2,42 +2,42 @@
    <view class="main_app">
        <view class="main_head">
            <view class="tabs">
                <view class="tab" :class="{active: activeTab == 0}" @click="tabsClick(0)">
                    <text>未盘({{info.unFinishAmount || 0}})</text>
                <view class="tab" :class="{ active: activeTab == 0 }" @click="tabsClick(0)">
                    <text>未盘({{ info.unFinishAmount || 0 }})</text>
                    <text class="border"></text>
                </view>
                <view class="tab" :class="{active: activeTab == 1}" @click="tabsClick(1)">
                    <text>已盘({{info.finishAmount || 0}})</text>
                <view class="tab" :class="{ active: activeTab == 1 }" @click="tabsClick(1)">
                    <text>已盘({{ info.finishAmount || 0 }})</text>
                    <text class="border"></text>
                </view>
            </view>
            <view class="head_wrap">
                <view class="search_wrap">
                    <image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
                    <input v-model="param.materialCode" @confirm="handleQuery" type="text" placeholder="搜索资产编码/资产名称"
                    <input v-model="param.materialCode" @confirm="handleQuery()" type="text" placeholder="搜索物料编码/物料名称"
                        placeholder-class="placeholder9" />
                </view>
            </view>
            <!--  -->
            <scroll-view scroll-y="true" class="scroll_Y" @scrolltolower="scrolltolower">
                <view class="list">
                    <view class="item" v-for="item in list">
                        <view class="line">
                            <view class="title">{{item.materialName}}</view>
                    <view class="item" v-for="item in list" @click="itemClick(item)">
                        <view class="head">
                            <view class="title">{{ item.materialName }}</view>
                            <view class="status red" v-if="item.type == 1">盘亏</view>
                            <view class="status primaryColor" v-if="item.type == 2">盘盈</view>
                        </view>
                        <view class="line">资产编码:{{item.materialCode}}</view>
                        <view class="line">条码:{{item.materialQrcode}}</view>
                        <view class="line">规格型号:{{item.materialAttr}}</view>
                        <view class="line">
                            <view class="">账面数量:{{item.stock}}{{item.materialUnitName}}</view>
                            <view v-if="item.status == 0" @click="openEheck(item)" class="btn">执行盘点</view>
                        <view class="line">物料编码:{{ item.materialCode }}</view>
                        <view class="line">条码:{{ item.materialQrcode }}</view>
                        <view class="line">规格型号:{{ item.materialAttr }}</view>
                        <view class="line" v-if="item.status == 0">
                            <view class="">账面数量:{{ item.stock }}{{ item.materialUnitName }}</view>
                            <view @click.stop="openEheck(item)" class="btn">执行盘点</view>
                        </view>
                        <view class="static" v-if="item.status == 1">
                            <view class="ite">
                                <view class="la">账面数量:</view>
                                <view class="val">{{item.stock}}</view>
                                <view class="val">{{ item.stock }}</view>
                            </view>
                            <view class="spi"></view>
                            <view class="ite">
@@ -45,18 +45,18 @@
                                <view class="val" :class="{
                                    primaryColor: item.type == 2,
                                    red: item.type == 1,
                                }">{{item.actStock}}</view>
                                }">{{ item.actStock }}</view>
                            </view>
                        </view>
                    </view>
                </view>
            </scroll-view>
            <view class="footer_btn">
                <view @click="openQrcode" v-if="activeTab== 0" class="sweep">
                <view @click="openQrcode" v-if="activeTab == 0 && info.status == 1" class="sweep">
                    <image src="@/static/side/ic_saoma@2x.png" mode=""></image>
                    <view class="">扫码盘点</view>
                </view>
                <view @click="showTip = true" v-if="activeTab== 1" class="sweep sub_result">
                <view @click="showTip = true" v-if="activeTab == 1 && info.status == 1" class="sweep sub_result">
                    <view class="">提交盘点结果</view>
                </view>
            </view>
@@ -64,39 +64,41 @@
            <u-popup :show="showModal" :round="10" @close="showModal = false" closeOnClickOverlay>
                <view class="modal_wrap">
                    <view class="modal_title">执行盘点</view>
                    <view class="title">{{modalForm.materialName}}</view>
                    <view class="item">资产编码:{{modalForm.materialCode}}</view>
                    <view class="item">条码:{{modalForm.materialQrcode}}</view>
                    <view class="item">品牌:{{modalForm.materialBrand}}</view>
                    <view class="item">规格型号:{{modalForm.materialAttr}}</view>
                    <view class="item">所在仓库:{{modalForm.warehouseName}}</view>
                    <view class="title">{{ modalForm.materialName }}</view>
                    <view class="item">物料编码:{{ modalForm.materialCode }}</view>
                    <view class="item">条码:{{ modalForm.materialQrcode }}</view>
                    <view class="item">品牌:{{ modalForm.materialBrand }}</view>
                    <view class="item">规格型号:{{ modalForm.materialAttr }}</view>
                    <view class="item">所在仓库:{{ modalForm.warehouseName }}</view>
                    <view class="content">
                        <view class="line">
                            <view class="la">账面数量:</view>
                            <view class="val">
                                <view class="wrap">{{modalForm.stock}}</view>
                                <view class="unit">{{modalForm.materialUnitName}}</view>
                                <view class="wrap">{{ modalForm.stock }}</view>
                                <view class="unit">{{ modalForm.materialUnitName }}</view>
                            </view>
                        </view>
                        <view class="line">
                            <view class="la">盘点数量:</view>
                            <view class="val">
                                <view class="wrap">
                                    <image v-if="!modalForm.actStock" src="@/static/side/btn_jian_grey@2x.png" mode=""></image>
                                    <image v-else @click="changeAct(-1)" src="@/static/side/btn_jian@3x.png" mode=""></image>
                                    <input type="number" v-model="modalForm.actStock"></input>
                                    <image @click="changeAct(1)" src="@/static/side/btn_jia@3x.png" mode=""></image>
                                <view class="wrap">
                                    <template v-if="!modalForm.handleType">
                                        <image v-if="!modalForm.actStock" src="@/static/side/btn_jian_grey@2x.png" mode=""></image>
                                        <image v-else @click="changeAct(-1)" src="@/static/side/btn_jian@3x.png" mode=""></image>
                                    </template>
                                    <input :disabled="Boolean(modalForm.handleType && modalForm.handleType == 'detail')" type="digit" v-model="modalForm.actStock"></input>
                                    <image v-if="!modalForm.handleType" @click="changeAct(1)" src="@/static/side/btn_jia@3x.png" mode=""></image>
                                </view>
                                <view class="unit">{{modalForm.materialUnitName}}</view>
                                <view class="unit">{{ modalForm.materialUnitName }}</view>
                            </view>
                        </view>
                    </view>
                    <view class="remark">
                        <view class="la">备注:</view>
                        <textarea v-model="modalForm.remark" placeholder="请填写备注" :maxlength="-1" placeholder-class="placeholder9"
                        <textarea v-model="modalForm.remark" :disabled="Boolean(modalForm.handleType && modalForm.handleType == 'detail')" placeholder="请填写备注" :maxlength="-1" placeholder-class="placeholder9"
                            cols="30" rows="10"></textarea>
                    </view>
                    <view class="btns">
                    <view v-if="!modalForm.handleType" class="btns">
                        <view class="btn" @click="showModal = false">取消</view>
                        <view class="btn sub" @click="onSubmit">提交</view>
                    </view>
@@ -125,541 +127,557 @@
</template>
<script>
    import {
        ywStocktakingDetail,
        getYwStocktakingRecord,
        takingDataOpen,
        ywStocktaFinishById
    } from '@/api'
    import {
        Html5Qrcode
    } from 'html5-qrcode';
    export default {
        data() {
            return {
                param: {},
                info: {},
                id: '',
                activeTab: 0,
import {
    ywStocktakingDetail,
    getYwStocktakingRecord,
    takingDataOpen,
    ywStocktaFinishById
} from '@/api'
import {
    Html5Qrcode
} from 'html5-qrcode'
export default {
    data() {
        return {
            param: {},
            info: {},
            id: '',
            activeTab: 0,
                list: [],
                page: 0,
                total: 0,
            list: [],
            page: 0,
            total: 0,
                showModal: false,
                showTip: false,
                modalForm: {},
            showModal: false,
            showTip: false,
            modalForm: {},
                html5Qrcode: null,
                isScaning: false,
            html5Qrcode: null,
            isScaning: false,
            };
        }
    },
    onLoad(op) {
        this.id = op.id
        this.getDetail()
        this.getList()
    },
    methods: {
        itemClick(item) {
            if(item.status == 1){
                this.showItem(item)
            }
        },
        showItem(item){
            this.showModal = true
            this.modalForm = {
                ...item,
                handleType: this.info.status != 1 ? 'detail' : ''
            }
            console.log('modalForm', this.modalForm);
        },
        onLoad(op) {
            this.id = op.id
            this.getDetail()
        getDetail() {
            const {
                id
            } = this
            ywStocktakingDetail(id).then(res => {
                this.info = res.data
            })
        },
        handleQuery(str) {
            this.list = []
            this.page = 1
            this.getList(str)
        },
        getList(str) {
            const {
                page,
                activeTab,
                id,
                param
            } = this
            getYwStocktakingRecord({
                capacity: 20,
                page,
                model: {
                    status: str || activeTab,
                    stocktakingId: id,
                    ...param
                }
            }).then(res => {
                this.list = [...this.list, ...res.data.records]
                this.total = res.data.total
                if (this.param.materialQrcode && this.list.length == 1) {
                    this.openEheck(this.list[0])
                    this.$set(this.param, 'materialQrcode', null)
                }
            })
        },
        scrolltolower() {
            const {
                total,
                list
            } = this
            if (list.length < total) {
                this.page = this.page + 1
                this.getList()
            } else {
                this.showToast('暂无更多数据')
            }
        },
        openEheck(item) {
            this.modalForm = {
                ...item
            }
            this.showModal = true
        },
        onSubmit() {
            const {
                modalForm
            } = this
            if (!modalForm.actStock) return this.showToast('请输入正确的盘点数量')
            takingDataOpen({
                ...modalForm
            }).then(res => {
                if (res.code == 200) {
                    this.showToast('提交成功')
                    this.handleQuery()
                    this.getDetail()
                    this.showModal = false
                }
            })
        },
        changeAct(val) {
            const actStock = this.modalForm.actStock || 0
            this.$set(this.modalForm, 'actStock', actStock + val)
        },
        tabsClick(val) {
            this.activeTab = val
            this.page = 0
            this.list = []
            this.getList()
        },
        methods: {
            checkSub() {
                const {
                    modalForm
                } = this
                // let str = modalForm.unFinishAmount > 0 ? '还有三项物料'
            },
            getDetail() {
                const {
                    id
                } = this
                ywStocktakingDetail(id).then(res => {
                    this.info = res.data
        tipSub() {
            const { info } = this
            ywStocktaFinishById(info.id).then(res => {
                this.showTip = false
                uni.navigateBack()
            })
                })
            },
            handleQuery() {
                this.list = []
                this.page = 1
                this.getList()
            },
            getList() {
                const {
                    page,
                    activeTab,
                    id,
                    param
                } = this
                getYwStocktakingRecord({
                    capacity: 20,
                    page,
                    model: {
                        status: activeTab,
                        stocktakingId: id,
                        ...param
                    }
                }).then(res => {
                    this.list = [...this.list, ...res.data.records]
                    this.total = res.data.total
                    if(this.param.materialQrcode && this.list.length == 1){
                        this.openEheck(this.list[0])
                        this.$set(this.param, 'materialQrcode', null)
                    }
                })
            },
            scrolltolower() {
                const {
                    total,
                    list
                } = this
                if (list.length < total) {
                    this.page = this.page + 1
                    this.getList()
                } else {
                    this.showToast('暂无更多数据')
                }
            },
            openEheck(item) {
                this.modalForm = {
                    ...item
                }
                this.showModal = true
            },
            onSubmit() {
                const {
                    modalForm
                } = this
                if (!modalForm.actStock) return this.showToast('请输入正确的盘点数量')
                takingDataOpen({
                    ...modalForm
                }).then(res => {
                    if (res.code == 200) {
                        this.showToast('提交成功')
                        this.handleQuery()
                        this.getDetail()
                        this.showModal = false
                    }
                })
            },
            changeAct(val) {
                const actStock = this.modalForm.actStock || 0
                this.$set(this.modalForm, 'actStock', actStock + val)
            },
            tabsClick(val) {
                this.activeTab = val
                this.page = 0
                this.list = []
                this.getList()
            },
            tipSub() {
                const { info } = this
                ywStocktaFinishById(info.id).then(res => {
                    this.showTip = false
                    uni.navigateBack()
                })
            },
            openQrcode() {
                this.isScaning = true;
                Html5Qrcode.getCameras().then((devices) => {
                    if (devices && devices.length) {
                        this.html5Qrcode = new Html5Qrcode('reader');
                        this.html5Qrcode.start({
                                facingMode: 'environment'
                            }, {
                                focusMode: 'continuous', //设置连续聚焦模式
                                fps: 5, //设置扫码识别速度
                                qrbox: 280 //设置二维码扫描框大小
                            },
                            (decodeText, decodeResult) => {
                                if (decodeText) { //这里decodeText就是通过扫描二维码得到的内容
                                    this.stopScan()
                                    this.$set(this.param, 'materialQrcode', decodeText)
                                    this.handleQuery()
                                }
                            },
                            (err) => {
                                // console.log(err);  //错误信息
        },
        openQrcode() {
            this.isScaning = true
            Html5Qrcode.getCameras().then((devices) => {
                if (devices && devices.length) {
                    this.html5Qrcode = new Html5Qrcode('reader')
                    this.html5Qrcode.start({
                        facingMode: 'environment'
                    }, {
                        focusMode: 'continuous', //设置连续聚焦模式
                        fps: 5, //设置扫码识别速度
                        qrbox: 280 //设置二维码扫描框大小
                    },
                        (decodeText, decodeResult) => {
                            if (decodeText) { //这里decodeText就是通过扫描二维码得到的内容
                                this.stopScan()
                                this.$set(this.param, 'materialQrcode', decodeText)
                                this.handleQuery('null')
                            }
                        );
                    }
                });
            },
            stopScan() {
                console.log('停止扫码')
                this.isScaning = false;
                if (this.html5Qrcode) {
                    this.html5Qrcode.stop();
                        },
                        (err) => {
                            // console.log(err);  //错误信息
                        }
                    )
                }
            })
        },
        stopScan() {
            console.log('停止扫码')
            this.isScaning = false
            if (this.html5Qrcode) {
                this.html5Qrcode.stop()
            }
        }
    }
}
</script>
<style lang="scss">
    .main_app {
        padding: 0 30rpx;
        overflow: hidden;
    }
.main_app {
    padding: 0 30rpx;
    overflow: hidden;
}
    .tabs {
.tabs {
    display: flex;
    width: 750rpx;
    margin: 12rpx -30rpx 20rpx;
    border-bottom: 1rpx solid #E5E5E5;
    .tab {
        font-size: 30rpx;
        color: #666666;
        flex: 1;
        display: flex;
        width: 750rpx;
        margin: 12rpx -30rpx 20rpx;
        border-bottom: 1rpx solid #E5E5E5;
        flex-direction: column;
        align-items: center;
        justify-content: flex-end;
        height: 72rpx;
        .tab {
            font-size: 30rpx;
            color: #666666;
            flex: 1;
        .name {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-end;
            height: 72rpx;
            .name {
                display: flex;
                align-items: center;
            }
            .border {
                width: 54rpx;
                height: 6rpx;
                background-color: #fff;
                border-radius: 3rpx;
                margin-top: 12rpx;
            }
        }
        .active {
            font-weight: 600;
            font-size: 32rpx;
            color: #222222;
        .border {
            width: 54rpx;
            height: 6rpx;
            background-color: #fff;
            border-radius: 3rpx;
            margin-top: 12rpx;
        }
    }
            .border {
                background-color: $primaryColor;
            }
    .active {
        font-weight: 600;
        font-size: 32rpx;
        color: #222222;
        .border {
            background-color: $primaryColor;
        }
    }
    .head_wrap {
}
.head_wrap {
    display: flex;
    align-items: center;
    margin-bottom: 36rpx;
    .search_wrap {
        display: flex;
        align-items: center;
        margin-bottom: 36rpx;
        width: 100%;
        height: 76rpx;
        background: #F7F7F7;
        border-radius: 38rpx;
        padding-left: 30rpx;
        .search_wrap {
            display: flex;
            align-items: center;
            width: 100%;
            height: 76rpx;
            background: #F7F7F7;
            border-radius: 38rpx;
            padding-left: 30rpx;
            input {
                flex: 1;
            }
            .search {
                width: 28rpx;
                height: 28rpx;
            }
        input {
            flex: 1;
        }
    }
    .scroll_Y {
        height: calc(100vh - 350rpx);
    }
    .list {
        .item {
            border-bottom: 1rpx solid #E5E5E5;
            padding-bottom: 24rpx;
            margin-bottom: 16rpx;
            .title {
                font-weight: 600;
                font-size: 34rpx;
                color: #222222;
                margin-bottom: 10rpx;
            }
            .line {
                height: 60rpx;
                display: flex;
                align-items: center;
                justify-content: space-between;
                color: #666666;
                .btn {
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    height: 60rpx;
                    padding: 0 20rpx;
                    background: #0068FF;
                    box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(0, 104, 255, 0.3);
                    border-radius: 30rpx;
                    font-size: 26rpx;
                    color: #FFFFFF;
                }
            }
            .static {
                display: flex;
                height: 84rpx;
                background: #F7F7F7;
                font-size: 30rpx;
                margin-top: 12rpx;
                padding: 16rpx 0;
                .spi {
                    border: 1rpx solid #E5E5E5;
                }
                .ite {
                    flex: 1;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    .val {
                        font-weight: 500;
                    }
                }
            }
        .search {
            width: 28rpx;
            height: 28rpx;
        }
    }
    .footer_btn {
        padding: 20rpx 40rpx 0;
        border-top: 1px solid #e5e5e5;
        width: 750rpx;
        margin: 0 -30rpx;
}
        .sweep {
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 32rpx;
            font-weight: 500;
            width: 670rpx;
            height: 88rpx;
            background: #0068FF;
            box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0, 104, 255, 0.3);
            border-radius: 44rpx;
            color: #FFFFFF;
        }
.scroll_Y {
    height: calc(100vh - 350rpx);
}
        .sub_result {
            background-color: #fff;
            color: #FF0000;
            border: 1rpx solid #FF0000;
            box-shadow: none
        }
.list {
        image {
            width: 32rpx;
            height: 32rpx;
            margin-right: 6rpx;
        }
    }
    .modal_wrap {
        padding: 36rpx 30rpx;
        .modal_title {
            font-weight: 500;
            font-size: 32rpx;
            color: #222222;
            margin-bottom: 40rpx;
            text-align: center;
        }
    .item {
        border-bottom: 1rpx solid #E5E5E5;
        padding-bottom: 24rpx;
        margin-bottom: 16rpx;
        .title {
            font-weight: 600;
            font-size: 34rpx;
            color: #222222;
            margin-bottom: 10rpx;
            flex: 1;
        }
        .item {
            font-size: 28rpx;
            color: #666666;
            height: 56rpx;
        .head{
            display: flex;
            // align-items: center;
            justify-content: space-between;
            color: #666666;
            .status{
                width: 76rpx;
                text-align: right;
                padding-top: 3rpx;
            }
        }
        .line {
            height: 60rpx;
            display: flex;
            align-items: center;
        }
        .content {
            border-top: 1rpx solid #E5E5E5;
            margin-top: 16rpx;
            .line {
                height: 84rpx;
                display: flex;
                align-items: center;
                justify-content: space-between;
                .la {
                    font-weight: 500;
                    font-size: 32rpx;
                    color: #222222;
                }
                .val {
                    display: flex;
                    justify-content: flex-end;
                    align-items: center;
                    flex: 1;
                    .wrap {
                        display: flex;
                        align-items: center;
                        input {
                            width: 120rpx;
                            height: 72rpx;
                            border-radius: 8rpx;
                            border: 2rpx solid #0068FF;
                            margin: 0 16rpx;
                            padding: 0 10rpx;
                            text-align: center;
                        }
                    }
                    .unit {
                        font-size: 30rpx;
                        color: #666666;
                        margin-left: 20rpx;
                    }
                }
                image {
                    width: 72rpx;
                    height: 72rpx;
                }
            }
        }
        .remark {
            margin-top: 16rpx;
            .la {
                font-size: 30rpx;
                color: #222222;
                margin-bottom: 16rpx;
            }
            textarea {
                width: 690rpx;
                height: 240rpx;
                background: #F7F7F7;
                border-radius: 12rpx;
                padding: 10rpx 20rpx;
            }
        }
        .btns {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-top: 80rpx;
            color: #666666;
            .btn {
                width: 336rpx;
                height: 88rpx;
                border-radius: 44rpx;
                border: 2rpx solid $primaryColor;
                display: flex;
                align-items: center;
                justify-content: center;
                font-size: 32rpx;
                color: $primaryColor;
            }
            .sub {
                background-color: $primaryColor;
                color: #fff;
                height: 60rpx;
                padding: 0 20rpx;
                background: #0068FF;
                box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(0, 104, 255, 0.3);
                border-radius: 30rpx;
                font-size: 26rpx;
                color: #FFFFFF;
            }
        }
    }
    .modal_t {
        width: 520rpx;
        text-align: center;
        display: flex;
        flex-direction: column;
        .h1 {
            height: 86rpx;
            font-weight: 500;
            font-size: 32rpx;
            color: #333333;
        .static {
            display: flex;
            align-items: flex-end;
            justify-content: center;
        }
            height: 84rpx;
            background: #F7F7F7;
            font-size: 30rpx;
            margin-top: 12rpx;
            padding: 16rpx 0;
        .content {
            flex: 1;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            padding: 30rpx 0;
        }
            .spi {
                border: 1rpx solid #E5E5E5;
            }
        .btns {
            height: 102rpx;
            display: flex;
            align-items: center;
            border-top: 1rpx solid #E5E5E5;
            .btn {
                height: 102rpx;
            .ite {
                flex: 1;
                display: flex;
                align-items: center;
                justify-content: center;
                border-right: 1rpx solid #E5E5E5;
                font-weight: 400;
                font-size: 32rpx;
                color: #999999;
                &:nth-last-child(1) {
                    border-right: none;
                .val {
                    font-weight: 500;
                }
            }
        }
    }
}
.footer_btn {
    padding: 20rpx 40rpx 0;
    border-top: 1px solid #e5e5e5;
    width: 750rpx;
    margin: 0 -30rpx;
    .sweep {
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 32rpx;
        font-weight: 500;
        width: 670rpx;
        height: 88rpx;
        background: #0068FF;
        box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0, 104, 255, 0.3);
        border-radius: 44rpx;
        color: #FFFFFF;
    }
    .sub_result {
        background-color: #fff;
        color: #FF0000;
        border: 1rpx solid #FF0000;
        box-shadow: none
    }
    image {
        width: 32rpx;
        height: 32rpx;
        margin-right: 6rpx;
    }
}
.modal_wrap {
    padding: 36rpx 30rpx;
    .modal_title {
        font-weight: 500;
        font-size: 32rpx;
        color: #222222;
        margin-bottom: 40rpx;
        text-align: center;
    }
    .title {
        font-weight: 600;
        font-size: 34rpx;
        color: #222222;
    }
    .item {
        font-size: 28rpx;
        color: #666666;
        height: 56rpx;
        display: flex;
        align-items: center;
    }
    .content {
        border-top: 1rpx solid #E5E5E5;
        margin-top: 16rpx;
        .line {
            height: 84rpx;
            display: flex;
            align-items: center;
            justify-content: space-between;
            .la {
                font-weight: 500;
                font-size: 32rpx;
                color: #222222;
            }
            .val {
                display: flex;
                justify-content: flex-end;
                align-items: center;
                flex: 1;
                .wrap {
                    display: flex;
                    align-items: center;
                    input {
                        width: 120rpx;
                        height: 72rpx;
                        border-radius: 8rpx;
                        border: 2rpx solid #0068FF;
                        margin: 0 16rpx;
                        padding: 0 10rpx;
                        text-align: center;
                    }
                }
                .unit {
                    font-size: 30rpx;
                    color: #666666;
                    margin-left: 20rpx;
                }
            }
            .sub {
                color: $primaryColor;
            image {
                width: 72rpx;
                height: 72rpx;
            }
        }
    }
    .reader-box {
        position: fixed;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        background-color: rgba(0, 0, 0, 0.5);
    .remark {
        margin-top: 16rpx;
        .la {
            font-size: 30rpx;
            color: #222222;
            margin-bottom: 16rpx;
        }
        textarea {
            width: 690rpx;
            height: 240rpx;
            background: #F7F7F7;
            border-radius: 12rpx;
            padding: 10rpx 20rpx;
        }
    }
    .reader {
        width: 100%;
        // width: 540rpx;
        // height: 540rpx;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
    .btns {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin-top: 80rpx;
        .btn {
            width: 336rpx;
            height: 88rpx;
            border-radius: 44rpx;
            border: 2rpx solid $primaryColor;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 32rpx;
            color: $primaryColor;
        }
        .sub {
            background-color: $primaryColor;
            color: #fff;
        }
    }
}
.modal_t {
    width: 520rpx;
    text-align: center;
    display: flex;
    flex-direction: column;
    .h1 {
        height: 86rpx;
        font-weight: 500;
        font-size: 32rpx;
        color: #333333;
        display: flex;
        align-items: flex-end;
        justify-content: center;
    }
    .content {
        flex: 1;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        padding: 30rpx 0;
    }
    .btns {
        height: 102rpx;
        display: flex;
        align-items: center;
        border-top: 1rpx solid #E5E5E5;
        .btn {
            height: 102rpx;
            flex: 1;
            display: flex;
            align-items: center;
            justify-content: center;
            border-right: 1rpx solid #E5E5E5;
            font-weight: 400;
            font-size: 32rpx;
            color: #999999;
            &:nth-last-child(1) {
                border-right: none;
            }
        }
        .sub {
            color: $primaryColor;
        }
    }
}
.reader-box {
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: rgba(0, 0, 0, 0.5);
}
.reader {
    width: 100%;
    // width: 540rpx;
    // height: 540rpx;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
</style>
h5/pages/inventory/index.vue
@@ -8,36 +8,39 @@
            </view>
        </view>
        <!--  -->
        <view class="list">
            <view class="item" @click="itemClick(item)" v-for="item in list">
                <image v-if="item.status == 0 || item.status == 1" class="img" src="@/static/side/ic_pandian@2x.png" mode="">
                </image>
                <image v-else class="img" src="@/static/side/ic_pandian_grey@2x.png" mode=""></image>
                <view class="content">
                    <view class="head">
                        <view class="title">{{item.name}}</view>
                        <view class="status" v-if="item.status == 0">未开始</view>
                        <view class="status green" v-if="item.status == 1">盘点中</view>
                        <view class="status gray" v-if="item.status == 2">已完成</view>
                        <view class="status gray" v-if="item.status == 3">已取消</view>
                    </view>
                    <view class="line">盘点日期:{{item.planDate}}</view>
                    <view class="line">盘点仓库:{{item.warehouseName}}</view>
                    <view class="line">
                        <view class="">盘点人员:{{item.userName}}</view>
                        <view class="btn" v-if="item.status == 0" @click="startHandle(item)">开始盘点</view>
        <scroll-view scroll-y="true" class="scroll_Y" @scrolltolower="scrolltolower">
            <view class="list">
                <view class="item" @click="itemClick(item)" v-for="item in list">
                    <image v-if="item.status == 0 || item.status == 1" class="img" src="@/static/side/ic_pandian@2x.png" mode="">
                    </image>
                    <image v-else class="img" src="@/static/side/ic_pandian_grey@2x.png" mode=""></image>
                    <view class="content">
                        <view class="head">
                            <view class="title">{{item.name}}</view>
                            <view class="status" v-if="item.status == 0">未开始</view>
                            <view class="status green" v-if="item.status == 1">盘点中</view>
                            <view class="status gray" v-if="item.status == 2">已完成</view>
                            <view class="status gray" v-if="item.status == 3">已取消</view>
                        </view>
                        <view class="line">盘点日期:{{item.planDate}}</view>
                        <view class="line">盘点仓库:{{item.warehouseName}}</view>
                        <view class="line">
                            <view class="">盘点人员:{{item.userName}}</view>
                            <view class="btn" v-if="item.status == 0 && item.timeFlag" @click="startHandle(item)">开始盘点</view>
                        </view>
                    </view>
                </view>
            </view>
        </view>
        </scroll-view>
    </view>
</template>
<script>
    import {
        getYwStocktaking,
        getYwStocktaking,
        ywStocktakingBegin
    } from '@/api'
    } from '@/api'
    import dayjs from 'dayjs';
    export default {
        data() {
            return {
@@ -63,29 +66,33 @@
                        ...param
                    }
                }).then(res => {
                    this.list = [...this.list, ...res.data.records]
                    this.list = [...this.list, ...res.data.records]
                    let date = dayjs().format('YYYY-MM-DD')
                    this.list.forEach(item => {
                        item.timeFlag = new Date(item.planDate).getTime() <= new Date(date+' 23:59:59').getTime()
                    })
                    this.total = res.data.total
                })
            },
            itemClick(item) {
                if(item.status == 1){
                    uni.navigateTo({
                        url: '/pages/inventory/detail?id=' + item.id
                    })
                }
            },
            itemClick(item) {
                if (item.status != 0) {
                    uni.navigateTo({
                        url: '/pages/inventory/detail?id=' + item.id
                    })
                }
            },
            startHandle(item) {
                uni.showModal({
                    content: '盘点期间不可进行出入库操作',
                    success: (res) => {
                        if (res.confirm) {
                            ywStocktakingBegin(item.id).then(() => {
                                uni.navigateTo({
                                    url: '/pages/inventory/detail?id=' + item.id
                                })
                        if (res.confirm) {
                            ywStocktakingBegin(item.id).then(() => {
                                uni.navigateTo({
                                    url: '/pages/inventory/detail?id=' + item.id
                                })
                            })
                        }
                        }
                    }
                })
            },
@@ -112,15 +119,14 @@
<style lang="scss">
    .main_app {
        padding: 10rpx 30rpx 0;
        padding: 0rpx 30rpx 0;
        font-size: 28rpx;
    }
    .head_wrap {
        display: flex;
        align-items: center;
        margin-bottom: 40rpx;
        height: 110rpx;
        .search_wrap {
            display: flex;
            align-items: center;
@@ -141,15 +147,16 @@
        }
    }
    .scroll_Y{
        height: calc(100vh - 126rpx);
    }
    .list {
        height: calc(100vh - 136rpx);
        .item {
            display: flex;
            border-bottom: 1rpx solid #E5E5E5;
            padding-bottom: 28rpx;
            margin-bottom: 20rpx;
            .img {
                width: 80rpx;
                height: 80rpx;
@@ -163,18 +170,21 @@
                .head {
                    display: flex;
                    align-items: center;
                    // align-items: center;
                    justify-content: space-between;
                    margin-bottom: 12rpx;
                    .title {
                        font-weight: 600;
                        font-size: 34rpx;
                        color: #222222;
                        color: #222222;
                        flex: 1;
                    }
                    .status {
                        color: $primaryColor;
                        color: $primaryColor;
                        width: 96rpx;
                        padding-top: 3rpx;
                    }
                    .green {
h5/pages/login.vue
@@ -45,14 +45,20 @@
                form: {
                    phone: '',
                    code: ''
                },
                },
                ywinfo: {},
                downTime: 0,
                code: ''
            }
        },
        onLoad(option) {
            console.log('onLoad');
            // https://zhcg.fnwtzx.com/#/pages/login?type=0&ywid=ywid
            // https://zhcg.fnwtzx.com/#/pages/login?type=0&ywid=ywid
            const ywinfo = uni.getStorageSync('ywinfo') || {}
            if (ywinfo.ywid && (ywinfo.type || ywinfo.type == 0)) {
                this.ywinfo = ywinfo
                uni.setStorageSync('ywinfo', {})
            }
            if (option.ywid || option.ywid == 0) {
                uni.setStorageSync('ywinfo', {
                    type: option.type,
@@ -84,11 +90,10 @@
                            getUserInfo().then(ress => {
                                that.$store.commit('setUserInfo', ress.data)
                            })
                            const ywinfo = uni.getStorageSync('ywinfo') || {}
                            const ywinfo = this.ywinfo
                            if (ywinfo.ywid && (ywinfo.type || ywinfo.type == 0)) {
                                getRecordByUserPoint({pointCode: ywinfo.ywid}).then(res => {
                                    if(res.data && res.data.id){
                                        uni.setStorageSync('ywinfo', {})
                                        uni.redirectTo({
                                            url: "/pages/polling/point?id=" + res.data.id
                                        })
@@ -141,12 +146,11 @@
                        this.showToast('登录成功')
                        getUserInfo().then(ress => {
                            this.setUserInfo(ress.data)
                            const ywinfo = uni.getStorageSync('ywinfo') || {}
                            const ywinfo = this.ywinfo
                            if (ywinfo.ywid && (ywinfo.type || ywinfo.type == 0)) {
                            getRecordByUserPoint({pointCode: ywinfo.ywid}).then(res => {
                                getRecordByUserPoint({pointCode: ywinfo.ywid}).then(res => {
                                    if(res.data && res.data.id){
                                        uni.setStorageSync('ywinfo', {})
                                        uni.redirectTo({
                                            url: "/pages/polling/point?id=" + res.data.id
                                        })
h5/pages/workOrder/wait.vue
@@ -115,17 +115,16 @@
                this.getList()
            },
            itemClick(item) {
                if (item.objType == 0) {
                    return
                    uni.navigateTo({
                        url: `/pages/inventory/detail?id=${item.objId}`
                if (item.objType == 0 && item.status == 1) {
                    uni.navigateTo({
                        url: `/pages/inventory/detail?id=${item.objId}`
                    })
                } else if (item.objType == 1) {
                    // return
                    uni.navigateTo({
                        url: `/pages/polling/detail?id=${item.objId}`
                    })
                } else {
                } else if(item.objType == 2) {
                    uni.navigateTo({
                        url: `/pages/workOrder/detail?id=${item.objId}`
                    })
@@ -243,7 +242,8 @@
        .main_app {
            padding: 0;
            height: 100vh;
            overflow: hidden;
            overflow: hidden;
            background-color: #fff;
        }
        .tabs {
@@ -279,7 +279,7 @@
                    height: 6rpx;
                    background-color: #fff;
                    border-radius: 3rpx;
                    margin-top: 24rpx;
                    margin-top: 16rpx;
                }
            }