Commit 230e11af by pangchong

feat: 运行决策开发

parent c24653ce
...@@ -22,10 +22,13 @@ declare module 'vue' { ...@@ -22,10 +22,13 @@ declare module 'vue' {
GlobalPageSwiperItem: typeof import('./src/mocp/components/global-page-swiper-item/global-page-swiper-item.vue')['default'] GlobalPageSwiperItem: typeof import('./src/mocp/components/global-page-swiper-item/global-page-swiper-item.vue')['default']
GlobalPicker: typeof import('./src/mocp/components/global-picker/global-picker.vue')['default'] GlobalPicker: typeof import('./src/mocp/components/global-picker/global-picker.vue')['default']
GlobalPopup: typeof import('./src/mocp/components/global-popup/global-popup.vue')['default'] GlobalPopup: typeof import('./src/mocp/components/global-popup/global-popup.vue')['default']
GlobalRadio: typeof import('./src/mocp/components/global-radio/global-radio.vue')['default']
GlobalTabs: typeof import('./src/mocp/components/global-tabs/global-tabs.vue')['default'] GlobalTabs: typeof import('./src/mocp/components/global-tabs/global-tabs.vue')['default']
GlobalUpload: typeof import('./src/mocp/components/global-upload/global-upload.vue')['default'] GlobalUpload: typeof import('./src/mocp/components/global-upload/global-upload.vue')['default']
GlobalUploadImage: typeof import('./src/mocp/components/global-upload-image/global-upload-image.vue')['default'] GlobalUploadImage: typeof import('./src/mocp/components/global-upload-image/global-upload-image.vue')['default']
// 自定义组件 // 自定义组件
CustomCardDetails: typeof import('./src/mocp/components/widget/custom-card-details.vue')['default']
CustomCardDetailsItem: typeof import('./src/mocp/components/widget/custom-card-details-item.vue')['default']
CustomScore: typeof import('./src/mocp/components/widget/custom-score.vue')['default'] CustomScore: typeof import('./src/mocp/components/widget/custom-score.vue')['default']
CustomState: typeof import('./src/mocp/components/widget/custom-state.vue')['default'] CustomState: typeof import('./src/mocp/components/widget/custom-state.vue')['default']
CustomTabbar: typeof import('./src/mocp/components/widget/custom-tabbar.vue')['default'] CustomTabbar: typeof import('./src/mocp/components/widget/custom-tabbar.vue')['default']
......
...@@ -27,6 +27,16 @@ export function createApp() { ...@@ -27,6 +27,16 @@ export function createApp() {
activeColor: '#165dff', activeColor: '#165dff',
labelColor: '#1D2129', labelColor: '#1D2129',
labelSize: 16 labelSize: 16
},
radio: {
activeColor: '#165dff',
labelColor: '#1D2129',
labelSize: 16
},
radioGroup: {
activeColor: '#165dff',
labelColor: '#1D2129',
labelSize: 16
} }
} }
}) })
......
...@@ -16,3 +16,19 @@ export const updateDecisionApi = (data, config) => { ...@@ -16,3 +16,19 @@ export const updateDecisionApi = (data, config) => {
config config
}) })
} }
export const updateMcoDirectorInfoApi = (data, config) => {
return http({
method: 'POST',
url: '/workbench/updateMcoDirectorInfo',
data,
config
})
}
export const updateApproverInfoApi = (data, config) => {
return http({
method: 'POST',
url: '/workbench/updateApproverInfo',
data,
config
})
}
<template> <template>
<!-- 全局复选框 --> <!-- 全局复选框 -->
<view class="checkbox" :style="getStyle"> <view class="checkbox-group" :style="getStyle">
<up-checkbox-group <up-checkbox-group v-model="checkboxValue" :placement="placement" @change="checkboxChange" :disabled="disabled" :borderBottom="borderBottom">
v-model="checkboxValue"
:placement="placement"
@change="checkboxChange"
:disabled="disabled"
:activeColor="activeColor"
:labelSize="labelSize"
:labelColor="labelColor"
:borderBottom="borderBottom"
>
<up-checkbox <up-checkbox
:customStyle="getCustomStyle" :customStyle="getCustomStyle"
0
v-for="(item, index) in getColumns" v-for="(item, index) in getColumns"
:key="index" :key="index"
:label="item.label" :label="item.label"
...@@ -74,22 +66,18 @@ const ps = defineProps({ ...@@ -74,22 +66,18 @@ const ps = defineProps({
return {} return {}
} }
}, },
activeColor: {
type: String,
default: '#165dff'
},
// row|column // row|column
placement: { placement: {
type: String, type: String,
default: 'row' default: 'row'
}, },
labelSize: { marginLeft: {
type: String, type: [String, Number],
default: '28rpx' default: 16
}, },
labelColor: { marginBottom: {
type: String, type: [String, Number],
default: '#1D2129' default: 40
}, },
borderBottom: { borderBottom: {
type: Boolean, type: Boolean,
...@@ -114,10 +102,10 @@ const getCustomStyle = computed(() => { ...@@ -114,10 +102,10 @@ const getCustomStyle = computed(() => {
...ps.customStyle ...ps.customStyle
} }
if (ps.placement == 'row') { if (ps.placement == 'row') {
_style.marginLeft = '16rpx' _style.marginLeft = ps.marginLeft
} }
if (ps.placement == 'column') { if (ps.placement == 'column') {
_style.marginBottom = '40rpx' _style.marginBottom = ps.marginBottom
} }
return _style return _style
}) })
...@@ -157,7 +145,7 @@ const checkboxChange = (value) => { ...@@ -157,7 +145,7 @@ const checkboxChange = (value) => {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.checkbox { .checkbox-group {
display: flex; display: flex;
} }
:deep(.u-checkbox) { :deep(.u-checkbox) {
......
...@@ -56,7 +56,6 @@ ...@@ -56,7 +56,6 @@
</z-paging> </z-paging>
</template> </template>
<script setup> <script setup>
import { onUnload } from '@dcloudio/uni-app'
import { filterEmptyValues } from 'mocp/utils/tool' import { filterEmptyValues } from 'mocp/utils/tool'
import { computed, nextTick, onUnmounted, ref } from 'vue' import { computed, nextTick, onUnmounted, ref } from 'vue'
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
</template> </template>
<view class="popup-content-list" v-if="getFilterColumns.length"> <view class="popup-content-list" v-if="getFilterColumns.length">
<view <view
class="popup-content-item" class="popup-content-item u-line-1"
:class="{ 'mocp-color-primary-6': modelValue == item[valueField] }" :class="{ 'mocp-color-primary-6': modelValue == item[valueField] }"
v-for="(item, index) in getFilterColumns" v-for="(item, index) in getFilterColumns"
:key="index" :key="index"
......
<template>
<!-- 全局单选框 -->
<up-radio-group
:style="getStyle"
class="radio-group"
v-model="radioValue"
:placement="placement"
@change="radioChange"
:disabled="disabled"
:borderBottom="borderBottom"
>
<up-radio :customStyle="getCustomStyle" v-for="(item, index) in getColumns" :key="index" :label="item.label" :name="item.value"></up-radio>
</up-radio-group>
</template>
<script setup>
import { computed, ref, watch } from 'vue'
import * as dictData from 'mocp/hooks/use-dict/dict-data'
import { cloneDeep } from 'lodash'
const es = defineEmits(['update:modelValue', 'change'])
const ps = defineProps({
//显示为空的value值
emptyValue: {
type: [String, Number],
default: ''
},
dictkey: {
type: String,
default: ''
},
modelValue: {
type: [String, Number],
default: ''
},
options: {
type: Array,
default: () => {
return []
}
},
labelField: {
type: String,
default: 'label'
},
valueField: {
type: String,
default: 'value'
},
radioAlign: {
type: String,
default: 'left'
},
disabled: {
type: Boolean,
default: false
},
customStyle: {
type: Object,
default: () => {
return {}
}
},
// row|column
placement: {
type: String,
default: 'row'
},
marginLeft: {
type: [String, Number],
default: 16
},
marginBottom: {
type: [String, Number],
default: 40
},
borderBottom: {
type: Boolean,
default: false
}
})
const radioValue = ref('')
//获取单选框样式
const getAlign = computed(() => {
let radioAlign = 'flex-start'
if (ps.radioAlign == 'center') {
radioAlign = 'center'
} else if (ps.radioAlign == 'right') {
radioAlign = 'flex-end'
}
return radioAlign
})
const getStyle = computed(() => {
return {
justifyContent: getAlign.value
}
})
const getCustomStyle = computed(() => {
const _style = {
...ps.customStyle
}
if (ps.placement == 'row') {
_style.marginLeft = ps.marginLeft + 'rpx'
}
if (ps.placement == 'column') {
_style.marginBottom = ps.marginBottom + 'rpx'
}
return _style
})
//获取下拉框的内容Columns
const getColumns = computed(() => {
if (ps.dictkey) {
return cloneDeep(dictData[ps.dictkey])
} else {
if (ps.options && Object.prototype.toString.call(ps.options[0]) == '[object Object]') {
return ps.options
} else {
return ps.options.map((item) => {
return {
[ps.labelField]: item,
[ps.valueField]: item
}
})
}
}
})
//监听设置默认值
watch(
[() => ps.modelValue, () => ps.options],
() => {
let option = getColumns.value.find((option) => String(option[ps.valueField]) === String(ps.modelValue))
if (option) {
radioValue.value = option[ps.valueField]
} else {
radioValue.value = ps.emptyValue
}
},
{ immediate: true }
)
const radioChange = (value) => {
es('update:modelValue', value)
es('change', value)
}
</script>
<style lang="scss" scoped></style>
...@@ -6,16 +6,11 @@ ...@@ -6,16 +6,11 @@
<text class="txt">{{ title }}</text> <text class="txt">{{ title }}</text>
</view> </view>
<view class="right" v-if="edit"> <view class="right" v-if="edit">
<global-button type="text" @tap="handleAdd">{{ calendar != -1 ? '编辑' : '添加' }}</global-button> <global-button type="text" @tap="handleAdd">编辑</global-button>
</view> </view>
</view> </view>
<view class="card-content"> <view class="card-content">
<template v-if="type == 'appeal'"> <slot></slot>
<slot></slot>
</template>
<template v-else>
<slot></slot>
</template>
</view> </view>
<slot name="footer" v-if="showfooter"> <slot name="footer" v-if="showfooter">
<view class="card-footer"> <view class="card-footer">
...@@ -36,11 +31,6 @@ ...@@ -36,11 +31,6 @@
import { timeStampFormat } from 'mocp/utils/tool' import { timeStampFormat } from 'mocp/utils/tool'
const es = defineEmits(['handleAdd']) const es = defineEmits(['handleAdd'])
const ps = defineProps({ const ps = defineProps({
// company,quality,appeal
type: {
type: String,
default: 'company'
},
title: { title: {
type: String, type: String,
default: '' default: ''
......
...@@ -16,3 +16,7 @@ export const aw_validateType = [ ...@@ -16,3 +16,7 @@ export const aw_validateType = [
{ label: '重复事件', value: '1' }, { label: '重复事件', value: '1' },
{ label: '同类事件', value: '2' } { label: '同类事件', value: '2' }
] ]
export const aw_followUpFeedback = [
{ label: '是', value: '1' },
{ label: '否', value: '0' }
]
...@@ -76,10 +76,10 @@ const useBaseStore = defineStore('base', { ...@@ -76,10 +76,10 @@ const useBaseStore = defineStore('base', {
}, },
actions: { actions: {
async initSysData() { async initSysData() {
uni.showLoading({ // uni.showLoading({
title: '正在加载系统所有基本参数中,请稍后!', // title: '正在加载系统所有基本参数中,请稍后!',
mask: true // mask: true
}) // })
try { try {
await Promise.all([ await Promise.all([
this.getAircraftNumbers(), this.getAircraftNumbers(),
......
...@@ -77,13 +77,7 @@ ...@@ -77,13 +77,7 @@
{ {
"path": "pages/modules/mocp/panel/appraisal-record/edit", "path": "pages/modules/mocp/panel/appraisal-record/edit",
"style": { "style": {
"navigationBarTitleText": "考核记录登记" "navigationBarTitleText": ""
}
},
{
"path": "pages/modules/mocp/panel/appraisal-record/add",
"style": {
"navigationBarTitleText": "添加公司值班信息"
} }
}, },
{ {
...@@ -101,7 +95,7 @@ ...@@ -101,7 +95,7 @@
{ {
"path": "pages/modules/mocp/panel/assign-work/details", "path": "pages/modules/mocp/panel/assign-work/details",
"style": { "style": {
"navigationBarTitleText": "早会工作详情" "navigationBarTitleText": "布置工作详情"
} }
}, },
{ {
...@@ -165,9 +159,15 @@ ...@@ -165,9 +159,15 @@
} }
}, },
{ {
"path": "pages/modules/mocp/panel/move-decision/edit", "path": "pages/modules/mocp/panel/move-decision/edit-mco-director",
"style": {
"navigationBarTitleText": "MCO主任意见"
}
},
{
"path": "pages/modules/mocp/panel/move-decision/edit-approver",
"style": { "style": {
"navigationBarTitleText": "编辑运行决策" "navigationBarTitleText": "公司值班经理意见"
} }
}, },
{ {
......
<template> <template>
<global-page :padding="24" title="考核记录详情" showNavRight @handleRightClick="handleRightClick"> <global-page :padding="24" title="考核记录详情">
<template v-if="details"> <template v-if="details">
<view class="details"> <view class="details">
<view class="details-header"> <view class="details-header">
...@@ -52,33 +52,45 @@ ...@@ -52,33 +52,45 @@
</view> </view>
</view> </view>
</view> </view>
<card-details type="company" title="公司值班信息" showfooter :idcard="details.dmName" :calendar="details.optionSaveTime"> <custom-card-details
<card-details-item label="公司值班经理" :value="details.dmName || '-'"></card-details-item> title="公司值班信息"
<card-details-item showfooter
:idcard="details.dmName"
:calendar="details.optionSaveTime"
edit
@handleAdd="handleAdd(0)"
>
<custom-card-details-item label="公司值班经理" :value="details.dmName || '-'"></custom-card-details-item>
<custom-card-details-item
label="公司值班经理意见" label="公司值班经理意见"
:value="details.opinionType != -1 ? useGetDictByValue('ar_opinionType', details.opinionType) : '-'" :value="details.opinionType != -1 ? useGetDictByValue('ar_opinionType', details.opinionType) : '-'"
></card-details-item> ></custom-card-details-item>
<card-details-item label="公司值班经理意见描述" :value="details.dmMsg || '-'"></card-details-item> <custom-card-details-item label="公司值班经理意见描述" :value="details.dmMsg || '-'"></custom-card-details-item>
</card-details> </custom-card-details>
<card-details type="quality" title="品质中心信息" showfooter :idcard="details.qmName" :calendar="details.qualitySaveTime"> <custom-card-details
<card-details-item label="品质中心经理" :value="details.qmName || '-'"></card-details-item> title="品质中心信息"
<card-details-item showfooter
:idcard="details.qmName"
:calendar="details.qualitySaveTime"
edit
@handleAdd="handleAdd(1)"
>
<custom-card-details-item label="品质中心经理" :value="details.qmName || '-'"></custom-card-details-item>
<custom-card-details-item
label="品质中心经理意见" label="品质中心经理意见"
:value="details.qualityOpinionType != -1 ? useGetDictByValue('ar_opinionType', details.qualityOpinionType) : '-'" :value="details.qualityOpinionType != -1 ? useGetDictByValue('ar_opinionType', details.qualityOpinionType) : '-'"
></card-details-item> ></custom-card-details-item>
<card-details-item label="品质中心经理意见描述" :value="details.qmMsg || '-'"></card-details-item> <custom-card-details-item label="品质中心经理意见描述" :value="details.qmMsg || '-'"></custom-card-details-item>
</card-details> </custom-card-details>
<card-details type="appeal" title="申诉状态" titleIcon="email"> <custom-card-details title="申诉状态" titleIcon="email">
<view class="appeal-status">{{ useGetDictByValue('ar_appealInfo', details.appealInfo) }}</view> <view class="appeal-status">{{ useGetDictByValue('ar_appealInfo', details.appealInfo) }}</view>
<global-upload :fileList="getFileList" :showUpload="false"></global-upload> <global-upload :fileList="getFileList" :showUpload="false"></global-upload>
</card-details> </custom-card-details>
</template> </template>
</global-page> </global-page>
</template> </template>
<script setup> <script setup>
import CardDetails from './components/card-details.vue'
import CardDetailsItem from './components/card-details-item.vue'
import { timeStampFormat } from 'mocp/utils/tool' import { timeStampFormat } from 'mocp/utils/tool'
import useAppraisalRecordStore from 'mocp/store/appraisal-record' import useAppraisalRecordStore from 'mocp/store/appraisal-record'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
...@@ -92,9 +104,20 @@ onLoad(() => { ...@@ -92,9 +104,20 @@ onLoad(() => {
appraisalRecordStore.setState('id', query.id) appraisalRecordStore.setState('id', query.id)
appraisalRecordStore.getRqmDetails() appraisalRecordStore.getRqmDetails()
}) })
//跳转 // 添加
const handleRightClick = () => { const handleAdd = (isDuty) => {
uni.$mocpJump.navigateTo('/panel/appraisal-record/edit') let params = {}
let realName = ''
if (isDuty == 0) {
params = { id: details.value.id, isDuty, mid: details.value.dmUid, opinionType: details.value.opinionType, msg: details.value.dmMsg }
realName = details.value.dmName
} else {
params = { id: details.value.id, isDuty, mid: details.value.qmUid, opinionType: details.value.qualityOpinionType, msg: details.value.qmMsg }
realName = details.value.qmName
}
uni.$mocpJump.navigateTo('/panel/appraisal-record/edit').then(() => {
uni.$emit('appraisalRecordEdit', params, realName)
})
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
......
<template> <template>
<global-page :padding="24" title="筛选"> <global-page title="筛选">
<up-form labelPosition="left" labelWidth="auto" :model="formData" ref="formRef"> <view class="search-form">
<up-form-item label="状态" prop="status" :borderBottom="true"> <up-form labelPosition="left" labelWidth="auto" :model="formData" ref="formRef">
<global-picker <up-form-item label="状态" prop="status" :borderBottom="true">
v-model="formData.status" <global-picker
pickAlign="right" v-model="formData.status"
clearable pickAlign="right"
:options="[ clearable
{ label: 'OPEN', value: '1' }, :options="[
{ label: 'CLOSE', value: '0' } { label: 'OPEN', value: '1' },
]" { label: 'CLOSE', value: '0' }
></global-picker> ]"
</up-form-item> ></global-picker>
<up-form-item label="是否有效" prop="valid" :borderBottom="true"> </up-form-item>
<global-picker <up-form-item label="是否有效" prop="valid" :borderBottom="true">
v-model="formData.valid" <global-picker
pickAlign="right" v-model="formData.valid"
:options="[ pickAlign="right"
{ label: '有效', value: '1' }, :options="[
{ label: '无效', value: '0' } { label: '有效', value: '1' },
]" { label: '无效', value: '0' }
clearable ]"
></global-picker> clearable
</up-form-item> ></global-picker>
<up-form-item label="基地/职能部门" prop="department" :borderBottom="true"> </up-form-item>
<global-picker v-model="formData.department" pickAlign="right" :options="department" clearable filter></global-picker> <up-form-item label="基地/职能部门" prop="department" :borderBottom="true">
</up-form-item> <global-picker v-model="formData.department" pickAlign="right" :options="department" clearable filter></global-picker>
<up-form-item label="考核对象" prop="appraisee" :borderBottom="true"> </up-form-item>
<global-picker v-model="formData.appraisee" pickAlign="right" :options="appraisee" clearable filter></global-picker> <up-form-item label="考核对象" prop="appraisee" :borderBottom="true">
</up-form-item> <global-picker v-model="formData.appraisee" pickAlign="right" :options="appraisee" clearable filter></global-picker>
<up-form-item label="事件类别" prop="eventType" :borderBottom="true"> </up-form-item>
<global-picker v-model="formData.eventType" pickAlign="right" clearable dictkey="ar_eventType"></global-picker> <up-form-item label="事件类别" prop="eventType" :borderBottom="true">
</up-form-item> <global-picker v-model="formData.eventType" pickAlign="right" clearable dictkey="ar_eventType"></global-picker>
<up-form-item label="机号" prop="ac" :borderBottom="true"> </up-form-item>
<global-picker v-model="formData.ac" pickAlign="right" clearable :options="deviceNumList" filter></global-picker> <up-form-item label="机号" prop="ac" :borderBottom="true">
</up-form-item> <global-picker v-model="formData.ac" pickAlign="right" clearable :options="deviceNumList" filter></global-picker>
<up-form-item label="日期" :borderBottom="true"> </up-form-item>
<global-calendar <up-form-item label="日期" :borderBottom="true">
pickAlign="right" <global-calendar
v-model:startTime="formData.startTime" pickAlign="right"
v-model:endTime="formData.stopTime" v-model:startTime="formData.startTime"
clearable v-model:endTime="formData.stopTime"
></global-calendar> clearable
</up-form-item> ></global-calendar>
</up-form> </up-form-item>
</up-form>
</view>
<template #bottom> <template #bottom>
<view class="footer-btn"> <view class="footer-btn">
<up-row gutter="10"> <up-row gutter="10">
...@@ -71,6 +73,10 @@ const { ...@@ -71,6 +73,10 @@ const {
} = useAppraisalRecordStore() } = useAppraisalRecordStore()
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.search-form {
padding: 24rpx 24rpx 0 24rpx;
background: #fff;
}
.footer-btn { .footer-btn {
padding: 24rpx 32rpx; padding: 24rpx 32rpx;
background-color: #fff; background-color: #fff;
......
<template> <template>
<global-page <global-page
:padding="24" :padding="24"
:title="arrangeWorkExtend?.companyFullName" title="布置工作详情"
:showNavRight="arrangeWorkExtendList.length > 1" :showNavRight="arrangeWorkExtendList.length > 1"
navRightType="icon" navRightType="icon"
:showFooterBtn="!!assignWorkStore.getDetailsFooterBtn" :showFooterBtn="!!assignWorkStore.getDetailsFooterBtn"
...@@ -50,11 +50,14 @@ ...@@ -50,11 +50,14 @@
</view> </view>
</view> </view>
<template v-if="arrangeWorkExtend"> <template v-if="arrangeWorkExtend">
<card-details title="工作反馈" :showEmpty="arrangeWorkExtend.feedbackTime == '0'" v-if="arrangeWorkExtend.feedbackTime != '0'"> <card-details title="工作反馈" :showEmpty="arrangeWorkExtend.feedbackTime == '0'">
<card-details-item title="问题分析" :content="arrangeWorkExtend.problem"></card-details-item> <card-details-item title="问题分析" :content="arrangeWorkExtend.problem"></card-details-item>
<card-details-item title="解决措施" label="工作目标" :content="arrangeWorkExtend.workTarget"></card-details-item> <card-details-item title="解决措施" label="工作目标" :content="arrangeWorkExtend.workTarget"></card-details-item>
<template v-for="(item, index) in assignWorkStore.getDecompose" :key="index"> <template v-for="(item, index) in assignWorkStore.getDecompose" :key="index">
<card-details-item :label="assignWorkStore.getDecompose.length > 1 ? '分解计划' + (index + 1) : '分解计划'" :content="item.plan"> <card-details-item
:label="assignWorkStore.getDecompose.length > 1 && index > 0 ? '分解计划' + (index + 1) : '分解计划'"
:content="item.plan"
>
<card-details-footer <card-details-footer
rightLabel="完成时限:" rightLabel="完成时限:"
:rightValue="timeStampFormat(item.time, { format: 'YYYY/MM/DD' }) || '-'" :rightValue="timeStampFormat(item.time, { format: 'YYYY/MM/DD' }) || '-'"
...@@ -90,7 +93,7 @@ ...@@ -90,7 +93,7 @@
></card-details-footer> ></card-details-footer>
</card-details-item> </card-details-item>
</card-details> </card-details>
<card-details title="领导批示" :showEmpty="arrangeWorkExtend.approvalTime == '0'" v-if="arrangeWorkExtend.approvalTime != '0'"> <card-details title="领导批示" :showEmpty="arrangeWorkExtend.approvalTime == '0'">
<card-details-item <card-details-item
title="领导批示意见" title="领导批示意见"
:content="useGetDictByValue('aw_leaderState', arrangeWorkExtend.leaderApprovalComments)" :content="useGetDictByValue('aw_leaderState', arrangeWorkExtend.leaderApprovalComments)"
...@@ -106,11 +109,7 @@ ...@@ -106,11 +109,7 @@
<card-details <card-details
title="跟踪反馈" title="跟踪反馈"
:showEmpty="arrangeWorkExtend.gzFeedbackTime == '0'" :showEmpty="arrangeWorkExtend.gzFeedbackTime == '0'"
v-if=" v-if="arrangeWorkExtend.feedbackTime && arrangeWorkExtend.approvalTime && arrangeWorkExtend.leaderApprovalComments != 1"
arrangeWorkExtend.gzFeedbackTime != '0' &&
arrangeWorkExtend.leaderApprovalComments != '' &&
arrangeWorkExtend.leaderApprovalComments != '1'
"
> >
<card-details-item title="跟踪反馈" :content="arrangeWorkExtend.gzFeedbackContent"></card-details-item> <card-details-item title="跟踪反馈" :content="arrangeWorkExtend.gzFeedbackContent"></card-details-item>
<card-details-footer <card-details-footer
...@@ -123,11 +122,7 @@ ...@@ -123,11 +122,7 @@
<card-details <card-details
title="跟踪批示" title="跟踪批示"
:showEmpty="arrangeWorkExtend.gzApprovalTime == '0'" :showEmpty="arrangeWorkExtend.gzApprovalTime == '0'"
v-if=" v-if="arrangeWorkExtend.approvalTime && arrangeWorkExtend.gzFeedbackTime && arrangeWorkExtend.leaderApprovalComments != 1"
arrangeWorkExtend.gzApprovalTime != '0' &&
arrangeWorkExtend.leaderApprovalComments != '' &&
arrangeWorkExtend.leaderApprovalComments != '1'
"
> >
<card-details-item <card-details-item
title="领导批示意见" title="领导批示意见"
...@@ -144,7 +139,7 @@ ...@@ -144,7 +139,7 @@
<card-details <card-details
title="后续措施反馈" title="后续措施反馈"
:showEmpty="arrangeWorkExtend.followUpFeedbackTime == '0'" :showEmpty="arrangeWorkExtend.followUpFeedbackTime == '0'"
v-if="arrangeWorkExtend.followUpFeedbackTime != '0' && arrangeWorkExtend.followUpFeedback == '1'" v-if="arrangeWorkExtend.followUpFeedback == '1'"
> >
<card-details-item :borderBottom="false" title="反馈内容" :content="arrangeWorkExtend.followUpFeedbackContent"></card-details-item> <card-details-item :borderBottom="false" title="反馈内容" :content="arrangeWorkExtend.followUpFeedbackContent"></card-details-item>
<card-details-item <card-details-item
...@@ -162,7 +157,7 @@ ...@@ -162,7 +157,7 @@
></card-details-footer> ></card-details-footer>
</card-details-item> </card-details-item>
</card-details> </card-details>
<card-details title="工作验证" :showEmpty="arrangeWorkExtend.eventType == ''" v-if="arrangeWorkExtend.eventType != ''"> <card-details title="工作验证" :showEmpty="arrangeWorkExtend.eventType == ''" v-if="assignWorkStore.isCreateUser">
<card-details-item title="跟踪要点" :content="arrangeWorkExtend.trackingPoints"></card-details-item> <card-details-item title="跟踪要点" :content="arrangeWorkExtend.trackingPoints"></card-details-item>
<card-details-item label="批复附件"> <card-details-item label="批复附件">
<global-upload :fileList="arrangeWorkExtend.validateFileVoList" :showUpload="false"></global-upload> <global-upload :fileList="arrangeWorkExtend.validateFileVoList" :showUpload="false"></global-upload>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<template v-for="(item, index) in formData" :key="index"> <template v-for="(item, index) in formData" :key="index">
<view class="form"> <view class="form">
<up-form-item <up-form-item
:label="formData.length > 1 ? '分解计划' + (index + 1) : '分解计划'" :label="formData.length > 1 && index > 0 ? '分解计划' + (index + 1) : '分解计划'"
:borderBottom="true" :borderBottom="true"
labelPosition="top" labelPosition="top"
required required
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
<view class="plan-body-item"> <view class="plan-body-item">
<view class="plan-body-title"> <view class="plan-body-title">
<view class="left"> <view class="left">
{{ decompose.length > 1 ? '分解计划' + (index + 1) : '分解计划' }} {{ decompose.length > 1 && index > 0 ? '分解计划' + (index + 1) : '分解计划' }}
</view> </view>
<view class="right">{{ timeStampFormat(item.time, { format: 'YYYY/MM/DD' }) }}</view> <view class="right">{{ timeStampFormat(item.time, { format: 'YYYY/MM/DD' }) }}</view>
</view> </view>
...@@ -106,7 +106,12 @@ ...@@ -106,7 +106,12 @@
</up-form-item> </up-form-item>
<up-form-item label="后续措施反馈" :borderBottom="true" required> <up-form-item label="后续措施反馈" :borderBottom="true" required>
<view class="switch"> <view class="switch">
<up-switch v-model="formData.followUpFeedback" activeValue="1" inactiveValue="0"></up-switch> <global-radio
radioAlign="right"
v-model="formData.followUpFeedback"
dictkey="aw_followUpFeedback"
empty-value="0"
></global-radio>
</view> </view>
</up-form-item> </up-form-item>
<up-form-item label="计划完成时间" :borderBottom="true" v-if="formData.followUpFeedback == 1" prop="pcTime" required> <up-form-item label="计划完成时间" :borderBottom="true" v-if="formData.followUpFeedback == 1" prop="pcTime" required>
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<view class="item-title"> <view class="item-title">
<view class="left"> <view class="left">
<custom-state :value="item.state == 1 ? 'OPEN' : 'CLOSE'"></custom-state> <custom-state :value="item.state == 1 ? 'OPEN' : 'CLOSE'"></custom-state>
<view class="txt u-line-1">{{ baseStore.getParamNameByValue('LayoutWorkType', item.workType) }}详情</view> <view class="txt u-line-1">{{ item.seat }}</view>
</view> </view>
<view class="right u-line-1">{{ baseStore.getParamNameByValue('LayoutWorkType', item.workType) }}</view> <view class="right u-line-1">{{ baseStore.getParamNameByValue('LayoutWorkType', item.workType) }}</view>
</view> </view>
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
</view> </view>
<view class="label"> <view class="label">
<global-icon icon="idcard"></global-icon> <global-icon icon="idcard"></global-icon>
<text class="txt">{{ item.presenter }}</text> <text class="txt">提出人:{{ item.presenter || '-' }}</text>
</view> </view>
</view> </view>
</view> </view>
......
<template> <template>
<global-page :padding="24" title="筛选"> <global-page title="筛选">
<up-form labelPosition="left" labelWidth="auto" :model="formData" ref="formRef"> <view class="search-form">
<up-form-item label="任务状态" prop="state" :borderBottom="true"> <up-form labelPosition="left" labelWidth="auto" :model="formData" ref="formRef">
<global-picker <up-form-item label="任务状态" prop="state" :borderBottom="true">
v-model="formData.state" <global-picker
pickAlign="right" v-model="formData.state"
clearable pickAlign="right"
:options="[ clearable
{ label: 'OPEN', value: '1' }, :options="[
{ label: 'CLOSE', value: '2' } { label: 'OPEN', value: '1' },
]" { label: 'CLOSE', value: '2' }
></global-picker> ]"
</up-form-item> ></global-picker>
<up-form-item label="提出人" prop="presenter" :borderBottom="true"> </up-form-item>
<up-input v-model="formData.presenter" inputAlign="right" border="none" placeholder="请输入" clearable></up-input> <up-form-item label="提出人" prop="presenter" :borderBottom="true">
</up-form-item> <up-input v-model="formData.presenter" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
<up-form-item label="管理席位" prop="seat" :borderBottom="true"> </up-form-item>
<global-picker <up-form-item label="管理席位" prop="seat" :borderBottom="true">
v-model="formData.seat" <global-picker
pickAlign="right" v-model="formData.seat"
:options="assignWorkStore.getSeatUnitSelect" pickAlign="right"
clearable :options="assignWorkStore.getSeatUnitSelect"
filter clearable
></global-picker> filter
</up-form-item> ></global-picker>
<up-form-item label="工作类型" prop="workType" :borderBottom="true"> </up-form-item>
<global-picker <up-form-item label="工作类型" prop="workType" :borderBottom="true">
v-model="formData.workType" <global-picker
pickAlign="right" v-model="formData.workType"
:options="baseStore.getParamsByType('LayoutWorkType')" pickAlign="right"
clearable :options="baseStore.getParamsByType('LayoutWorkType')"
filter clearable
></global-picker> filter
</up-form-item> ></global-picker>
<up-form-item label="开始日期" :borderBottom="true"> </up-form-item>
<global-calendar <up-form-item label="开始日期" :borderBottom="true">
pickAlign="right" <global-calendar
v-model:startTime="formData.startTimeS" pickAlign="right"
v-model:endTime="formData.startTimeE" v-model:startTime="formData.startTimeS"
clearable v-model:endTime="formData.startTimeE"
></global-calendar> clearable
</up-form-item> ></global-calendar>
</up-form> </up-form-item>
</up-form>
</view>
<template #bottom> <template #bottom>
<view class="footer-btn"> <view class="footer-btn">
<up-row gutter="10"> <up-row gutter="10">
...@@ -66,6 +68,10 @@ const assignWorkStore = useAssignWorkStore() ...@@ -66,6 +68,10 @@ const assignWorkStore = useAssignWorkStore()
const baseStore = useBaseStore() const baseStore = useBaseStore()
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.search-form {
padding: 24rpx 24rpx 0 24rpx;
background: #fff;
}
.footer-btn { .footer-btn {
padding: 24rpx 32rpx; padding: 24rpx 32rpx;
background-color: #fff; background-color: #fff;
......
...@@ -32,11 +32,6 @@ ...@@ -32,11 +32,6 @@
} }
} }
} }
&-footer {
&-item {
margin-top: 16rpx;
}
}
} }
.time-list { .time-list {
background: #fff; background: #fff;
......
...@@ -6,14 +6,20 @@ ...@@ -6,14 +6,20 @@
&-title { &-title {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between;
padding-bottom: 16rpx; padding-bottom: 16rpx;
border-bottom: 2rpx solid #f4f4f4; border-bottom: 2rpx solid #f4f4f4;
.left { .left {
display: flex; display: flex;
align-items: center; align-items: center;
}
.right {
display: flex;
align-items: center;
justify-content: space-between;
.txt { .txt {
color: $mocp-text-5; color: $mocp-text-5;
font-size: 34rpx; font-size: 28rpx;
margin-left: 16rpx; margin-left: 16rpx;
} }
} }
......
<template> <template>
<global-page :padding="24" title="查看运行决策" showNavRight @handleRightClick="handleRightClick"> <global-page :padding="24" title="运行决策详情">
<template v-if="details"> <template v-if="details">
<view class="details"> <view class="details">
<view class="details-header"> <view class="details-header">
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
></global-field> ></global-field>
</view> </view>
</view> </view>
<view class="details-body-box"> <view class="details-body-wrap">
<view class="details-body-list"> <view class="details-body-list">
<view class="details-body-item"> <view class="details-body-item">
<view class="title">故障描述</view> <view class="title">故障描述</view>
...@@ -60,24 +60,38 @@ ...@@ -60,24 +60,38 @@
</view> </view>
</view> </view>
</view> </view>
<view class="details-footer">
<view class="details-footer-list">
<view class="details-footer-item">
<global-field label="批准人:" :value="details.approver || '-'"></global-field>
</view>
<view class="details-footer-item">
<global-field
label="决策结果:"
:value="useGetDictByValue('md_decisionState', details.decisionState) || '-'"
></global-field>
</view>
<view class="details-footer-item" v-if="details.decisionState == '0' && details.remark">
<global-field :value="details.remark"></global-field>
</view>
</view>
</view>
</view> </view>
</view> </view>
<custom-card-details
title="公司值班经理意见"
showfooter
:idcard="details.approverUpdateName"
:calendar="details.approverUpdateTime"
edit
@handleAdd="handleAdd('edit-approver')"
>
<custom-card-details-item label="公司值班经理" :value="details.approverName || '-'"></custom-card-details-item>
<custom-card-details-item
label="公司值班经理意见"
:value="useGetDictByValue('md_decisionState', details.decisionState) || '-'"
></custom-card-details-item>
<custom-card-details-item label="公司值班经理意见描述" :value="details.decisionOpinion || '-'"></custom-card-details-item>
</custom-card-details>
<custom-card-details
title="MCO主任意见"
showfooter
:idcard="details.mcoDirectorUpdateName"
:calendar="details.mcoDirectorUpdateTime"
edit
@handleAdd="handleAdd('edit-mco-director')"
>
<custom-card-details-item label="MCO主任" :value="details.mcoDirectorName || '-'"></custom-card-details-item>
<custom-card-details-item
label="MCO主任意见"
:value="useGetDictByValue('md_decisionState', details.mcoDirectorDecisionState) || '-'"
></custom-card-details-item>
<custom-card-details-item label="MCO主任意见描述" :value="details.mcoDirectorOpinion || '-'"></custom-card-details-item>
</custom-card-details>
<view class="time-list"> <view class="time-list">
<view class="time-item"> <view class="time-item">
<global-field label="填报人:" :value="details.filledBy"></global-field> <global-field label="填报人:" :value="details.filledBy"></global-field>
...@@ -103,8 +117,8 @@ const baseStore = useBaseStore() ...@@ -103,8 +117,8 @@ const baseStore = useBaseStore()
const moveDecisionStore = useMoveDecisionStore() const moveDecisionStore = useMoveDecisionStore()
const { details, getFileList } = storeToRefs(moveDecisionStore) const { details, getFileList } = storeToRefs(moveDecisionStore)
//跳转 //跳转
const handleRightClick = () => { const handleAdd = (path) => {
uni.$mocpJump.navigateTo('/panel/move-decision/edit') uni.$mocpJump.navigateTo(`/panel/move-decision/${path}`)
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
......
<template> <template>
<global-page <global-page
:title="formData.isDuty == 0 ? '添加公司值班信息' : '添加品质中心信息'" title="公司值班经理意见"
navLeftType="text" navLeftType="text"
showNavRight showNavRight
navRightType="button" navRightType="button"
...@@ -9,28 +9,18 @@ ...@@ -9,28 +9,18 @@
> >
<view class="mocp-form"> <view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto"> <up-form labelPosition="left" labelWidth="auto">
<up-form-item :label="formData.isDuty == 0 ? '公司值班经理' : '品质中心经理'" :borderBottom="true"> <up-form-item label="公司值班经理" :borderBottom="true">
<global-picker pickAlign="right" clearable v-model="formData.mid" :options="selectList" emptyValue="-1"></global-picker> <global-picker pickAlign="right" clearable v-model="formData.approver" :options="selectList" filter></global-picker>
</up-form-item> </up-form-item>
<up-form-item :label="formData.isDuty == 0 ? '公司值班经理意见' : '品质中心经理意见'" :borderBottom="true"> <up-form-item label="公司值班经理意见" :borderBottom="true">
<global-picker <global-radio radioAlign="right" clearable v-model="formData.decisionState" dictkey="md_decisionState"></global-radio>
pickAlign="right"
clearable
v-model="formData.opinionType"
dictkey="ar_opinionType"
:emptyValue="-1"
></global-picker>
</up-form-item> </up-form-item>
<up-form-item <up-form-item label="公司值班经理意见描述" :borderBottom="true" labelPosition="top">
:label="formData.isDuty == 0 ? '公司值班经理意见描述' : '品质中心经理意见描述'"
:borderBottom="true"
labelPosition="top"
>
<up-textarea <up-textarea
placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容" placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height="40" :height="40"
border="none" border="none"
v-model="formData.msg" v-model="formData.decisionOpinion"
></up-textarea> ></up-textarea>
</up-form-item> </up-form-item>
</up-form> </up-form>
...@@ -39,54 +29,45 @@ ...@@ -39,54 +29,45 @@
</template> </template>
<script setup> <script setup>
import { saveRqmOpinionApi } from 'mocp/api/appraisal-record'
import { getAdminListApi } from 'mocp/api/base'
import { onLoad } from '@dcloudio/uni-app' import { onLoad } from '@dcloudio/uni-app'
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import useAppraisalRecordStore from 'mocp/store/appraisal-record' import useBaseStore from 'mocp/store/base'
import { storeToRefs } from 'pinia'
import useMoveDecisionStore from 'mocp/store/move-decision'
import { updateApproverInfoApi } from 'mocp/api/move-decision'
const appraisalRecordStore = useAppraisalRecordStore() const baseStore = useBaseStore()
const moveDecisionStore = useMoveDecisionStore()
const { details } = storeToRefs(moveDecisionStore)
//表单数据 //表单数据
const formData = reactive({ const formData = reactive({
id: '', id: '',
isDuty: 0, approver: '',
mid: '-1', decisionState: '',
opinionType: -1, decisionOpinion: ''
msg: ''
}) })
//获取下拉框列表
const selectList = ref([])
onLoad(() => { onLoad(() => {
uni.$once('appraisalRecordAdd', (data, realName) => { formData.id = details.value.id
Object.assign(formData, data) formData.approver = details.value.approver
getAdminList(realName || '') formData.decisionState = details.value.decisionState
formData.decisionOpinion = details.value.decisionOpinion
baseStore.getAdminList().then((res) => {
selectList.value = res
}) })
}) })
//获取下拉框列表
const selectList = ref([])
const getAdminList = async (realName) => {
const params = {
pageIndex: 1,
pageSize: 100,
realName
}
const res = await getAdminListApi(params, { loading: true })
if (res.code == 200) {
selectList.value = res.data.list.map((item) => {
return {
label: `${item.nickname}(${(item.enetAccount || '无易网号') + '-' + (item.deptFullName || '无机构')})`,
value: item.id
}
})
} else {
uni.$mocpMessage.error(res.message)
}
}
const handleRightClick = async () => { const handleRightClick = async () => {
const res = await saveRqmOpinionApi(formData, { loading: true }) const res = await updateApproverInfoApi(formData, { loading: true })
if (res.code == 200) { if (res.code == 200) {
uni.$mocpJump.navigateBack() uni.$mocpJump.navigateBack()
appraisalRecordStore.getRqmDetails()
uni.$mocpMessage.success(res.message) uni.$mocpMessage.success(res.message)
res.data.approver = formData.approver
res.data.approverName = selectList.value.find((item) => item.value == formData.approver)?.label.split('(')[0] || ''
res.data.decisionState = formData.decisionState
res.data.decisionOpinion = formData.decisionOpinion
//更新详情
moveDecisionStore.setState('details', res.data)
} else { } else {
uni.$mocpMessage.error(res.message) uni.$mocpMessage.error(res.message)
} }
......
<template>
<global-page title="MCO主任意见" navLeftType="text" showNavRight navRightType="button" navRightText="保存" @handleRightClick="handleRightClick">
<view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto">
<up-form-item label="MCO主任" :borderBottom="true">
<global-picker pickAlign="right" clearable v-model="formData.mcoDirector" :options="selectList" filter></global-picker>
</up-form-item>
<up-form-item label="MCP主任意见" :borderBottom="true">
<global-radio radioAlign="right" clearable v-model="formData.mcoDirectorDecisionState" dictkey="md_decisionState"></global-radio>
</up-form-item>
<up-form-item label="MCP主任意见描述" :borderBottom="true" labelPosition="top">
<up-textarea
placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height="40"
border="none"
v-model="formData.mcoDirectorOpinion"
></up-textarea>
</up-form-item>
</up-form>
</view>
</global-page>
</template>
<script setup>
import { onLoad } from '@dcloudio/uni-app'
import { reactive, ref } from 'vue'
import useBaseStore from 'mocp/store/base'
import { storeToRefs } from 'pinia'
import useMoveDecisionStore from 'mocp/store/move-decision'
import { updateMcoDirectorInfoApi } from 'mocp/api/move-decision'
const baseStore = useBaseStore()
const moveDecisionStore = useMoveDecisionStore()
const { details } = storeToRefs(moveDecisionStore)
//表单数据
const formData = reactive({
id: '',
mcoDirector: '',
mcoDirectorDecisionState: '',
mcoDirectorOpinion: ''
})
//获取下拉框列表
const selectList = ref([])
onLoad(() => {
formData.id = details.value.id
formData.mcoDirector = details.value.mcoDirector
formData.mcoDirectorDecisionState = details.value.mcoDirectorDecisionState
formData.mcoDirectorOpinion = details.value.mcoDirectorOpinion
baseStore.getAdminList().then((res) => {
selectList.value = res
})
})
const handleRightClick = async () => {
const res = await updateMcoDirectorInfoApi(formData, { loading: true })
if (res.code == 200) {
uni.$mocpJump.navigateBack()
uni.$mocpMessage.success(res.message)
res.data.mcoDirector = formData.mcoDirector
res.data.mcoDirectorName = selectList.value.find((item) => item.value == formData.mcoDirector)?.label.split('(')[0] || ''
res.data.mcoDirectorDecisionState = formData.mcoDirectorDecisionState
res.data.mcoDirectorOpinion = formData.mcoDirectorOpinion
//更新详情
moveDecisionStore.setState('details', res.data)
} else {
uni.$mocpMessage.error(res.message)
}
}
</script>
<style lang="scss" scoped>
.mocp-form {
background: #fff;
padding: 0 32rpx;
}
</style>
...@@ -19,7 +19,10 @@ ...@@ -19,7 +19,10 @@
<view class="item-title"> <view class="item-title">
<view class="left"> <view class="left">
<custom-state :value="useGetDictByValue('md_state', item.state)"></custom-state> <custom-state :value="useGetDictByValue('md_state', item.state)"></custom-state>
<text class="txt u-line-1">{{ item.decisionNumber }}</text> </view>
<view class="right">
<text class="txt u-line-1" v-if="item.machineNumber">{{ item.machineNumber }}</text>
<text class="txt u-line-1" v-if="item.aviation">{{ item.aviation }}</text>
</view> </view>
</view> </view>
<view class="item-content u-line-3"> <view class="item-content u-line-3">
...@@ -32,10 +35,6 @@ ...@@ -32,10 +35,6 @@
{{ timeStampFormat(item.filledTime, { format: 'YYYY/MM/DD HH:mm' }) }} {{ timeStampFormat(item.filledTime, { format: 'YYYY/MM/DD HH:mm' }) }}
</text> </text>
</view> </view>
<view class="label">
<global-icon icon="idcard"></global-icon>
<text class="txt">{{ item.filledBy }}</text>
</view>
</view> </view>
</view> </view>
</template> </template>
......
<template> <template>
<global-page :padding="24" title="筛选"> <global-page title="筛选">
<up-form labelPosition="left" labelWidth="auto" :model="formData" ref="formRef"> <view class="search-form">
<up-form-item label="状态" prop="state" :borderBottom="true"> <up-form labelPosition="left" labelWidth="auto" :model="formData" ref="formRef">
<global-picker <up-form-item label="状态" prop="state" :borderBottom="true">
v-model="formData.state" <global-picker v-model="formData.state" pickAlign="right" clearable dictkey="md_state"></global-picker>
pickAlign="right" </up-form-item>
clearable <up-form-item label="航站" prop="terminal" :borderBottom="true">
dictkey="md_state" <global-picker
></global-picker> pickAlign="right"
</up-form-item> v-model="formData.terminal"
<up-form-item label="航站" prop="terminal" :borderBottom="true"> clearable
<global-picker pickAlign="right" v-model="formData.terminal" clearable :options="baseStore.getTerminalSelect" filter></global-picker> :options="baseStore.getTerminalSelect"
</up-form-item> filter
<up-form-item label="是否有效" prop="valid" :borderBottom="true"> ></global-picker>
<global-picker </up-form-item>
v-model="formData.valid" <up-form-item label="是否有效" prop="valid" :borderBottom="true">
pickAlign="right" <global-picker
:options="[ v-model="formData.valid"
{ label: '有效', value: '1' }, pickAlign="right"
{ label: '无效', value: '0' } :options="[
]" { label: '有效', value: '1' },
clearable { label: '无效', value: '0' }
></global-picker> ]"
</up-form-item> clearable
<up-form-item label="决策结果" prop="decisionState" :borderBottom="true"> ></global-picker>
<global-picker </up-form-item>
v-model="formData.decisionState" <up-form-item label="决策结果" prop="decisionState" :borderBottom="true">
pickAlign="right" <global-picker
:options="[ v-model="formData.decisionState"
{ label: '同意', value: '1' }, pickAlign="right"
{ label: '不同意', value: '0' } :options="[
]" { label: '同意', value: '1' },
clearable { label: '不同意', value: '0' }
></global-picker> ]"
</up-form-item> clearable
<up-form-item label="航司" prop="aviation" :borderBottom="true"> ></global-picker>
<global-picker v-model="formData.aviation" pickAlign="right" :options="baseStore.getAirlineSelect" clearable filter></global-picker> </up-form-item>
</up-form-item> <up-form-item label="航司" prop="aviation" :borderBottom="true">
<up-form-item label="机号" prop="machineNumber" :borderBottom="true"> <global-picker
<global-picker pickAlign="right" v-model="formData.machineNumber" :options="deviceNumList" clearable filter></global-picker> v-model="formData.aviation"
</up-form-item> pickAlign="right"
<up-form-item label="日期" :borderBottom="true"> :options="baseStore.getAirlineSelect"
<global-calendar clearable
pickAlign="right" filter
v-model:startTime="formData.startDateTime" ></global-picker>
v-model:endTime="formData.endDateTime" </up-form-item>
clearable <up-form-item label="机号" prop="machineNumber" :borderBottom="true">
></global-calendar> <global-picker pickAlign="right" v-model="formData.machineNumber" :options="deviceNumList" clearable filter></global-picker>
</up-form-item> </up-form-item>
</up-form> <up-form-item label="日期" :borderBottom="true">
<global-calendar
pickAlign="right"
v-model:startTime="formData.startDateTime"
v-model:endTime="formData.endDateTime"
clearable
></global-calendar>
</up-form-item>
</up-form>
</view>
<template #bottom> <template #bottom>
<view class="footer-btn"> <view class="footer-btn">
<up-row gutter="10"> <up-row gutter="10">
...@@ -74,6 +83,10 @@ const { ...@@ -74,6 +83,10 @@ const {
} = useBaseStore() } = useBaseStore()
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.search-form {
padding: 24rpx 24rpx 0 24rpx;
background: #fff;
}
.footer-btn { .footer-btn {
padding: 24rpx 32rpx; padding: 24rpx 32rpx;
background-color: #fff; background-color: #fff;
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<view class="mocp-form"> <view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto"> <up-form labelPosition="left" labelWidth="auto">
<up-form-item label="授权工程师" :borderBottom="true"> <up-form-item label="授权工程师" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.estimateEngineer" clearable :options="estimateOpts"></global-picker> <global-picker pickAlign="right" v-model="formData.estimateEngineer" clearable :options="estimateOpts" filter></global-picker>
</up-form-item> </up-form-item>
<up-form-item label="日期" :borderBottom="true"> <up-form-item label="日期" :borderBottom="true">
<global-date pickAlign="right" v-model="formData.engineerTime" clearable :timestamp="false"></global-date> <global-date pickAlign="right" v-model="formData.engineerTime" clearable :timestamp="false"></global-date>
...@@ -89,7 +89,7 @@ onLoad(() => { ...@@ -89,7 +89,7 @@ onLoad(() => {
formData.estimateEngineer = details.value.estimateEngineer formData.estimateEngineer = details.value.estimateEngineer
formData.estimateType = details.value.estimateType formData.estimateType = details.value.estimateType
formData.engineerTime = details.value.engineerTime formData.engineerTime = details.value.engineerTime
baseStore.getAdminList(details.value.estimateEngineerName).then((res) => { baseStore.getAdminList().then((res) => {
estimateOpts.value = res estimateOpts.value = res
}) })
}) })
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<view class="mocp-form"> <view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto"> <up-form labelPosition="left" labelWidth="auto">
<up-form-item label="机队经理或其授权人" :borderBottom="true"> <up-form-item label="机队经理或其授权人" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.otherName" clearable :options="otherNameOpts"></global-picker> <global-picker pickAlign="right" v-model="formData.otherName" clearable :options="otherNameOpts" filter></global-picker>
</up-form-item> </up-form-item>
<up-form-item label="机队经理或其授权人意见" :borderBottom="true"> <up-form-item label="机队经理或其授权人意见" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.opinionType" clearable dictkey="te_opinionType" emptyValue="0"></global-picker> <global-picker pickAlign="right" v-model="formData.opinionType" clearable dictkey="te_opinionType" emptyValue="0"></global-picker>
...@@ -44,7 +44,7 @@ onLoad(() => { ...@@ -44,7 +44,7 @@ onLoad(() => {
formData.num = details.value.num formData.num = details.value.num
formData.otherName = details.value.otherName formData.otherName = details.value.otherName
formData.opinionType = details.value.opinionType formData.opinionType = details.value.opinionType
baseStore.getAdminList(details.value.otherFullName).then((res) => { baseStore.getAdminList().then((res) => {
otherNameOpts.value = res otherNameOpts.value = res
}) })
}) })
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<view class="mocp-form"> <view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto"> <up-form labelPosition="left" labelWidth="auto">
<up-form-item label="客户工程授权人" :borderBottom="true"> <up-form-item label="客户工程授权人" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.customName" clearable :options="customNameOpts"></global-picker> <global-picker pickAlign="right" v-model="formData.customName" clearable :options="customNameOpts" filter></global-picker>
</up-form-item> </up-form-item>
<up-form-item label="客户工程授权人意见" :borderBottom="true"> <up-form-item label="客户工程授权人意见" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.customType" clearable dictkey="te_customType" emptyValue="0"></global-picker> <global-picker pickAlign="right" v-model="formData.customType" clearable dictkey="te_customType" emptyValue="0"></global-picker>
...@@ -44,7 +44,7 @@ onLoad(() => { ...@@ -44,7 +44,7 @@ onLoad(() => {
formData.num = details.value.num formData.num = details.value.num
formData.customName = details.value.customName formData.customName = details.value.customName
formData.customType = details.value.customType formData.customType = details.value.customType
baseStore.getAdminList(details.value.customFullName).then((res) => { baseStore.getAdminList().then((res) => {
customNameOpts.value = res customNameOpts.value = res
}) })
}) })
......
<template> <template>
<global-page :padding="24" title="筛选"> <global-page title="筛选">
<up-form labelPosition="left" labelWidth="auto" :model="formData" ref="formRef"> <view class="search-form">
<up-form-item label="状态" prop="state" :borderBottom="true"> <up-form labelPosition="left" labelWidth="auto" :model="formData" ref="formRef">
<global-picker v-model="formData.state" pickAlign="right" clearable dictkey="te_state"></global-picker> <up-form-item label="状态" prop="state" :borderBottom="true">
</up-form-item> <global-picker v-model="formData.state" pickAlign="right" clearable dictkey="te_state"></global-picker>
<up-form-item label="机号" prop="ac" :borderBottom="true"> </up-form-item>
<global-picker pickAlign="right" v-model="formData.ac" :options="deviceNumList" clearable filter></global-picker> <up-form-item label="机号" prop="ac" :borderBottom="true">
</up-form-item> <global-picker pickAlign="right" v-model="formData.ac" :options="deviceNumList" clearable filter></global-picker>
<up-form-item label="机型" prop="model" :borderBottom="true"> </up-form-item>
<global-picker v-model="formData.model" pickAlign="right" :options="baseStore.getTypeSelect" clearable filter></global-picker> <up-form-item label="机型" prop="model" :borderBottom="true">
</up-form-item> <global-picker v-model="formData.model" pickAlign="right" :options="baseStore.getTypeSelect" clearable filter></global-picker>
<up-form-item label="ATA章节" prop="ata" :borderBottom="true"> </up-form-item>
<global-picker v-model="formData.ata" pickAlign="right" :options="baseStore.getATASelect" clearable filter></global-picker> <up-form-item label="ATA章节" prop="ata" :borderBottom="true">
</up-form-item> <global-picker v-model="formData.ata" pickAlign="right" :options="baseStore.getATASelect" clearable filter></global-picker>
<up-form-item label="日期" :borderBottom="true"> </up-form-item>
<global-calendar <up-form-item label="日期" :borderBottom="true">
pickAlign="right" <global-calendar
v-model:startTime="formData.startDateTime" pickAlign="right"
v-model:endTime="formData.endDateTime" v-model:startTime="formData.startDateTime"
clearable v-model:endTime="formData.endDateTime"
></global-calendar> clearable
</up-form-item> ></global-calendar>
</up-form> </up-form-item>
</up-form>
</view>
<template #bottom> <template #bottom>
<view class="footer-btn"> <view class="footer-btn">
<up-row gutter="10"> <up-row gutter="10">
...@@ -47,6 +49,10 @@ const { ...@@ -47,6 +49,10 @@ const {
} = useBaseStore() } = useBaseStore()
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.search-form {
padding: 24rpx 24rpx 0 24rpx;
background: #fff;
}
.footer-btn { .footer-btn {
padding: 24rpx 32rpx; padding: 24rpx 32rpx;
background-color: #fff; background-color: #fff;
......
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