Merge branch 'master' of http://139.196.74.78:10010/r/jagzwxm/ja_web
| | |
| | | |
| | | # xt接口地址 |
| | | VITE_APP_URL_XT=http://218.202.104.82:8200 |
| | | |
| | | # 预览地址 previewURL |
| | | VITE_APP_PREVIEW_URL=http://192.168.1.204:8012 |
| | |
| | | }) |
| | | |
| | | const formRef = ref(null) |
| | | const formData = reactive({ |
| | | |
| | | const initForm = () => ({ |
| | | flyerName: '', |
| | | flyerId: '', |
| | | flyerPhone: '', |
| | |
| | | technicalStrength: '', |
| | | skilledUavType: '', |
| | | certification: [], // 证书 |
| | | regionCode: '', // 区域编码 |
| | | }) |
| | | |
| | | const formData = ref(initForm()) // 表单数据 |
| | | |
| | | |
| | | // const rules = { |
| | | // flyerId: fieldRules(true), |
| | | // flyerPhone: fieldRules(true, 50), |
| | | // flightHours: fieldRules(true, 50), |
| | | // technicalSkills: fieldRules(true, 50), |
| | | // skilledTaskType: fieldRules(true), |
| | | // projectExperience: fieldRules(true), |
| | | // technicalStrength: fieldRules(true), |
| | | // skilledUavType: fieldRules(true, 50), |
| | | // } |
| | | |
| | | const rules = { |
| | | flyerId: [ |
| | |
| | | watch( |
| | | () => props.flyingHandData, |
| | | (newData) => { |
| | | formData.value = initForm() |
| | | if (newData) { |
| | | Object.assign(formData, newData) |
| | | formData.flightHours = Number(newData.flightHours) |
| | | Object.assign(formData.value, newData) |
| | | formData.value.flightHours = Number(newData.flightHours) |
| | | } |
| | | }, |
| | | { deep: true, immediate: true } |
| | |
| | | // 处理选择飞手姓名 |
| | | function handleChange(val) { |
| | | const result = flyingHandList.value.find(item => item.id === val) || [] |
| | | formData.flyerName = result.name |
| | | formData.certification = formData.certification.concat(result.licenseFrontFileUrl || [], result.licenseBackFileUrl || []) |
| | | formData.value.flyerName = result.name |
| | | formData.value.regionCode = result.regionCode |
| | | formData.value.certification = formData.value.certification.concat(result.licenseFrontFileUrl || [], result.licenseBackFileUrl || []) |
| | | } |
| | | |
| | | |
| | |
| | | function resetForm() { |
| | | formRef.value?.resetFields() |
| | | // 重置为默认值 |
| | | Object.assign(formData, { |
| | | Object.assign(formData.value, { |
| | | flyerName: '', |
| | | flyerPhone: '', |
| | | flightHours: 0, |
| | |
| | | |
| | | try { |
| | | if (props.dialogType === 'add') { |
| | | await submitFlyingHand(formData) |
| | | await submitFlyingHand(formData.value) |
| | | ElMessage.success('添加成功') |
| | | } else if (props.dialogType === 'edit') { |
| | | await submitFlyingHand(formData) |
| | | await submitFlyingHand(formData.value) |
| | | ElMessage.success('编辑成功') |
| | | } |
| | | emit('confirm') |
| | |
| | | import { getDictLabel } from '@ztzf/utils' |
| | | import PreviewFiles from '@/components/PreviewFiles/PreviewFiles.vue' |
| | | import { getDictionaryByCode } from '@/api/system/dictbiz' |
| | | import { Base64 } from 'js-base64' |
| | | |
| | | const store = useStore() |
| | | const userInfo = computed(() => store.getters.userInfo) |
| | |
| | | editParams.value.link = row.link |
| | | } |
| | | |
| | | |
| | | // 'zip', 'rar', 'jar', 'tar', 'gzip', '7z', |
| | | const allSupportedExtensions = [ |
| | | 'doc', 'docx', 'xls', 'xlsx', 'xlsm', 'ppt', 'pptx', 'csv', 'tsv', 'dotm', 'xlt', 'xltm', 'dot', 'dotx', 'xlam', 'xla', |
| | | 'wps', 'dps', 'et', 'ett', 'wpt', |
| | | 'odt', 'ods', 'ots', 'odp', 'otp', 'six', 'ott', 'fodt', 'fods', |
| | | 'vsd', 'vsdx', 'wmf', 'emf', 'psd', |
| | | 'pdf', 'ofd', 'rtf', 'epub', |
| | | 'xmind', 'bpmn', 'eml', |
| | | 'obj', '3ds', 'stl', 'ply', 'gltf', 'glb', 'off', '3dm', 'fbx', 'dae', 'wrl', '3mf', 'ifc', 'brep', 'step', 'iges', 'fcstd', 'bim', |
| | | 'dwg', 'dxf', |
| | | 'txt', 'xml', 'md', 'java', 'php', 'py', 'js', 'css', |
| | | 'jpg', 'jpeg', 'png', 'gif', 'bmp', 'ico', 'jfif', 'webp', 'tif', 'tiff', 'tga', 'svg', |
| | | 'mp3', 'wav', 'mp4', 'flv', 'avi', 'mov', 'rm', 'webm', 'ts', 'mkv', 'mpeg', 'ogg', 'mpg', 'rmvb', 'wmv', '3gp', 'swf' |
| | | ]; |
| | | const { VITE_APP_PREVIEW_URL } = import.meta.env |
| | | |
| | | // 在线查看文档 |
| | | function seeOnlineWord(row) { |
| | | // 获取点之后的文件格式名 |
| | | const fileType = row?.link?.split('.').pop() || '' |
| | | if (!row.link) { |
| | | ElMessage.warning('文件链接不存在') |
| | | return |
| | | } else if ( |
| | | !row.link.includes('docx') && |
| | | !row.link.includes('pdf') && |
| | | !row.link.includes('png') && |
| | | !row.link.includes('jpg') |
| | | ) { |
| | | }else if (allSupportedExtensions.includes(fileType)){ |
| | | window.open(`${VITE_APP_PREVIEW_URL}/onlinePreview?url=`+encodeURIComponent(Base64.encode(row.link))); |
| | | }else { |
| | | ElMessage.warning(`${fileType}文件格式,可以下载再查看`) |
| | | return |
| | | } else if (row.link.includes('png') || row.link.includes('jpg')) { |
| | | previewVisibleImg.value = true |
| | | searchUrl.value = row.link |
| | | return |
| | | } else if (row.link.includes('docx') || row.link.includes('pdf')) { |
| | | previewVisible.value = true |
| | | searchUrl.value = row.link |
| | | return |
| | | } |
| | | } |
| | | |
| | |
| | | uni.showToast({ |
| | | title: '退回成功', |
| | | icon: 'success', |
| | | duration: 1500 |
| | | }) |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | }, 1500) |
| | | }) |
| | | |
| | | } |
| | |
| | | uni.showToast({ |
| | | title: '确认成功', |
| | | icon: 'success', |
| | | duration: 1500 |
| | | }) |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | }, 1500) |
| | | }) |
| | | } |
| | | // 分享模态框状态 |
| | |
| | | } |
| | | .card { |
| | | display: flex; |
| | | padding: 44rpx; |
| | | padding: 40rpx 0; |
| | | border-bottom: 1px solid #EBEEF3; |
| | | .left { |
| | | width: 70px; |
| | |
| | | color: #86909C; |
| | | margin-bottom: 14rpx; |
| | | } |
| | | // 最后一个txt 不添加margin-bottom |
| | | .txt:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | } |
| | | } |
| | | // 第一个card 不添加下边框 |
| | |
| | | <template> |
| | | <view class="legalPolicy"> |
| | | <!-- <u-navbar title="法律政策" @rightClick="rightClick" :autoBack="true"></u-navbar> --> |
| | | <u-search :bgColor="'white'" v-model="noticeTitle" :show-action="true" actionText="搜索" :animation="true" @custom="handleSearch"></u-search> |
| | | <u-search :bgColor="'white'" v-model="formParams.noticeTitle" :show-action="true" actionText="搜索" :animation="true" @custom="handleSearch"></u-search> |
| | | <view class="tabs-container"> |
| | | <u-tabs :list="tabs" lineColor="#265CFD" @click="tabClick"></u-tabs> |
| | | </view> |
| | |
| | | import docSvg from '@/static/images/doc.png' |
| | | import { ref, onMounted } from 'vue' |
| | | |
| | | const noticeTitle = ref('') |
| | | |
| | | const tabs = ref([ |
| | | { |
| | | name: '法律法规', |
| | |
| | | current: 1, |
| | | size: 10, |
| | | noticeType: 2, |
| | | noticeTitle: noticeTitle.value, |
| | | noticeTitle: '', |
| | | isAsc: true |
| | | }) |
| | | |
| | |
| | | const handleSearch = () => { |
| | | // 搜索时重置为第一页 |
| | | formParams.value.current = 1 |
| | | formParams.value.noticeTitle = formParams.value.noticeTitle.trim() |
| | | getSysNoticeList() |
| | | } |
| | | // 触底加载 |
| | |
| | | |
| | | :deep(.u-button--primary) { |
| | | background-color: #265CFD; |
| | | border-color: #265CFD; |
| | | } |
| | | |
| | | :deep(.u-form) { |
| | |
| | | flex: 1; |
| | | max-width: 350rpx; |
| | | height: 166rpx; |
| | | background: rgba(251,253,255,0.57); |
| | | background: rgba(251,253,255,0.8); |
| | | box-shadow: inset 0px 0px 7px 0px rgba(64,156,230,0.14), 0px 1px 3px 0px rgba(35,49,96,0.11); |
| | | border-radius: 8px 8px 8px 8px; |
| | | border: 1px solid #fff; |