|
@@ -0,0 +1,151 @@
|
|
|
+<template>
|
|
|
+ <el-tabs v-model="activeName" @tab-change="onTabChange">
|
|
|
+ <el-tab-pane label="工单广场" name="plat">
|
|
|
+ <div class="layout_container" style="height: 100vh">
|
|
|
+ <div class="layout_main layout_el-table">
|
|
|
+ <el-table :data="allPlatOrders">
|
|
|
+ <el-table-column prop="id" label="工单编号"></el-table-column>
|
|
|
+ <el-table-column label="需求类型">
|
|
|
+ <template #default="{row}">
|
|
|
+ {{ filterType(row.type) }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="content" label="工单说明"></el-table-column>
|
|
|
+ <el-table-column label="主要用户">
|
|
|
+ <template #default="{row}">
|
|
|
+ {{ filterBelong(row.belong) }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="deptName" label="提交科室"></el-table-column>
|
|
|
+ <el-table-column prop="creatorName" label="提交人"></el-table-column>
|
|
|
+ <el-table-column prop="createtime" label="创建时间"></el-table-column>
|
|
|
+ <el-table-column label="状态">
|
|
|
+ <template #default="{row}">
|
|
|
+ {{ filterState(row.state) }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="我已接取">
|
|
|
+ <template #default="{row}">
|
|
|
+ {{row.meTaken === 0 ? '否' : '是'}}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column >
|
|
|
+ <template #header>
|
|
|
+ 操作
|
|
|
+ <el-button
|
|
|
+ circle
|
|
|
+ icon="refresh"
|
|
|
+ @click="refreshPlatOrder"
|
|
|
+ ></el-button>
|
|
|
+ </template>
|
|
|
+ <template #default="{row}">
|
|
|
+ <el-button
|
|
|
+ size="default"
|
|
|
+ type="primary"
|
|
|
+ plain
|
|
|
+ @click="takeOrder(row)"
|
|
|
+ :disabled="row.meTaken > 0"
|
|
|
+ >接取工单</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="已接工单" name="mine">
|
|
|
+ <div class="layout_container" style="height: 100vh">
|
|
|
+ <div class="layout_main layout_el-table">
|
|
|
+ <el-table :data="myTakenOrders">
|
|
|
+ <el-table-column prop="id" label="任务编号"></el-table-column>
|
|
|
+ <el-table-column prop="parentId" label="工单编号"></el-table-column>
|
|
|
+ <el-table-column label="工单进度">
|
|
|
+ <template #default="{row}">
|
|
|
+ <el-select
|
|
|
+ v-model="row.progress"
|
|
|
+ :disabled="row.progress === 'PROCESS_FINISHED' "
|
|
|
+ style="width: 120px"
|
|
|
+ @change="handleProgressChange(row)"
|
|
|
+ >
|
|
|
+ <el-option value="NOT_STARTED" label="未开始"/>
|
|
|
+ <el-option value="IN_PROCESS" label="进行中"/>
|
|
|
+ <el-option value="PROCESS_FINISHED" label="已完成"/>
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="content" label="工作内容"></el-table-column>
|
|
|
+ <el-table-column >
|
|
|
+ <template #header>
|
|
|
+ 接单时间
|
|
|
+ <el-button
|
|
|
+ circle
|
|
|
+ icon="refresh"
|
|
|
+ @click="refreshMyTakenOrders"
|
|
|
+ ></el-button>
|
|
|
+ </template>
|
|
|
+ <template #default="{row}">
|
|
|
+ {{row.createtime}}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import {filterBelong, filterState, filterType} from "@/views/utilities/work-order/work-order-filter.js";
|
|
|
+import {getAllOrders, takeWorkOrder, getMyTakenOrders, updateOrderProgress} from "@/api/utilities/work-order.js";
|
|
|
+import {xcMessage} from "@/utils/xiaochan-element-plus";
|
|
|
+import {ElMessageBox} from "element-plus";
|
|
|
+
|
|
|
+const activeName = ref("plat");
|
|
|
+const allPlatOrders = ref([])
|
|
|
+const myTakenOrders = ref([])
|
|
|
+
|
|
|
+function refreshPlatOrder() {
|
|
|
+ getAllOrders().then(res => {
|
|
|
+ allPlatOrders.value = res;
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function takeOrder(row) {
|
|
|
+ ElMessageBox.prompt('请输入工作内容:', '接取工单', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ inputValue: null,
|
|
|
+ inputPattern: /\S/,
|
|
|
+ inputErrorMessage: '工作内容不能为空',
|
|
|
+ }).then(({value}) => {
|
|
|
+ row.expContent = value
|
|
|
+ takeWorkOrder(row).then(res => {
|
|
|
+ row.meTaken = 1
|
|
|
+ xcMessage.success(res)
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function refreshMyTakenOrders() {
|
|
|
+ getMyTakenOrders().then(res => {
|
|
|
+ myTakenOrders.value = res
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function handleProgressChange(row) {
|
|
|
+ updateOrderProgress(row).then(res => {
|
|
|
+ xcMessage.success(res)
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function onTabChange(val) {
|
|
|
+ if (val === "plat") {
|
|
|
+ refreshPlatOrder()
|
|
|
+ } else {
|
|
|
+ refreshMyTakenOrders()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ refreshPlatOrder()
|
|
|
+})
|
|
|
+</script>
|