吉安感知网项目-前端
shuishen
2026-01-20 cdca99e982524afae64d400e6351cde9f5abf30c
Merge branch 'master' of http://139.196.74.78:10010/r/jagzwxm/ja_web
3 files modified
1 files added
220 ■■■■ changed files
applications/task-work-order/src/router/views/index.js 4 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue 83 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue 97 ●●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue 36 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/router/views/index.js
@@ -2,6 +2,10 @@
import Store from '@/store/'
export default [
    {
        path: '/',
        redirect: '/test/index',
    },
  {
    path: '/wel',
    component: () =>
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -127,14 +127,12 @@
        </div>
        <template #footer>
            <el-button color="#F2F3F5" @click="requester = !requester">
                当前用户是{{ requester ? '需求方' : '服务方' }}
            </el-button>
            <el-button color="#F2F3F5" @click="requester = !requester">我是{{ requester ? '需求方' : '服务方' }}</el-button>
            <el-button color="#F2F3F5" @click="visible = false">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
            <el-button
                class="save-btn"
                color="#4C34FF"
                v-if="!dialogReadonly"
                v-if="!dialogReadonly && !formData.id"
                :loading="submitting"
                :disabled="submitting"
                @click="handleSubmit"
@@ -142,14 +140,47 @@
                发布
            </el-button>
            <template v-if="requester">
                <el-button color="#F2F3F5">拒单原因</el-button>
                <el-button color="#F2F3F5">重新发布</el-button>
                <template v-if="editStatus.includes(gdStatus)">
                    <el-button
                        color="#4C34FF"
                        class="save-btn"
                        :loading="submitting"
                        :disabled="submitting"
                        @click="handleSubmit"
                    >
                        重新发布
                    </el-button>
                </template>
                <template v-if="gdStatus === '11'">
                    <el-button color="#F2F3F5">拒单原因</el-button>
                </template>
                <template v-else-if="gdStatus === '20'">
                    <el-button color="#F2F3F5" @click="statusChange(3)">申请取消</el-button>
                    <el-button color="#4C34FF" @click="statusChange(4)" class="save-btn">申请修改</el-button>
                </template>
            </template>
            <template v-else>
                <el-button color="#F2F3F5">拒绝接单</el-button>
                <el-button class="save-btn" color="#4C34FF" @click="acceptOrders">接单</el-button>
                <template v-if="gdStatus === '10'">
                    <el-button color="#F2F3F5" @click="rejectOrders">拒绝接单</el-button>
                    <el-button color="#4C34FF" @click="statusChange(1)" class="save-btn">接单</el-button>
                </template>
                <template v-else-if="gdStatus === '22'">
                    <el-button color="#F2F3F5" @click="statusChange(7)">同意修改</el-button>
                    <el-button color="#4C34FF" @click="statusChange(8)" class="save-btn">不同意修改</el-button>
                </template>
                <template v-else-if="gdStatus === '21'">
                    <el-button color="#F2F3F5" @click="statusChange(5)">同意取消</el-button>
                    <el-button color="#4C34FF" @click="statusChange(6)" class="save-btn">不同意取消</el-button>
                </template>
            </template>
        </template>
        <RefuseOrderDialog
            ref="refuseOrderDialogRef"
            v-if="rejectVisible"
            v-model="rejectVisible"
            @success="rejectSuccess"
        />
    </el-dialog>
</template>
@@ -158,14 +189,14 @@
import { ElMessage } from 'element-plus'
import { dateRangeFormat, fieldRules, geomAnalysis, getDictLabel } from '@ztzf/utils'
import { gdWorkOrderDetailApi, gdWorkOrderHandleStatusApi, gdWorkOrderSaveApi } from './orderManageApi'
import { gdManageDeviceListApi, gdManageDevicePageApi } from './gdManageDeviceApi'
import { gdManageDeviceListApi } from './gdManageDeviceApi'
import { cartesian3Convert } from '@/utils/cesium/mapUtil'
import * as turf from '@turf/turf'
import * as Cesium from 'cesium'
import { DrawPolygon } from '@/utils/cesium/DrawPolygon'
import { PublicCesium } from '@/utils/cesium/publicCesium'
import { pxToRem } from '@/utils/rem'
import dayjs from 'dayjs'
import RefuseOrderDialog from '@/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue'
// 初始化表单数据
const initForm = () => ({
@@ -179,6 +210,7 @@
    recommendDeviceIds: '',
})
const rejectVisible = ref(false)
const dictObj = inject('dictObj')
const dateRange = ref([])
const emit = defineEmits(['success'])
@@ -189,14 +221,19 @@
const submitting = ref(false) // 提交中
const dialogReadonly = computed(() => dialogMode.value === 'view')
const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' })
const requester = ref(true)
const deviceList = ref([]) // 设备列表
const selectedDevices = ref([]) // 选中的设备
const deviceTableRef = ref(null) // 设备表格实例
const refuseOrderDialogRef = ref(null)
let viewer
let drawPolygonExample
let pointList = []
const requester = inject('requester')
const editStatus = inject('editStatus')
// 工单状态:0草稿、10发布中_接单中、11发布中_拒绝接单、20响应中_待拆分、21响应中_申请取消、22响应中_申请修改、23响应中_已取消、
// 24响应中_拒绝取消、25响应中_拒绝修改 30执行中_待全部完成、31执行中_协商修改、40完成待验_待全部验收、50验收通过_待结算、60结算完成_已结算
const gdStatus = computed(() => formData.value?.workOrderStatus)
const rules = {
    workOrderName: fieldRules(true, 50),
@@ -204,15 +241,29 @@
    executeStartTime: fieldRules(true),
    deviceLoadDemand: fieldRules(true),
}
function acceptOrders() {
    gdWorkOrderHandleStatusApi({ operationType: 1, workOrderId: formData.value.id }).then(res => {
        ElMessage.success('接单成功')
// 操作类型:1接单,2拒接接单,3申请取消,4申请修改, 5同意取消 6不同意取消 7.同意修改 7.不同意修改
function statusChange(operationType) {
    gdWorkOrderHandleStatusApi({ operationType: operationType, workOrderId: formData.value.id }).then(res => {
        visible.value = false
        emit('success')
    })
}
function rejectSuccess() {
    visible.value = false
    emit('success')
}
function rejectOrders() {
    rejectVisible.value = true
    nextTick(() => {
        refuseOrderDialogRef.value.open({
            mode: 'add',
            row: { workOrderId: formData.value.id },
        })
    })
}
// 获取推荐设备列表
async function getDeviceList() {
    try {
applications/task-work-order/src/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue
New file
@@ -0,0 +1,97 @@
<template>
    <el-dialog
        class="gd-dialog"
        v-model="visible"
        :title="titleEnum[dialogMode]"
        @closed="visible = false"
        destroy-on-close
    >
        <el-form
            class="gd-dialog-form"
            ref="formRef"
            :model="formData"
            :rules="rules"
            :disabled="dialogReadonly"
            label-width="80px"
        >
            <el-row>
                <el-col :span="24">
                    <el-form-item label="拒绝原因" prop="rejectReason">
                        <el-input
                            class="gd-input"
                            v-model="formData.rejectReason"
                            type="textarea"
                            :rows="4"
                            placeholder="请输入"
                            clearable
                        />
                    </el-form-item>
                </el-col>
            </el-row>
        </el-form>
        <template #footer>
            <el-button color="#F2F3F5" @click="visible = false">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
            <el-button
                class="save-btn"
                color="#4C34FF"
                v-if="!dialogReadonly"
                :loading="submitting"
                :disabled="submitting"
                @click="handleSubmit"
            >
                确认
            </el-button>
        </template>
    </el-dialog>
</template>
<script setup>
import { computed, ref } from 'vue'
import { ElMessage } from 'element-plus'
import { fieldRules } from '@ztzf/utils'
import { gdWorkOrderHandleStatusApi } from '@/views/orderView/orderManage/orderManage/orderManageApi'
// 初始化表单数据
const initForm = () => ({
    operationType: 2,
    rejectReason: '',
    workOrderId: null,
})
const emit = defineEmits(['success'])
const formRef = ref(null) // 表单实例
const formData = ref(initForm()) // 表单数据
const visible = defineModel() // 弹框显隐
const dialogMode = ref('add') // 弹框模式
const submitting = ref(false) // 提交中
const dialogReadonly = computed(() => dialogMode.value === 'view')
const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' })
const rules = {
    rejectReason: fieldRules(true, 200),
}
// 提交新增/编辑
async function handleSubmit() {
    const isValid = await formRef.value?.validate().catch(() => false)
    if (!isValid) return
    submitting.value = true
    gdWorkOrderHandleStatusApi(formData.value)
        .then(res => {
            ElMessage.success('拒绝接单成功')
            visible.value = false
            emit('success')
        })
        .finally(() => {
            submitting.value = false
        })
}
// 打开弹框
async function open({ mode = 'add', row } = {}) {
    dialogMode.value = mode
    formData.value = {...formData.value,...row}
}
defineExpose({ open })
</script>
applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue
@@ -68,6 +68,8 @@
        </el-form>
        <div class="gd-table-toolbar">
            <el-button color="#F2F3F5" @click="requester = !requester">我是{{ requester ? '需求方' : '服务方' }}</el-button>
            <el-button :icon="Plus" color="#4C34FF" type="primary" @click="openForm('add')">新增</el-button>
            <el-button :icon="Delete" color="#4C34FF" :disabled="!selectedIds.length" @click="handleDelete()">删除</el-button>
        </div>
@@ -84,7 +86,7 @@
                            {{ getDictLabel(row.workOrderType, dictObj.workOrderType) }}
                        </template>
                    </el-table-column>
                    <el-table-column prop="status" show-overflow-tooltip label="阶段状态" >
                    <el-table-column prop="status" show-overflow-tooltip label="阶段状态">
                        <template v-slot="{ row }">
                            {{ getDictLabel(row.workOrderStatus, dictObj.workOrderStatus).split('_')[0] }}
                        </template>
@@ -105,8 +107,8 @@
                    <el-table-column prop="createTime" show-overflow-tooltip label="工单创建时间" />
                    <el-table-column label="操作" class-name="operation-btns">
                        <template v-slot="{ row }">
                            <el-link @click="openForm('view', row)">查看</el-link>
<!--                            <el-link @click="openForm('edit', row)">编辑</el-link>-->
                            <el-link @click="openFormChange(row)">查看</el-link>
                            <!--                            <el-link @click="openForm('edit', row)">编辑</el-link>-->
                            <el-link @click="handleDelete(row)">删除</el-link>
                        </template>
                    </el-table-column>
@@ -133,7 +135,6 @@
import { onMounted, ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { getDeptTree } from '@/api/system/dept'
import { dateRangeFormat, getDictLabel } from '@ztzf/utils'
import FormDiaLog from './FormDiaLog.vue'
import { gdWorkOrderPageApi, gdWorkOrderRemoveApi } from './orderManageApi'
@@ -149,6 +150,7 @@
    current: 1, // 当前页
    size: 10, // 每页大小
})
const requester = ref(true)
const searchParams = ref(initSearchParams()) // 查询参数
const dateRange = ref([]) // 执行时间范围
const total = ref(0) // 总条数
@@ -163,14 +165,10 @@
    workOrderType: [], // 工单类型
    workOrderStatus: [], // 工单状态
})
const editStatus = ['11', '24', '25']
provide('dictObj', dictObj)
const deptTree = ref([]) // 部门树
const treeProps = {
    label: 'name',
    children: 'children',
}
provide('deptTree', deptTree)
provide('treeProps', treeProps)
provide('requester', requester)
provide('editStatus', editStatus)
// 获取列表
async function getList() {
@@ -207,6 +205,14 @@
    })
}
function openFormChange(row) {
    dialogVisible.value = true
    nextTick(() => {
        const mode = editStatus.includes(row.workOrderStatus) && requester.value ? 'edit' : 'view'
        dialogRef.value?.open({ mode, row })
    })
}
// 删除
async function handleDelete(row) {
    const tips = row ? '该条' : '选中的项'
@@ -235,17 +241,9 @@
    })
}
// 获取部门树
function getDeptTreeFun() {
    getDeptTree().then(res => {
        deptTree.value = res.data.data
    })
}
onMounted(() => {
    getList()
    getDictList()
    getDeptTreeFun()
})
</script>
<style scoped lang="scss"></style>