guoyujie
4 天以前 f398ddd14530d2f0695865c8a4dede6205d91d09
提交 app 初始化设计
12个文件已修改
1个文件已添加
344 ■■■■ 已修改文件
qrcodeScaner/package-lock.json 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/pages.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/pages/glassFinishToStore/glassFinishToStore.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/pages/index/index.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/pages/login/login.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/pages/mainView/mainView.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/pages/reportingWork/reportingWork.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/pages/statement/deliveryList.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/pages/statement/orderList.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/pages/statement/originalGlassList.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/pages/warehouseOut/warehouseOut.vue 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/utils/config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
qrcodeScaner/package-lock.json
@@ -6,9 +6,9 @@
    "": {
      "dependencies": {
        "@dcloudio/uni-ui": "^1.5.7",
        "@qiun/ucharts": "^2.5.0-20230101",
        "axios": "^1.5.1",
        "axios-adapter-uniapp": "^0.1.4",
        "lodash": "^4.17.21",
        "pinia": "^2.3.0",
        "pinia-plugin-persistedstate": "^3.2.0"
      },
@@ -441,12 +441,6 @@
        "type": "opencollective",
        "url": "https://opencollective.com/parcel"
      }
    },
    "node_modules/@qiun/ucharts": {
      "version": "2.5.0-20230101",
      "resolved": "https://registry.npmmirror.com/@qiun/ucharts/-/ucharts-2.5.0-20230101.tgz",
      "integrity": "sha512-C7ccBgfPuGF6dxTRuMW0NPPMSCf1k/kh3I9zkRVBc5PaivudX/rPL+jd2Wty6gn5ya5L3Ob+YmYe09V5xw66Cw==",
      "license": "Apache"
    },
    "node_modules/@types/eslint": {
      "version": "9.6.1",
@@ -1390,6 +1384,12 @@
        "node": ">=8.9.0"
      }
    },
    "node_modules/lodash": {
      "version": "4.17.21",
      "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
      "license": "MIT"
    },
    "node_modules/magic-string": {
      "version": "0.30.17",
      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz",
qrcodeScaner/package.json
@@ -3,6 +3,7 @@
    "@dcloudio/uni-ui": "^1.5.7",
    "axios": "^1.5.1",
    "axios-adapter-uniapp": "^0.1.4",
    "lodash": "^4.17.21",
    "pinia": "^2.3.0",
    "pinia-plugin-persistedstate": "^3.2.0"
  },
qrcodeScaner/pages.json
@@ -90,6 +90,13 @@
            {
                "navigationBarTitleText" : ""
            }
        },
        {
            "path" : "pages/warehouseOut/warehouseOut",
            "style" :
            {
                "navigationBarTitleText" : ""
            }
        }
    ],
    "globalStyle": {
qrcodeScaner/pages/glassFinishToStore/glassFinishToStore.vue
@@ -73,7 +73,6 @@
                    </uni-row>
                </view>
                <view>
                    <uni-row>
                        <uni-col :span='12'>
                            <button  @click="open(0)">取消</button>
@@ -91,6 +90,7 @@
    import { onLoad } from '@dcloudio/uni-app'
    import request from '../../utils/request'
    import userInfo from '@/stores/userInfo'
    import { debounce } from 'lodash'
    const user=userInfo()
    const message = ref(null)
    const msgType=ref('success')
@@ -125,7 +125,6 @@
        const para = {
            processId:processIdVal
        }
        await request.post(`/app/getSelectWarehousingList`,para).then(res => {
            if(res.data.data.length===0){
                uni.showModal({
@@ -147,7 +146,7 @@
        table.value.selectionAll()
    }
    
    const glassToStore = () => {
    const glassToStore = debounce(() => {
        subLoading.value = true
        checkList.value.sort()
        const arr = []
@@ -169,7 +168,7 @@
              url: `/pages/mainView/mainView`
            })
        })
    }
    },200)
    
    const change = (e,item) => {
        const quantity = item.orderDetail.quantity*1 - item.receivedQuantity*1
@@ -194,7 +193,6 @@
        }else{
            alertDialog.value.close()
        }
    }
</script>
qrcodeScaner/pages/index/index.vue
@@ -6,7 +6,7 @@
            <text class="title">NorthGlass</text>
        </view>
        <view class="text-area">
            <text class="title">{{ip}}({{store.version}})</text>
            <text class="title">{{ip+":"+port}}({{store.version}})</text>
        </view>
        <view class="text-area" >
            <uni-data-select style="width:40vw;text-align: center;"
@@ -64,7 +64,8 @@
    import {onMounted, reactive,ref} from "vue"
  import userInfo from '@/stores/userInfo'
    import request from '@/utils/request'
    import {ip,webPort} from '@/utils/config.js'
    import {ip,webPort,port} from '@/utils/config.js'
    import { debounce } from 'lodash'
    
  const store=userInfo()
    let searchUserList = ref({
@@ -135,7 +136,7 @@
        message.value.open()
    }
    
    const login = async () => {
    const login = debounce(async () => {
        await getAppVersion()
    userForm.pass = btoa(userForm.pass)
        store.cleanInfo()
@@ -162,7 +163,7 @@
        }).then(() => {
            userForm.pass = atob(userForm.pass)
        })
    }
    },400)
    
    const initApp = () => {
        uni.removeStorage({
qrcodeScaner/pages/login/login.vue
@@ -1,6 +1,3 @@
<template>
    <view class="content" >
        <image class="logo" src="/static/favicon.ico"></image>
@@ -8,16 +5,28 @@
            <text class="title">NorthGlass_Scaner 初始化</text>
        </view>
        
        <view class="text-area" >
            <uni-easyinput
                @blur="changeIP"
                class='input_1'
                style="text-align: center;"
                placeholder="请输入服务器ip" 
                :passwordIcon='false'
                v-model="ipVal"
                v-model.trim="ipVal"
                type="input" />
        </view>
        <view class="text-area" >
            <uni-easyinput
                class='input_1'
                style="text-align: center;"
                placeholder="请输入端口号"
                :passwordIcon='false'
                v-model="portVal"
                type="number" />
        </view>
        <view class="text-area" >
            <button @click="save" type="primary" size="mini">保存</button>
        </view>
        
        <view>
@@ -34,6 +43,7 @@
  import userInfo from '@/stores/userInfo'
    import request from '@/utils/request'
    import {ip,webPort} from '@/utils/config.js'
        import { debounce } from 'lodash'
    
  const store=userInfo()
    let searchUserList = ref({
@@ -46,15 +56,15 @@
    const messageText=ref('')
    const viewShow = ref(false)
    let ipVal = ref(null)
    let portVal = ref(null)
    
    onMounted(async()=>{
    onMounted(() => {
        
        /* if(ip===null){
            return
        if(uni.getStorageSync('port') === ""){
            portVal.value = 8086
        }else{
            portVal.value = uni.getStorageSync('port')
        }
        uni.reLaunch({
          url: `/pages/login/login`
        }) */
    })
    
    
@@ -67,17 +77,27 @@
    }
    
    
    const changeIP =async () => {
        const ipRegex = /^(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
        if(ipRegex.test(ipVal.value)){
            await uni.setStorageSync('ip', ipVal.value);
            plus.runtime.restart()
    // const changeIP =async () => {
    //     const ipRegex = /^(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
    //     if(ipRegex.test(ipVal.value)){
    //         await uni.setStorageSync('ip', ipVal.value);
    //         plus.runtime.restart()
            
        }else{
            messageToggle('error','请输入IP范围:0.0.0.0~255.255.255.255')
        }
    }
    //     }else{
    //         messageToggle('error','请输入IP范围:0.0.0.0~255.255.255.255')
    //     }
    // }
const save = debounce(async() => {
    if(portVal.value === null || portVal.value === "" || ipVal === null || ipVal === ""){
         messageToggle('error','ip或端口号不能为空')
         return
    }
    await uni.setStorageSync('ip', ipVal.value);
    await uni.setStorageSync('port', portVal.value);
    plus.runtime.restart()
},200)
</script>
<style>
qrcodeScaner/pages/mainView/mainView.vue
@@ -25,27 +25,27 @@
                             </uni-col>
                             
                             
                             <uni-col :span="12">
                             <uni-col :span="12" v-if="store.user.permissions.includes('createProductStock.search')">
                                 <button @click="glassFinishToStore" type="primary"  size="mini">成品入库</button>
                             </uni-col>
                             <uni-col :span="12">
                               <button  type="primary" size="mini">成品出库</button>
                             <uni-col :span="12"  v-if="store.user.permissions.includes('qualityInspectionReview.edit')">
                               <button @click="changePage('warehouseOut')" type="primary" size="mini">成品出库</button>
                             </uni-col>
                             
                             
                       <!-- <uni-col :span="24" v-if="store.user.permissions.includes('qualityInspectionReview.edit')">
                       <!-- <uni-col :span="24" v-if="store.user.permissions.includes('finishedProductOut.search')">
                                <navigator url="/pages/ReviewReporitingWork/ReviewReporitingWork" open-type="navigate">
                                        <button type="primary" size="mini">质检审核</button>
                                </navigator>
                        </uni-col> -->
                            <!-- <uni-col :span="24">
                            <uni-col :span="24">
                                <uni-data-select
                                    placeholder="报表"
                                    v-model="report"
                                    :localdata="reports"
                                    @change="changePage"
                                    @change="changePage('report')"
                                ></uni-data-select>
                            </uni-col> -->
                            </uni-col>
                            
                            <uni-col :span="12">
                                <uni-data-select
@@ -82,16 +82,17 @@
            </uni-popup>
        </view>
  </view>
    
</template>
<script setup>
<script setup lang="ts">
import userInfo from '@/stores/userInfo'
import { onLoad } from '@dcloudio/uni-app'
    import request from '@/utils/request'
    import mpaasScan from '@/utils/scanner.js'
import request from '@/utils/request'
import mpaasScan from '@/utils/scanner.js'
import { ref, watch,onUnmounted, warn } from 'vue'
import { debounce } from 'lodash'
    const store=userInfo()
    const message= ref(null)
    const type=ref('center')
@@ -237,7 +238,7 @@
    
    
    const mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module")
    const scannerGetGlassInfo = () =>{
    const scannerGetGlassInfo = debounce(() =>{
        if(uni.getSystemInfoSync().platform==='android'){
            
            mpaasScan().then(val => {
@@ -251,9 +252,9 @@
                url: `/pages/glassInfo/glassInfo?projectNo=25031302009005`
            })
        }
    }
    },200)
        
    const scanerCode = () => {
    const scanerCode = debounce(() => {
        if(device.value === null){
            messageToggle('warn','未选择设备,请选择报工设备!')
            return
@@ -272,15 +273,15 @@
        url: `/pages/reportingWork/reportingWork?processId=NG24111542A012/1`
      })
        }
    }
    },200)
    
    const glassFinishToStore = () => {
    const glassFinishToStore = debounce(() => {
        mpaasScan().then(val => {
            uni.navigateTo({
                    url: `/pages/glassFinishToStore/glassFinishToStore?processId=${val}`
            })
        })
    }
    },200)
    
    
@@ -294,17 +295,27 @@
    }
    
    //打开当班产量
    const quantityCompletion1 = () => {
    const quantityCompletion1 = debounce(() => {
        uni.navigateTo({
          url: `/pages/QuantityCompletion/QuantityCompletion`
        })
    }
    },200)
    
    const changePage = () => {
        uni.navigateTo({
          url: `/pages/statement/${report.value}`
        })
    }
    const changePage = debounce((type) => {
        switch (type){
            case "warehouseOut":
                uni.navigateTo({
                  url: `/pages/warehouseOut/warehouseOut`
                })
            break
            case "report":
                uni.navigateTo({
                  url: `/pages/statement/${report.value}`
                })
            break
        }
    },200)
        
</script>
qrcodeScaner/pages/reportingWork/reportingWork.vue
@@ -178,6 +178,7 @@
import userInfo from '@/stores/userInfo'
import request from '@/utils/request'
import mpaasScan from '@/utils/scanner.js'
import { debounce } from 'lodash'
    const store=userInfo()
  let processId = ref(null)
    let process = ref(null)
@@ -293,7 +294,7 @@
        })
    }
    //报工保存
    const saveReportForWork = () => {
    const saveReportForWork = debounce(() => {
        for (let item of reportworkList.value) {
            const finishNumVal = finishNum(item.processList)
            if(finishNumVal===0){
@@ -386,19 +387,19 @@
            }).finally(() => {
                buttonLoading.value = false
            })
    }
    },200)
    
    //弹出框确认
    const dialogConfirm = () => {
    const dialogConfirm = debounce(() => {
        uni.reLaunch({
          url: `/pages/mainView/mainView?state=success`
        })
    }
    const dialogClose = () => {
    },200)
    const dialogClose = debounce(() => {
        uni.redirectTo({
            url: `/pages/reportingWork/reportingWork?processId=${processId.value}`
        });
    }
    },200)
    
    //下工序审核
    const reviewReportForWork = () => {
@@ -617,7 +618,7 @@
        
    }
    
    const scannerCode = () => {
    const scannerCode = debounce(() => {
        if(reportworkList.length>6){
            messageToggle('error','最多支持6个流程卡同时报工')
        }
@@ -634,12 +635,12 @@
            
            getProcessCardList(val,process.value)
        })
    }
    },200)
    
    //移除流程卡
    const deleteProcess = (indexVal) => {
    const deleteProcess = debounce((indexVal) => {
         reportworkList.value.splice(indexVal, 1)
    }
    },200)
</script>
qrcodeScaner/pages/statement/deliveryList.vue
@@ -9,7 +9,7 @@
                    <uni-th align="center">项目名称</uni-th>
                    <uni-th align="center">数量</uni-th>
                    <uni-th align="center">面积</uni-th>
                    <uni-th align="center">金额</uni-th>
                    <!-- <uni-th align="center">金额</uni-th> -->
                    <uni-th align="center">创建时间</uni-th>
                </uni-tr>
                
@@ -19,9 +19,19 @@
                    <uni-td align="center">{{ item.project }}</uni-td>
                    <uni-td align="center">{{ item.quantity }}</uni-td>
                    <uni-td align="center">{{ item.area }}</uni-td>
                    <uni-td align="center">{{ item.money }}</uni-td>
                    <!-- <uni-td align="center">{{ item.money }}</uni-td> -->
                    <uni-td align="center">{{ item.createTime }}</uni-td>
                </uni-tr>
                <!-- <uni-tr >
                    <uni-td align="center">合计:</uni-td>
                    <uni-td align="center"></uni-td>
                    <uni-td align="center"></uni-td>
                    <uni-td align="center">{{ totalSum.quantity }}</uni-td>
                    <uni-td align="center">{{ totalSum.area }}</uni-td>
                    <uni-td align="center">{{ totalSum.money }}</uni-td>
                    <uni-td align="center"></uni-td>
                </uni-tr> -->
            </uni-table>
        </view>
    </view>
@@ -34,6 +44,7 @@
import request from '../../utils/request'
const dates = ref([null,null])
const deliverys = ref([])
const totalSum = ref({})
onMounted(()=>{
    getDeliverys()
@@ -43,6 +54,7 @@
    request.post("/app/getDeliveryList",dates.value).then(res => {
        deliverys.value = res.data.data 
        dates.value = res.data.date
        totalSum.value = res.data.totalSum
    })
}
qrcodeScaner/pages/statement/orderList.vue
@@ -2,7 +2,7 @@
    <view style="width: 100%;height: 100%;">
        
        
        <!-- <uni-datetime-picker v-model="dates" type="daterange" @change="maskClick" />
        <uni-datetime-picker v-model="dates" type="daterange" @change="maskClick" />
        <view id='data'>
            <uni-table  border stripe  style='width:100%;height: 100%;overflow: auto;'>
                <uni-tr>
@@ -32,8 +32,22 @@
                    <uni-td align="center">{{ item.createTime }}</uni-td>
                    <uni-td align="center">{{ item.deliveryDate }}</uni-td>
                </uni-tr>
                <uni-tr>
                    <uni-td align="center">合计:</uni-td>
                    <uni-td align="center"></uni-td>
                    <uni-td align="center"></uni-td>
                    <uni-td align="center"></uni-td>
                    <uni-td align="center">{{ totalSum.quantity }}</uni-td>
                    <uni-td align="center">{{ totalSum.area }}</uni-td>
                    <uni-td align="center">{{ totalSum.perimeter }}</uni-td>
                    <uni-td align="center" />
                    <uni-td align="center" />
                    <uni-td align="center" />
                    <uni-td align="center" />
                </uni-tr>
            </uni-table>
        </view> -->
        </view>
    </view>
</template>
@@ -42,6 +56,7 @@
import request from '../../utils/request'
const dates = ref([null,null])
const orders = ref([])
const totalSum = ref({})
onMounted(()=>{
    getOrderList()
@@ -51,6 +66,7 @@
    request.post("/app/getOrderList",dates.value).then(res => {
        orders.value = res.data.data
        dates.value = res.data.date
        totalSum.value = res.data.totalSum
    })
}
qrcodeScaner/pages/statement/originalGlassList.vue
@@ -1,13 +1,13 @@
<template>
    <view style="width: 100%;height: 100%;">
        <view class="charts-box">
        <!-- <view class="charts-box">
            <qiun-data-charts 
                  type="pie"
                            :opts="opts"
                  :chartData="chartData"
                />
        </view>
        <!-- <uni-table  border stripe  style='width:100%;height: 100%;overflow: auto;'>
        </view> -->
        <uni-table  border stripe  style='width:100%;height: 100%;overflow: auto;'>
            <uni-tr>
                <uni-th align="center">ID</uni-th>
                <uni-th align="center">物料</uni-th>
@@ -31,7 +31,7 @@
                <uni-td align="center">{{ item.producer }}</uni-td>
                <uni-td align="center">{{ item.remarks }}</uni-td>
            </uni-tr>
        </uni-table> -->
        </uni-table>
    </view>
</template>
qrcodeScaner/pages/warehouseOut/warehouseOut.vue
New file
@@ -0,0 +1,117 @@
<template>
    <view style="margin-bottom: 2rem;">
        <uni-section
            title="发货单出库"
            padding="0 0 5px 10px">
            <template v-slot:right>
              <button @click="warehouseOut"  type="primary" size='mini'>出库</button>
            </template>
            </uni-section>
    </view>
    <view>
        <uni-table  ref="table"  border stripe type="selection" emptyText="暂无更多数据" @selection-change="selectionChange">
            <uni-tr>
                <uni-th align="center">发货数量</uni-th>
                <uni-th align="center">库存数量</uni-th>
                <uni-th  align="center">宽*高</uni-th>
                <!-- <uni-th  align="center" width='150'>产品名称</uni-th> -->
                <uni-th align="center">发货单号</uni-th>
                <uni-th align="center">发货序号</uni-th>
                <uni-th align="center">订单号</uni-th>
                <uni-th align="center">客户名称</uni-th>
                <uni-th align="center">项目名称</uni-th>
                <uni-th align="center">发货日期</uni-th>
            </uni-tr>
            <uni-tr v-for="(item, index) in tableData" :key="index">
                <uni-td align="center">{{ item.deliveryDetail.quantity }}</uni-td>
                <uni-td align="center">{{ item.warehouseNum }}</uni-td>
                <uni-td align="center">{{ item.width }}*{{ item.height }}</uni-td>
                <!-- <uni-td align="center">{{ item.productName }}</uni-td> -->
                <uni-td align="center">{{ item.deliveryDetail.deliveryId }}</uni-td>
                <uni-td align="center">{{ item.deliveryDetail.orderNumber }}</uni-td>
                <uni-td align="center">{{ item.deliveryDetail.orderId }}</uni-td>
                <uni-td align="center">{{ item.delivery.customerName }}</uni-td>
                <uni-td align="center">{{ item.order.project }}</uni-td>
                <uni-td align="center">{{ item.deliveryDetail.createTime }}</uni-td>
            </uni-tr>
        </uni-table>
    </view>
    <view>
        <!-- 提示信息弹窗 -->
        <uni-popup ref="message" type="message">
            <uni-popup-message :type="msgType" :message="messageText" :duration="3000"></uni-popup-message>
        </uni-popup>
    </view>
</template>
<script setup>
    import { onMounted, ref } from 'vue';
    import { onLoad } from '@dcloudio/uni-app'
    import request from '../../utils/request'
    import userInfo from '@/stores/userInfo'
    import { debounce } from 'lodash'
    const user=userInfo()
    const tableData = ref([])
    const checkList = ref([])
    const table = ref(null)
    const message = ref(null)
    const msgType=ref('success')
    const messageText=ref('')
    onLoad(()=>{
        getSelectDeliveryDetailList()
    })
    const selectionChange = (e) => {
        checkList.value = e.detail.index
    }
    const getSelectDeliveryDetailList = () => {
        request.post(`/app/getSelectDeliveryDetailList`).then(res => {
            tableData.value = res.data.data
        })
    }
    //出库方法
    const warehouseOut = debounce(() => {
        if(checkList.value.length === 0){
            messageToggle('warn',"未选择出库数据")
        }
        checkList.value.sort()
        const arr = []
        checkList.value.forEach(item => {
            arr.push(tableData.value[item])
        })
        const para = {
            userId:user.user.userId,
            userName: user.user.userName,
            orderDetail:arr
        }
        request.post(`/app/addDeliveryDetail`,para).then(res => {
            messageToggle('success',"出库成功")
            table.value.clearSelection()
            getSelectDeliveryDetailList()
        })
    },200)
    const messageToggle = (type,msg) => {
        msgType.value = type
        messageText.value = msg
        message.value.open()
    }
</script>
<style>
</style>
qrcodeScaner/utils/config.js
@@ -1,6 +1,6 @@
let ip =uni.getStorageSync('ip') || null 
const webPort = 5173
const port = 8086
const port = uni.getStorageSync('port') ||  8086
export {
    ip,