Commit 767fc66f by pangchong

feat: 防除冰

parent bba0285f
...@@ -84,8 +84,8 @@ ...@@ -84,8 +84,8 @@
<slot v-else></slot> <slot v-else></slot>
</view> </view>
<!-- 底部 --> <!-- 底部 -->
<template #bottom> <template #bottom v-if="showBottom">
<view class="footer-btn" v-if="showFooterBtn"> <view class="footer-btn" v-if="showFooterBtn" :style="{ visibility: showBottom ? 'visible' : 'hidden' }">
<global-button type="primary" size="large" @tap="handleFooterClick">{{ footerBtnText }}</global-button> <global-button type="primary" size="large" @tap="handleFooterClick">{{ footerBtnText }}</global-button>
</view> </view>
<slot name="bottom"></slot> <slot name="bottom"></slot>
...@@ -476,6 +476,14 @@ defineExpose({ ...@@ -476,6 +476,14 @@ defineExpose({
}, },
element: paging element: paging
}) })
//处理ios底部兼容问题
const showBottom = ref(true)
uni.$on('changeShowBottom', (boolean) => {
const systemInfo = uni.getSystemInfoSync()
if (systemInfo.platform === 'ios') {
showBottom.value = !boolean
}
})
</script> </script>
<script> <script>
export default { export default {
......
...@@ -287,6 +287,9 @@ watch( ...@@ -287,6 +287,9 @@ watch(
}, },
{ immediate: true } { immediate: true }
) )
watch(show, (value) => {
uni.$emit('changeShowBottom', value)
})
//点击确定按钮 //点击确定按钮
const confirm = (e) => { const confirm = (e) => {
show.value = false show.value = false
......
...@@ -120,6 +120,7 @@ watch( ...@@ -120,6 +120,7 @@ watch(
scrollTop.value = ps.distance > 0 ? ps.distance : oldScrollTop.value scrollTop.value = ps.distance > 0 ? ps.distance : oldScrollTop.value
}) })
} }
uni.$emit('changeShowBottom', value)
} }
) )
const close = () => { const close = () => {
......
// 建议以文件名首字母作为前缀eb_ // 建议以文件名首字母作为前缀eb_
export const eb_deicingType = [
{ label: 'cleansurface I-BIO', value: 'cleansurface I-BIO' },
{ label: 'FCY-1A', value: 'FCY-1A' },
{ label: 'Cleanwing I', value: 'Cleanwing I' },
{ label: 'FCY-9311', value: 'FCY-9311' },
{ label: 'FCY-1Bio', value: 'FCY-1Bio' }
]
export const eb_antiicingMix = [ export const eb_antiicingMix = [
{ label: '25:75', value: '25:75' }, { label: '25:75', value: '25:75' },
{ label: '30:70', value: '30:70' }, { label: '30:70', value: '30:70' },
...@@ -22,14 +15,6 @@ export const eb_antiicingUnit = [ ...@@ -22,14 +15,6 @@ export const eb_antiicingUnit = [
{ label: 'USG', value: 'USG' }, { label: 'USG', value: 'USG' },
{ label: 'KG', value: 'KG' } { label: 'KG', value: 'KG' }
] ]
export const eb_antiicingType = [
{ label: 'Cleansurface1-B10', value: 'Cleansurface1-B10' },
{ label: 'FCY-1A', value: 'FCY-1A' },
{ label: 'Cleanwing II', value: 'Cleanwing II' },
{ label: 'FCY-9311', value: 'FCY-9311' },
{ label: 'FCY-2', value: 'FCY-2' },
{ label: 'FCY-4', value: 'FCY-4' }
]
export const eb_guaranteeUnit = [ export const eb_guaranteeUnit = [
{ label: '海技保障', value: '1' }, { label: '海技保障', value: '1' },
{ label: '非海技保障', value: '2' } { label: '非海技保障', value: '2' }
......
...@@ -60,7 +60,10 @@ const useAssignWorkStore = defineStore('assignWork', { ...@@ -60,7 +60,10 @@ const useAssignWorkStore = defineStore('assignWork', {
//是否领导 //是否领导
isPresenterUser(state) { isPresenterUser(state) {
const userStore = useUserStore() const userStore = useUserStore()
return state.details.presenterId == userStore.userInfo.id if (state.details.presenterId) {
return state.details.presenterId.split(',').includes(userStore.userInfo.id)
}
return false
}, },
//获取分解计划 //获取分解计划
getDecompose(state) { getDecompose(state) {
......
...@@ -3,6 +3,7 @@ import useUserStore from 'mocp/store/user' ...@@ -3,6 +3,7 @@ import useUserStore from 'mocp/store/user'
// const baseURL = 'https://hna-platform.anyremote.cn' //测试 // const baseURL = 'https://hna-platform.anyremote.cn' //测试
// const baseURL = 'https://moc.hnatechnic.com/api' //生产 // const baseURL = 'https://moc.hnatechnic.com/api' //生产
// const baseURL = 'http://10.123.48.67/api' //Amms内网 // const baseURL = 'http://10.123.48.67/api' //Amms内网
// const baseURL = 'http://10.121.48.157/gky_mocp_bs/api' //北数高可用测试环境
const baseURL = 'https://hnaelbtest.hnatechnic.com/mocptest/api' //内网 const baseURL = 'https://hnaelbtest.hnatechnic.com/mocptest/api' //内网
class ServiceLoading { class ServiceLoading {
......
...@@ -94,11 +94,11 @@ ...@@ -94,11 +94,11 @@
}, },
// mocp功能模块 // mocp功能模块
{ {
"path": "pages/modules/mocp/login/index", "path": "pages/modules/mocp/login/index",
"style": { "style": {
"navigationBarTitleText": "登录" "navigationBarTitleText": "登录"
} }
}, },
{ {
"path": "pages/modules/mocp/panel/index", "path": "pages/modules/mocp/panel/index",
"style": { "style": {
......
...@@ -3,7 +3,7 @@ export const loginFormRef = ref() ...@@ -3,7 +3,7 @@ export const loginFormRef = ref()
//表单数据 //表单数据
export const loginForm = reactive({ export const loginForm = reactive({
username: '', //devzj3 username: '', //devzj3
password: '', //Ifar_9527008 / Ifar2016_0525 password: '', //Ifar_SAFE_202506_13
verifyCode: '' verifyCode: ''
}) })
export const showLoad = ref(false) export const showLoad = ref(false)
......
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
<view class="mocp-title">除冰记录</view> <view class="mocp-title">除冰记录</view>
<view class="mocp-form"> <view class="mocp-form">
<up-form-item label="除冰液型号" prop="deicingType" :borderBottom="true"> <up-form-item label="除冰液型号" prop="deicingType" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.deicingType" dictkey="eb_deicingType" clearable></global-picker> <global-picker pickAlign="right" v-model="formData.deicingType" paramsType="DeicingType" clearable></global-picker>
</up-form-item> </up-form-item>
<up-form-item label="混合比" prop="deicingMix" :borderBottom="true"> <up-form-item label="混合比" prop="deicingMix" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.deicingMix" dictkey="eb_antiicingMix" clearable></global-picker> <global-picker pickAlign="right" v-model="formData.deicingMix" dictkey="eb_antiicingMix" clearable></global-picker>
...@@ -244,11 +244,11 @@ ...@@ -244,11 +244,11 @@
></global-date> ></global-date>
</up-form-item> </up-form-item>
</view> </view>
<!-- 防冰记录 --> <!-- 防冰记录1 -->
<view class="mocp-title">防冰记录</view> <view class="mocp-title">防冰记录1</view>
<view class="mocp-form"> <view class="mocp-form">
<up-form-item label="防冰液型号" prop="antiicingType" :borderBottom="true"> <up-form-item label="防冰液型号" prop="antiicingType" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.antiicingType" dictkey="eb_antiicingType" clearable></global-picker> <global-picker pickAlign="right" v-model="formData.antiicingType" paramsType="AntiicingType" clearable></global-picker>
</up-form-item> </up-form-item>
<up-form-item label="混合比" prop="antiicingMix" :borderBottom="true"> <up-form-item label="混合比" prop="antiicingMix" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.antiicingMix" dictkey="eb_antiicingMix" clearable></global-picker> <global-picker pickAlign="right" v-model="formData.antiicingMix" dictkey="eb_antiicingMix" clearable></global-picker>
...@@ -417,6 +417,179 @@ ...@@ -417,6 +417,179 @@
></global-date> ></global-date>
</up-form-item> </up-form-item>
</view> </view>
<!-- 防冰记录2 -->
<view class="mocp-title">防冰记录2</view>
<view class="mocp-form">
<up-form-item label="防冰液型号" prop="antiicing2Type" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.antiicing2Type" paramsType="AntiicingType" clearable></global-picker>
</up-form-item>
<up-form-item label="混合比" prop="antiicing2Mix" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.antiicing2Mix" dictkey="eb_antiicingMix" clearable></global-picker>
</up-form-item>
<up-form-item label="自定义混合比" prop="antiicingMix" :borderBottom="true" v-if="formData.antiicingMix == 'Other'">
<view style="display: flex; align-items: center">
<global-number-input
v-model="formData.antiicing2Mix1"
placeholder="请输入"
inputAlign="left"
border="surround"
></global-number-input>
<text style="margin: 0 20rpx">:</text>
<global-number-input
v-model="formData.antiicing2Mix2"
placeholder="请输入"
inputAlign="left"
border="surround"
></global-number-input>
</view>
</up-form-item>
<view class="sample-table">
<view class="sample-thead">
<view class="sample-thead-th">
<view class="sample-thead-td">除冰车号</view>
<view class="spacer"></view>
<view class="sample-thead-td">防冰人员</view>
<view class="spacer"></view>
<view class="sample-thead-td">用量</view>
<view class="spacer"></view>
<view class="sample-thead-td">单位</view>
</view>
</view>
<view class="sample-tbody">
<view class="sample-tbody-tr">
<view class="sample-tbody-td">
<up-input v-model="formData.antiicing2CartNo1" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<up-input v-model="formData.antiicing2Persion1" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<global-number-input
v-model="formData.antiicing2Quantity1"
:greater="0"
:precision="2"
inputAlign="left"
border="surround"
></global-number-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<global-picker v-model="formData.antiicing2Unit1" dictkey="eb_antiicingUnit" clearable border></global-picker>
</view>
</view>
<view class="sample-tbody-tr">
<view class="sample-tbody-td">
<up-input v-model="formData.antiicing2CartNo2" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<up-input v-model="formData.antiicing2Persion2" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<global-number-input
v-model="formData.antiicing2Quantity2"
:greater="0"
:precision="2"
inputAlign="left"
border="surround"
></global-number-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<global-picker v-model="formData.antiicing2Unit2" dictkey="eb_antiicingUnit" clearable border></global-picker>
</view>
</view>
<view class="sample-tbody-tr">
<view class="sample-tbody-td">
<up-input v-model="formData.antiicing2CartNo3" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<up-input v-model="formData.antiicing2Persion3" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<global-number-input
v-model="formData.antiicing2Quantity3"
:greater="0"
:precision="2"
inputAlign="left"
border="surround"
></global-number-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<global-picker v-model="formData.antiicing2Unit3" dictkey="eb_antiicingUnit" clearable border></global-picker>
</view>
</view>
<view class="sample-tbody-tr">
<view class="sample-tbody-td">
<up-input v-model="formData.antiicing2CartNo4" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<up-input v-model="formData.antiicing2Persion4" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<global-number-input
v-model="formData.antiicing2Quantity4"
:greater="0"
:precision="2"
inputAlign="left"
border="surround"
></global-number-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<global-picker v-model="formData.antiicing2Unit4" dictkey="eb_antiicingUnit" clearable border></global-picker>
</view>
</view>
</view>
</view>
<view class="mocp-button">
<global-button type="primary" :radius="0" border @tap="submitAntiicing2">提交</global-button>
</view>
<up-form-item label="用量合计" prop="antiicing2QuantityTotal" :borderBottom="true">
<up-input
type="number"
v-model="formData.antiicing2QuantityTotal"
inputAlign="right"
border="none"
placeholder="填写混合比后自动计算"
readonly
clearable
></up-input>
</up-form-item>
<up-form-item label="保持时间" prop="antiicing2Duration" :borderBottom="true">
<up-input v-model="formData.antiicing2Duration" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item>
<up-form-item label="开始时间" prop="antiicing2StartTime" :borderBottom="true">
<global-date
mode="time"
pickAlign="right"
clearable
v-model="formData.antiicing2StartTime"
:timestamp="false"
valueFormat="HH:mm"
placeholder="请选择时间"
></global-date>
</up-form-item>
<up-form-item label="结束时间" prop="antiicing2EndTime" :borderBottom="true">
<global-date
mode="time"
pickAlign="right"
clearable
v-model="formData.antiicing2EndTime"
:timestamp="false"
valueFormat="HH:mm"
placeholder="请选择时间"
></global-date>
</up-form-item>
</view>
<view class="mocp-form"> <view class="mocp-form">
<up-form-item label="备注" prop="remark" :borderBottom="true"> <up-form-item label="备注" prop="remark" :borderBottom="true">
<up-input v-model="formData.remark" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <up-input v-model="formData.remark" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
...@@ -441,7 +614,7 @@ ...@@ -441,7 +614,7 @@
</view> </view>
</view> </view>
</up-modal> </up-modal>
<!-- 防冰超量警告 --> <!-- 防冰超量警告1 -->
<up-modal :show="showAntiicing" title="超量使用" @confirm="confirmAntiicing" closeOnClickOverlay @close="showAntiicing = false"> <up-modal :show="showAntiicing" title="超量使用" @confirm="confirmAntiicing" closeOnClickOverlay @close="showAntiicing = false">
<view class="warn-modal"> <view class="warn-modal">
<view class="warn-title">请填写超量使用原因</view> <view class="warn-title">请填写超量使用原因</view>
...@@ -458,6 +631,23 @@ ...@@ -458,6 +631,23 @@
</view> </view>
</view> </view>
</up-modal> </up-modal>
<!-- 防冰超量警告2 -->
<up-modal :show="showAntiicing2" title="超量使用" @confirm="confirmAntiicing2" closeOnClickOverlay @close="showAntiicing2 = false">
<view class="warn-modal">
<view class="warn-title">请填写超量使用原因</view>
<up-input v-model="formData.antiicing2Remark" border="bottom" placeholder="请输入" clearable></up-input>
<view class="warn-upload">
<global-upload-image
v-model="formData.antiicing2File"
map-field-name="id"
:width="165"
:height="165"
:file-list="antiicing2File"
@getFileList="getAntiicing2File"
></global-upload-image>
</view>
</view>
</up-modal>
</template> </template>
<script setup> <script setup>
...@@ -471,7 +661,10 @@ import { ...@@ -471,7 +661,10 @@ import {
deicingFlag, deicingFlag,
antiicingFlag, antiicingFlag,
deicingFile, deicingFile,
antiicingFile antiicingFile,
showAntiicing2,
antiicing2File,
antiicing2Flag
} from './constants/add.compositions' } from './constants/add.compositions'
import { navigateTo } from 'mocp/utils/jump' import { navigateTo } from 'mocp/utils/jump'
import { import {
...@@ -483,7 +676,10 @@ import { ...@@ -483,7 +676,10 @@ import {
submitDeicing, submitDeicing,
submitAntiicing, submitAntiicing,
getDeicingFile, getDeicingFile,
getAntiicingFile getAntiicingFile,
confirmAntiicing2,
getAntiicing2File,
submitAntiicing2
} from './constants/add.functionals' } from './constants/add.functionals'
import { onUnmounted, watch, watchEffect } from 'vue' import { onUnmounted, watch, watchEffect } from 'vue'
import { getTerminalSelect } from 'mocp/utils/permission' import { getTerminalSelect } from 'mocp/utils/permission'
...@@ -515,7 +711,7 @@ watchEffect(() => { ...@@ -515,7 +711,7 @@ watchEffect(() => {
} else { } else {
formData.deicingQuantityTotal = undefined formData.deicingQuantityTotal = undefined
} }
//防冰用量合计 //防冰用量1合计
const antiicingQuantityTotal = const antiicingQuantityTotal =
getOneTotal(formData.antiicingQuantity1, formData.antiicingUnit1) + getOneTotal(formData.antiicingQuantity1, formData.antiicingUnit1) +
getOneTotal(formData.antiicingQuantity2, formData.antiicingUnit2) + getOneTotal(formData.antiicingQuantity2, formData.antiicingUnit2) +
...@@ -535,16 +731,50 @@ watchEffect(() => { ...@@ -535,16 +731,50 @@ watchEffect(() => {
} else { } else {
formData.antiicingQuantityTotal = undefined formData.antiicingQuantityTotal = undefined
} }
//防冰用量2合计
const antiicing2QuantityTotal =
getOneTotal(formData.antiicing2Quantity1, formData.antiicing2Unit1) +
getOneTotal(formData.antiicing2Quantity2, formData.antiicing2Unit2) +
getOneTotal(formData.antiicing2Quantity3, formData.antiicing2Unit3) +
getOneTotal(formData.antiicing2Quantity4, formData.antiicing2Unit4)
if (formData.antiicing2Mix) {
if (formData.antiicing2Mix == 'Other') {
if (formData.antiicing2Mix1 && formData.antiicing2Mix2) {
const percent = parseFloat(formData.antiicing2Mix1) / (parseFloat(formData.antiicing2Mix1) + parseFloat(formData.antiicing2Mix2))
formData.antiicing2QuantityTotal = parseFloat((antiicing2QuantityTotal * percent).toFixed(4)) || undefined
}
} else {
const percentArr = formData.antiicing2Mix.split(':')
const percent = parseFloat(percentArr[0]) / (parseFloat(percentArr[0]) + parseFloat(percentArr[1]))
formData.antiicing2QuantityTotal = parseFloat((antiicing2QuantityTotal * percent).toFixed(4)) || undefined
}
} else {
formData.antiicing2QuantityTotal = undefined
}
}) })
watch([() => formData.deicingQuantityTotal, () => formData.weatherToday, () => formData.modelType], () => { watch([() => formData.deicingQuantityTotal, () => formData.weatherToday, () => formData.modelType], () => {
deicingFlag.value = false if (deicingFlag.value) {
formData.deicingRemark = '' deicingFlag.value = false
formData.deicingFile = '' formData.deicingRemark = ''
formData.deicingFile = ''
deicingFile.value = []
}
}) })
watch([() => formData.antiicingQuantityTotal, () => formData.weatherToday, () => formData.modelType], () => { watch([() => formData.antiicingQuantityTotal, () => formData.weatherToday, () => formData.modelType], () => {
antiicingFlag.value = false if (antiicingFlag.value) {
formData.antiicingRemark = '' antiicingFlag.value = false
formData.antiicingFile = '' formData.antiicingRemark = ''
formData.antiicingFile = ''
antiicingFile.value = []
}
})
watch([() => formData.antiicing2QuantityTotal, () => formData.weatherToday, () => formData.modelType], () => {
if (antiicing2Flag.value) {
antiicing2Flag.value = false
formData.antiicing2Remark = ''
formData.antiicing2File = ''
antiicing2File.value = []
}
}) })
// 海航集团内部的宽体机——A330-,787-,747-,777-,A350-,其余为窄体,集团外部机型-机型类别无对应数据需要手动选择 // 海航集团内部的宽体机——A330-,787-,747-,777-,A350-,其余为窄体,集团外部机型-机型类别无对应数据需要手动选择
const prefixes = ['A330-', '787-', '747-', '777-', 'A350-'] const prefixes = ['A330-', '787-', '747-', '777-', 'A350-']
......
...@@ -27,6 +27,32 @@ export const formData = reactive({ ...@@ -27,6 +27,32 @@ export const formData = reactive({
antiicingUnit2: '', antiicingUnit2: '',
antiicingUnit3: '', antiicingUnit3: '',
antiicingUnit4: '', antiicingUnit4: '',
antiicing2CartNo1: '',
antiicing2CartNo2: '',
antiicing2CartNo3: '',
antiicing2CartNo4: '',
antiicing2Duration: '',
antiicing2EndTime: '',
antiicing2Mix: '100:0',
antiicing2Mix1: undefined,
antiicing2Mix2: undefined,
antiicing2Persion1: '',
antiicing2Persion2: '',
antiicing2Persion3: '',
antiicing2Persion4: '',
antiicing2Quantity1: undefined,
antiicing2Quantity2: undefined,
antiicing2Quantity3: undefined,
antiicing2Quantity4: undefined,
antiicing2QuantityTotal: undefined,
antiicing2StartTime: '',
antiicing2Type: '',
antiicing2Unit1: '',
antiicing2Unit2: '',
antiicing2Unit3: '',
antiicing2Unit4: '',
customerSignImg: '', customerSignImg: '',
date: '', date: '',
deicingCartNo1: '', deicingCartNo1: '',
...@@ -70,7 +96,9 @@ export const formData = reactive({ ...@@ -70,7 +96,9 @@ export const formData = reactive({
deicingFile: '', deicingFile: '',
deicingRemark: '', deicingRemark: '',
antiicingFile: '', antiicingFile: '',
antiicingRemark: '' antiicingRemark: '',
antiicing2File: '',
antiicing2Remark: ''
}) })
export const rules = reactive({ export const rules = reactive({
...@@ -151,7 +179,11 @@ export const formRef = ref() ...@@ -151,7 +179,11 @@ export const formRef = ref()
export const deicingFlag = ref(false) export const deicingFlag = ref(false)
export const showDeicing = ref(false) export const showDeicing = ref(false)
export const deicingFile = ref([]) export const deicingFile = ref([])
//防冰弹框 //防冰弹框1
export const antiicingFlag = ref(false) export const antiicingFlag = ref(false)
export const showAntiicing = ref(false) export const showAntiicing = ref(false)
export const antiicingFile = ref([]) export const antiicingFile = ref([])
//防冰弹框2
export const antiicing2Flag = ref(false)
export const showAntiicing2 = ref(false)
export const antiicing2File = ref([])
import { getAirlineAcregApi } from 'mocp/api/electronicBill' import { getAirlineAcregApi } from 'mocp/api/electronicBill'
import { antiicingFile, antiicingFlag, deicingFile, deicingFlag, formData, formRef, showAntiicing, showDeicing } from './add.compositions' import {
antiicing2File,
antiicing2Flag,
antiicingFile,
antiicingFlag,
deicingFile,
deicingFlag,
formData,
formRef,
showAntiicing,
showAntiicing2,
showDeicing
} from './add.compositions'
import { validateParameters } from 'mocp/utils/tool' import { validateParameters } from 'mocp/utils/tool'
import { showToast } from 'mocp/utils/message' import { showToast } from 'mocp/utils/message'
...@@ -27,6 +39,9 @@ export const getDeicingFile = (value) => { ...@@ -27,6 +39,9 @@ export const getDeicingFile = (value) => {
export const getAntiicingFile = (value) => { export const getAntiicingFile = (value) => {
antiicingFile.value = value antiicingFile.value = value
} }
export const getAntiicing2File = (value) => {
antiicing2File.value = value
}
export const deicingValidate = () => { export const deicingValidate = () => {
if (!formData.modelType) { if (!formData.modelType) {
return uni.$mocpMessage.warning('请选择机型类别') return uni.$mocpMessage.warning('请选择机型类别')
...@@ -60,22 +75,50 @@ export const antiicingValidate = () => { ...@@ -60,22 +75,50 @@ export const antiicingValidate = () => {
if (!formData.weatherToday) { if (!formData.weatherToday) {
return uni.$mocpMessage.warning('请选择当日天气') return uni.$mocpMessage.warning('请选择当日天气')
} }
/******************防冰记录1******************/
//验证防冰混合比(Other) //验证防冰混合比(Other)
if (formData.antiicingMix == 'Other' && (!formData.antiicingMix1 || !formData.antiicingMix2)) { if (formData.antiicingMix == 'Other' && (!formData.antiicingMix1 || !formData.antiicingMix2)) {
return uni.$mocpMessage.warning('请填写防冰自定义混合比') return uni.$mocpMessage.warning('请填写防冰记录1-防冰自定义混合比')
} }
//验证防冰记录完整性 //验证防冰记录完整性
if (!validateParameters(formData.antiicingCartNo1, formData.antiicingPersion1, formData.antiicingQuantity1, formData.antiicingUnit1)) { if (!validateParameters(formData.antiicingCartNo1, formData.antiicingPersion1, formData.antiicingQuantity1, formData.antiicingUnit1)) {
return uni.$mocpMessage.warning('请完整填写第1条防冰记录') return uni.$mocpMessage.warning('请完整填写防冰记录1-第1条防冰记录')
} }
if (!validateParameters(formData.antiicingCartNo2, formData.antiicingPersion2, formData.antiicingQuantity2, formData.antiicingUnit2)) { if (!validateParameters(formData.antiicingCartNo2, formData.antiicingPersion2, formData.antiicingQuantity2, formData.antiicingUnit2)) {
return uni.$mocpMessage.warning('请完整填写第2条防冰记录') return uni.$mocpMessage.warning('请完整填写防冰记录1-第2条防冰记录')
} }
if (!validateParameters(formData.antiicingCartNo3, formData.antiicingPersion3, formData.antiicingQuantity3, formData.antiicingUnit3)) { if (!validateParameters(formData.antiicingCartNo3, formData.antiicingPersion3, formData.antiicingQuantity3, formData.antiicingUnit3)) {
return uni.$mocpMessage.warning('请完整填写第3条防冰记录') return uni.$mocpMessage.warning('请完整填写防冰记录1-第3条防冰记录')
} }
if (!validateParameters(formData.antiicingCartNo4, formData.antiicingPersion4, formData.antiicingQuantity4, formData.antiicingUnit4)) { if (!validateParameters(formData.antiicingCartNo4, formData.antiicingPersion4, formData.antiicingQuantity4, formData.antiicingUnit4)) {
return uni.$mocpMessage.warning('请完整填写第4条防冰记录') return uni.$mocpMessage.warning('请完整填写防冰记录1-第4条防冰记录')
}
return true
}
export const antiicing2Validate = () => {
if (!formData.modelType) {
return uni.$mocpMessage.warning('请选择机型类别')
}
if (!formData.weatherToday) {
return uni.$mocpMessage.warning('请选择当日天气')
}
/******************防冰记录2******************/
//验证防冰混合比(Other)
if (formData.antiicing2Mix == 'Other' && (!formData.antiicing2Mix1 || !formData.antiicing2Mix2)) {
return uni.$mocpMessage.warning('请填写防冰记录2-防冰自定义混合比')
}
//验证防冰记录完整性
if (!validateParameters(formData.antiicing2CartNo1, formData.antiicing2Persion1, formData.antiicing2Quantity1, formData.antiicing2Unit1)) {
return uni.$mocpMessage.warning('请完整填写防冰记录2-第1条防冰记录')
}
if (!validateParameters(formData.antiicing2CartNo2, formData.antiicing2Persion2, formData.antiicing2Quantity2, formData.antiicing2Unit2)) {
return uni.$mocpMessage.warning('请完整填写防冰记录2-第2条防冰记录')
}
if (!validateParameters(formData.antiicing2CartNo3, formData.antiicing2Persion3, formData.antiicing2Quantity3, formData.antiicing2Unit3)) {
return uni.$mocpMessage.warning('请完整填写防冰记录2-第3条防冰记录')
}
if (!validateParameters(formData.antiicing2CartNo4, formData.antiicing2Persion4, formData.antiicing2Quantity4, formData.antiicing2Unit4)) {
return uni.$mocpMessage.warning('请完整填写防冰记录2-第4条防冰记录')
} }
return true return true
} }
...@@ -87,12 +130,18 @@ export const handleFooterClick = async () => { ...@@ -87,12 +130,18 @@ export const handleFooterClick = async () => {
if (!antiicingValidate()) { if (!antiicingValidate()) {
return return
} }
if (!antiicing2Validate()) {
return
}
//是否点击提交验证除冰/防冰用量 //是否点击提交验证除冰/防冰用量
if (!deicingFlag.value && formData.deicingQuantityTotal > 0) { if (!deicingFlag.value && formData.deicingQuantityTotal > 0) {
return uni.$mocpMessage.warning('请提交除冰记录') return uni.$mocpMessage.warning('请提交除冰记录')
} }
if (!antiicingFlag.value && formData.antiicingQuantityTotal > 0) { if (!antiicingFlag.value && formData.antiicingQuantityTotal > 0) {
return uni.$mocpMessage.warning('请提交防冰记录') return uni.$mocpMessage.warning('请提交防冰记录1')
}
if (!antiicing2Flag.value && formData.antiicing2QuantityTotal > 0) {
return uni.$mocpMessage.warning('请提交防冰记录2')
} }
uni.$mocpJump.navigateTo('/panel/electronicBill/deicing/sign') uni.$mocpJump.navigateTo('/panel/electronicBill/deicing/sign')
} }
...@@ -179,6 +228,20 @@ export const submitAntiicing = () => { ...@@ -179,6 +228,20 @@ export const submitAntiicing = () => {
} }
} }
} }
export const submitAntiicing2 = () => {
if (!antiicing2Validate()) {
return
}
const limit = getLimit()
if (formData.antiicing2QuantityTotal && formData.antiicing2QuantityTotal > 0) {
if (formData.antiicing2QuantityTotal > limit[1]) {
showAntiicing2.value = true
} else {
antiicing2Flag.value = true
showToast('提交成功')
}
}
}
export const confirmAntiicing = () => { export const confirmAntiicing = () => {
if (!formData.antiicingRemark) { if (!formData.antiicingRemark) {
return showToast('请填写超量使用原因') return showToast('请填写超量使用原因')
...@@ -190,3 +253,14 @@ export const confirmAntiicing = () => { ...@@ -190,3 +253,14 @@ export const confirmAntiicing = () => {
antiicingFlag.value = true antiicingFlag.value = true
showAntiicing.value = false showAntiicing.value = false
} }
export const confirmAntiicing2 = () => {
if (!formData.antiicing2Remark) {
return showToast('请填写超量使用原因')
}
if (!formData.antiicing2File) {
return showToast('至少上传一张图片')
}
showToast('提交成功')
antiicing2Flag.value = true
showAntiicing2.value = false
}
...@@ -100,6 +100,32 @@ export const resetData = () => { ...@@ -100,6 +100,32 @@ export const resetData = () => {
antiicingUnit2: '', antiicingUnit2: '',
antiicingUnit3: '', antiicingUnit3: '',
antiicingUnit4: '', antiicingUnit4: '',
antiicing2CartNo1: '',
antiicing2CartNo2: '',
antiicing2CartNo3: '',
antiicing2CartNo4: '',
antiicing2Duration: '',
antiicing2EndTime: '',
antiicing2Mix: '100:0',
antiicing2Mix1: undefined,
antiicing2Mix2: undefined,
antiicing2Persion1: '',
antiicing2Persion2: '',
antiicing2Persion3: '',
antiicing2Persion4: '',
antiicing2Quantity1: undefined,
antiicing2Quantity2: undefined,
antiicing2Quantity3: undefined,
antiicing2Quantity4: undefined,
antiicing2QuantityTotal: undefined,
antiicing2StartTime: '',
antiicing2Type: '',
antiicing2Unit1: '',
antiicing2Unit2: '',
antiicing2Unit3: '',
antiicing2Unit4: '',
customerSignImg: '', customerSignImg: '',
date: Day().valueOf(), date: Day().valueOf(),
deicingCartNo1: '', deicingCartNo1: '',
...@@ -143,7 +169,9 @@ export const resetData = () => { ...@@ -143,7 +169,9 @@ export const resetData = () => {
deicingFile: '', deicingFile: '',
deicingRemark: '', deicingRemark: '',
antiicingFile: '', antiicingFile: '',
antiicingRemark: '' antiicingRemark: '',
antiicing2File: '',
antiicing2Remark: ''
}) })
showDeicing.value = false showDeicing.value = false
showAntiicing.value = false showAntiicing.value = false
......
...@@ -47,12 +47,14 @@ import useBaseStore from 'mocp/store/base' ...@@ -47,12 +47,14 @@ import useBaseStore from 'mocp/store/base'
import useUserStore from 'mocp/store/user' import useUserStore from 'mocp/store/user'
import { ref } from 'vue' import { ref } from 'vue'
import { onUnload } from '@dcloudio/uni-app' import { onUnload } from '@dcloudio/uni-app'
import { formData } from './constants/add.compositions' import { antiicingFile, deicingFile, formData } from './constants/add.compositions'
const baseStore = useBaseStore() const baseStore = useBaseStore()
const userStore = useUserStore() const userStore = useUserStore()
const goDetails = (data) => { const goDetails = (data) => {
Object.assign(formData, data) Object.assign(formData, data)
deicingFile.value = data.deicingFileList
antiicingFile.value = data.antiicingFileList
uni.$mocpJump.navigateTo('/panel/electronicBill/deicing/add') uni.$mocpJump.navigateTo('/panel/electronicBill/deicing/add')
} }
//刷新 //刷新
......
...@@ -34,7 +34,6 @@ import { useDrawSignature } from 'mocp/hooks/use-sign/useSign' ...@@ -34,7 +34,6 @@ import { useDrawSignature } from 'mocp/hooks/use-sign/useSign'
import { canvasImage } from './constants/sign.compositions' import { canvasImage } from './constants/sign.compositions'
import { handleSubmit } from './constants/sign.functionals' import { handleSubmit } from './constants/sign.functionals'
import { formData } from './constants/add.compositions' import { formData } from './constants/add.compositions'
import { onBeforeUnmount } from 'vue'
import { onLoad } from '@dcloudio/uni-app' import { onLoad } from '@dcloudio/uni-app'
const { isSigned, touchStart, touchMove, touchEnd, clear, getPath } = useDrawSignature('canvas', { const { isSigned, touchStart, touchMove, touchEnd, clear, getPath } = useDrawSignature('canvas', {
...@@ -59,10 +58,7 @@ const handleClear = () => { ...@@ -59,10 +58,7 @@ const handleClear = () => {
canvasImage.value = '' canvasImage.value = ''
clear() clear()
} }
onBeforeUnmount(() => {
handleClear()
formData.customerSignImg = ''
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.mocp-sign, .mocp-sign,
......
...@@ -150,13 +150,13 @@ ...@@ -150,13 +150,13 @@
<view class="mocp-title">特种车辆、设备、工具租用记录</view> <view class="mocp-title">特种车辆、设备、工具租用记录</view>
<view class="mocp-form"> <view class="mocp-form">
<up-form-item label="金工人员工时" prop="jgrygs" :borderBottom="true"> <up-form-item label="金工人员工时" prop="jgrygs" :borderBottom="true">
<global-number-input v-model="formData.jgrygs" placeholder="请输入(单位/小时)" :precision="2"></global-number-input> <up-input v-model="formData.jgrygs" placeholder="请输入(人数*小时)" inputAlign="right" border="none" clearable></up-input>
</up-form-item> </up-form-item>
<up-form-item label="普通工作梯(2米以下)" prop="ptgzt" :borderBottom="true"> <up-form-item label="普通工作梯(2米以下)" prop="ptgzt" :borderBottom="true">
<global-number-input v-model="formData.ptgzt" placeholder="请输入(单位/次)"></global-number-input> <global-number-input v-model="formData.ptgzt" placeholder="请输入(单位/次)"></global-number-input>
</up-form-item> </up-form-item>
<up-form-item label="高空工作梯(2米以上)" prop="gkgzt" :borderBottom="true"> <up-form-item label="高空工作梯(2米以上)" prop="gkgzt" :borderBottom="true">
<global-number-input v-model="formData.lkgzt" placeholder="请输入(单位/次)"></global-number-input> <global-number-input v-model="formData.gkgzt" placeholder="请输入(单位/次)"></global-number-input>
</up-form-item> </up-form-item>
<up-form-item label="机身千斤顶" prop="jsqjd" :borderBottom="true"> <up-form-item label="机身千斤顶" prop="jsqjd" :borderBottom="true">
<global-number-input v-model="formData.jsqjd" placeholder="请输入(单位/次)"></global-number-input> <global-number-input v-model="formData.jsqjd" placeholder="请输入(单位/次)"></global-number-input>
...@@ -211,7 +211,7 @@ ...@@ -211,7 +211,7 @@
<global-number-input v-model="formData.cydlgjcs" placeholder="请输入(单位/次)"></global-number-input> <global-number-input v-model="formData.cydlgjcs" placeholder="请输入(单位/次)"></global-number-input>
</up-form-item> </up-form-item>
<up-form-item label="NDT人员工时" prop="ndtrygs" :borderBottom="true"> <up-form-item label="NDT人员工时" prop="ndtrygs" :borderBottom="true">
<global-number-input v-model="formData.ndtrygs" placeholder="请输入(单位/小时)" :precision="2"></global-number-input> <up-input v-model="formData.ndtrygs" placeholder="请输入(人数*小时)" inputAlign="right" border="none" clearable></up-input>
</up-form-item> </up-form-item>
<!-- NDT/孔探设备 --> <!-- NDT/孔探设备 -->
<up-form-item label="NDT/孔探设备" :borderBottom="true"></up-form-item> <up-form-item label="NDT/孔探设备" :borderBottom="true"></up-form-item>
......
...@@ -8,6 +8,13 @@ ...@@ -8,6 +8,13 @@
<up-cell title="创建时间" :value="timeStampFormat(getStepDetails.creationTime)"></up-cell> <up-cell title="创建时间" :value="timeStampFormat(getStepDetails.creationTime)"></up-cell>
<up-cell title="计划工时" :value="getStepDetails.plannedWork"></up-cell> <up-cell title="计划工时" :value="getStepDetails.plannedWork"></up-cell>
<up-cell title="步骤描述" :label="getStepDetails.stepContent || '无'"></up-cell> <up-cell title="步骤描述" :label="getStepDetails.stepContent || '无'"></up-cell>
<up-cell title="附件">
<template #label>
<view style="margin-top: 16rpx">
<global-upload :fileList="getStepDetails.stepFile" :showUpload="false"></global-upload>
</view>
</template>
</up-cell>
</up-cell-group> </up-cell-group>
</view> </view>
<view class="mocp-cell"> <view class="mocp-cell">
......
...@@ -66,6 +66,15 @@ ...@@ -66,6 +66,15 @@
<up-collapse-item title="工作内容" name="2"> <up-collapse-item title="工作内容" name="2">
<view class="mocp-cell"> <view class="mocp-cell">
<up-cell-group> <up-cell-group>
<up-cell>
<template #title>
<view>
注:1-10、12条适用于航后及停场飞机(
<text class="mocp-color-primary-7">含长过站停场</text>
)。11、12适用于过站运行的飞机。
</view>
</template>
</up-cell>
<up-cell title="开始时间"> <up-cell title="开始时间">
<template #value> <template #value>
<global-date-picker v-model="formData.startTime" :disabled="getDisabled"></global-date-picker> <global-date-picker v-model="formData.startTime" :disabled="getDisabled"></global-date-picker>
......
...@@ -226,7 +226,7 @@ export const menuList = ref([ ...@@ -226,7 +226,7 @@ export const menuList = ref([
default: false, default: false,
count: 0, count: 0,
url: '/panel/workSupervision/list', url: '/panel/workSupervision/list',
apiPath: '/terminalQualityManagement' apiPath: ''
}, },
// 定检管理 // 定检管理
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment