Commit 541150e3 by pangchong

feat: 工作任务指令

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