Commit 541150e3 by pangchong

feat: 工作任务指令

parent 4a054119
import { http } from 'mocp/utils/http'
export const getDecisionApi = (data, config) => {
export const getWorkTaskListApi = (data, config) => {
return http({
method: 'POST',
url: '/workbench/getDecision',
data,
config
})
}
export const updateDecisionApi = (data, config) => {
return http({
method: 'POST',
url: '/workbench/updateDecision',
data,
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',
url: '/workbench/getWorkTaskList',
data,
config
})
}
\ No newline at end of file
......@@ -167,8 +167,12 @@ const defaultIndex = ref(0)
//获取下拉框的内容Columns
const getColumns = computed(() => {
if (ps.dictkey) {
if (dictData[ps.dictkey]) {
return cloneDeep(dictData[ps.dictkey])
} else {
throw new Error('请输入存在的dictkey值')
}
} else {
if (ps.options && Object.prototype.toString.call(ps.options[0]) == '[object Object]') {
return ps.options
} else {
......@@ -185,8 +189,8 @@ const getColumns = computed(() => {
watch(
[() => ps.modelValue, () => ps.options],
() => {
const option = getColumns.value.find((option) => String(option[ps.valueField]) === String(ps.modelValue))
const index = getColumns.value.findIndex((option) => String(option[ps.valueField]) === String(ps.modelValue))
const option = getColumns.value?.find((option) => String(option[ps.valueField]) === String(ps.modelValue))
const index = getColumns.value?.findIndex((option) => String(option[ps.valueField]) === String(ps.modelValue))
if (option) {
labelValue.value = option[ps.labelField]
nextTick(() => {
......
......@@ -2,3 +2,4 @@ export * from './appraisal-record'
export * from './assign-work'
export * from './move-decision'
export * from './technology-evaluation'
export * from './work-assignment'
// 建议以文件名首字母作为前缀wa_
export const wa_state = [
{ label: 'OPEN', value: '1' },
{ label: 'CLOSE', value: '2' }
]
......@@ -4,12 +4,13 @@ const useWorkAssignmentStore = defineStore('workAssignment', {
state: () => {
return {
searchData: {
state: 1,
presenter: '',
seat: '',
workType: null,
startDateTime: null,
endDateTime: null
state: '1',
machineNumber: '',
model: '',
aviation: '',
terminal: '',
feedbackTime: '',
sponsor: ''
},
details: undefined
}
......@@ -18,12 +19,13 @@ const useWorkAssignmentStore = defineStore('workAssignment', {
actions: {
resetForm() {
this.searchData = {
state: 1,
presenter: '',
seat: '',
workType: null,
startDateTime: null,
endDateTime: null
state: '1',
machineNumber: '',
model: '',
aviation: '',
terminal: '',
feedbackTime: '',
sponsor: ''
}
},
setState(...args) {
......
......@@ -235,6 +235,12 @@
"style": {
"navigationBarTitleText": "工作任务指令"
}
},
{
"path": "pages/modules/mocp/panel/work-assignment/details",
"style": {
"navigationBarTitleText": "工作任务指令详情"
}
}
],
"globalStyle": {
......
......@@ -202,12 +202,21 @@ const assignWorkStore = useAssignWorkStore()
const { details, arrangeWorkExtendList, arrangeWorkExtend } = storeToRefs(assignWorkStore)
onLoad(async () => {
assignWorkStore.setState('id', query.id)
if (arrangeWorkExtendList.value.length > 1) {
uni.showLoading({
title: '加载中...',
mask: true
})
await Promise.all([assignWorkStore.getArrangeWorkDetail(), assignWorkStore.getEnetOrgTree()])
uni.hideLoading()
} else {
uni.showLoading({
title: '加载中...',
mask: true
})
await assignWorkStore.getArrangeWorkDetail()
uni.hideLoading()
}
})
//责任公司弹框
const companyPopupRef = ref()
......
<template>
<global-page :padding="24" title="工作任务指令详情"></global-page>
</template>
<script setup>
import useWorkAssignmentStore from 'mocp/store/work-assignment'
import { storeToRefs } from 'pinia'
import useBaseStore from 'mocp/store/base'
const workAssignmentStore = useWorkAssignmentStore()
const { details } = storeToRefs(workAssignmentStore)
console.log(details.value)
const baseStore = useBaseStore()
</script>
<style lang="scss" scoped></style>
......@@ -11,14 +11,14 @@
navRightType="icon"
navRightIcon="saixuan-01"
@handleRightClick="handleRightClick"
:api="getDecisionApi"
:api="getWorkTaskListApi"
:padding="24"
>
<template #="{ dataList }">
<view class="item" v-for="item in dataList" :key="item.id" @tap="goDetails(item)">
<view class="item-title">
<view class="left">
<custom-state :value="useGetDictByValue('md_state', item.state)"></custom-state>
<custom-state :value="useGetDictByValue('wa_state', item.state)"></custom-state>
</view>
<view class="right">
<text class="txt u-line-1" v-if="item.machineNumber">{{ item.machineNumber }}</text>
......@@ -26,13 +26,13 @@
</view>
</view>
<view class="item-content u-line-3">
{{ item.faultDescription || '无' }}
{{ item.taskDescription || '无' }}
</view>
<view class="item-footer">
<view class="label">
<global-icon icon="calendar"></global-icon>
<text class="txt">
{{ timeStampFormat(item.filledTime, { format: 'YYYY/MM/DD HH:mm' }) }}
{{ timeStampFormat(item.feedbackTime, { format: 'YYYY/MM/DD' }) }}
</text>
</view>
</view>
......@@ -44,18 +44,18 @@
<script setup>
import { ref } from 'vue'
import { timeStampFormat } from 'mocp/utils/tool'
import { getDecisionApi } from 'mocp/api/move-decision'
import { useGetDictByValue } from 'mocp/hooks/use-dict/useDict'
import useMoveDecisionStore from 'mocp/store/move-decision'
import useWorkAssignmentStore from 'mocp/store/work-assignment'
import { storeToRefs } from 'pinia'
import { onUnload } from '@dcloudio/uni-app'
import { getWorkTaskListApi } from 'mocp/api/work-assignment'
//跳转
const moveDecisionStore = useMoveDecisionStore()
const { searchData } = storeToRefs(moveDecisionStore)
const workAssignmentStore = useWorkAssignmentStore()
const { searchData } = storeToRefs(workAssignmentStore)
const goDetails = (data) => {
uni.$mocpJump.navigateTo('/panel/work-assignment/details', { id: data.id }).then(() => {
moveDecisionStore.setState('details', data)
workAssignmentStore.setState('details', data)
})
}
//筛选
......
......@@ -3,58 +3,37 @@
<view class="search-form">
<up-form labelPosition="left" labelWidth="auto">
<up-form-item label="状态" prop="state" :borderBottom="true">
<global-picker v-model="formData.state" pickAlign="right" clearable dictkey="md_state"></global-picker>
<global-picker v-model="formData.state" pickAlign="right" clearable dictkey="wa_state"></global-picker>
</up-form-item>
<up-form-item label="航站" prop="terminal" :borderBottom="true">
<global-picker
pickAlign="right"
v-model="formData.terminal"
clearable
:options="baseStore.getTerminalSelect"
filter
></global-picker>
<up-form-item label="机号" prop="machineNumber" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.machineNumber" :options="deviceNumList" clearable filter></global-picker>
</up-form-item>
<up-form-item label="是否有效" prop="valid" :borderBottom="true">
<global-picker
v-model="formData.valid"
pickAlign="right"
:options="[
{ label: '有效', value: '1' },
{ label: '无效', value: '0' }
]"
clearable
></global-picker>
<up-form-item label="机型" prop="model" :borderBottom="true">
<global-picker v-model="formData.model" pickAlign="right" :options="baseStore.getTypeSelect" clearable filter></global-picker>
</up-form-item>
<up-form-item label="决策结果" prop="decisionState" :borderBottom="true">
<up-form-item label="航司" prop="aviation" :borderBottom="true">
<global-picker
v-model="formData.decisionState"
v-model="formData.aviation"
pickAlign="right"
:options="[
{ label: '同意', value: '1' },
{ label: '不同意', value: '0' }
]"
:options="baseStore.getAirlineSelect"
clearable
filter
></global-picker>
</up-form-item>
<up-form-item label="航司" prop="aviation" :borderBottom="true">
<up-form-item label="航站" prop="terminal" :borderBottom="true">
<global-picker
v-model="formData.aviation"
pickAlign="right"
:options="baseStore.getAirlineSelect"
v-model="formData.terminal"
clearable
:options="baseStore.getTerminalSelect"
filter
></global-picker>
</up-form-item>
<up-form-item label="机号" prop="machineNumber" :borderBottom="true">
<global-picker pickAlign="right" v-model="formData.machineNumber" :options="deviceNumList" clearable filter></global-picker>
<up-form-item label="反馈时限" prop="feedbackTime" :borderBottom="true">
<global-date v-model="formData.feedbackTime" pickAlign="right" clearable></global-date>
</up-form-item>
<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 label="发起人" prop="sponsor" :borderBottom="true">
<up-input v-model="formData.sponsor" inputAlign="right" border="none" placeholder="请输入" clearable></up-input>
</up-form-item>
</up-form>
</view>
......@@ -73,27 +52,27 @@
<script setup>
import useBaseStore from 'mocp/store/base'
import useMoveDecisionStore from 'mocp/store/move-decision'
import { storeToRefs } from 'pinia'
import { cloneDeep } from 'lodash'
import { ref } from 'vue'
import useWorkAssignmentStore from 'mocp/store/work-assignment'
//获取下拉框选项
const baseStore = useBaseStore()
const {
selectList: { deviceNumList }
} = useBaseStore()
const moveDecisionStore = useMoveDecisionStore()
const workAssignmentStore = useWorkAssignmentStore()
//获取查询表单数据
const { searchData } = storeToRefs(moveDecisionStore)
const { searchData } = storeToRefs(workAssignmentStore)
const formData = ref(cloneDeep(searchData.value))
const handleReset = () => {
moveDecisionStore.resetForm()
workAssignmentStore.resetForm()
uni.$mocpJump.redirectTo('/panel/work-assignment/list')
uni.$emit('workAssignmentReload')
}
const handleConfirm = () => {
moveDecisionStore.setState('searchData', formData.value)
workAssignmentStore.setState('searchData', formData.value)
uni.$mocpJump.redirectTo('/panel/work-assignment/list')
uni.$emit('workAssignmentReload')
}
......
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