diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue index 3d74865f..55db0636 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/EnforcementInfoSection.vue @@ -165,6 +165,7 @@ import { buildEnforcementTimeFromPicker, } from '@/util/enforcementTimePicker'; import { queryUnionByHour } from '@/api/enforcement'; +import { loadDict } from '@/util/dictUtil'; const props = defineProps({ formData: { @@ -216,12 +217,7 @@ const unionList = ref([]); const unionLoading = ref(false); const showReasonPicker = ref(false); -const reasonOptions = [ - { text: '企业原因', value: '企业原因' }, - { text: '系统原因', value: '系统原因' }, - { text: '扫码未能显示企业信息', value: '扫码未能显示企业信息' }, - { text: '其他', value: '其他' } -]; +const reasonOptions = ref([]); onMounted(() => { const range = getEnforcementTimeDateRange(7); @@ -229,6 +225,10 @@ onMounted(() => { maxDate.value = range.maxDate; defaultPickerValue = range.currentDate; datePickerValue.value = [...range.currentDate]; + + loadDict('no-scan-reason', (columns) => { + reasonOptions.value = columns; + }); }); watch(() => props.formData.jointEnforcement, (newVal) => { @@ -291,7 +291,8 @@ const onTimeConfirm = ({ selectedValues }) => { const selectReason = ({ selectedOptions }) => { props.formData.reason = selectedOptions[0]?.text || ''; - if (props.formData.reason !== '其他') { + const selectedValue = selectedOptions[0]?.value || ''; + if (selectedValue !== '其他' && selectedOptions[0]?.text !== '其他') { props.formData.other_reasons = ''; } showReasonPicker.value = false; diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/NonEnforcementInfoSection.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/NonEnforcementInfoSection.vue index 272942d7..b09776c1 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/NonEnforcementInfoSection.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/components/enforcement/register/NonEnforcementInfoSection.vue @@ -109,13 +109,8 @@ const matterOptions = ref([]); const showMatterPicker = ref(false); const showTimePicker = ref(false); const showReasonPicker = ref(false); +const reasonOptions = ref([]); -const reasonOptions = [ - { text: '企业原因', value: '企业原因' }, - { text: '系统原因', value: '系统原因' }, - { text: '扫码未能显示企业信息', value: '扫码未能显示企业信息' }, - { text: '其他', value: '其他' } -]; const datePickerValue = ref([]); const minDate = ref(new Date()); const maxDate = ref(new Date()); @@ -130,7 +125,8 @@ const selectMatter = ({ selectedOptions }) => { // 选择原因 const selectReason = ({ selectedOptions }) => { props.formData.reason = selectedOptions[0]?.text || ''; - if (props.formData.reason !== '其他') { + const selectedValue = selectedOptions[0]?.value || ''; + if (selectedValue !== '其他' && selectedOptions[0]?.text !== '其他') { props.formData.other_reasons = ''; } showReasonPicker.value = false; @@ -147,6 +143,10 @@ onMounted(() => { loadDict('no_check_category', (columns) => { matterOptions.value = columns; }); + + loadDict('no-scan-reason', (columns) => { + reasonOptions.value = columns; + }); }); const openTimePicker = () => { diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/scanEntQRCode.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/scanEntQRCode.vue index 48407bf4..937b298a 100644 --- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/scanEntQRCode.vue +++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/scanEntQRCode.vue @@ -45,7 +45,7 @@
- {{ reason }} + {{ reason.text }}
@@ -96,6 +96,7 @@ import { useRouter, useRoute } from 'vue-router'; import { showFailToast, showSuccessToast, showToast, showConfirmDialog } from 'vant'; import { baseUrl, appEnv } from '@/config/env.js'; import { getEntInfoByQRCode, queryEnterpriseListAndQrInfo, szyptGetToken } from '@/api/enforcement/index'; +import { loadDict } from '@/util/dictUtil'; import wx from 'weixin-js-sdk'; const router = useRouter(); @@ -326,19 +327,14 @@ const isHttpLink = (url) => { // ========== 手动搜索企业弹窗 ========== const showSearchModal = ref(false); -const selectedReason = ref(3); // 默认选中"其他" +const selectedReason = ref(-1); // 默认未选中,字典加载后设置 const searchKeyword = ref(''); const enterpriseList = ref([]); const loading = ref(false); const finished = ref(false); const error = ref(false); -const reasonOptions = [ - '企业原因', - '系统原因', - '扫码未能显示企业信息', - '其他' -]; +const reasonOptions = ref([]); const showSearchPopup = () => { showSearchModal.value = true; @@ -346,9 +342,25 @@ const showSearchPopup = () => { enterpriseList.value = []; finished.value = false; error.value = false; - nextTick(() => { - loadEnterprises(); - }); + + if (reasonOptions.value.length === 0) { + loadDict('no-scan-reason', (columns) => { + reasonOptions.value = columns; + const otherIndex = columns.findIndex(item => item.text === '其他' || item.value === '其他'); + selectedReason.value = otherIndex !== -1 ? otherIndex : 0; + nextTick(() => { + loadEnterprises(); + }); + }); + } else { + if (selectedReason.value === -1) { + const otherIndex = reasonOptions.value.findIndex(item => item.text === '其他' || item.value === '其他'); + selectedReason.value = otherIndex !== -1 ? otherIndex : 0; + } + nextTick(() => { + loadEnterprises(); + }); + } }; const closeSearchModal = () => { @@ -415,7 +427,7 @@ const onLoad = () => { const selectEnterprise = (item) => { console.log('选中企业:', item); // 保存无法扫码原因到 sessionStorage - const selectedReasonText = reasonOptions[selectedReason.value]; + const selectedReasonText = reasonOptions.value[selectedReason.value]?.text || ''; sessionStorage.setItem('scanReason', selectedReasonText); showSearchModal.value = false; router.push({ @@ -430,7 +442,7 @@ const selectEnterprise = (item) => { // 市外注册企业信息录入 const handleOutOfCityEnterprise = () => { - const selectedReasonText = reasonOptions[selectedReason.value]; + const selectedReasonText = reasonOptions[selectedReason.value]?.text || ''; sessionStorage.setItem('scanReason', selectedReasonText); showSearchModal.value = false; router.push({ @@ -459,6 +471,18 @@ const toSign = () => { // ========== 生命周期 ========== +onMounted(() => { + loadDict('no-scan-reason', (columns) => { + reasonOptions.value = columns; + const otherIndex = columns.findIndex(item => item.text === '其他' || item.value === '其他'); + if (otherIndex !== -1) { + selectedReason.value = otherIndex; + } else if (columns.length > 0) { + selectedReason.value = 0; + } + }); +}); + onBeforeUnmount(() => { // 页面销毁时确保关闭摄像头 if (html5QrCode) {