Commit 50e54414 by pangchong

feat: 三方收费单

parent f993cd2d
......@@ -244,8 +244,8 @@
></global-date>
</up-form-item>
</view>
<!-- 防冰记录 -->
<view class="mocp-title">防冰记录</view>
<!-- 防冰记录1 -->
<view class="mocp-title">防冰记录1</view>
<view class="mocp-form">
<up-form-item label="防冰液型号" prop="antiicingType" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.antiicingType" dictkey="eb_antiicingType" clearable></global-picker>
......@@ -417,6 +417,179 @@
></global-date>
</up-form-item>
</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" dictkey="eb_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">
<up-form-item label="备注" prop="remark" :borderBottom="true">
<up-input v-model="formData.remark" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
......@@ -441,7 +614,7 @@
</view>
</view>
</up-modal>
<!-- 防冰超量警告 -->
<!-- 防冰超量警告1 -->
<up-modal :show="showAntiicing" title="超量使用" @confirm="confirmAntiicing" closeOnClickOverlay @close="showAntiicing = false">
<view class="warn-modal">
<view class="warn-title">请填写超量使用原因</view>
......@@ -458,6 +631,23 @@
</view>
</view>
</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>
<script setup>
......@@ -471,7 +661,10 @@ import {
deicingFlag,
antiicingFlag,
deicingFile,
antiicingFile
antiicingFile,
showAntiicing2,
antiicing2File,
antiicing2Flag
} from './constants/add.compositions'
import { navigateTo } from 'mocp/utils/jump'
import {
......@@ -483,7 +676,10 @@ import {
submitDeicing,
submitAntiicing,
getDeicingFile,
getAntiicingFile
getAntiicingFile,
confirmAntiicing2,
getAntiicing2File,
submitAntiicing2
} from './constants/add.functionals'
import { onUnmounted, watch, watchEffect } from 'vue'
import { getTerminalSelect } from 'mocp/utils/permission'
......@@ -515,7 +711,7 @@ watchEffect(() => {
} else {
formData.deicingQuantityTotal = undefined
}
//防冰用量合计
//防冰用量1合计
const antiicingQuantityTotal =
getOneTotal(formData.antiicingQuantity1, formData.antiicingUnit1) +
getOneTotal(formData.antiicingQuantity2, formData.antiicingUnit2) +
......@@ -535,6 +731,26 @@ watchEffect(() => {
} else {
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], () => {
if (deicingFlag.value) {
......@@ -552,6 +768,14 @@ watch([() => formData.antiicingQuantityTotal, () => formData.weatherToday, () =>
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-,其余为窄体,集团外部机型-机型类别无对应数据需要手动选择
const prefixes = ['A330-', '787-', '747-', '777-', 'A350-']
watchEffect(() => {
......
......@@ -27,6 +27,32 @@ export const formData = reactive({
antiicingUnit2: '',
antiicingUnit3: '',
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: '',
date: '',
deicingCartNo1: '',
......@@ -70,7 +96,9 @@ export const formData = reactive({
deicingFile: '',
deicingRemark: '',
antiicingFile: '',
antiicingRemark: ''
antiicingRemark: '',
antiicing2File: '',
antiicing2Remark: ''
})
export const rules = reactive({
......@@ -151,7 +179,11 @@ export const formRef = ref()
export const deicingFlag = ref(false)
export const showDeicing = ref(false)
export const deicingFile = ref([])
//防冰弹框
//防冰弹框1
export const antiicingFlag = ref(false)
export const showAntiicing = ref(false)
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 { 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 { showToast } from 'mocp/utils/message'
......@@ -27,6 +39,9 @@ export const getDeicingFile = (value) => {
export const getAntiicingFile = (value) => {
antiicingFile.value = value
}
export const getAntiicing2File = (value) => {
antiicing2File.value = value
}
export const deicingValidate = () => {
if (!formData.modelType) {
return uni.$mocpMessage.warning('请选择机型类别')
......@@ -60,22 +75,50 @@ export const antiicingValidate = () => {
if (!formData.weatherToday) {
return uni.$mocpMessage.warning('请选择当日天气')
}
/******************防冰记录1******************/
//验证防冰混合比(Other)
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)) {
return uni.$mocpMessage.warning('请完整填写第1条防冰记录')
return uni.$mocpMessage.warning('请完整填写防冰记录1-第1条防冰记录')
}
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)) {
return uni.$mocpMessage.warning('请完整填写第3条防冰记录')
return uni.$mocpMessage.warning('请完整填写防冰记录1-第3条防冰记录')
}
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
}
......@@ -87,12 +130,18 @@ export const handleFooterClick = async () => {
if (!antiicingValidate()) {
return
}
if (!antiicing2Validate()) {
return
}
//是否点击提交验证除冰/防冰用量
if (!deicingFlag.value && formData.deicingQuantityTotal > 0) {
return uni.$mocpMessage.warning('请提交除冰记录')
}
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')
}
......@@ -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 = () => {
if (!formData.antiicingRemark) {
return showToast('请填写超量使用原因')
......@@ -190,3 +253,14 @@ export const confirmAntiicing = () => {
antiicingFlag.value = true
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 = () => {
antiicingUnit2: '',
antiicingUnit3: '',
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: '',
date: Day().valueOf(),
deicingCartNo1: '',
......@@ -143,7 +169,9 @@ export const resetData = () => {
deicingFile: '',
deicingRemark: '',
antiicingFile: '',
antiicingRemark: ''
antiicingRemark: '',
antiicing2File: '',
antiicing2Remark: ''
})
showDeicing.value = false
showAntiicing.value = false
......
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