Commit d8047a86 by pangchong

feat: 新建除冰收费单

parent 326e9d6a
<template> <template>
<!-- 全局下拉框控件 --> <!-- 全局下拉框控件 -->
<view class="picker" :style="style"> <view class="picker" :class="{ 'u-border': ps.border }" :style="style">
<global-popup v-model="show" :height="592" :customStyle="{ padding: '28rpx 32rpx' }" v-if="filter" :distance="distance"> <global-popup v-model="show" :height="592" :customStyle="{ padding: '28rpx 32rpx' }" v-if="filter" :distance="distance">
<template #top> <template #top>
<view> <view>
...@@ -61,6 +61,11 @@ const ps = defineProps({ ...@@ -61,6 +61,11 @@ const ps = defineProps({
type: Boolean, type: Boolean,
default: false default: false
}, },
//是否有边框
border: {
type: Boolean,
default: false
},
//是否多选(只对filter有效)---待优化 //是否多选(只对filter有效)---待优化
// multiple: { // multiple: {
// type: Boolean, // type: Boolean,
...@@ -257,7 +262,12 @@ watch( ...@@ -257,7 +262,12 @@ watch(
<style lang="scss" scoped> <style lang="scss" scoped>
.picker { .picker {
flex: auto; flex: auto;
height: 100%;
border-radius: 4px;
padding-left: 18rpx;
box-sizing: border-box;
&-content { &-content {
height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
line-height: 48rpx; line-height: 48rpx;
......
...@@ -73,6 +73,7 @@ const switchChange = (value) => { ...@@ -73,6 +73,7 @@ const switchChange = (value) => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.switch { .switch {
flex: 1;
display: flex; display: flex;
} }
</style> </style>
...@@ -70,6 +70,7 @@ import { computed, ref, watch } from 'vue' ...@@ -70,6 +70,7 @@ import { computed, ref, watch } from 'vue'
import { cloneDeep } from 'lodash' import { cloneDeep } from 'lodash'
import { httpInterceptor } from 'mocp/utils/http' import { httpInterceptor } from 'mocp/utils/http'
import { onBeforeUnmount } from 'vue' import { onBeforeUnmount } from 'vue'
import { previewFile } from 'mocp/utils/tool'
const es = defineEmits(['update:modelValue', 'change', 'getFileList']) const es = defineEmits(['update:modelValue', 'change', 'getFileList'])
const ps = defineProps({ const ps = defineProps({
...@@ -149,35 +150,6 @@ const confirm = () => { ...@@ -149,35 +150,6 @@ const confirm = () => {
show.value = false show.value = false
fileList.value.splice(index.value, 1) fileList.value.splice(index.value, 1)
} }
//预览图片
const previewFile = (fileUrl) => {
uni.showLoading({
title: '正在打开文件',
mask: true
})
uni.downloadFile({
url: fileUrl,
success: function (res) {
var filePath = res.tempFilePath
uni.openDocument({
filePath: filePath,
showMenu: true,
success: function (res) {
uni.hideLoading()
console.log('打开文件成功')
},
fail: function () {
uni.hideLoading()
uni.$mocpMessage.error('打开文件失败,请重新打开')
}
})
},
fail: function () {
uni.hideLoading()
uni.$mocpMessage.error('打开文件失败,请重新打开')
}
})
}
const isLoading = ref(false) const isLoading = ref(false)
const onuploadEnd = (e) => { const onuploadEnd = (e) => {
if (e.type == 'success') { if (e.type == 'success') {
......
...@@ -7,7 +7,7 @@ export const eb_deicingType = [ ...@@ -7,7 +7,7 @@ export const eb_deicingType = [
{ label: 'FCY-1Bio', value: 'FCY-1Bio' } { label: 'FCY-1Bio', value: 'FCY-1Bio' }
] ]
export const eb_antiicingMix = [ export const eb_antiicingMix = [
{ label: '30:70', value: '25:75' }, { label: '25:75', value: '25:75' },
{ label: '30:70', value: '30:70' }, { label: '30:70', value: '30:70' },
{ label: '40:60', value: '40:60' }, { label: '40:60', value: '40:60' },
{ label: '50:50', value: '50:50' }, { label: '50:50', value: '50:50' },
...@@ -29,3 +29,20 @@ export const eb_antiicingType = [ ...@@ -29,3 +29,20 @@ export const eb_antiicingType = [
{ label: 'FCY-9311', value: 'FCY-9311' }, { label: 'FCY-9311', value: 'FCY-9311' },
{ label: 'FCY-2', value: 'FCY-2' } { label: 'FCY-2', value: 'FCY-2' }
] ]
export const eb_guaranteeUnit = [
{ label: '海技保障', value: '1' },
{ label: '非海技保障', value: '2' }
]
export const eb_weatherToday = [
{ label: '霜', value: '1' },
{ label: '雾', value: '2' },
{ label: '冻雾', value: '3' },
{ label: '结冰', value: '4' },
{ label: '小雪', value: '5' },
{ label: '中雪', value: '6' },
{ label: '大雪', value: '7' }
]
export const eb_modelType = [
{ label: '宽体机', value: '1' },
{ label: '窄体机', value: '2' }
]
...@@ -43,30 +43,55 @@ export const uniqueArray = (arr) => { ...@@ -43,30 +43,55 @@ export const uniqueArray = (arr) => {
return uniqueArr return uniqueArr
} }
// base64转临时文件 /**
export function base64ToTempFilePath(base64Data) { * 文件预览
return new Promise((resolve, reject) => { * @param {*} fileUrl
const fs = uni.getFileSystemManager() */
// 生成临时文件名,并构建临时文件路径 export const previewFile = (fileUrl) => {
const fileName = `temp_file_${Date.now()}.png` uni.showLoading({
const tempFilePath = `${uni.env.USER_DATA_PATH}/${fileName}` title: '正在打开文件',
// 移除Base64数据前缀(如果存在) mask: true
const base64WithoutPrefix = base64Data.split(',')[1] })
// 将Base64字符串转换为ArrayBuffer uni.downloadFile({
const arrayBuffer = uni.base64ToArrayBuffer(base64WithoutPrefix) url: fileUrl,
// 将ArrayBuffer写入临时文件 success: function (res) {
fs.writeFile({ var filePath = res.tempFilePath
filePath: tempFilePath, uni.openDocument({
data: arrayBuffer, filePath: filePath,
encoding: 'binary', showMenu: true,
success: () => { success: function (res) {
// 文件写入成功,返回临时文件路径 uni.hideLoading()
resolve(tempFilePath) console.log('打开文件成功')
}, },
fail: (err) => { fail: function () {
// 文件写入失败,返回错误信息 uni.hideLoading()
reject(err) uni.$mocpMessage.error('打开文件失败,请重新打开')
} }
}) })
},
fail: function () {
uni.hideLoading()
uni.$mocpMessage.error('打开文件失败,请重新打开')
}
}) })
} }
/**
* 如果至少有一个参数被填写,那么所有参数都必须被填写
* @param {...any} params
* @returns
*/
export const validateParameters = (...params) => {
// 检查参数数组中是否至少有一个非空(非undefined、非null、非空字符串)的值
const anyFilled = params.some((param) => param !== undefined && param !== null && param !== '')
// 如果至少有一个参数被填写,那么检查是否所有的参数都被填写
if (anyFilled) {
// 使用every方法检查所有参数是否都被填写
const allFilled = params.every((param) => param !== undefined && param !== null && param !== '')
return allFilled
}
// 如果没有任何参数被填写,那么也是有效的
return true
}
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
{ {
"path": "pages/modules/mocp/tab/index", "path": "pages/modules/mocp/tab/index",
"style": { "style": {
"navigationBarTitleText": "tab页面", "navigationBarTitleText": "",
"app-plus": { "app-plus": {
"bounce": "none" "bounce": "none"
//关闭窗口回弹效果 //关闭窗口回弹效果
......
...@@ -29,9 +29,18 @@ ...@@ -29,9 +29,18 @@
<up-form-item label="飞机所属单位" prop="aircaraftoperator" :borderBottom="true" required> <up-form-item label="飞机所属单位" prop="aircaraftoperator" :borderBottom="true" required>
<global-picker pickAlign="right" v-model="formData.aircaraftoperator" :options="allAirline" clearable filter></global-picker> <global-picker pickAlign="right" v-model="formData.aircaraftoperator" :options="allAirline" clearable filter></global-picker>
</up-form-item> </up-form-item>
<up-form-item label="保障单位" prop="guaranteeUnit" :borderBottom="true" required>
<global-picker pickAlign="right" v-model="formData.guaranteeUnit" dictkey="eb_guaranteeUnit" clearable></global-picker>
</up-form-item>
<up-form-item label="当日天气" prop="weatherToday" :borderBottom="true" required>
<global-picker pickAlign="right" v-model="formData.weatherToday" dictkey="eb_weatherToday" clearable></global-picker>
</up-form-item>
<up-form-item label="机型" prop="model" :borderBottom="true" required> <up-form-item label="机型" prop="model" :borderBottom="true" required>
<global-picker v-model="formData.model" pickAlign="right" :options="allAcType" clearable filter></global-picker> <global-picker v-model="formData.model" pickAlign="right" :options="allAcType" clearable filter></global-picker>
</up-form-item> </up-form-item>
<up-form-item label="机型类别" prop="modelType" :borderBottom="true" required>
<global-picker pickAlign="right" v-model="formData.modelType" dictkey="eb_modelType" clearable></global-picker>
</up-form-item>
<up-form-item label="进港航班号" prop="flightNoIn" :borderBottom="true" required> <up-form-item label="进港航班号" prop="flightNoIn" :borderBottom="true" required>
<up-input v-model="formData.flightNoIn" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <up-input v-model="formData.flightNoIn" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item> </up-form-item>
...@@ -52,7 +61,7 @@ ...@@ -52,7 +61,7 @@
</up-form-item> </up-form-item>
</view> </view>
<!-- 除冰记录 --> <!-- 除冰记录 -->
<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" dictkey="eb_deicingType" clearable></global-picker>
...@@ -60,104 +69,101 @@ ...@@ -60,104 +69,101 @@
<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>
</up-form-item> </up-form-item>
</view> <up-form-item label="自定义混合比" prop="deicingMix" :borderBottom="true" v-if="formData.deicingMix == 'Other'">
<view class="mocp-title">除冰记录1</view> <up-input type="number" v-model="formData.deicingMix1" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
<view class="mocp-form"> <up-input type="number" v-model="formData.deicingMix2" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
<up-form-item label="除冰车号" prop="deicingCartNo1" :borderBottom="true"> </up-form-item>
<up-input v-model="formData.deicingCartNo1" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <view class="sample-table">
</up-form-item> <view class="sample-thead">
<up-form-item label="除冰人员" prop="deicingPersion1" :borderBottom="true"> <view class="sample-thead-th">
<up-input v-model="formData.deicingPersion1" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <view class="sample-thead-td">除冰车号</view>
</up-form-item> <view class="spacer"></view>
<up-form-item label="用量" prop="deicingQuantity1" :borderBottom="true"> <view class="sample-thead-td">除冰人员</view>
<up-input <view class="spacer"></view>
type="number" <view class="sample-thead-td">用量</view>
v-model="formData.deicingQuantity1" <view class="spacer"></view>
inputAlign="right" <view class="sample-thead-td">单位</view>
border="none" </view>
placeholder="请输入" </view>
clearable <view class="sample-tbody">
></up-input> <view class="sample-tbody-tr">
</up-form-item> <view class="sample-tbody-td">
<up-form-item label="单位" prop="deicingUnit1" :borderBottom="true"> <up-input v-model="formData.deicingCartNo1" placeholder="请输入" clearable></up-input>
<global-picker pickAlign="right" v-model="formData.deicingUnit1" dictkey="eb_antiicingUnit" clearable></global-picker> </view>
</up-form-item> <view class="spacer"></view>
</view> <view class="sample-tbody-td">
<view class="mocp-title">除冰记录2</view> <up-input v-model="formData.deicingPersion1" placeholder="请输入" clearable></up-input>
<view class="mocp-form"> </view>
<up-form-item label="除冰车号" prop="deicingCartNo2" :borderBottom="true"> <view class="spacer"></view>
<up-input v-model="formData.deicingCartNo2" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <view class="sample-tbody-td">
</up-form-item> <up-input type="number" v-model="formData.deicingQuantity1" placeholder="请输入" clearable></up-input>
<up-form-item label="除冰人员" prop="deicingPersion2" :borderBottom="true"> </view>
<up-input v-model="formData.deicingPersion2" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <view class="spacer"></view>
</up-form-item> <view class="sample-tbody-td">
<up-form-item label="用量" prop="deicingQuantity2" :borderBottom="true"> <global-picker v-model="formData.deicingUnit1" dictkey="eb_antiicingUnit" clearable border></global-picker>
<up-input </view>
type="number" </view>
v-model="formData.deicingQuantity2" <view class="sample-tbody-tr">
inputAlign="right" <view class="sample-tbody-td">
border="none" <up-input v-model="formData.deicingCartNo2" placeholder="请输入" clearable></up-input>
placeholder="请输入" </view>
clearable <view class="spacer"></view>
></up-input> <view class="sample-tbody-td">
</up-form-item> <up-input v-model="formData.deicingPersion2" placeholder="请输入" clearable></up-input>
<up-form-item label="单位" prop="deicingUnit2" :borderBottom="true"> </view>
<global-picker pickAlign="right" v-model="formData.deicingUnit2" dictkey="eb_antiicingUnit" clearable></global-picker> <view class="spacer"></view>
</up-form-item> <view class="sample-tbody-td">
</view> <up-input type="number" v-model="formData.deicingQuantity2" placeholder="请输入" clearable></up-input>
<view class="mocp-title">除冰记录3</view> </view>
<view class="mocp-form"> <view class="spacer"></view>
<up-form-item label="除冰车号" prop="deicingCartNo3" :borderBottom="true"> <view class="sample-tbody-td">
<up-input v-model="formData.deicingCartNo3" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <global-picker v-model="formData.deicingUnit2" dictkey="eb_antiicingUnit" clearable border></global-picker>
</up-form-item> </view>
<up-form-item label="除冰人员" prop="deicingPersion3" :borderBottom="true"> </view>
<up-input v-model="formData.deicingPersion3" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <view class="sample-tbody-tr">
</up-form-item> <view class="sample-tbody-td">
<up-form-item label="用量" prop="deicingQuantity3" :borderBottom="true"> <up-input v-model="formData.deicingCartNo3" placeholder="请输入" clearable></up-input>
<up-input </view>
type="number" <view class="spacer"></view>
v-model="formData.deicingQuantity3" <view class="sample-tbody-td">
inputAlign="right" <up-input v-model="formData.deicingPersion3" placeholder="请输入" clearable></up-input>
border="none" </view>
placeholder="请输入" <view class="spacer"></view>
clearable <view class="sample-tbody-td">
></up-input> <up-input type="number" v-model="formData.deicingQuantity3" placeholder="请输入" clearable></up-input>
</up-form-item> </view>
<up-form-item label="单位" prop="deicingUnit3" :borderBottom="true"> <view class="spacer"></view>
<global-picker pickAlign="right" v-model="formData.deicingUnit3" dictkey="eb_antiicingUnit" clearable></global-picker> <view class="sample-tbody-td">
</up-form-item> <global-picker v-model="formData.deicingUnit3" dictkey="eb_antiicingUnit" clearable border></global-picker>
</view> </view>
<view class="mocp-title">除冰记录4</view> </view>
<view class="mocp-form"> <view class="sample-tbody-tr">
<up-form-item label="除冰车号" prop="deicingCartNo4" :borderBottom="true"> <view class="sample-tbody-td">
<up-input v-model="formData.deicingCartNo4" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <up-input v-model="formData.deicingCartNo4" placeholder="请输入" clearable></up-input>
</up-form-item> </view>
<up-form-item label="除冰人员" prop="deicingPersion4" :borderBottom="true"> <view class="spacer"></view>
<up-input v-model="formData.deicingPersion4" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <view class="sample-tbody-td">
</up-form-item> <up-input v-model="formData.deicingPersion4" placeholder="请输入" clearable></up-input>
<up-form-item label="用量" prop="deicingQuantity4" :borderBottom="true"> </view>
<up-input <view class="spacer"></view>
type="number" <view class="sample-tbody-td">
v-model="formData.deicingQuantity4" <up-input type="number" v-model="formData.deicingQuantity4" placeholder="请输入" clearable></up-input>
inputAlign="right" </view>
border="none" <view class="spacer"></view>
placeholder="请输入" <view class="sample-tbody-td">
clearable <global-picker v-model="formData.deicingUnit4" dictkey="eb_antiicingUnit" clearable border></global-picker>
></up-input> </view>
</up-form-item> </view>
<up-form-item label="单位" prop="deicingUnit4" :borderBottom="true"> </view>
<global-picker pickAlign="right" v-model="formData.deicingUnit4" dictkey="eb_antiicingUnit" clearable></global-picker> </view>
</up-form-item>
</view>
<view class="mocp-title">除冰记录合计</view>
<view class="mocp-form">
<up-form-item label="用量合计" prop="deicingQuantityTotal" :borderBottom="true"> <up-form-item label="用量合计" prop="deicingQuantityTotal" :borderBottom="true">
<up-input <up-input
type="number" type="number"
v-model="formData.deicingQuantityTotal" v-model="formData.deicingQuantityTotal"
inputAlign="right" inputAlign="right"
border="none" border="none"
placeholder="请输入" placeholder="填写混合比后自动计算"
readonly
clearable clearable
></up-input> ></up-input>
</up-form-item> </up-form-item>
...@@ -185,7 +191,7 @@ ...@@ -185,7 +191,7 @@
</up-form-item> </up-form-item>
</view> </view>
<!-- 防冰记录 --> <!-- 防冰记录 -->
<view class="mocp-title">防冰记录设置</view> <view class="mocp-title">防冰记录</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" dictkey="eb_antiicingType" clearable></global-picker>
...@@ -193,104 +199,115 @@ ...@@ -193,104 +199,115 @@
<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>
</up-form-item> </up-form-item>
</view> <up-form-item label="自定义混合比" prop="antiicingMix" :borderBottom="true" v-if="formData.antiicingMix == 'Other'">
<view class="mocp-title">防冰记录1</view>
<view class="mocp-form">
<up-form-item label="防冰车号" prop="antiicingCartNo1" :borderBottom="true">
<up-input v-model="formData.antiicingCartNo1" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item>
<up-form-item label="防冰人员" prop="antiicingPersion1" :borderBottom="true">
<up-input v-model="formData.antiicingPersion1" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item>
<up-form-item label="用量" prop="antiicingQuantity1" :borderBottom="true">
<up-input
type="number"
v-model="formData.antiicingQuantity1"
inputAlign="right"
border="none"
placeholder="请输入"
clearable
></up-input>
</up-form-item>
<up-form-item label="单位" prop="antiicingUnit1" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.antiicingUnit1" dictkey="eb_antiicingUnit" clearable></global-picker>
</up-form-item>
</view>
<view class="mocp-title">防冰记录2</view>
<view class="mocp-form">
<up-form-item label="防冰车号" prop="antiicingCartNo2" :borderBottom="true">
<up-input v-model="formData.antiicingCartNo2" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item>
<up-form-item label="防冰人员" prop="antiicingPersion2" :borderBottom="true">
<up-input v-model="formData.antiicingPersion2" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item>
<up-form-item label="用量" prop="antiicingQuantity2" :borderBottom="true">
<up-input
type="number"
v-model="formData.antiicingQuantity2"
inputAlign="right"
border="none"
placeholder="请输入"
clearable
></up-input>
</up-form-item>
<up-form-item label="单位" prop="antiicingUnit2" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.antiicingUnit2" dictkey="eb_antiicingUnit" clearable></global-picker>
</up-form-item>
</view>
<view class="mocp-title">防冰记录3</view>
<view class="mocp-form">
<up-form-item label="防冰车号" prop="antiicingCartNo3" :borderBottom="true">
<up-input v-model="formData.antiicingCartNo3" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item>
<up-form-item label="防冰人员" prop="antiicingPersion3" :borderBottom="true">
<up-input v-model="formData.antiicingPersion3" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item>
<up-form-item label="用量" prop="antiicingQuantity3" :borderBottom="true">
<up-input <up-input
type="number" type="number"
v-model="formData.antiicingQuantity3" v-model="formData.antiicingMix1"
inputAlign="right" inputAlign="right"
border="none" border="none"
placeholder="请输入" placeholder="请输入"
clearable clearable
></up-input> ></up-input>
</up-form-item>
<up-form-item label="单位" prop="antiicingUnit3" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.antiicingUnit3" dictkey="eb_antiicingUnit" clearable></global-picker>
</up-form-item>
</view>
<view class="mocp-title">防冰记录4</view>
<view class="mocp-form">
<up-form-item label="防冰车号" prop="antiicingCartNo4" :borderBottom="true">
<up-input v-model="formData.antiicingCartNo4" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item>
<up-form-item label="防冰人员" prop="antiicingPersion4" :borderBottom="true">
<up-input v-model="formData.antiicingPersion4" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item>
<up-form-item label="用量" prop="antiicingQuantity4" :borderBottom="true">
<up-input <up-input
type="number" type="number"
v-model="formData.antiicingQuantity4" v-model="formData.antiicingMix2"
inputAlign="right" inputAlign="right"
border="none" border="none"
placeholder="请输入" placeholder="请输入"
clearable clearable
></up-input> ></up-input>
</up-form-item> </up-form-item>
<up-form-item label="单位" prop="antiicingUnit4" :borderBottom="true"> <view class="sample-table">
<global-picker pickAlign="right" v-model="formData.antiicingUnit4" dictkey="eb_antiicingUnit" clearable></global-picker> <view class="sample-thead">
</up-form-item> <view class="sample-thead-th">
</view> <view class="sample-thead-td">防冰车号</view>
<view class="mocp-title">防冰记录合计</view> <view class="spacer"></view>
<view class="mocp-form"> <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.antiicingCartNo1" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<up-input v-model="formData.antiicingPersion1" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<up-input type="number" v-model="formData.antiicingQuantity1" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<global-picker v-model="formData.antiicingUnit1" dictkey="eb_antiicingUnit" clearable border></global-picker>
</view>
</view>
<view class="sample-tbody-tr">
<view class="sample-tbody-td">
<up-input v-model="formData.antiicingCartNo2" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<up-input v-model="formData.antiicingPersion2" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<up-input type="number" v-model="formData.antiicingQuantity2" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<global-picker v-model="formData.antiicingUnit2" dictkey="eb_antiicingUnit" clearable border></global-picker>
</view>
</view>
<view class="sample-tbody-tr">
<view class="sample-tbody-td">
<up-input v-model="formData.antiicingCartNo3" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<up-input v-model="formData.antiicingPersion3" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<up-input type="number" v-model="formData.antiicingQuantity3" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<global-picker v-model="formData.antiicingUnit3" dictkey="eb_antiicingUnit" clearable border></global-picker>
</view>
</view>
<view class="sample-tbody-tr">
<view class="sample-tbody-td">
<up-input v-model="formData.antiicingCartNo4" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<up-input v-model="formData.antiicingPersion4" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<up-input type="number" v-model="formData.antiicingQuantity4" placeholder="请输入" clearable></up-input>
</view>
<view class="spacer"></view>
<view class="sample-tbody-td">
<global-picker v-model="formData.antiicingUnit4" dictkey="eb_antiicingUnit" clearable border></global-picker>
</view>
</view>
</view>
</view>
<up-form-item label="用量合计" prop="antiicingQuantityTotal" :borderBottom="true"> <up-form-item label="用量合计" prop="antiicingQuantityTotal" :borderBottom="true">
<up-input <up-input
type="number" type="number"
v-model="formData.antiicingQuantityTotal" v-model="formData.antiicingQuantityTotal"
inputAlign="right" inputAlign="right"
border="none" border="none"
placeholder="请输入" placeholder="填写混合比后自动计算"
readonly
clearable clearable
></up-input> ></up-input>
</up-form-item> </up-form-item>
...@@ -320,31 +337,80 @@ ...@@ -320,31 +337,80 @@
></global-date> ></global-date>
</up-form-item> </up-form-item>
</view> </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>
</up-form-item>
</view>
</up-form> </up-form>
</global-page> </global-page>
<up-modal :show="show" title="警告" @confirm="confirmRemark">
<view class="warn-modal">
<view class="warn-title">请填写超量使用原因</view>
<up-input v-model="formData.remark" border="bottom" placeholder="请输入" clearable></up-input>
</view>
</up-modal>
</template> </template>
<script setup> <script setup>
import useBaseStore from 'mocp/store/base' import useBaseStore from 'mocp/store/base'
import useElectronicBillStore from 'mocp/store/electronicBill' import useElectronicBillStore from 'mocp/store/electronicBill'
import { formData, rules } from './constants/add.compositions' import { formData, rules, formRef, show } from './constants/add.compositions'
import { navigateTo } from 'mocp/utils/jump' import { navigateTo } from 'mocp/utils/jump'
import { ref } from 'vue' import { changeAcreg, getOneTotal, handleFooterClick, confirmRemark } from './constants/add.functionals'
import { changeAcreg } from './constants/add.functionals' import { watchEffect } from 'vue'
const baseStore = useBaseStore() const baseStore = useBaseStore()
const electronicBillStore = useElectronicBillStore() const electronicBillStore = useElectronicBillStore()
const { const {
selectList: { allAc, allAcType, allAirline } selectList: { allAc, allAcType, allAirline }
} = electronicBillStore } = electronicBillStore
//提交
const formRef = ref() watchEffect(() => {
const handleFooterClick = async () => { //除冰用量合计
await formRef.value?.validate() const deicingQuantityTotal =
navigateTo('/panel/electronicBill/deicing/sign') getOneTotal(formData.deicingQuantity1, formData.deicingUnit1) +
} getOneTotal(formData.deicingQuantity2, formData.deicingUnit2) +
getOneTotal(formData.deicingQuantity3, formData.deicingUnit3) +
getOneTotal(formData.deicingQuantity4, formData.deicingUnit4)
if (formData.deicingMix) {
if (formData.deicingMix == 'Other') {
if (formData.deicingMix1 && formData.deicingMix2) {
const percent = parseFloat(formData.deicingMix1) / (parseFloat(formData.deicingMix1) + parseFloat(formData.deicingMix2))
formData.deicingQuantityTotal = parseFloat(deicingQuantityTotal * percent.toFixed(4)) || undefined
}
} else {
const percentArr = formData.deicingMix.split(':')
const percent = parseFloat(percentArr[0]) / (parseFloat(percentArr[0]) + parseFloat(percentArr[1]))
formData.deicingQuantityTotal = parseFloat(deicingQuantityTotal * percent.toFixed(4)) || undefined
}
} else {
formData.deicingQuantityTotal = undefined
}
//防冰用量合计
const antiicingQuantityTotal =
getOneTotal(formData.antiicingQuantity1, formData.antiicingUnit1) +
getOneTotal(formData.antiicingQuantity2, formData.antiicingUnit2) +
getOneTotal(formData.antiicingQuantity3, formData.antiicingUnit3) +
getOneTotal(formData.antiicingQuantity4, formData.antiicingUnit4)
if (formData.antiicingMix) {
if (formData.antiicingMix == 'Other') {
if (formData.antiicingMix1 && formData.antiicingMix2) {
const percent = parseFloat(formData.antiicingMix1) / (parseFloat(formData.antiicingMix1) + parseFloat(formData.antiicingMix2))
formData.antiicingQuantityTotal = parseFloat(antiicingQuantityTotal * percent.toFixed(4)) || undefined
}
} else {
const percentArr = formData.antiicingMix.split(':')
const percent = parseFloat(percentArr[0]) / (parseFloat(percentArr[0]) + parseFloat(percentArr[1]))
formData.antiicingQuantityTotal = parseFloat(antiicingQuantityTotal * percent.toFixed(4)) || undefined
}
} else {
formData.antiicingQuantityTotal = undefined
}
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import 'mocpStatic/css/table.scss';
.mocp-form { .mocp-form {
background: #fff; background: #fff;
margin-bottom: 24rpx; margin-bottom: 24rpx;
...@@ -358,4 +424,15 @@ const handleFooterClick = async () => { ...@@ -358,4 +424,15 @@ const handleFooterClick = async () => {
padding-top: 12rpx; padding-top: 12rpx;
margin-bottom: -12rpx; margin-bottom: -12rpx;
} }
.sample-table {
padding-bottom: 0;
}
.warn-modal {
width: 100%;
.warn-title {
text-align: center;
color: #969799;
font-size: 28rpx;
}
}
</style> </style>
...@@ -10,6 +10,8 @@ export const formData = reactive({ ...@@ -10,6 +10,8 @@ export const formData = reactive({
antiicingDuration: '', antiicingDuration: '',
antiicingEndTime: '', antiicingEndTime: '',
antiicingMix: '', antiicingMix: '',
antiicingMix1: undefined,
antiicingMix2: undefined,
antiicingPersion1: '', antiicingPersion1: '',
antiicingPersion2: '', antiicingPersion2: '',
antiicingPersion3: '', antiicingPersion3: '',
...@@ -33,6 +35,8 @@ export const formData = reactive({ ...@@ -33,6 +35,8 @@ export const formData = reactive({
deicingCartNo4: '', deicingCartNo4: '',
deicingEndTime: '', deicingEndTime: '',
deicingMix: '', deicingMix: '',
deicingMix1: undefined,
deicingMix2: undefined,
deicingPersion1: '', deicingPersion1: '',
deicingPersion2: '', deicingPersion2: '',
deicingPersion3: '', deicingPersion3: '',
...@@ -58,7 +62,11 @@ export const formData = reactive({ ...@@ -58,7 +62,11 @@ export const formData = reactive({
nickname: '', nickname: '',
originalAircraftPositionDeicing: 0, originalAircraftPositionDeicing: 0,
station: '', station: '',
username: '' username: '',
guaranteeUnit: '',
weatherToday: '',
modelType: '',
remark: ''
}) })
export const rules = reactive({ export const rules = reactive({
...@@ -104,5 +112,28 @@ export const rules = reactive({ ...@@ -104,5 +112,28 @@ export const rules = reactive({
message: '请选择航班号', message: '请选择航班号',
trigger: ['blur', 'change'] trigger: ['blur', 'change']
} }
],
guaranteeUnit: [
{
required: true,
message: '请选择保障单位',
trigger: ['blur', 'change']
}
],
weatherToday: [
{
required: true,
message: '请选择当日天气',
trigger: ['blur', 'change']
}
],
modelType: [
{
required: true,
message: '请选择机型类别',
trigger: ['blur', 'change']
}
] ]
}) })
export const formRef = ref()
export const show = ref(false)
import { getAirlineAcregApi } from 'mocp/api/electronicBill' import { getAirlineAcregApi } from 'mocp/api/electronicBill'
import { formData } from './add.compositions' import { formData, formRef, show } from './add.compositions'
import { validateParameters } from 'mocp/utils/tool'
import { showToast } from 'mocp/utils/message'
export const changeAcreg = async (acreg) => { export const changeAcreg = async (acreg) => {
if (!acreg) return
const res = await getAirlineAcregApi({ acreg }, { loading: true }) const res = await getAirlineAcregApi({ acreg }, { loading: true })
if (res.code == 200) { if (res.code == 200) {
if (res.data?.aircaraftoperator) { if (res.data?.aircaraftoperator) {
...@@ -18,3 +21,112 @@ export const changeAcreg = async (acreg) => { ...@@ -18,3 +21,112 @@ export const changeAcreg = async (acreg) => {
uni.$mocpMessage.error(res.message) uni.$mocpMessage.error(res.message)
} }
} }
export const handleFooterClick = async () => {
await formRef.value?.validate()
//验证除冰混合比(Other)
if (formData.deicingMix == 'Other' && (!formData.deicingMix1 || !formData.deicingMix2)) {
return uni.$mocpMessage.warning('请填写除冰自定义混合比')
}
//验证除冰记录完整性
if (!validateParameters(formData.deicingCartNo1, formData.deicingPersion1, formData.deicingQuantity1, formData.deicingUnit1)) {
return uni.$mocpMessage.warning('请完整填写第1条除冰记录')
}
if (!validateParameters(formData.deicingCartNo2, formData.deicingPersion2, formData.deicingQuantity2, formData.deicingUnit2)) {
return uni.$mocpMessage.warning('请完整填写第2条除冰记录')
}
if (!validateParameters(formData.deicingCartNo3, formData.deicingPersion3, formData.deicingQuantity3, formData.deicingUnit3)) {
return uni.$mocpMessage.warning('请完整填写第3条除冰记录')
}
if (!validateParameters(formData.deicingCartNo4, formData.deicingPersion4, formData.deicingQuantity4, formData.deicingUnit4)) {
return uni.$mocpMessage.warning('请完整填写第4条除冰记录')
}
//验证防冰混合比(Other)
if (formData.antiicingMix == 'Other' && (!formData.antiicingMix1 || !formData.antiicingMix2)) {
return uni.$mocpMessage.warning('请填写防冰自定义混合比')
}
//验证防冰记录完整性
if (!validateParameters(formData.antiicingCartNo1, formData.antiicingPersion1, formData.antiicingQuantity1, formData.antiicingUnit1)) {
return uni.$mocpMessage.warning('请完整填写第1条防冰记录')
}
if (!validateParameters(formData.antiicingCartNo2, formData.antiicingPersion2, formData.antiicingQuantity2, formData.antiicingUnit2)) {
return uni.$mocpMessage.warning('请完整填写第2条防冰记录')
}
if (!validateParameters(formData.antiicingCartNo3, formData.antiicingPersion3, formData.antiicingQuantity3, formData.antiicingUnit3)) {
return uni.$mocpMessage.warning('请完整填写第3条防冰记录')
}
if (!validateParameters(formData.antiicingCartNo4, formData.antiicingPersion4, formData.antiicingQuantity4, formData.antiicingUnit4)) {
return uni.$mocpMessage.warning('请完整填写第4条防冰记录')
}
//验证总用量
const limit = getLimit()
let flag = false
if (formData.deicingQuantityTotal && formData.deicingQuantityTotal > 0) {
if (formData.deicingQuantityTotal < limit[0] || formData.deicingQuantityTotal > limit[1]) {
flag = true
}
}
if (formData.antiicingQuantityTotal && formData.antiicingQuantityTotal > 0) {
if (formData.antiicingQuantityTotal < limit[0] || formData.antiicingQuantityTotal > limit[1]) {
flag = true
}
}
if (flag) {
show.value = true
} else {
uni.$mocpJump.navigateTo('/panel/electronicBill/deicing/sign')
}
}
/**
* 对应天气类别 霜/雾 小雪 中雪/冻雾 大雪/结冰
窄体 100-400 400-700 700-1000 1000-2000
宽体 300-700 700-1200 1200-2000 2000-4000
*/
export const getLimit = () => {
if (formData.modelType == '1') {
if (['1', '2'].includes(formData.weatherToday)) {
return [300, 700]
} else if (['5'].includes(formData.weatherToday)) {
return [700, 1200]
} else if (['3', '6'].includes(formData.weatherToday)) {
return [1200, 2000]
} else if (['4', '7'].includes(formData.weatherToday)) {
return [2000, 4000]
}
} else {
if (['1', '2'].includes(formData.weatherToday)) {
return [100, 400]
} else if (['5'].includes(formData.weatherToday)) {
return [400, 700]
} else if (['3', '6'].includes(formData.weatherToday)) {
return [700, 1000]
} else if (['4', '7'].includes(formData.weatherToday)) {
return [1000, 2000]
}
}
return [0, 999999999999999]
}
/**
*
* @param {*} a 用量
* @param {*} b 单位
*/
export const getOneTotal = (a, b) => {
let unit = 0
if (b == 'L' || b == 'KG') {
unit = 1
}
if (b == 'USG') {
unit = 3.7854
}
return (a || 0) * unit
}
export const confirmRemark = () => {
if (!formData.remark) {
showToast('请填写超量使用原因')
} else {
show.value = false
uni.$mocpJump.navigateTo('/panel/electronicBill/deicing/sign')
}
}
...@@ -26,6 +26,15 @@ export const uploadFile = async () => { ...@@ -26,6 +26,15 @@ export const uploadFile = async () => {
} }
} }
export const addDeicing = async () => { export const addDeicing = async () => {
const params = {
...formData
}
if (formData.deicingMix == 'Other') {
params.deicingMix = formData.deicingMix1 + ':' + formData.deicingMix2
}
if (formData.antiicingMix == 'Other') {
params.antiicingMix = formData.antiicingMix1 + ':' + formData.antiicingMix2
}
const res = await addDeicingApi(formData, { loading: true }) const res = await addDeicingApi(formData, { loading: true })
if (res.code == 200) { if (res.code == 200) {
uni.$mocpJump.navigateBack() uni.$mocpJump.navigateBack()
...@@ -39,6 +48,8 @@ export const addDeicing = async () => { ...@@ -39,6 +48,8 @@ export const addDeicing = async () => {
antiicingDuration: '', antiicingDuration: '',
antiicingEndTime: '', antiicingEndTime: '',
antiicingMix: '', antiicingMix: '',
antiicingMix1: undefined,
antiicingMix2: undefined,
antiicingPersion1: '', antiicingPersion1: '',
antiicingPersion2: '', antiicingPersion2: '',
antiicingPersion3: '', antiicingPersion3: '',
...@@ -62,6 +73,8 @@ export const addDeicing = async () => { ...@@ -62,6 +73,8 @@ export const addDeicing = async () => {
deicingCartNo4: '', deicingCartNo4: '',
deicingEndTime: '', deicingEndTime: '',
deicingMix: '', deicingMix: '',
deicingMix1: undefined,
deicingMix2: undefined,
deicingPersion1: '', deicingPersion1: '',
deicingPersion2: '', deicingPersion2: '',
deicingPersion3: '', deicingPersion3: '',
...@@ -87,7 +100,11 @@ export const addDeicing = async () => { ...@@ -87,7 +100,11 @@ export const addDeicing = async () => {
nickname: '', nickname: '',
originalAircraftPositionDeicing: 0, originalAircraftPositionDeicing: 0,
station: '', station: '',
username: '' username: '',
guaranteeUnit: '',
weatherToday: '',
modelType: '',
remark: ''
}) })
uni.$mocpMessage.success(res.message) uni.$mocpMessage.success(res.message)
} else { } else {
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
</view> </view>
<view class="mocp-title">用户签名预览</view> <view class="mocp-title">用户签名预览</view>
<view class="mocp-preview"> <view class="mocp-preview">
<up-image :src="canvasImage" mode="widthFix" :show-loading="true" width="100%" height="100%" v-if="canvasImage"></up-image> <image :src="canvasImage" mode="widthFix" :show-loading="true" width="100%" height="100%" v-if="canvasImage"></image>
</view> </view>
</global-page> </global-page>
</template> </template>
...@@ -38,7 +38,6 @@ import { onBeforeUnmount } from 'vue' ...@@ -38,7 +38,6 @@ import { onBeforeUnmount } from 'vue'
const { isSigned, touchStart, touchMove, touchEnd, clear, getPath } = useDrawSignature('canvas') const { isSigned, touchStart, touchMove, touchEnd, clear, getPath } = useDrawSignature('canvas')
//保存签名 //保存签名
const handleSave = () => { const handleSave = () => {
console.log(formData)
if (isSigned.value) { if (isSigned.value) {
canvasImage.value = '' canvasImage.value = ''
getPath('canvas').then((path) => { getPath('canvas').then((path) => {
......
...@@ -36,71 +36,74 @@ ...@@ -36,71 +36,74 @@
<up-input v-model="formData.flightNo" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <up-input v-model="formData.flightNo" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item> </up-form-item>
</view> </view>
<view class="mocp-title">非例行工作1</view> <view class="mocp-title">非例行工作</view>
<view class="mocp-form"> <view class="mocp-form">
<up-form-item label="非例行工作内容" prop="work1" :borderBottom="true"> <view class="sample-table">
<up-input v-model="formData.work1" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <view class="sample-thead">
</up-form-item> <view class="sample-thead-th">
<up-form-item label="人数" prop="number1" :borderBottom="true"> <view class="sample-thead-td">非例行工作</view>
<up-input type="number" v-model="formData.number1" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <view class="spacer"></view>
</up-form-item> <view class="sample-thead-td">人数</view>
<up-form-item label="工时(单位/小时)" prop="workingHours1" :borderBottom="true"> <view class="spacer"></view>
<up-input <view class="sample-thead-td">工时</view>
type="number" <view class="spacer"></view>
v-model="formData.workingHours1" <view class="sample-thead-td">材料</view>
inputAlign="right" </view>
border="none" </view>
placeholder="请输入" <view class="sample-tbody">
clearable <view class="sample-tbody-tr">
></up-input> <view class="sample-tbody-td">
</up-form-item> <up-input v-model="formData.work1" placeholder="请输入" clearable></up-input>
<up-form-item label="材料(液体/气体的补充)" prop="material1" :borderBottom="true"> </view>
<up-input v-model="formData.material1" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <view class="spacer"></view>
</up-form-item> <view class="sample-tbody-td">
</view> <up-input type="number" v-model="formData.number1" placeholder="请输入" clearable></up-input>
<view class="mocp-title">非例行工作2</view> </view>
<view class="mocp-form"> <view class="spacer"></view>
<up-form-item label="非例行工作内容" prop="work2" :borderBottom="true"> <view class="sample-tbody-td">
<up-input v-model="formData.work2" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <up-input type="number" v-model="formData.workingHours1" placeholder="请输入" clearable></up-input>
</up-form-item> </view>
<up-form-item label="人数" prop="number2" :borderBottom="true"> <view class="spacer"></view>
<up-input type="number" v-model="formData.number2" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <view class="sample-tbody-td">
</up-form-item> <up-input v-model="formData.material1" placeholder="请输入" clearable></up-input>
<up-form-item label="工时(单位/小时)" prop="workingHours2" :borderBottom="true"> </view>
<up-input </view>
type="number" <view class="sample-tbody-tr">
v-model="formData.workingHours2" <view class="sample-tbody-td">
inputAlign="right" <up-input v-model="formData.work2" placeholder="请输入" clearable></up-input>
border="none" </view>
placeholder="请输入" <view class="spacer"></view>
clearable <view class="sample-tbody-td">
></up-input> <up-input type="number" v-model="formData.number2" placeholder="请输入" clearable></up-input>
</up-form-item> </view>
<up-form-item label="材料(液体/气体的补充)" prop="material2" :borderBottom="true"> <view class="spacer"></view>
<up-input v-model="formData.material2" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <view class="sample-tbody-td">
</up-form-item> <up-input type="number" v-model="formData.workingHours2" placeholder="请输入" clearable></up-input>
</view> </view>
<view class="mocp-title">非例行工作3</view> <view class="spacer"></view>
<view class="mocp-form"> <view class="sample-tbody-td">
<up-form-item label="非例行工作内容" prop="work3" :borderBottom="true"> <up-input v-model="formData.material2" placeholder="请输入" clearable></up-input>
<up-input v-model="formData.work3" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> </view>
</up-form-item> </view>
<up-form-item label="人数" prop="number3" :borderBottom="true"> <view class="sample-tbody-tr">
<up-input type="number" v-model="formData.number3" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <view class="sample-tbody-td">
</up-form-item> <up-input v-model="formData.work3" placeholder="请输入" clearable></up-input>
<up-form-item label="工时(单位/小时)" prop="workingHours3" :borderBottom="true"> </view>
<up-input <view class="spacer"></view>
type="number" <view class="sample-tbody-td">
v-model="formData.workingHours3" <up-input type="number" v-model="formData.number3" placeholder="请输入" clearable></up-input>
inputAlign="right" </view>
border="none" <view class="spacer"></view>
placeholder="请输入" <view class="sample-tbody-td">
clearable <up-input type="number" v-model="formData.workingHours3" placeholder="请输入" clearable></up-input>
></up-input> </view>
</up-form-item> <view class="spacer"></view>
<up-form-item label="材料(液体/气体的补充)" prop="material3" :borderBottom="true"> <view class="sample-tbody-td">
<up-input v-model="formData.material3" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <up-input v-model="formData.material3" placeholder="请输入" clearable></up-input>
</up-form-item> </view>
</view>
</view>
</view>
</view> </view>
<view class="mocp-title">特种车辆、设备、工具租用记录</view> <view class="mocp-title">特种车辆、设备、工具租用记录</view>
<view class="mocp-form"> <view class="mocp-form">
...@@ -203,6 +206,7 @@ const handleFooterClick = async () => { ...@@ -203,6 +206,7 @@ const handleFooterClick = async () => {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import 'mocpStatic/css/table.scss';
.mocp-form { .mocp-form {
background: #fff; background: #fff;
margin-bottom: 24rpx; margin-bottom: 24rpx;
......
...@@ -2,6 +2,7 @@ import { getAirlineAcregApi } from 'mocp/api/electronicBill' ...@@ -2,6 +2,7 @@ import { getAirlineAcregApi } from 'mocp/api/electronicBill'
import { formData } from './add.compositions' import { formData } from './add.compositions'
export const changeAcreg = async (acreg) => { export const changeAcreg = async (acreg) => {
if (!acreg) return
const res = await getAirlineAcregApi({ acreg }, { loading: true }) const res = await getAirlineAcregApi({ acreg }, { loading: true })
if (res.code == 200) { if (res.code == 200) {
if (res.data?.aircaraftoperator) { if (res.data?.aircaraftoperator) {
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
</view> </view>
<view class="mocp-title">用户签名预览</view> <view class="mocp-title">用户签名预览</view>
<view class="mocp-preview"> <view class="mocp-preview">
<up-image :src="canvasImage" mode="widthFix" :show-loading="true" width="100%" height="100%" v-if="canvasImage"></up-image> <image :src="canvasImage" mode="widthFix" :show-loading="true" width="100%" height="100%" v-if="canvasImage"></image>
</view> </view>
</global-page> </global-page>
</template> </template>
......
...@@ -2,6 +2,7 @@ import { getAirlineAcregApi } from 'mocp/api/electronicBill' ...@@ -2,6 +2,7 @@ import { getAirlineAcregApi } from 'mocp/api/electronicBill'
import { formData } from './add.compositions' import { formData } from './add.compositions'
export const changeAcreg = async (acreg) => { export const changeAcreg = async (acreg) => {
if (!acreg) return
const res = await getAirlineAcregApi({ acreg }, { loading: true }) const res = await getAirlineAcregApi({ acreg }, { loading: true })
if (res.code == 200) { if (res.code == 200) {
if (res.data?.aircaraftoperator) { if (res.data?.aircaraftoperator) {
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
</view> </view>
<view class="mocp-title">用户签名预览</view> <view class="mocp-title">用户签名预览</view>
<view class="mocp-preview"> <view class="mocp-preview">
<up-image :src="canvasImage" mode="widthFix" :show-loading="true" width="100%" height="100%" v-if="canvasImage"></up-image> <image :src="canvasImage" mode="widthFix" :show-loading="true" width="100%" height="100%" v-if="canvasImage"></image>
</view> </view>
</global-page> </global-page>
</template> </template>
......
import { downuploadApi } from 'mocp/api/fileList' import { previewFile } from 'mocp/utils/tool'
import { base64ToTempFilePath } from 'mocp/utils/tool'
export const transformData = (data) => { export const transformData = (data) => {
return data.map((item) => { return data.map((item) => {
...@@ -17,37 +16,6 @@ export const handleClick = (item) => { ...@@ -17,37 +16,6 @@ export const handleClick = (item) => {
if (item.directory) { if (item.directory) {
uni.$mocpJump.navigateTo(`${'/panel/fileList/index?path=' + item.path}`) uni.$mocpJump.navigateTo(`${'/panel/fileList/index?path=' + item.path}`)
} else { } else {
downupload(item.path) previewFile(item.url)
}
}
export const downupload = async (path) => {
uni.showLoading({
title: '正在打开文件',
mask: true
})
const res = await downuploadApi({ path })
if (res.code == 200) {
base64ToTempFilePath(res.data)
.then((filePath) => {
uni.openDocument({
filePath,
showMenu: true,
success: function () {
uni.hideLoading()
console.log('文件打开成功')
},
fail: function () {
uni.hideLoading()
uni.$mocpMessage.error('打开文件失败,请重新打开')
}
})
})
.catch(() => {
uni.hideLoading()
uni.$mocpMessage.error('打开文件失败,请重新打开')
})
} else {
uni.hideLoading()
uni.$mocpMessage.error(res.message)
} }
} }
.sample-table {
padding-bottom: 24rpx;
.spacer {
width: 12rpx;
}
.sample-thead {
padding: 24rpx 0;
border-bottom: 1rpx solid #d6d7d9;
color: $mocp-text-5;
&-th {
display: flex;
}
&-td {
flex: 1;
text-align: center;
}
}
.sample-tbody {
padding-top: 24rpx;
&-tr {
display: flex;
margin-bottom: 24rpx;
&:last-child {
margin-bottom: 0;
}
}
&-td {
flex: 1;
text-align: center;
}
}
}
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