From 7f164af532f66aff71419682c5b3f531b606983a Mon Sep 17 00:00:00 2001 From: zhaochongyi <11111> Date: 星期五, 30 八月 2024 18:56:13 +0800 Subject: [PATCH] 修改初始化 --- frontend/src/views/card/index.vue | 310 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 308 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/card/index.vue b/frontend/src/views/card/index.vue index da268c0..62055ce 100644 --- a/frontend/src/views/card/index.vue +++ b/frontend/src/views/card/index.vue @@ -1,11 +1,317 @@ <script setup> +import {ipc} from '@/utils/ipcRenderer' +import {message} from 'ant-design-vue' +import dkqImg from '@/assets/dkq.png' +import okImg from '@/assets/ok.png' +import { Modal } from 'ant-design-vue'; +import {useStore} from "@/stores/icrfStore"; +import router from "@/router"; +import {createVNode, onBeforeUnmount, reactive, ref} from "vue"; +import locale from 'ant-design-vue/es/date-picker/locale/zh_CN' +import {ExclamationCircleOutlined} from "@ant-design/icons-vue"; +const store = useStore(); +let isCard = ref(false); + const formRef = ref(null); + + const setps = [ + { + title: '瀵诲崱', + key: 'xk' + }, + { + title: '濉啓鏁版嵁', + key: 'set' + }, + { + title: '鍒跺崱瀹屾垚', + key:'ok' + } + ] +const current = ref(0) + +if (!store.isLJ){ + Modal.warning({ + title: '绯荤粺鎻愮ず', + content: '璇诲啓鍣ㄨ澶囨湭杩炴帴锛岃鍏堥厤缃繛鎺ュ悗鎿嶄綔锛�', + okText: '绔嬪嵆鍓嶅線', + onOk:()=>{ + router.push('Communication') + } + }) +} + +const validatorValidityTime = async (_rule,value)=>{ + if (!formState.isValidity && !value){ + return Promise.reject('涓嶆槸闀挎湡鍗℃椂锛岃閫夋嫨鏈夋晥鏈�') + }else{ + return Promise.resolve(); + } +} +const formMap ={ + veCustomsNo:8, + veLicenseNo:9, + veLicenseNo2:10, + vehicleWeight:12, + validityTime:13, +} +// const formMap = [ +// {key :'veCustomsNo',blockNr: 8}, +// {key :'veLicenseNo',blockNr: 9}, +// {key :'veLicenseNo2',blockNr: 10}, +// {key :'vehicleWeight',blockNr: 12}, +// {key :'validityTime',blockNr: 13}, +// ] + +const formState = reactive({ + veCustomsNo:'', + veLicenseNo:'', + veLicenseNo2:'', + vehicleWeight:'', + validityTime:'', + isValidity: true +}) +const isRead = ref(false); +const rules = { + veLicenseNo: [{ + required: true, message: '璇疯緭鍏ヨ溅鐗屽彿', trigger: 'blur' + }], + validityTime:[ + {validator:validatorValidityTime,trigger: 'change'} + ] +} +const isValidtyChange = () => { + if (formState.isValidity){ + formState.validityTime ='' + } +} +const parseStrEmpty =(str)=>{ + if (!str || str==='undefined' || str ==='null'){ + return "" + }else{ + return str; + } +} +const key = 'installCard'; +const onSubmit = ()=>{ + formRef.value.validate().then(()=>{ + ipc.invoke('controller.icrf.connectRfCard').then(res=> { + if (res.code === 0) { + if (formState.sn !== res.snr){ + Modal.confirm({ + title: '绯荤粺鎻愮ず', + icon: createVNode(ExclamationCircleOutlined), + content:'鍗′腑閫旇鎹紝鏄惁缁х画鎿嶄綔', + okText:'缁х画', + cancelText:'鍙栨秷', + onOk(){ + w1(); + }, + }) + }else{ + w1(); + } + } + }) + }) +} +const w1 = () => { + if (isRead.value){ + Modal.confirm({ + title: '绯荤粺鎻愮ず', + icon: createVNode(ExclamationCircleOutlined), + content:'鍗¢噷宸茬粡鍐欒繃鏁版嵁锛屾槸鍚﹁鐩�', + okText:'纭畾', + cancelText:'鍙栨秷', + onOk(){ + wiData(); + }, + }) + }else{ + wiData(); + } +} +const wiData =()=>{ + + let validityTime = formState.validityTime; + if (formState.isValidity){ + validityTime= '99999999' + } + message.loading({content:'淇℃伅鍐欏叆鍗′腑!璇风◢绛�...',key:key}) + Promise.all( + Object.keys(formMap).map(key=>{ + if (key === 'validityTime'){ + return ipc.invoke('controller.icrf.connectRfWrite',{data:validityTime,addr:formMap[key]}) + }else{ + return ipc.invoke('controller.icrf.connectRfWrite',{data:parseStrEmpty(formState[key]),addr:formMap[key]}) + } + }) + ).then(resList=>{ + console.log(resList) + let kk = resList.filter(item => item.code !== 0); + if (Array.isArray(kk) && kk.length> 0){ + ipc.invoke('controller.icrf.connectBeep'); + message.error({content:'鍐欏崱澶辫触锛�'+kk[0].msg,key,duration:2}) + }else{ + ipc.invoke('controller.icrf.connectBeep'); + current.value = 2; + message.success({content: '鍐欏叆鎴愬姛锛佽灏嗗崱鎷胯蛋',key,duration:2}); + resetForm(); + } + + }) + +} + + +const resetForm = ()=>{ + formRef.value.resetFields(); + isRead.value = false; + current.value = 0; +} +onBeforeUnmount(()=>{ +}) + +const startCard = () => { + ipc.invoke('controller.icrf.connectRfCard').then(res=>{ + if (res.code === 0){ + formState.sn = res.snr; + Promise.all( + Object.values(formMap).map(item=>{ + return ipc.invoke('controller.icrf.connectRfRead',{addr:item}); + }) + ).then(resList=>{ + let kk = resList.filter(item => item.code !== 0); + if (Array.isArray(kk) && kk.length> 0){ + // ipc.invoke('controller.icrf.connectBeep',2); + message.error({content:'璇诲崱澶辫触锛�'+kk[0].msg,key,duration:2}) + }else{ + isCard.value = true; + current.value = 1; + resList.forEach((item,index)=>{ + let key = Object.keys(formMap)[index]; + let value = item.data; + if (key === 'validityTime'){ + if (!value || value === '99999999'){ + formState.isValidity = true; + } + }else{ + formState[key] = value; + } + if (key ==='veLicenseNo' ){ + if(value){ + isRead.value = true + }else{ + isRead.value = false + } + + } + }) + } + }) + + + }else{ + if (res.code === 65510){ + message.error('鏈瘑鍒垨妫�娴嬪埌鍗$墖锛岃灏嗗崱鐗囨斁鍦ㄨ鍐欏櫒涓�') + }else{ + message.error(res.msg) + } + } + }) + +} +const goBack = () => { + // resetForm(); + current.value = 0; +} </script> <template> - <div>鍗$墖璁剧疆</div> + <div class="app-container"> + <a-steps style="margin-bottom: 10px;" :current="current" :items="setps"></a-steps> + <a-empty description="璇峰皢鍗$墖鏀惧湪璇诲啓鍣ㄤ笂" v-if="current === 0" class="emptyImg" :image="dkqImg"> + <a-button type="primary" @click="startCard">寮�濮嬪埗鍗�</a-button> + </a-empty> + <div v-else-if="current === 1"> + <a-alert type="warning" show-icon message="鍗$墖鏈啓鍏ユ垨鏈搷浣滃畬鎴愭椂锛岃璇皢鍗$寮�璇诲啓鍣�"></a-alert> + <a-form ref="formRef" :model="formState" :rules="rules" > + <a-card style="margin-top: 10px"> + <template #title> + <Section title="杞﹁締澶囨淇℃伅"></Section> + </template> + <template #extra>鍗$墖搴忓垪鍙�: {{formState.sn}}</template> + <a-row :gutter="16"> + <a-col :span="12"> + <a-form-item label="杞﹁締娴峰叧缂栧彿" ref="veCustomsNo" name="veCustomsNo"> + <a-input v-model:value="formState.veCustomsNo"></a-input> + </a-form-item> + </a-col> + <a-col :span="12"> + <a-form-item label="杞︾墝鍙�" ref="veLicenseNo" name="veLicenseNo"> + <a-input v-model:value="formState.veLicenseNo"></a-input> + </a-form-item> + </a-col> + <a-col :span="12"> + <a-form-item label="澧冨鎴栫菠娓境杞︾墝" ref="veLicenseNo2" name="veLicenseNo2"> + <a-input v-model:value="formState.veLicenseNo2"></a-input> + </a-form-item> + </a-col> + <a-col :span="12"> + <a-form-item label="杞﹁締鑷噸" ref="vehicleWeight" name="vehicleWeight"> + <a-input v-model:value="formState.vehicleWeight"> + <template #suffix>KG</template> + </a-input> + </a-form-item> + </a-col> + <a-col :span="18"> + <a-form-item label="鏈夋晥鏃ユ湡" ref="validityTime" name="validityTime"> + <div style="display: flex;align-items: center;justify-content: space-between"> + <a-form-item-rest> + <a-date-picker valueFormat="YYYYMMDD" :locale="locale" v-model:value="formState.validityTime" placeholder="璇烽�夋嫨" :disabled="formState.isValidity" style="width:60%"/> + + </a-form-item-rest> + <a-form-item-rest> + <a-checkbox v-model:checked="formState.isValidity" @change="isValidtyChange" style="margin-left: 10px;width: 40%">闀挎湡</a-checkbox> + </a-form-item-rest> + </div> + </a-form-item> + </a-col> + <a-col :span="24" style="text-align: center"> + <a-button type="primary" style="margin-right: 10px;width: 200px" @click="onSubmit">鍒跺崱</a-button> + <a-button style="width: 200px" @click="resetForm">鍙栨秷</a-button> + </a-col> + + </a-row> + + </a-card> + + </a-form> + + </div> + <a-empty description="鍒跺崱瀹屾垚" v-if="current === 2" class="emptyImg" :image="okImg"> + <a-button type="primary" @click="goBack">杩斿洖</a-button> + </a-empty> + </div> + + </template> -<style scoped> +<style scoped lang="less"> +.app-container { + position: relative; + min-height: 100%; +} +.emptyImg { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + text-align: center; + font-size: 16px; + color: #8a919f; + font-weight: bold; + line-height: 34px; +} </style> \ No newline at end of file -- Gitblit v1.8.0