h5_standard/src/components/common/Warehouse.vue
@@ -19,7 +19,13 @@ @load="onLoad"> <div class="content_list"> <div class="content_list_item" v-for="(item, i) in list" :key="i" @click="jump(item)"> <div class="content_list_item_name">{{item.name}}</div> <div class="content_list_item_name"> <span style="color: #03AF76;" v-if="item.tmodel.label == 'APPLIANCE_ONTEST'">[{{ item.tmodel.code }}]</span> <span style="color: #305ED5;" v-if="item.tmodel.label == 'APPLIANCE_MIX'">[{{ item.tmodel.code }}]</span> <span style="color: #F5A400;" v-if="item.tmodel.label == 'APPLIANCE_OFFTEST'">[{{ item.tmodel.code }}]</span> <span style="color: red;" v-if="item.tmodel.label == 'APPLIANCE_USELESS'">[{{ item.tmodel.code }}]</span> <span>{{item.name}}</span> </div> </div> </div> </van-list> @@ -223,7 +229,15 @@ margin-right: 10px; } .content_list_item_name { font-size: 28px; width: 100%; display: flex; align-items: center; span { font-size: 30px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #222222; } } } } h5_standard/src/components/newCom/quality.vue
@@ -23,8 +23,7 @@ let list = ref([ { name: 'åæ ¼', id: '0' }, { name: 'ä¸è¯', id: '1' }, { name: 'æ¥åº', id: '2' }, { name: 'æ··å', id: '3' } { name: 'æ¥åº', id: '2' } ]) // è¿åä¸ä¸é¡µå¸¦åæ° h5_standard/src/views/LogInAgain.vue
@@ -84,20 +84,20 @@ // uuid: '0000', // code: '0000' // }) // let res = await testLogin({ // 大æ // username: '18019924213', // password: '123456', // companyId: '1', // uuid: '0000', // code: '0000' // }) let res = await testLogin({ // ææ¦ username: '18656077929', let res = await testLogin({ // 大æ username: '18019924213', password: '123456', companyId: '8', uuid: '0000', code: '0000' }) // let res = await testLogin({ // ææ¦ // username: '18656077929', // password: '123456', // companyId: '111', // uuid: '0000', // code: '0000' // }) // let res = await testLogin({ // è¡å ä¸ // username: '17751132561', // password: '123456', h5_standard/src/views/needToBeDealtWith/addWarehousing.vue
@@ -139,6 +139,7 @@ { batch: '', locationId: '', locationIdLabel: '', locationName: '', materialId: '', materialName: '', @@ -165,6 +166,9 @@ } // æå¼éæ©ç©æ const openQ = (index: number) => { if (list.value[index].locationIdLabel == 'APPLIANCE_ONTEST' || list.value[index].locationIdLabel == 'APPLIANCE_OFFTEST' || list.value[index].locationIdLabel == 'APPLIANCE_USELESS') { return } i.value = index qualityShow.value = true } @@ -180,18 +184,19 @@ locationShow.value = true } const addItem = () => { // if (!form.warehouseId) return Toast('è¯·éæ©å ¥åºä»åº') if (!form.warehouseId) return Toast('è¯·éæ©å ¥åºä»åº') list.value.push({ batch: '', locationId: '', locationName: '', locationIdLabel: list.value[list.value.length - 1].locationIdLabel, materialId: '', materialName: '', num: '', procedureId: '', procedureName: '', qualityType: '', qualityTypeName: '', qualityType: list.value[list.value.length - 1].qualityType, qualityTypeName: list.value[list.value.length - 1].qualityTypeName, unitId: '', unitName: '' }) @@ -301,6 +306,17 @@ item.locationId = res.data[0].id item.locationName = res.data[0].unionName }) list.value[i.value].locationIdLabel = res.data[0].label if (res.data[0].label === 'APPLIANCE_ONTEST') { list.value[i.value].qualityType = '0' list.value[i.value].qualityTypeName = 'åæ ¼' } else if (res.data[0].label === 'APPLIANCE_OFFTEST') { list.value[i.value].qualityType = '1' list.value[i.value].qualityTypeName = 'ä¸è¯' } else if (res.data[0].label === 'APPLIANCE_USELESS') { list.value[i.value].qualityType = '2' list.value[i.value].qualityTypeName = 'æ¥åº' } } else { location.value = true list.value.forEach(item => { @@ -340,6 +356,19 @@ const getValue3 = (item: any): void => { list.value[i.value].locationId = item.id list.value[i.value].locationName = item.unionName list.value[i.value].qualityType = '' list.value[i.value].qualityTypeName = '' list.value[i.value].locationIdLabel = item.label if (item.label === 'APPLIANCE_ONTEST') { list.value[i.value].qualityType = '0' list.value[i.value].qualityTypeName = 'åæ ¼' } else if (item.label === 'APPLIANCE_OFFTEST') { list.value[i.value].qualityType = '1' list.value[i.value].qualityTypeName = 'ä¸è¯' } else if (item.label === 'APPLIANCE_USELESS') { list.value[i.value].qualityType = '2' list.value[i.value].qualityTypeName = 'æ¥åº' } locationShow.value = false } // éæ©å·¥åº h5_standard/src/views/needToBeDealtWith/outbound.vue
@@ -44,7 +44,7 @@ <span>åºåºè´§ä½ï¼{{ item.locationName }}</span> <div class="rework_qd_item_hw_right"> <span>æ°éï¼</span> <input type="number" v-model="item.num" placeholder="0" /> <input type="number" v-model="item.num" @input="changeNum(item)" placeholder="0" /> <span>{{ item.unitName }}</span> </div> </div> @@ -111,7 +111,16 @@ const onCancel = () => { typeShow.value = false } const changeNum = (obj: any) => { if (obj.num < 0) { obj.num = '' return Toast('åºåºç©ææ°éå¿ é¡»å¤§äº0') } if (obj.num > obj.total) { obj.num = '' return Toast('åºåºç©ææ°éä¸è½å¤§äºåºåæ°') } } // è·åå½å¤©å¹´ææ¥ const getDay = () => { var date = new Date(); @@ -127,7 +136,7 @@ if (!form.warehouseId) return Toast('è¯·éæ©åºåºä»åº') if (list.value.length === 0) return Toast('è³å°éæ©ä¸æ¡åºåºç©æ') for (let i = 0; i < list.value.length; i++) { if (!list.value[i].num || list.value[i].num == '' || list.value[i].num == 0) { if (!list.value[i].num || list.value[i].num == '' || list.value[i].num <= 0) { return Toast(`第${i + 1}个åºåºç©ææ°éå¿ é¡»å¤§äº0`) } if (list.value[i].num > list.value[i].total) { @@ -352,7 +361,7 @@ color: #333333; background: #FFFFFF; border-radius: 8px; border: 1px solid #CCCCCC; border: 1PX solid #CCCCCC; margin: 0 20px; padding: 0 30px; box-sizing: border-box; h5_standard/src/views/workOrder/processPlan.vue
@@ -1,5 +1,9 @@ <template> <div class="content"> <div :class="{ 'content_top': status }" class="content_search"> <v-Search @searchInput="searchInput" @submit="submit" :isShow="false" placeholder="æç´¢ç©æåç§°/ç¼ç /å·¥åºåç§°"> </v-Search> </div> <van-pull-refresh v-model="refreshing" @refresh="onRefresh"> <van-list v-model:loading="loading" @@ -48,12 +52,15 @@ </template> <script setup lang="ts"> import { reactive, ref, onBeforeUnmount, getCurrentInstance } from "vue" import { reactive, ref, onBeforeUnmount, getCurrentInstance, onMounted } from "vue" import { useRouter, useRoute } from "vue-router" import { getList } from "@/apis/PlanningAPI" import { judgmentPlatform } from '@/utils/utils' const route = useRoute() const router = useRouter() let status = ref<boolean>(false) // æ ¹æ®å¹³å°æ¯å¦éè¦è®¾ç½®top const { $Bus } = getCurrentInstance().appContext.config.globalProperties @@ -61,7 +68,8 @@ const pageData = reactive({ capacity: 10, page: 0, total: 0 total: 0, name: '' }) // åè¡¨æ°æ® @@ -73,6 +81,23 @@ const clickItem = (obj: any) => { $Bus.emit('callback', obj) router.go(-1) } // æç´¢æäº¤ const submit = (): void => { pageData.page = 0 finished.value = false listData.value = [] onLoad() } // æç´¢æ¡ const searchInput = (data: any) => { pageData.name = data pageData.page = 0 finished.value = false listData.value = [] onLoad() } // å表 @@ -124,6 +149,10 @@ onBeforeUnmount(() => { $Bus.all.delete("changeOdr") }) onMounted(() => { status.value = judgmentPlatform() }) </script> <style lang="scss" scoped> @@ -132,6 +161,79 @@ // height: 100%; position: absolute; background: #F7F7F7; .content_top { top: 0 !important; } .content_search { padding: 30px; background: white; box-sizing: border-box; position: sticky; top: 88px; z-index: 9; .Search_item { margin-bottom: 40px; .Search_item_label { font-size: 30px; font-weight: 500; color: #222222; } .Search_item_content { display: flex; align-items: center; justify-content: space-between; margin-top: 30px; .tag { display: flex; flex-wrap: wrap; align-items: center; .tag_active { background: $nav-color !important; color: #ffffff !important; } .tag_item { width: 156px; height: 70px; box-sizing: border-box; background: #F2F2F2; border-radius: 8px; font-size: 26px; font-weight: 400; color: #333333; display: flex; align-items: center; justify-content: center; margin-right: 22px; margin-bottom: 22px; &:nth-child(4n) { margin-right: 0; } } } span { font-size: 26px; font-weight: 400; color: #333333; } .Search_item_content_a { width: 308px; height: 70px; background: #F7F7F7; border-radius: 8px; border: 1px solid #EEEEEE; font-size: 26px; font-weight: 400; color: #B2B2B2; display: flex; align-items: center; justify-content: center; } } } .content_search_x { height: 24px; } } .content_list { width: 100%; height: 100%; h5_standard/src/views/workOrder/reportingForWork.vue
@@ -55,7 +55,7 @@ <span>æ°å¢ææ</span> </div> </div> <template v-if="wuList.length > 0"> <template v-if="wuList.length > 0 && !(hasBom == 1 && bomType == 1)"> <van-swipe-cell v-for="(item, index) in wuList" :key="index"> <div class="bg_list_item_h"> <div class="bg_list_item_num"> @@ -82,7 +82,7 @@ </template> </van-swipe-cell> </template> <template v-else> <template v-else-if="wuList.length == 0 && !(hasBom == 1 && bomType == 1)"> <div class="kong"> <span>ææ æ°æ®</span> </div> @@ -104,7 +104,7 @@ <span><b>*</b>è¯åæ°</span> <div class="bg_list_item_num_item_sr"> <input type="number" v-model="from.qualified" @input="changeNum(1)" placeholder="请è¾å ¥" /> <span>å</span> <span v-if="from.processPlan">{{from.processPlan.unitName}}</span> </div> </div> </div> @@ -113,7 +113,7 @@ <span>ä¸è¯æ°</span> <div class="bg_list_item_num_item_sr"> <input type="number" v-model="from.undesirable" @input="changeNum(2)" placeholder="请è¾å ¥" /> <span>å</span> <span v-if="from.processPlan">{{from.processPlan.unitName}}</span> </div> </div> </div> @@ -158,7 +158,7 @@ <div class="bg_list_item_num_item"> <span>å·¥èµåä»·</span> <div class="bg_list_item_num_item_sr"> <span class="color1">{{infoBox.salary}}å /{{infoBox.type == 0 ? 'ä»¶' : 'æ¶'}}</span> <span class="color1">{{(infoBox.salary / 10 / 10).toFixed(2)}}å /{{infoBox.type == 0 ? 'ä»¶' : 'æ¶'}}</span> </div> </div> </div> @@ -188,7 +188,7 @@ <div class="bg_footer_submit" @click="submit">æäº¤</div> </div> <!-- éæ©ä¸è¯é¡¹ --> <van-popup v-model:show="show" round position="bottom" :style="{ height: '53%' }"> <van-popup v-model:show="show" round position="bottom"> <div class="bl"> <div class="bl_head"> <img src="@/assets/icon/ic_close@2x.png" style="opacity: 0;" alt="" /> @@ -280,8 +280,7 @@ text: 'name' }; let userShow = ref(false) let userList = ref([]) let wuList: any = ref([]) let wuList = ref<Array<any>>([]) // äº§åºæ°ééªè¯ const changeNum = (type: number) => { @@ -348,7 +347,10 @@ } else { if (!wuList.value.length === 0) return Toast('ææä¸è½ä¸ºç©º') } if (!from.qualified) return Toast('è¯åæ°ä¸è½ä¸ºç©º') if (!from.qualified && !from.undesirable) { return Toast('è¯åæ°ä¸ä¸è¯æ°ä¸è½åæ¶ä¸ºç©º') } // if (!from.qualified) return Toast('è¯åæ°ä¸è½ä¸ºç©º') // æä¸è¯æ° if (from.undesirable > 0) { if (from.defective.length === 0) return Toast('ä¸è¯é¡¹ä¸è½ä¸ºç©º') @@ -357,8 +359,8 @@ autoWorkReport({ createWorkorderRecordDTO: { duration: from.duration, qualifiedNum: from.qualified, unQualifiedNum: from.undesirable qualifiedNum: from.qualified ? from.qualified : 0, unQualifiedNum: from.undesirable ? from.undesirable : 0 }, plansId: from.processPlan.id, proGroupId: deviceId.value, @@ -387,43 +389,46 @@ // é¢è®¡å·¥èµ const expectedSalary = computed(() => { if (!infoBox.value) return 0 if (!infoBox.value) return 0; // æä»¶è®¡ç® if (infoBox.value.type == 0) { console.log('计件') if (!from.qualified) return 0 if (infoBox.value.unqualified == 1) { // æ¯å¦è®¡å ¥ä¸è¯å let total = Number(from.qualified) + Number(from.undesirable) return total * infoBox.value.salary return (total * (infoBox.value.salary / 10 / 10)).toFixed(2) || 0 } else { return Number(from.qualified) * infoBox.value.salary return (Number(from.qualified) * (infoBox.value.salary / 10 / 10)).toFixed(2) || 0 } } else { console.log('计æ¶') if (!from.duration) return 0; let h = (from.duration / 60 / 60).toFixed(2) return Number(h) * infoBox.value.salary return (Number(h) * (infoBox.value.salary / 10 / 10)).toFixed(2) || 0 } }) // è¾¾æ ç const complianceRate = computed(() => { if (!infoBox.value) return 0; if (!from.qualified) return 0; if (!from.qualified && !from.undesirable) return 0; if (!from.duration) return 0; // æä»¶è®¡ç® // if (infoBox.value.type == 0) { // if (infoBox.value.unqualified == 1) { // æ¯å¦è®¡å ¥ä¸è¯å if (infoBox.value.unqualified == 1) { // æ¯å¦è®¡å ¥ä¸è¯å let a = ((Number(from.qualified) + Number(from.undesirable)) / (from.duration / 60 / 60)).toFixed(2) let b = (infoBox.value.num / (infoBox.value.times / 60 / 60)).toFixed(2) console.log(a) console.log(b) return (Number(a) / Number(b)).toFixed(2) return ((Number(a) / Number(b)) * 100).toFixed(2) || 0 // let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / ) // return total * infoBox.value.salary; // } else { // return Number(from.qualified) * infoBox.value.salary; // } } else { let a = (from.qualified / (from.duration / 60 / 60)).toFixed(2) let b = (infoBox.value.num / (infoBox.value.times / 60 / 60)).toFixed(2) console.log(a) console.log(b) return ((Number(a) / Number(b)) * 100).toFixed(2) || 0 // return Number(from.qualified) * infoBox.value.salary; } // } else { // console.log('ææ¶é¿') // } @@ -544,7 +549,7 @@ // è·åç±»å getIdPlansExt(res.id) .then(res2 => { if (res.code === 200) { if (res2.code === 200) { bomType.value = res2.data.bomType hasBom.value = res2.data.hasBom } @@ -843,7 +848,7 @@ font-size: 28px; font-weight: 400; color: #333333; padding: 0 30px padding: 0 30px; } .wulll { width: 400px; @@ -906,12 +911,15 @@ } } .bl { width: 100%; height: 800px; padding: 30px; box-sizing: border-box; display: flex; flex-direction: column; .bl_head { width: 100%; height: 50px; display: flex; align-items: center; justify-content: space-between; @@ -942,7 +950,7 @@ } .bl_list { width: 100%; height: 550px; height: calc(100% - 168px); overflow-y: scroll; margin-top: 30px; .bl_list_item { h5_standard/src/views/workOrder/workOrderReporting.vue
@@ -30,25 +30,28 @@ </div> <template v-if="feedingData && feedingData.length > 0"> <van-swipe-cell v-for="(item, index) in feedingData" :key="index"> <div class="bg_list_item_num"> <div class="bg_list_item_num_item"> <!-- <span>{{item.code}}</span> --> <div class="bg_list_item_num_item_wl"> <span> {{ item.materialName }}{{ item.procedureName ? ` | ${item.procedureName}` : '' }}</span> <div class="bg_list_item_num_item_wl_lx"> <span class="green" v-if="item.qualityType == 0">åæ ¼ / </span> <span class="yellow" v-if="item.qualityType == 1">ä¸è¯ / </span> <span class="red" v-if="item.qualityType == 2">æ¥åº / </span> <span>{{ item.locationName }}</span> <span>{{ item.batch ? ` / ${item.batch}` : '' }}</span> <div class="bg_list_item_h"> <div class="bg_list_item_num"> <div class="bg_list_item_num_item"> <!-- <span>{{item.code}}</span> --> <div class="bg_list_item_num_item_wl"> <span> {{ item.materialName }}{{ item.procedureName ? ` | ${item.procedureName}` : '' }}</span> <div class="bg_list_item_num_item_wl_lx"> <span class="green" v-if="item.qualityType == 0">åæ ¼ / </span> <span class="yellow" v-if="item.qualityType == 1">ä¸è¯ / </span> <span class="red" v-if="item.qualityType == 2">æ¥åº / </span> <span>{{ item.locationName }}</span> <span>{{ item.batch ? ` / ${item.batch}` : '' }}</span> </div> </div> </div> <div class="bg_list_item_num_item_sr"> <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderinput:update')" @blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)" type="number" /> <span>{{item.unitName}}</span> <div class="bg_list_item_num_item_sr"> <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderinput:update')" @blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)" type="number" /> <span>{{item.unitName}}</span> </div> </div> </div> </div> <template #right v-if="proxy.$auth('h5:workorderinput:delete')"> <van-button style="height: 100%;" square text="å é¤" @click="deleItem(item.id, 'T')" type="danger" /> </template> @@ -70,48 +73,107 @@ <!-- <template v-if="produceData && produceData.length > 0"> --> <!-- v-for="(item, index) in produceData" :key="index" --> <van-swipe-cell> <div class="bg_list_item_num"> <div class="bg_list_item_num_item"> <span>è¯åæ°</span> <div class="bg_list_item_num_item_sr"> <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" --> <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" --> <input type="number" v-model="produceFrom.qualified" @blur="changeCC('0', produceFrom.qualified, produceFrom.qualifiedId)" placeholder="请è¾å ¥" /> <span v-if="info.umodel">{{info.umodel.name}}</span> <div class="bg_list_item_h"> <div class="bg_list_item_num"> <div class="bg_list_item_num_item"> <span>è¯åæ°({{ info.umodel ? info.umodel.name : '' }})</span> <div class="bg_list_item_num_item_sr"> <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" --> <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" --> <input type="number" v-model="produceFrom.qualified" @blur="changeCC('0', produceFrom.qualified, produceFrom.qualifiedId)" placeholder="请è¾å ¥" /> <span v-if="info.umodel">{{info.umodel.name}}</span> </div> </div> </div> </div> </van-swipe-cell> <van-swipe-cell> <div class="bg_list_item_num"> <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" --> <div class="bg_list_item_num_item"> <span>ä¸è¯æ°</span> <div class="bg_list_item_num_item_sr"> <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" --> <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" --> <input type="number" v-model="produceFrom.undesirable" @blur="changeCC('1', produceFrom.undesirable, produceFrom.undesirableId)" placeholder="请è¾å ¥" /> <span v-if="info.umodel">{{info.umodel.name}}</span> <div class="bg_list_item_h"> <div class="bg_list_item_num"> <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" --> <div class="bg_list_item_num_item"> <span>ä¸è¯æ°({{ info.umodel ? info.umodel.name : '' }})</span> <div class="bg_list_item_num_item_sr"> <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" --> <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" --> <input type="number" v-model="produceFrom.undesirable" @blur="changeCC('1', produceFrom.undesirable, produceFrom.undesirableId)" placeholder="请è¾å ¥" /> <span v-if="info.umodel">{{info.umodel.name}}</span> </div> </div> </div> </div> </van-swipe-cell> <!-- <van-swipe-cell> <div class="bg_list_item_num"> <div class="bg_list_item_num_item" @click="show = true"> <span>ä¸è¯é¡¹</span> <div class="bg_list_item_num_item_sr"> <span>设置 ></span> <van-swipe-cell v-if="produceFrom.undesirable > 0"> <div class="bg_list_item_h"> <div class="bg_list_item_num"> <div class="bg_list_item_num_item" @click="show = true"> <span>ä¸è¯é¡¹</span> <div class="bg_list_item_num_item_sr"> <span class="wulll" :style="{color: from.defectiveName ? '#305ED5' : ''}">{{from.defectiveName ? from.defectiveName : '设置'}}</span> <img src="@/assets/icon/ic_ar@2x.png" alt="" /> </div> </div> </div> </div> </van-swipe-cell> --> </van-swipe-cell> <!-- </template> <template v-else> <div class="kong"> <span>ææ æ°æ®</span> </div> </template> --> </div> <div class="bg_plan" @click="TimeShow = true"> <div class="bg_plan_label"> <span><b>*</b>æ¥å·¥æ¶é¿</span> </div> <div class="bg_plan_label_val"> <span :style="{color: from.durationName ? '#333' : ''}">{{from.durationName ? from.durationName : 'è¯·éæ©'}}</span> <img src="@/assets/icon/ic_ar@2x.png" alt="" /> </div> </div> <div class="bg_list_item" v-if="infoBox"> <div class="bg_list_item_top"> <div class="bg_list_item_top_left"> <div class="bg_list_item_top_left_x"></div> <span>å·¥èµç»©æ</span> </div> </div> <div class="bg_list_item_h"> <div class="bg_list_item_num"> <div class="bg_list_item_num_item"> <span>计件æ¹å¼</span> <div class="bg_list_item_num_item_list"> <div class="bg_list_item_num_item_list_item active" v-if="infoBox.type == 0">计件</div> <div class="bg_list_item_num_item_list_item active" v-if="infoBox.type == 1">计æ¶</div> </div> </div> </div> <div class="bg_list_item_num"> <div class="bg_list_item_num_item"> <span>å·¥èµåä»·</span> <div class="bg_list_item_num_item_sr"> <span class="color1">{{infoBox.salary / 100}}å /{{infoBox.type == 0 ? 'ä»¶' : 'æ¶'}}</span> </div> </div> </div> <div class="bg_list_item_num"> <div class="bg_list_item_num_item"> <span>é¢è®¡å·¥èµ</span> <div class="bg_list_item_num_item_sr"> <span class="color1">{{expectedSalary}}å </span> </div> </div> </div> <div class="bg_list_item_num"> <div class="bg_list_item_num_item"> <span>è¾¾æ ç</span> <div class="bg_list_item_num_item_sr"> <span class="color1">{{complianceRate}}%</span> </div> </div> </div> </div> </div> <!-- <div class="bg_list_item"> <div class="bg_list_item_top"> @@ -283,35 +345,48 @@ </div> </div> </van-popup> <!-- æ¶é´ --> <van-popup v-model:show="TimeShow" round position="bottom" :style="{ height: '50%' }"> <van-datetime-picker v-model="from.time" type="time" title="éæ©æ¶é´" @confirm="onConfirm2" @cancel="onCancel2" /> </van-popup> <!-- éæ©ä¸è¯é¡¹ --> <van-popup v-model:show="show" round position="bottom" :style="{ height: '53%' }"> <van-popup v-model:show="show" round position="bottom"> <div class="bl"> <div class="bl_head"> <span @click="show = false">åæ¶</span> <img src="@/assets/icon/ic_close@2x.png" style="opacity: 0;" alt="" /> <span>ä¸è¯é¡¹</span> <span>确认</span> <!-- <span>确认</span> --> <img src="@/assets/icon/ic_close@2x.png" @click="show = false" alt="" /> </div> <div class="bl_list"> <div class="bl_list_item" v-for="(item, i) in 12" :key="i"> <div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)"> <div class="bl_list_item_left"> <input type="checkbox" :checked="true" name="" id="" /> <span>æåç</span> <input type="checkbox" :checked="item.active" /> <span>{{ item.name }}</span> </div> <div class="bl_list_item_right"> <input type="number" placeholder="请è¾å ¥" /> <input type="number" @click.stop v-model="item.num" placeholder="0" /> </div> </div> </div> <div class="bl_footer" @click="onConfirm3">确认</div> </div> </van-popup> </div> </template> <script setup lang="ts"> import { getCurrentInstance, nextTick, onMounted, ref, reactive } from 'vue' import { getCurrentInstance, nextTick, onMounted, ref, reactive, computed } from 'vue' import { useRouter, useRoute } from "vue-router" import { Dialog, Toast } from 'vant' import { REGULAR } from '@/utils/utils' import { categoryExtList, queryOne } from '@/apis/PlanningAPI' import { getBarcodeContent, queryById, @@ -334,6 +409,61 @@ const router = useRouter() const route = useRoute() let TimeShow = ref(false) let from: any = reactive({ time: '', defective: [], defectiveName: '' }) // é¢è®¡å·¥èµ const expectedSalary = computed(() => { if (!infoBox.value) return 0; // æä»¶è®¡ç® if (infoBox.value.type == 0) { if (!produceFrom.qualified) return 0 if (infoBox.value.unqualified == 1) { // æ¯å¦è®¡å ¥ä¸è¯å let total = Number(produceFrom.qualified) + Number(produceFrom.undesirable) return (total * (infoBox.value.salary / 100)).toFixed(2) || 0 } else { return (Number(produceFrom.qualified) * (infoBox.value.salary / 100)).toFixed(2) || 0 } } else { if (!from.duration) return 0; let h = (from.duration / 60 / 60).toFixed(2) return (Number(h) * (infoBox.value.salary / 10 / 10)).toFixed(2) || 0 } }) // è¾¾æ ç const complianceRate = computed(() => { if (!infoBox.value) return 0; if (!produceFrom.qualified && !produceFrom.undesirable) return 0; if (!from.duration) return 0; // æä»¶è®¡ç® // if (infoBox.value.type == 0) { if (infoBox.value.unqualified == 1) { // æ¯å¦è®¡å ¥ä¸è¯å let a = ((Number(from.qualified) + Number(from.undesirable)) / (from.duration / 60 / 60)).toFixed(2) let b = (infoBox.value.num / (infoBox.value.times / 60 / 60)).toFixed(2) console.log(a) console.log(b) return (Number(a) / Number(b)).toFixed(2) || 0 // let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / ) // return total * infoBox.value.salary; } else { let a = (produceFrom.qualified / (from.duration / 60 / 60)).toFixed(2) let b = (infoBox.value.num / (infoBox.value.times / 60 / 60)).toFixed(2) console.log(a) console.log(b) return (Number(a) / Number(b)).toFixed(2) || 0 // return Number(from.qualified) * infoBox.value.salary; } // } else { // console.log('ææ¶é¿') // } }) const loading = ref(false); const finished = ref(false); let show = ref(false) @@ -345,13 +475,17 @@ page: 0 }) let infoBox: any = ref(null) // å·¥èµç»©æ // 产åºåæ ¼/ä¸è¯ let produceFrom = reactive({ let produceFrom: any = reactive({ qualifiedId: '', qualified: '', // åæ ¼ undesirableId: '', undesirable: '' // ä¸è¯ }) let cateList:any = ref([]) // ä¸è¯é¡¹ // è¯¦æ æ°æ® const info: any = ref({}) @@ -404,6 +538,70 @@ // æ§å¶æ¥å·¥ç»è®¡ const statistics = ref<boolean>(false) const changeChecked = (i: number) => { cateList.value[i].active = !cateList.value[i].active } const getData = () => { categoryExtList({ cateType: "3" }).then(res => { if (res.code === 200) { res.data.forEach((item: any) => { item.active = false item.num = '' }) cateList.value = res.data } }) } const onConfirm2 = (e: string) => { let h = Number(e.substring(0, 2)) let m = Number(e.substring(3, 5)) let s = 0 if (h > 0) { s += h * 60 * 60 } if (m > 0) { s += m * 60 } from.duration = s from.durationName = `${h}å°æ¶${m}åé` TimeShow.value = false } const onCancel2 = () => { TimeShow.value = false } const onConfirm3 = () => { let isOpen = false cateList.value.forEach((item: any, index: number) => { if (item.active) { isOpen = true } }) if (!isOpen) return Toast('è¯·éæ©ä¸è¯é¡¹') let arr: any = [] let total: any = 0 let name: any = '' cateList.value.forEach((item: any, index: number) => { if (item.active) { if (item.num <= 0) { return Toast('ä¸è¯æ°éå¿ é¡»å¤§äº0') } total = total += item.num arr.push(item) name += item.name + item.num + 'ï¼' } }) if (total !== produceFrom.undesirable) return Toast('ä¸è¯æ°å¿ é¡»çäºäº§åºä¸è¯æ°') from.defective = arr from.defectiveName = name show.value = false } // ææç»è®¡ const tlTotal = (): string => { if (feedingData.value.length > 0) { @@ -419,18 +617,19 @@ // ä¿®æ¹äº§åº const changeCC = (downType: string, num: number, recordId: string) => { if (!num) return console.log(produceFrom.qualified + produceFrom.undesirable) if ((produceFrom.qualified + produceFrom.undesirable) > info.value.planNum) { return Toast.fail({ message: 'äº§åºæ°éä¸è½å¤§äºè®¡åæ°é', duration: 2000 }) } if (num >= 0) { dealWorkorderRecordStandard({ downType, num, recordId, workorderId: route.query.id }).then(res => { if (res.code === 200) { getOrocessRecordCC() } }) from.defective = [] from.defectiveName = '' // dealWorkorderRecordStandard({ // downType, num, recordId, workorderId: route.query.id // }).then(res => { // if (res.code === 200) { // getOrocessRecordCC() // } // }) } else { if (downType == 0) { produceFrom.qualified = 0 @@ -602,6 +801,17 @@ queryById(route.query.id).then(res => { if (res.code === 200) { info.value = res.data // è·åå·¥èµç»©ææ°æ® queryOne({ deleted: 0, departId: res.data.factoryId, materialId: res.data.materialId, procedureId: res.data.procedureId }).then((result: any) => { if (result.code === 200) { infoBox.value = result.data } }) } }) } @@ -688,7 +898,7 @@ if (res.code === 200 && type === 'T') { getOrocessRecords() } else if (res.code === 200 && type === 'C') { getOrocessRecordCC() // getOrocessRecordCC() } }) } @@ -698,6 +908,10 @@ if (info.value.bomType === 1) { // æå¼ console.log('æå¼') statisticsData.value = [] if (produceFrom.qualified <= 0) { Toast.fail({ message: 'äº§åºæç»ä¸è½ä¸ºç©º' }) return } if (info.value.hasBom === 0) { console.log('æ bom') // let data: any = [ @@ -853,6 +1067,10 @@ Toast.fail({ message: 'æææç»ä¸è½ä¸ºç©º' }) return } if (produceFrom.qualified <= 0) { Toast.fail({ message: 'äº§åºæç»ä¸è½ä¸ºç©º' }) return } statisticsData.value = [] if (info.value.hasBom === 0) { console.log('æ bom') @@ -976,8 +1194,25 @@ // 确认æ¥å·¥ const submitBG = () => { if (!from.duration || from.duration <= 0) { return Toast('æ¥å·¥æ¶é¿ä¸è½ä¸ºç©º') } let createUnqualifiedDTOList = from.defective.map((item: any) => { return { categoryId: item.id, unQualifiedNum: item.num } }) let createWorkorderRecordDTO = { workorderId: route.query.id, duration: from.duration, qualifiedNum: produceFrom.qualified ? produceFrom.qualified : 0, unQualifiedNum: produceFrom.undesirable ? produceFrom.undesirable : 0 } // id: route.query.id comfirmDoneStandard({ id: route.query.id createUnqualifiedDTOList, createWorkorderRecordDTO }).then(res => { if (res.code === 200) { Toast.success({ message: 'æ¥å·¥æå', forbidClick: true, duration: 2000 }) @@ -992,7 +1227,8 @@ pageDJs() queryByIds() getOrocessRecords() getOrocessRecordCC() getData() // getOrocessRecordCC() }) </script> @@ -1002,6 +1238,59 @@ /*height: 100%;*/ position: absolute; background: #F7F7F7; .bg_plan { width: 100%; // height: 98px; padding: 30px; box-sizing: border-box; background: #FFFFFF; margin-bottom: 40px; display: flex; align-items: center; justify-content: space-between; span { font-size: 30px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #222222; b { color: red; } } .bg_plan_nr { display: flex; flex-direction: column; span { font-size: 24px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #666666; margin-top: 20px; &:first-child { font-size: 32px; font-family: PingFangSC-Medium, PingFang SC; font-weight: 500; color: #333333; margin-top: 0 !important; } } } .bg_plan_label_val { display: flex; align-items: center; span { font-size: 28px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #999999; } img { width: 12px; height: 24px; margin-left: 20px; } } } .details_cz { width: 100%; padding: 30px; @@ -1125,99 +1414,161 @@ } } } .bg_list_item_num { .bg_list_item_h { width: 100%; background: white; padding: 0 30px; box-sizing: border-box; .kong { text-align: center; font-size: 25px; padding: 30px 0; background: #ffffff; } .bg_list_item_num_item { background: white; .bg_list_item_num { width: 100%; min-height: 98px; background: white; display: flex; justify-content: center; align-items: center; // height: 118px; padding: 15px 0; box-sizing: border-box; justify-content: space-between; border-bottom: 1px solid #E5E5E5; border-bottom: 1PX solid #E5E5E5; &:last-child { border: none; border: none !important; } .bg_list_item_num_item_wl { flex-shrink: 0; .kong { text-align: center; font-size: 25px; padding: 30px 0; background: #ffffff; } .bg_list_item_num_item { width: 100%; height: 100%; display: flex; flex-direction: column; span { font-size: 34px; color: #222222; align-items: center; // height: 118px; padding: 15px 0; box-sizing: border-box; justify-content: space-between; border-bottom: 1px solid #E5E5E5; &:last-child { border: none; } .bg_list_item_num_item_wl_lx { margin-top: 10px; span { color: #222222; font-size: 28px; .bg_list_item_num_item_list { display: flex; align-items: center; .active { background: #305ED5 !important; color: #FFFFFF !important; } .bg_list_item_num_item_list_item { width: 116px; height: 62px; line-height: 62px; text-align: center; background: #F2F2F2; border-radius: 8px; font-size: 26px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #333333; margin-right: 20px; &:last-child { margin: 0 !important; } } } } .warning { color: $nav-stateColor5 !important; } .err { color: $nav-stateColor4 !important; } span { flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; .bg_list_item_num_item_wl { flex-shrink: 0; display: flex; flex-direction: column; span { font-size: 34px; color: #222222; } .bg_list_item_num_item_wl_lx { margin-top: 10px; span { color: #222222; font-size: 28px; } } } .warning { color: $nav-stateColor5 !important; margin-right: 5px; } .err { color: $nav-stateColor4 !important; margin-right: 5px; } &:nth-child(1) { font-size: 30px; font-weight: 400; color: #222222; } &:nth-child(2) { font-size: 28px; font-weight: 400; color: #333333; flex-shrink: 0; } } .bg_list_item_num_item_sr { flex: 1; display: flex; align-items: center; justify-content: flex-end; input::-webkit-input-placeholder { font-size: 28px; } input { text-align: right; width: 180px; height: 60px; border-radius: 8px; border: 1PX solid #E5E5E5; margin-right: 20px; font-size: 28px; font-weight: 400; color: #333333; padding: 0 30px img { width: 12px; height: 24px; margin-left: 20px; } span { font-size: 28px; font-weight: 400; color: #666666; flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; b { font-size: 30px; color: red; margin-right: 5px; } .warning { color: $nav-stateColor5 !important; margin-right: 5px; } .err { color: $nav-stateColor4 !important; margin-right: 5px; } &:nth-child(1) { font-size: 30px; font-weight: 400; color: #222222; } &:nth-child(2) { font-size: 28px; font-weight: 400; color: #333333; flex-shrink: 0; } } .bg_list_item_num_item_sr { flex: 1; display: flex; align-items: center; justify-content: flex-end; .color1 { font-size: 28px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #333333; } input::-webkit-input-placeholder { font-size: 28px; } input { text-align: right; width: 180px; height: 60px; border-radius: 8px; border: 1PX solid #E5E5E5; margin-right: 20px; font-size: 28px; font-weight: 400; color: #333333; padding: 0 30px } .wulll { width: 400px; text-align: right; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } span { font-size: 28px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #999999; } } } } @@ -1423,12 +1774,15 @@ } } .bl { width: 100%; height: 800px; padding: 30px; box-sizing: border-box; display: flex; flex-direction: column; .bl_head { width: 100%; height: 50px; display: flex; align-items: center; justify-content: space-between; @@ -1439,21 +1793,38 @@ font-size: 32px !important; } } img { width: 28px; height: 28px; } } .bl_footer { width: 100%; height: 88px; line-height: 88px; text-align: center; background: #305ED5; border-radius: 8px; font-size: 32px; font-family: PingFangSC-Medium, PingFang SC; font-weight: 500; color: #FFFFFF; margin-top: 30px; } .bl_list { width: 100%; height: 580px; height: calc(100% - 168px); overflow-y: scroll; margin-top: 30px; .bl_list_item { width: 100%; height: 60px; height: 96px; display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; border-bottom: 1PX solid #E5E5E5; &:last-child { margin-bottom: 0 !important; border: none !important; } .bl_list_item_left { flex: 1; @@ -1462,6 +1833,7 @@ input { width: 30px; height: 30px; border: 1PX solid #CCCCCC; margin: 0 !important; } span { @@ -1478,9 +1850,19 @@ padding-left: 5px; width: 160px; height: 100%; padding: 0 30px; box-sizing: border-box; text-align: right; font-size: 28px; color: #333333; border-radius: 10px; border: 2px solid #999999 border: 1PX solid #CCCCCC; &::-webkit-input-placeholder { font-size: 28px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #999999; } } } } h5_standard/src/views/wxLogin.vue
@@ -157,6 +157,7 @@ input { flex: 1; height: 100%; padding: 0 !important; font-size: 30px; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; minipro_standard/App.vue
@@ -1,6 +1,9 @@ <script> <script> console.log('app------'); // import { pageCount } from '@/util/api/index.js' export default { onLaunch: function() { onLaunch: function() { // pageCount({}) }, onShow: function() { }, minipro_standard/common/config.js
@@ -1,5 +1,5 @@ module.exports = { // baseUrl: 'http://106.14.20.42/test_hfznzz/', baseUrl: 'https://hefei.dtkey.cn/test_hfznzz/', // baseUrl: 'http://192.168.0.35:10011/', // baseUrl: 'https://hefei.dtkey.cn/test_hfznzz/', baseUrl: 'https://dmtest.ahapp.net/doumeeplant_api/' } minipro_standard/components/myTabber.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,101 @@ <template> <view> <u-tabbar :value="index" @change="change" fixed activeColor="#222" inactiveColor="#666" > <u-tabbar-item text="å¾ å"> <view class="" slot="active-icon"> <image src="@/static/nav_daiban_sel@2x.png" class="icon-style" mode=""></image> </view> <view class="" slot="inactive-icon"> <image src="@/static/nav_daiban@2x.png" class="icon-style" mode=""></image> </view> </u-tabbar-item> <u-tabbar-item text="å·¥ä½å°"> <view class="" slot="active-icon"> <image src="@/static/nav_gongzuotai_sel@2x.png" class="icon-style" mode=""></image> </view> <view class="" slot="inactive-icon"> <image src="@/static/nav_gongzuotai@2x.png" class="icon-style" mode=""></image> </view> </u-tabbar-item> <u-tabbar-item text="æç"> <view class="" slot="active-icon"> <image src="@/static/nav_wode_sel@2x.png" class="icon-style" mode=""></image> </view> <view class="" slot="inactive-icon"> <image src="@/static/nav_wode@2x.png" class="icon-style" mode=""></image> </view> </u-tabbar-item> </u-tabbar> </view> </template> <script> export default { name:"myTabbar", props: { index: 0 }, data() { return { value: 0 }; }, methods: { click(index) { // console.log('click', index); // this.$nextTick(() => { // this.value = index // if (index==0) { // uni.switchTab({ // url: '/pages/index/index' // }); // } else if (index== 1) { // uni.switchTab({ // url: '/pages/service/service' // }); // }else { // uni.switchTab({ // url: '/pages/mine/mine' // }); // } // }) }, change(index) { this.$nextTick(() => { this.value = index }) console.log(this.value); if (index==0) { // console.log('index'); uni.switchTab({ url: '/pages/index/index' }); } else if (index== 1) { // console.log('workbench'); uni.switchTab({ url: '/pages/workbench/workbench' }); }else { // console.log('mine'); uni.switchTab({ url: '/pages/mine/mine' }); } } }, } </script> <style lang="scss" scope> .icon-style { width: 44rpx; height: 44rpx; } </style> minipro_standard/main.js
@@ -1,20 +1,23 @@ import Vue from 'vue' import App from './App' // vuex import store from './store' import mixin from './common/mixin' // å¼å ¥å ¨å±uView import uView from '@/uni_modules/uview-ui' Vue.use(uView) // vuex import store from './store' Vue.prototype.$store = store store.dispatch('getHeight') Vue.config.productionTip = false App.mpType = 'app' Vue.use(uView) console.log(uni.$u); // #ifdef MP // å¼å ¥uView对å°ç¨åºå享çmixinå°è£ const mpShare = require('@/uni_modules/uview-ui/libs/mixin/mpShare.js') @@ -22,13 +25,14 @@ // #endif Vue.mixin(mixin) // å¼å ¥è¯·æ±å°è£ const app = new Vue({ store, ...App }) // å¼å ¥è¯·æ±å°è£ require('./util/request/index')(app) // è·åå¾ åæ°é store.dispatch('getUpcomingNum') app.$mount() minipro_standard/pages.json
@@ -1,64 +1,67 @@ { "pages": [ //pagesæ°ç»ä¸ç¬¬ä¸é¡¹è¡¨ç¤ºåºç¨å¯å¨é¡µï¼åèï¼https://uniapp.dcloud.io/collocation/pages { "path": "pages/projectList/projectList", "path": "pages/workbench/workbench", "style": { "navigationBarTitleText": "项ç®å表", // "enablePullDownRefresh": true, "navigationStyle": "custom" "navigationBarTitleText": "å·¥ä½å°", "enablePullDownRefresh": false } },{ }, { "path": "pages/index/index", "style": { "navigationBarTitleText": "uni-app", "navigationStyle": "custom" "navigationBarTitleText": "å¾ å" } }, { "path": "pages/applyList/applyList", }, { "path": "pages/mine/mine", "style": { "navigationBarTitleText": "ä¼ä¸æ¥åå表", "enablePullDownRefresh": false, "navigationBarBackgroundColor": "#F3F6F9" } }, { "path": "pages/comApplyList/comApplyList", "style": { "navigationBarTitleText": "ä¼ä¸æ¥åå表", "navigationBarTitleText": "æç", "enablePullDownRefresh": false } }, { "path": "pages/applyDetail/applyDetail", "style": { "navigationBarTitleText": "ä¼ä¸æ¥å详æ ", "enablePullDownRefresh": false, "navigationStyle": "custom" } }, { "path": "pages/uploadServiceData/uploadServiceData", "style": { "navigationBarTitleText": "ä¸ä¼ æå¡æ°æ®", "enablePullDownRefresh": false } }, { "path": "pages/uploadCheckData/uploadCheckData", "style": { "navigationBarTitleText": "ä¸ä¼ è¯ææ°æ®", "enablePullDownRefresh": false } } ], ,{ "path" : "pages/login/login", "style" : { "navigationBarTitleText": "ç»å½", "enablePullDownRefresh": false, "navigationStyle": "custom" } } ], "globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "uni-app", "navigationBarTitleText": "uni-app", "navigationBarBackgroundColor": "#F3F6F9", "backgroundColor": "#F3F6F9" }, "tabBar": { "color": "#666666", "selectedColor": "#222222", "borderStyle": "black", "backgroundColor": "#fff", "list": [ { "pagePath": "pages/index/index", "iconPath": "static/nav_daiban@2x.png", "selectedIconPath": "static/nav_daiban_sel@2x.png", "text": "å¾ å" }, { "pagePath": "pages/workbench/workbench", "iconPath": "static/nav_gongzuotai@2x.png", "selectedIconPath": "static/nav_gongzuotai_sel@2x.png", "text": "å·¥ä½å°" }, { "pagePath": "pages/mine/mine", "iconPath": "static/nav_wode@2x.png", "selectedIconPath": "static/nav_wode_sel@2x.png", "text": "æç" } ] }, "uniIdRouter": {} } minipro_standard/pages/applyDetail/applyDetail.vue
ÎļþÒÑɾ³ý minipro_standard/pages/applyList/applyList.vue
ÎļþÒÑɾ³ý minipro_standard/pages/comApplyList/comApplyList.vue
ÎļþÒÑɾ³ý minipro_standard/pages/index/index.vue
@@ -1,149 +1,77 @@ <template> <view class="content"> <view class="p40 nav bbox"> <view class="">åè¥å¸æºæ¹æ°è½¬è¯ææå¡å¹³å°</view> <view class="">欢è¿ç»å½</view> </view> <view class="p40 mt30"> <u--input placeholder="请è¾å ¥è´¦å·" prefixIcon="account" clearable v-model="form.account" prefixIconStyle="font-size: 40rpx;color: #AAAAAA" ></u--input> <view class="p20"></view> <u--input placeholder="请è¾å ¥å¯ç " prefixIcon="lock" password clearable v-model="form.password" prefixIconStyle="font-size: 40rpx;color: #AAAAAA" ></u--input> <view class="ptb50"></view> <u-button :loading="logining" type="primary" color="#216EEE" text="ç»å½" size="large" @click="loginAction" ></u-button> </view> <view> <myTabbar :index="0" /> </view> </template> <script> import { coustomLogin, wxEmpower } from '@/util/api/index' <script> // import { coustomLogin, wxEmpower } from '@/util/api/index' import myTabbar from "@/components/myTabber.vue" export default { components: { myTabbar }, data() { return { form: { account: '', password: '', }, logining: false, form: { account: '', password: '', }, logining: false, openId: '' } }, onLoad() { uni.login({ success: data => { this.wxLogin(data.code) }, fail: err => { uni.$u.toast(err) } }) }, onLoad() { // uni.login({ // success: data => { // this.wxLogin(data.code) // }, // fail: err => { // uni.$u.toast(err) // } // }) }, methods: { loginAction() { if (!this.form.account || !this.form.password) { uni.$u.toast('è´¦å·æè å¯ç ä¸è½ä¸ºç©º') } this.logining = true coustomLogin({...this.form, openid: this.openId}) .then(res => { this.$store.commit('SETTOKEN', res.token) this.$store.commit('SETUSERINFO', res) uni.navigateTo({ url:'/pages/projectList/projectList' }) }) .finally(() => { this.logining = false }) }, wxLogin(code) { wxEmpower({code}) .then(res => { this.openId = res.openid if (res.userInfo) { this.$store.commit('SETTOKEN', res.userInfo.token) this.$store.commit('SETUSERINFO', res.userInfo) uni.navigateTo({ url:'/pages/projectList/projectList' }) } }) .catch(err => { uni.$u.toast(err) }) } // loginAction() { // if (!this.form.account || !this.form.password) { // uni.$u.toast('è´¦å·æè å¯ç ä¸è½ä¸ºç©º') // } // this.logining = true // coustomLogin({...this.form, openid: this.openId}) // .then(res => { // this.$store.commit('SETTOKEN', res.token) // this.$store.commit('SETUSERINFO', res) // uni.navigateTo({ // url:'/pages/projectList/projectList' // }) // }) // .finally(() => { // this.logining = false // }) // }, // wxLogin(code) { // wxEmpower({code}) // .then(res => { // this.openId = res.openid // if (res.userInfo) { // this.$store.commit('SETTOKEN', res.userInfo.token) // this.$store.commit('SETUSERINFO', res.userInfo) // uni.navigateTo({ // url:'/pages/projectList/projectList' // }) // } // }) // .catch(err => { // uni.$u.toast(err) // }) // } } } </script> <style lang="scss" scoped> .content { // display: flex; // flex-direction: column; // align-items: center; // justify-content: center; height: 100vh; background-color: #FFFFFF; .nav { width: 750rpx; height: 520rpx; background: linear-gradient(180deg, #C7EBFF 0%, #FFFFFF 100%); display: flex; flex-direction: column-reverse; color: #293C5B; :first-child { height: 52rpx; font-size: 36rpx; line-height: 52rpx; } :last-child { height: 80rpx; font-size: 56rpx; font-weight: 500; line-height: 80rpx; margin-bottom: 16rpx; } } } .logo { height: 200rpx; width: 200rpx; margin-top: 200rpx; margin-left: auto; margin-right: auto; margin-bottom: 50rpx; } .text-area { display: flex; justify-content: center; } .title { font-size: 36rpx; color: #8f8f94; } </style> minipro_standard/pages/login/login.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,84 @@ <template> <view class="login-content plr60"> <view class="login-bg"> <image src="@/static/login_bg@2x.png" mode="aspectFill" class="bg-img"></image> <image src="@/static/logo@2x.png" mode="aspectFill" class="login-log img180"></image> <view class="tc title">DMäºå·¥å</view> </view> <view class="bg_w rd8 ptb30 pl40 bbox com-input flex input-height"> <image src="@/static/login_ic_code@2x.png" mode="" class="img40 mr25"></image> <u--input placeholder="ä¼ä¸ä»£ç " border="none"></u--input> </view> <view class="bg_w rd8 ptb30 pl40 bbox mt40 flex input-height"> <image src="@/static/login_ic_phone@2x.png" mode="" class="img40 mr25"></image> <u--input placeholder="ææºå·" border="none"></u--input> </view> <view class="bg_w rd8 ptb30 pl40 bbox mt40 flex input-height"> <image src="@/static/login_ic_password@2x.png" mode="" class="img40 mr25"></image> <u--input placeholder="å¯ç " border="none"></u--input> </view> <view class="login-btn mt80">ç«å³ç»å½</view> </view> </template> <script> export default { data() { return { bgImg: require('@/static/login_bg@2x.png') }; } } </script> <style lang="scss" scoped> .login-content { height: 100vh; background: #FFFFFF linear-gradient(180deg, rgba(66,117,252,0.2) 0%, rgba(66,117,252,0) 100%); .login-bg { position: relative; height: 812rpx; .bg-img { position: absolute; z-index: 1; width: 100%; height: 100%; } .login-log { // margin-top: ; margin: 356rpx auto 0 auto ; left: 0; right: 0; position: absolute; } .title { position: absolute; margin-top: 576rpx; left: 0; width: 100%; height: 60rpx; font-size: 44rpx; font-weight: 600; color: #333333; line-height: 60rpx; } } .input-height { height: 100rpx; } .com-input { margin-top: -60px; } .login-btn { height: 98rpx; background: #4275FC; box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(66,117,252,0.2); border-radius: 8rpx; text-align: center; font-size: 32rpx; font-weight: 500; color: #FFFFFF; line-height: 98rpx; } } </style> minipro_standard/pages/mine/mine.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,74 @@ <template> <view> <myTabbar :index="2" /> </view> </template> <script> import myTabbar from "@/components/myTabber.vue" export default { components: { myTabbar }, data() { return { form: { account: '', password: '', }, logining: false, openId: '' } }, onLoad() { // uni.login({ // success: data => { // this.wxLogin(data.code) // }, // fail: err => { // uni.$u.toast(err) // } // }) }, methods: { // loginAction() { // if (!this.form.account || !this.form.password) { // uni.$u.toast('è´¦å·æè å¯ç ä¸è½ä¸ºç©º') // } // this.logining = true // coustomLogin({...this.form, openid: this.openId}) // .then(res => { // this.$store.commit('SETTOKEN', res.token) // this.$store.commit('SETUSERINFO', res) // uni.navigateTo({ // url:'/pages/projectList/projectList' // }) // }) // .finally(() => { // this.logining = false // }) // }, // wxLogin(code) { // wxEmpower({code}) // .then(res => { // this.openId = res.openid // if (res.userInfo) { // this.$store.commit('SETTOKEN', res.userInfo.token) // this.$store.commit('SETUSERINFO', res.userInfo) // uni.navigateTo({ // url:'/pages/projectList/projectList' // }) // } // }) // .catch(err => { // uni.$u.toast(err) // }) // } } } </script> <style lang="scss" scoped> </style> minipro_standard/pages/projectList/projectList.vue
ÎļþÒÑɾ³ý minipro_standard/pages/uploadCheckData/uploadCheckData.vue
ÎļþÒÑɾ³ý minipro_standard/pages/uploadServiceData/uploadServiceData.vue
ÎļþÒÑɾ³ý minipro_standard/pages/workbench/workbench.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,55 @@ <template> <view> <myTabbar :index="1" /> </view> </template> <script> import myTabbar from "@/components/myTabber.vue" export default { components: { myTabbar }, data() { return { }; }, onLoad() { uni.hideTabBar() // uni.login({ // success: data => { // this.wxLogin(data.code) // }, // fail: err => { // uni.$u.toast(err) // } // }) }, methods: { // wxLogin(code) { // wxEmpower({code}) // .then(res => { // this.openId = res.openid // if (res.userInfo) { // this.$store.commit('SETTOKEN', res.userInfo.token) // this.$store.commit('SETUSERINFO', res.userInfo) // uni.navigateTo({ // url:'/pages/projectList/projectList' // }) // } // }) // .catch(err => { // uni.$u.toast(err) // }) // } } } </script> <style lang="scss"> </style> minipro_standard/static/2@2x.png
minipro_standard/static/3@2x.png
minipro_standard/static/@2x.png
minipro_standard/static/ar_black@2x.png
minipro_standard/static/back.png
minipro_standard/static/btn_saoma@2x.png
minipro_standard/static/btn_upload@2x.png
minipro_standard/static/btn_xinzeng@2x.png
minipro_standard/static/chuku_ic_cangku@2x.png
minipro_standard/static/chuku_ic_delete@2x.png
minipro_standard/static/daiban_btn_saoma@2x.png
minipro_standard/static/daiban_ic_daiban@2x.png
minipro_standard/static/daiban_ic_xiaoxi@2x.png
minipro_standard/static/default_404@2x.png
minipro_standard/static/default_loginfailed@2x.png
minipro_standard/static/default_weishouquan@2x.png
minipro_standard/static/diantong_open@2x.png
minipro_standard/static/gon1gdan_ic_saoma@2x.png
minipro_standard/static/gongdan_ic_saoma@2x.png
minipro_standard/static/gongdan_ic_shoudong@2x.png
minipro_standard/static/ic_ar@2x.png
minipro_standard/static/ic_close@2x.png
minipro_standard/static/ic_delete@2x.png
minipro_standard/static/ic_notpass@2x.png
minipro_standard/static/ic_pass@2x.png
minipro_standard/static/ic_pdf@2x.png
minipro_standard/static/ic_play@2x.png
minipro_standard/static/ic_saomiao@2x.png
minipro_standard/static/ic_search@2x.png
minipro_standard/static/ic_shenhe@2x.png
minipro_standard/static/jianyan_ic_saoma@2x.png
minipro_standard/static/loginError.png
minipro_standard/static/login_bg@2x.png
minipro_standard/static/login_ic_code@2x.png
minipro_standard/static/login_ic_password@2x.png
minipro_standard/static/login_ic_phone@2x.png
minipro_standard/static/logo@2x.png
minipro_standard/static/mine_bg@2x.png
minipro_standard/static/mine_ic_bangding@2x.png
minipro_standard/static/mine_ic_change@2x.png
minipro_standard/static/mine_ic_gerenxinxi@2x.png
minipro_standard/static/mine_ic_shoujihao@2x.png
minipro_standard/static/mine_ic_xitonggonggao@2x.png
minipro_standard/static/mine_ic_xiugaimima@2x.png
minipro_standard/static/mine_ic_youxianghao@2x.png
minipro_standard/static/nav_daiban@2x.png
minipro_standard/static/nav_daiban_sel@2x.png
minipro_standard/static/nav_gongzuotai@2x.png
minipro_standard/static/nav_gongzuotai_sel@2x.png
minipro_standard/static/nav_ic_back@2x.png
minipro_standard/static/nav_kanban@2x.png
minipro_standard/static/nav_kanban_sel@2x.png
minipro_standard/static/nav_saoma@2x.png
minipro_standard/static/nav_wode@2x.png
minipro_standard/static/nav_wode_sel@2x.png
minipro_standard/static/notfound.png
minipro_standard/static/password_ic_tip@2x.png
minipro_standard/static/work_ic_guanli@2x.png
minipro_standard/static/zhongjian_ic_delete.png
minipro_standard/store/index.js
@@ -1,5 +1,6 @@ import Vue from 'vue' import Vuex from 'vuex' import Vuex from 'vuex' import { pageCount } from '@/util/api/index.js' Vue.use(Vuex) // vueçæä»¶æºå¶ @@ -19,7 +20,12 @@ token: token || null, menuButtonWidth: menuButtonWidth || '0', statusbarHeight: statusbarHeight || '0', navHeight: navHeight || '0', navHeight: navHeight || '0', // å¾ åæ°é upcomingNum: { d: 0, y: 0 }, }, mutations: { setHeight(state, val) { @@ -37,6 +43,10 @@ SETUSERINFO(state, val) { state.userInfo = val uni.setStorageSync('userInfo', val); }, SETNUM(state, val) { state.upcomingNum.d = val.d state.upcomingNum.y = val.y } }, actions: { @@ -56,6 +66,12 @@ menuButtonWidth }) }, async getUpcomingNum() { let res = await pageCount({}) if (res.code === 200) { content.commit('SETNUM', { d: res.data.startNum, y: res.data.endNum }) } } } }) minipro_standard/util/api/index.js
@@ -1,51 +1,18 @@ console.log('-----------'); const http = uni.$u.http // ç»å½ export function coustomLogin(params) { return http.get('/wechat/ordinaryLogin', {params}) } // å¾®ä¿¡ææ export function wxEmpower(params) { return http.get('/wechat/wxEmpower', {params}) } // å页æ¥è¯¢é¡¹ç®ä¿¡æ¯ export function projectPage(data) { return http.post('/wechat/project/page', data) } // æ ¹æ®é¡¹ç®idå页æ¥è¯¢ä¼ä¸æ¥åæ°æ® export function getPageByProjectId(data) { return http.post('/wechat/getPageByProjectId', data) } // æ ¹æ®IDæ¥è¯¢æ¥å详æ export function declaresDetail(id) { return http.get(`/wechat/declares/${id}`) } // æ ¹æ®IDæ¥è¯¢æ¥å详æ export function companyDetail(params) { return http.get(`/wechat/company/queryDetail`, { params }) } // æ ¹æ®é¡¹ç®idå页æ¥è¯¢ä¼ä¸æ¥åæ°æ® export function serviceDetail(data) { return http.post('/wechat/declares/serviceDetail', data) } // æ ¹æ®ç»çº¬åº¦éè§£æå°å export function getAddrByLatAndLng(params) { return http.get(`/wechat/getAddrByLatAndLng`, { params }) } // æ ¹æ®ç³æ¥ç¼ç æ¥è¯¢æå䏿¬¡æ ¸æ¥æè¯ææ°æ® export function declareService({id, type}) { return http.post(`/wechat/declareService/${id}?type=${type}`) } // ä¸ä¼ æ ¸æ¥èµæ-ä¸ä¼ æå¡èµæ export function uploadHCData(data) { return http.post(`/wechat/uploadHCData`, data) // æ¥è¯¢ç»è®¡å表æ°é export function pageCount(data) { return http.post('/ext/noticesExt/pageCount', data) } // éåºç»å½ @@ -53,7 +20,3 @@ return http.get(`/wechat/logout`) } // æ ¹æ®ç³æ¥idæ¥çç³æ¥è¿åº¦ export function getDeclareHistoryList(data) { return http.post(`/wechat/getDeclareHistoryList`, data) } minipro_standard/util/request/requestInterceptors.js
@@ -5,7 +5,8 @@ module.exports = (vm) => { // console.log(vm) uni.$u.http.interceptors.request.use((config) => { // å¯ä½¿ç¨async await å弿¥æä½ // åå§åè¯·æ±æ¦æªå¨æ¶ï¼ä¼æ§è¡æ¤æ¹æ³ï¼æ¤æ¶data为undefinedï¼èµäºé»è®¤{} // åå§åè¯·æ±æ¦æªå¨æ¶ï¼ä¼æ§è¡æ¤æ¹æ³ï¼æ¤æ¶data为undefinedï¼èµäºé»è®¤{} console.log('è¯·æ±æ¦æª'); config.data = config.data || {} const token = vm.$store.state.token if (token) { minipro_standard/util/request/responseInterceptors.js
@@ -2,7 +2,6 @@ * ååºæ¦æª * @param {Object} http */ import { coustomLogin, wxEmpower } from '@/util/api/index' module.exports = (vm) => { uni.$u.http.interceptors.response.use((response) => { /* 对ååºæååç¹ä»ä¹ å¯ä½¿ç¨async await å弿¥æä½*/ @@ -11,10 +10,11 @@ const custom = response.config?.custom if (data.code !== 200) { // æå¡ç«¯è¿åçç¶æç ä¸çäº200ï¼åreject() uni.$u.toast(data.message) if (data.code === 5112) { if (data.code === 401) { // console.log('æªç»å½ãç»å½å¤±æ'); // æªç»å½ãç»å½å¤±æ uni.reLaunch({ url: '/pages/index/index' url: '/pages/login/login' }) } return Promise.reject(data) web_standard/.env.development
@@ -14,12 +14,15 @@ VUE_APP_API_PREFIX = '' # ç¦æ¾ VUE_APP_BASE_URL = 'http://192.168.0.36:10021/' # VUE_APP_BASE_URL = 'http://192.168.0.36:10021/' # VUE_APP_BASE_URL = 'http://192.168.0.134:10021/' # 任康æ¬å° VUE_APP_BASE_URL = 'http://192.168.0.15:10021/' # æ±è # VUE_APP_BASE_URL = 'http://192.168.0.35:10021/' # æµè¯æå¡å¨ # VUE_APP_BASE_URL = 'https://dmtest.ahapp.net/doumeeplant_api/' VUE_APP_BASE_URL = 'https://dmtest.ahapp.net/doumeeplant_api/' web_standard/src/components/base/BaseTable.vue
@@ -3,7 +3,7 @@ export default { name: 'BaseTable', extends: BasePage, data () { data() { return { // æ¥å£ api: null, @@ -51,7 +51,7 @@ * * @param extParams é ç½®åæ° */ config (extParams) { config(extParams) { if (extParams == null) { throw new Error('Parameter can not be null of method \'config\' .') } @@ -70,13 +70,13 @@ /** * æç´¢ï¼ç¹å»æç´¢æé®æ¶è§¦åï¼ */ search () { search() { this.handlePageChange(1) }, /** * 导åºExcelï¼ç¹å»å¯¼åºæé®æ¶è§¦åï¼ */ exportExcel () { exportExcel() { this.__checkApi() this.$dialog.exportConfirm('确认导åºåï¼') .then(() => { @@ -108,7 +108,7 @@ /** * éç½®æç´¢æ¡ä»¶ï¼ç¹å»éç½®æé®æ¶è§¦åï¼ */ reset () { reset() { this.$refs.searchForm.resetFields() this.search() }, @@ -117,7 +117,7 @@ * * @param pageSize 页容é */ handleSizeChange (pageSize) { handleSizeChange(pageSize) { this.tableData.pagination.pageSize = pageSize this.search() }, @@ -126,7 +126,7 @@ * * @param selectedRows å·²éä¸çè¡æ°ç» */ handleSelectionChange (selectedRows) { handleSelectionChange(selectedRows) { this.tableData.selectedRows = selectedRows }, /** @@ -134,7 +134,7 @@ * * @param sortData æåºåæ° */ handleSortChange (sortData) { handleSortChange(sortData) { this.tableData.sorts = [] if (sortData.order != null) { this.tableData.sorts.push({ @@ -149,7 +149,7 @@ * * @param pageIndex æ°é¡µç */ handlePageChange (pageIndex) { handlePageChange(pageIndex) { this.__checkApi() this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex this.isWorking.search = true @@ -176,7 +176,7 @@ * @param row è¡å¯¹è±¡ * @param childConfirm å é¤åèç¹æ¶æ¯å¦è¿è¡äºæ¬¡ç¡®è®¤ */ deleteById (row, childConfirm = true) { deleteById(row, childConfirm = true) { this.__checkApi() let message = `确认å é¤${this.module}ã${row[this.configData['field.main']]}ãå?` if (childConfirm && row.children != null && row.children.length > 0) { @@ -196,14 +196,14 @@ this.isWorking.delete = false }) }) .catch(() => {}) .catch(() => { }) }, /** * æ¹éå é¤ï¼ç¹å»æ¹éå 餿¶è§¦åï¼ * * @param childConfirm å é¤åèç¹æ¶æ¯å¦è¿è¡äºæ¬¡ç¡®è®¤ */ deleteByIdInBatch (childConfirm = true) { deleteByIdInBatch(childConfirm = true) { this.__checkApi() if (this.tableData.selectedRows.length === 0) { this.$tip.warning('请è³å°éæ©ä¸æ¡æ°æ®') @@ -235,7 +235,7 @@ this.isWorking.delete = false }) }) .catch(() => {}) .catch(() => { }) }, /** * å é¤åå¤çï¼å¨åè¡å 餿å¤è¡å é¤åè°ç¨ @@ -243,7 +243,7 @@ * @param deleteCount å 餿°é * @private */ __afterDelete (deleteCount = 1) { __afterDelete(deleteCount = 1) { this.$tip.apiSuccess('å 餿å') // å é¤å½å页æå䏿¡è®°å½æ¶æ¥è¯¢ä¸ä¸é¡µæ°æ® if (this.tableData.list.length - deleteCount === 0) { @@ -257,12 +257,101 @@ * * @private */ __checkApi () { __checkApi() { console.log(this.api); if (this.api == null) { throw new Error('The page is not initialized, you can use method \'this.config\' to initialize this page.') } }, /** * æ°åç¸å * @param {*} arg1 * @param {*} arg2 * @returns */ accAdd(arg1, arg2) { return this.changeNum(arg1, arg2) }, /** * æ°åç¸å * @param {*} arg1 * @param {*} arg2 * @returns */ accSub(arg1, arg2) { return this.changeNum(arg1, arg2, false) }, /** * æ°åç¸ä¹ * @param {*} arg1 * @param {*} arg2 * @returns */ accMul(arg1, arg2) { let m = 0; m = accAdd(m, getDecimalLength(arg1)) m = accAdd(m, getDecimalLength(arg2)) return getNum(arg1) * getNum(arg2) / Math.pow(10, m) }, /** * æ°åç¸é¤ * @param {*} arg1 * @param {*} arg2 * @returns */ accDiv(arg1, arg2) { let t1, t2; t1 = this.getDecimalLength(arg1) t2 = this.getDecimalLength(arg2) if (t1 - t2 > 0) { return (this.getNum(arg1) / this.getNum(arg2)) / Math.pow(10, t1 - t2) } else { return (this.getNum(arg1) / this.getNum(arg2)) * Math.pow(10, t2 - t1) } }, changeNum(arg1 = '', arg2 = '', isAdd = true) { function changeInteger(arg, r, maxR) { if (r != maxR) { let addZero = '' for (let i = 0; i < maxR - r; i++) { addZero += '0' } arg = Number(arg.toString().replace('.', '') + addZero) } else { arg = this.getNum(arg) } return arg } let r1, r2, maxR, m; r1 = this.getDecimalLength(arg1) r2 = this.getDecimalLength(arg2) maxR = Math.max(r1, r2) arg1 = changeInteger(arg1, r1, maxR) arg2 = changeInteger(arg2, r2, maxR) m = Math.pow(10, maxR) if (isAdd) { return (arg1 + arg2) / m } else { return (arg1 - arg2) / m } }, getDecimalLength(arg = '') { try { return arg.toString().split(".")[1].length } catch (e) { return 0 } }, getNum(arg = '') { return Number(arg.toString().replace(".", "")) } } } </script> web_standard/src/components/business/OperaSalaryParamWindow.vue
@@ -196,7 +196,9 @@ // if (!isEdit) { // this.form.materialId = res[0]?res[0].materialId:'' // } // this.selectMaterial(this.form.materialId) if (isEdit) { this.selectMaterial(this.form.materialId) } }) .catch(err => { console.log(err) web_standard/src/components/ext/OperaPlanStaock.vue
@@ -219,8 +219,8 @@ layout="total, prev, pager, next, jumper" :total="pagination.total" @current-change="handlePageChange" background> </el-pagination> background ></el-pagination> </div> </SelectMaterail> </GlobalWindow> web_standard/src/components/ext/OperaUserDeviceExtWindow.vue
@@ -18,7 +18,7 @@ </el-select> </el-form-item> <el-form-item label="æå±åå·¥ï¼" prop="userIds"> <el-select v-model="form.userIds" multiple clearable filterable placeholder="è¯·éæ©" @change="selectUser"> <el-select v-model="form.userIds" reserve-keyword multiple clearable filterable placeholder="è¯·éæ©" @change="selectUser"> <el-option v-for="(item, index) in select()" :key="item.id" web_standard/src/components/ext/OperaWInboundExtWindow.vue
@@ -126,8 +126,7 @@ <SelectMaterail ref="selectMaterail" @selectData="selectData" > </SelectMaterail> ></SelectMaterail> </GlobalWindow> </template> web_standard/src/components/ext/OperaWOutboundExtWindow.vue
@@ -460,12 +460,26 @@ }, sorts: null }).then(res => { // console.log('res', res) this.pagination.total = res.total this.pagination.pageSize = res.capacity this.pagination.pageIndex = res.page this.tempMaterials = res.records this.isSelectMaterial = true // console.log('getTempMaterails', this.selectedAllMaterails) if (this.selectedAllMaterails[this.pagination.pageIndex]) { // debugger for (const item of this.selectedAllMaterails[this.pagination.pageIndex]) { this.$nextTick(() => { this.tempMaterials.forEach(tempItem => { if (tempItem.id === item.id) { console.log(tempItem.mmodelUnionName); this.$refs.materials.toggleRowSelection(tempItem, true) } }) }) } } }).catch(err => { this.$tip.error(err) }) @@ -475,8 +489,9 @@ this.getTempMaterails() }, handleSelectionChange (selectedRows) { // console.log(selectedRows) console.log(selectedRows) this.selectedAllMaterails[this.pagination.pageIndex] = selectedRows console.log(this.selectedAllMaterails); }, selectData () { // console.log(this.selectedAllMaterails) web_standard/src/components/ext/OperaWrollOutStore.vue
@@ -581,6 +581,18 @@ this.pagination.pageIndex = res.page this.tempMaterials = res.records this.isSelectMaterial = true if (this.selectedAllMaterails[this.pagination.pageIndex]) { for (const item of this.selectedAllMaterails[this.pagination.pageIndex]) { this.$nextTick(() => { this.tempMaterials.forEach(tempItem => { if (tempItem.id === item.id) { console.log(tempItem.mmodelUnionName); this.$refs.materials.toggleRowSelection(tempItem, true) } }) }) } } }).catch(err => { this.$tip.error(err) }) @@ -592,6 +604,7 @@ handleSelectionChange (selectedRows) { // console.log(selectedRows) this.selectedAllMaterails[this.pagination.pageIndex] = selectedRows console.log(this.selectedMaterails); }, selectData () { console.log(this.selectedAllMaterails) web_standard/src/components/ext/OrderDistrubution.vue
@@ -38,6 +38,7 @@ <el-select v-model="form.proUserList" :disabled="!form.proGroupId" reserve-keyword multiple clearable filterable web_standard/src/views/business/salaryParam.vue
@@ -62,7 +62,11 @@ <el-table-column prop="materialName" label="ç©æåç§°" min-width="140px"></el-table-column> <el-table-column prop="materialCode" label="ç©æç¼ç " min-width="100px"></el-table-column> <el-table-column prop="procedureName" label="å·¥åºåç§°" min-width="100px"></el-table-column> <el-table-column prop="salary" label="å·¥èµåä»·ï¼å )" min-width="100px"></el-table-column> <el-table-column prop="salary" label="å·¥èµåä»·ï¼å )" min-width="100px"> <!-- <template slot-scope="{row}"> {{ accDiv(row.salary, 100) }} </template> --> </el-table-column> <el-table-column prop="num" label="æ å产åº" min-width="100px"> <template slot-scope="{row}"> {{ (row.num == 0 || !row.num) ? '-' : row.num }} web_standard/src/views/ext/plansExt.vue
@@ -3,8 +3,8 @@ <keep-alive><TableLayout v-permissions="['ext:plansext:query']"> <!-- æç´¢è¡¨å --> <el-form slot="search-form" ref="searchForm" :model="searchForm" label-suffix="ï¼" label-width="110px" inline> <el-form-item label="æç´¢ä¿¡æ¯" prop="mixParam"> <el-input v-model="searchForm.mixParam" placeholder="请è¾å ¥ç©æåç§°/ç¼ç /å·¥åºåç§°" @keypress.enter.native="search"></el-input> <el-form-item label="ç©æä¿¡æ¯" prop="mixParam"> <el-input v-model="searchForm.mixParam" placeholder="请è¾å ¥ç©æåç§°/ç¼ç " @keypress.enter.native="search"></el-input> </el-form-item> <el-form-item label="æå计å" prop="workPlanCode"> <el-input v-model="searchForm.workPlanCode" placeholder="请è¾å ¥æå计åç¼ç " @keypress.enter.native="search"></el-input> @@ -71,19 +71,19 @@ <!-- è¡¨æ ¼åå页 --> <template v-slot:table-wrap> <ul class="toolbar"> <!-- <li v-permissions="['ext:plansext:importExcel']"> <li v-permissions="['ext:plansext:distribute']"><el-button type="primary" @click="plansDistribute">æ¹éåé </el-button></li> <li v-permissions="['ext:plansext:importExcel']"> <ImportButton text="å¯¼å ¥" template-name="plans_import_template.xlsx" template-path="template/plans_import_template.xlsx" template-path="/template/plans_import_template.xlsx" action="/ext/plansExt/importBatch" @success="search" /> </li> --> </li> <!-- <li v-permissions="['ext:plansext:create']"><el-button type="primary" @click="$refs.operaPlansExtWindow.open('æ°å»ºç产计å')" >æ°å»º</el-button></li> --> <!-- <li v-permissions="['ext:plansext:publish']"><el-button type="primary" @click="planRelease" >åå¸</el-button></li> --> <li v-permissions="['ext:plansext:distribute']"><el-button type="primary" @click="plansDistribute">æ¹éåé </el-button></li> <li v-permissions="['ext:plansext:exportExcel']"><el-button type="primary" :loading="isWorking.export" @click="exportExcel">导åº</el-button></li> <!-- <li v-permissions="['ext:plansext:exportExcel']"><el-button type="primary" :loading="isWorking.export" @click="exportExcel">导åº</el-button></li> --> <!-- <li v-permissions="['ext:plansext:planpink']"><el-button type="primary" @click="$refs.operaWTransferExtWindow.open('计å颿')">计å颿</el-button></li> --> <!-- <li v-permissions="['ext:plansext:stockpink']"><el-button type="primary" @click="$refs.operaPlanStaock.open('åºå颿')">åºå颿</el-button></li> --> <!-- <li v-permissions="['ext:plansext:delete']"><el-button type="danger" plain @click="deleteByIdInBatch">æ¹éå é¤</el-button></li> --> web_standard/src/views/ext/salaryStatistic.vue
@@ -60,18 +60,18 @@ <el-table-column prop="userInfo.departName" label="é¨é¨" min-width="100px"> </el-table-column> <el-table-column prop="jijianSalary" label="计件工èµ" min-width="100px"> <template slot-scope="{row}"> {{ row.jijianSalary / 100 }} {{ accDiv(Math.round(row.jijianSalary), 100) }} </template> </el-table-column> <el-table-column prop="jishiSalary" label="计æ¶å·¥èµ" min-width="100px"> <template slot-scope="{row}"> {{ row.jishiSalary / 100 }} {{ accDiv(Math.round(row.jishiSalary), 100) }} </template> </el-table-column> <el-table-column prop="num" label="æ¥å·¥åæ»æ°" min-width="100px"></el-table-column> <el-table-column prop="totalSalary" label="å°è®¡å·¥èµ(å )" min-width="100px"> <template slot-scope="{row}"> {{ row.totalSalary / 100 }} {{ accDiv(Math.round(row.totalSalary), 100) }} </template> </el-table-column> web_standard/src/views/ext/workorderPutRecordExt.vue
@@ -120,19 +120,33 @@ <span class="long-title-style">{{ row.procedureName }}</span> </template> </el-table-column> <el-table-column prop="qualifiedNum" label="åæ ¼æ°é" min-width="100px"> <!-- <el-table-column prop="qualifiedNum" label="åæ ¼æ°é" min-width="100px"> <template slot-scope="{row}"> <span class="valid-style">{{ row.qualifiedNum + row.umodel.name }}</span> </template> </el-table-column> <el-table-column prop="unqualifiedNum" label="ä¸è¯æ°é" min-width="100px"> <template slot-scope="{row}"> <span class="unvalid-style">{{ row.num + row.umodel.name}}</span> <!-- <span :class="row.materialDonetype==0 ? 'valid-style' : ''">{{ row.num + row.umodel.name }}</span> --> <span class="unvalid-style">{{ row.unqualifiedNum + row.umodel.name}}</span> </template> </el-table-column> <el-table-column prop="num" label="æ¥å·¥æ°é" min-width="100px"></el-table-column> <!-- <el-table-column prop="amodel.code" label="å·¥è£ å¨å ·" min-width="100px"></el-table-column> --> </el-table-column> --> <el-table-column prop="doneType" label="è´¨é屿§" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.materialDonetype==0" class="valid-style">åæ ¼</span> <span v-else-if="row.materialDonetype==1" class="unvalid-style">ä¸è¯</span> <span v-else>-</span> </template> </el-table-column> <el-table-column prop="num" label="æ°é" min-width="100px"> <template slot-scope="{row}"> <span :class="row.materialDonetype==0 ? 'valid-style' : 'unvalid-style'">{{ row.num + row.umodel.name }}</span> </template> </el-table-column> <!-- <el-table-column prop="num" label="æ¥å·¥æ°é" min-width="100px"> <template slot-scope="{row}"> {{ row.num + row.umodel.name }} </template> </el-table-column> --> <el-table-column prop="deviceCode" label="设å¤" show-overflow-tooltip min-width="100px"> <template slot-scope="{row}"> <span class="long-title-style" :title="row.deviceCode + ' | ' + row.deviceName">{{ row.deviceCode + ' | ' + row.deviceName}}</span> @@ -264,7 +278,7 @@ if (index === 0) { sums[index] = 'å计'; return; } else if (index === 4 || index === 6 || index === 8 || index === 10) { } else if (index === 4 || index === 8 || index === 10) { // || index === 8 || index === 9 || index === 16 || index === 17 sums[index] = '-'; return;