<template>
|
<div class="Taskmanagement">
|
<div class="content">
|
<div class="serch">
|
<div class="time_box">
|
<div class="time">创建日期</div>
|
<el-date-picker
|
v-model="queryForm.selectTime"
|
prefix-icon="none"
|
clear-icon="none"
|
style="
|
font-size: 0.75rem !important;
|
border: 0.06rem solid rgba(222, 222, 222, 1);
|
border-radius: 0 0.25rem 0.25rem 0;
|
box-shadow: none;
|
width: 19rem;
|
height: 2rem;
|
border-left: 0;
|
"
|
format="YYYY-MM-DD HH:mm:ss"
|
type="datetimerange"
|
range-separator="~"
|
start-placeholder="起始日期"
|
end-placeholder="截止日期"
|
size="small"
|
/>
|
</div>
|
<div class="serch_box">
|
<div class="serchb">
|
<el-select
|
v-model="queryForm.selectType"
|
placeholder="请选择"
|
size="small"
|
style="width: 100%; height: 100%; font-size: 0.15rem"
|
>
|
<el-option
|
v-for="item in selectoptions"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</div>
|
<input
|
v-model="queryForm.selectInput"
|
placeholder="请输入关键词搜索"
|
style="border-left: 0.06rem solid #e2e2e2"
|
/>
|
</div>
|
<el-button
|
type="primary"
|
size="small"
|
style="margin-left: 0.98rem; height: 2rem"
|
@click="handleQuery"
|
>查询</el-button
|
>
|
<el-button size="small" @click="resetQuery" style="height: 2rem"
|
>重置</el-button
|
>
|
</div>
|
<div class="btns">
|
<div style="display: flex; align-items: center">
|
<el-button
|
type="primary"
|
size="small"
|
@click="addData"
|
style="
|
width: 5.5rem;
|
height: 2rem;
|
font-size: 0.88rem;
|
display: flex;
|
align-items: center;
|
"
|
><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon
|
>新建</el-button
|
>
|
<el-button
|
type="primary"
|
size="small"
|
@click="table = true"
|
style="
|
width: 6rem;
|
height: 2rem;
|
font-size: 0.88rem;
|
display: flex;
|
align-items: center;
|
"
|
><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon
|
>手动获取</el-button
|
>
|
<el-button
|
@click="importDialogVisible = true"
|
size="small"
|
style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
|
>批量导入</el-button
|
>
|
<el-button
|
size="small"
|
style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
|
@click="printExcel"
|
>批量导出</el-button
|
>
|
<el-button
|
@click="deleteAll"
|
size="small"
|
style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
|
>批量删除</el-button
|
>
|
</div>
|
<el-button
|
size="small"
|
style="
|
width: 6.56rem;
|
height: 2rem;
|
font-size: 0.88rem;
|
background: #2200de;
|
color: #fff;
|
"
|
@click="router.push('/Tasktemplates')"
|
>任务模板</el-button
|
>
|
</div>
|
<div style="margin-top: 1rem; height: 100%">
|
<el-table
|
:data="tableData"
|
height="500"
|
style="width: 100%"
|
:header-cell-style="{
|
background: 'rgba(250,250,250,1)',
|
color: '#101010',
|
fontSize: '0.88rem',
|
height: '3rem',
|
border: 'none',
|
}"
|
:row-style="{
|
color: '#101010',
|
fontSize: '0.88rem',
|
height: '3rem',
|
}"
|
@select="SelectionChange"
|
>
|
<el-table-column type="selection" align="center" min-width="1%" />
|
<el-table-column
|
prop="trainKind"
|
label="车型"
|
align="center"
|
min-width="2%"
|
/>
|
<el-table-column
|
prop="trainNum"
|
label="车组"
|
align="center"
|
min-width="2%"
|
/>
|
<el-table-column
|
prop="track"
|
label="股道"
|
align="center"
|
min-width="2%"
|
/>
|
<el-table-column
|
prop="coachNum"
|
label="车厢号位置"
|
align="center"
|
min-width="2%"
|
/>
|
<el-table-column
|
prop="bogie"
|
label="转向架位置"
|
align="center"
|
min-width="2%"
|
/>
|
<el-table-column
|
prop="processDept"
|
label="检修班组"
|
align="center"
|
min-width="3%"
|
/>
|
<el-table-column
|
prop="taskstatus"
|
label="任务状态"
|
align="center"
|
min-width="3%"
|
>
|
<template #default="scope">
|
<span style="color: #ff5400" v-if="scope.row.taskstatus == 0"
|
>待派工</span
|
>
|
<span style="color: #c4ccd5" v-if="scope.row.taskstatus == 1"
|
>已派工</span
|
>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="address"
|
label="检修日期"
|
align="center"
|
min-width="3%"
|
/>
|
<el-table-column
|
prop="createTime"
|
label="创建日期"
|
align="center"
|
min-width="3%"
|
/>
|
<el-table-column label="操作" align="center" min-width="3%">
|
<template #default="scope">
|
<el-button
|
:disabled="scope.row.taskstatus == 1"
|
size="small"
|
type="text"
|
@click="Send(scope.row)"
|
>派任务</el-button
|
>
|
<el-button size="small" type="text" @click="Editdata(scope.row)"
|
>编辑</el-button
|
>
|
</template>
|
</el-table-column>
|
</el-table>
|
</div>
|
<div
|
style="
|
display: flex;
|
justify-content: right;
|
align-self: flex-end;
|
margin-bottom: 1.19rem;
|
margin-right: 1.25rem;
|
"
|
>
|
<el-pagination
|
size="small"
|
background
|
layout="prev, pager, next"
|
:current-page="pageQuery.page"
|
:page-size="pageQuery.rows"
|
:total="pageTotal"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
/>
|
</div>
|
</div>
|
<!-- 新建/编辑任务信息弹出框 -->
|
<el-dialog
|
v-model="dialogVisible1"
|
title=""
|
width="60%"
|
@close="resetForm(ruleFormRef)"
|
style="margin-top: 15.625rem"
|
>
|
<template #title>
|
<div
|
style="
|
height: 3.63rem;
|
display: flex;
|
border-bottom: 1px solid #e6e6e6;
|
"
|
>
|
<span
|
style="color: rgb(16, 16, 16); font-size: 1rem; font-weight: bold"
|
>任务信息</span
|
>
|
</div>
|
</template>
|
<el-form
|
:model="form"
|
label-width="auto"
|
label-position="top"
|
:rules="rules"
|
ref="ruleFormRef"
|
:hide-required-asterisk="true"
|
>
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item prop="trainKind">
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>车型</span
|
>
|
</div>
|
</template>
|
<el-input
|
size="small"
|
v-model="form.trainKind"
|
placeholder="请输入"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item prop="trainNum">
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>车组</span
|
>
|
</div>
|
</template>
|
<el-input
|
size="small"
|
v-model="form.trainNum"
|
placeholder="请输入"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item prop="track">
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>股道</span
|
>
|
</div>
|
</template>
|
<el-input
|
size="small"
|
v-model="form.track"
|
placeholder="请输入"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item prop="coachNum">
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>车厢号位置</span
|
>
|
</div>
|
</template>
|
<el-input
|
size="small"
|
v-model="form.coachNum"
|
placeholder="请输入"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item prop="bogie">
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>转向架位置</span
|
>
|
</div>
|
</template>
|
<el-input
|
size="small"
|
v-model="form.bogie"
|
placeholder="请输入"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item prop="processDept">
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>检修班组</span
|
>
|
</div>
|
</template>
|
<el-input
|
size="small"
|
v-model="form.processDept"
|
placeholder="请输入"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
<template #footer>
|
<div class="dialog-footer" style="text-align: center">
|
<el-button
|
size="small"
|
type="primary"
|
@click="AddNJinfomclick(ruleFormRef)"
|
style="height: 2rem; font-size: 0.88rem"
|
>
|
确认
|
</el-button>
|
<el-button
|
size="small"
|
@click="dialogVisible1 = false"
|
style="height: 2rem; font-size: 0.88rem"
|
>取消</el-button
|
>
|
</div>
|
</template>
|
</el-dialog>
|
|
<!-- 派任务弹出框 -->
|
<el-dialog
|
v-model="SenddialogVisible"
|
title=""
|
width="60%"
|
@close="resetForm(sendformRef)"
|
top="2%"
|
>
|
<template #title>
|
<div
|
style="
|
height: 3.63rem;
|
display: flex;
|
border-bottom: 1px solid #e6e6e6;
|
"
|
>
|
<span
|
style="color: rgb(16, 16, 16); font-size: 1rem; font-weight: bold"
|
>派任务</span
|
>
|
</div>
|
</template>
|
<el-form
|
:model="sendform"
|
label-width="auto"
|
label-position="top"
|
:rules="rules"
|
ref="sendformRef"
|
>
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span style="font-size: 0.88rem; color: black; font-weight: bold"
|
>任务模板</span
|
>
|
</div>
|
</template>
|
<el-select
|
v-model="sendform.templateID"
|
placeholder="请选择"
|
size="small"
|
@change="getTemplate"
|
>
|
<el-option
|
v-for="item in temopitions"
|
:key="item.templateID"
|
:label="item.templateName"
|
:value="item.templateID"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>任务名称</span
|
>
|
</div>
|
</template>
|
<el-input
|
size="small"
|
v-model="sendform.templateName"
|
placeholder="请输入"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>技术员</span
|
>
|
</div>
|
</template>
|
<el-input
|
size="small"
|
v-model="sendform.jiShuYuan"
|
placeholder="请输入"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>检修工长</span
|
>
|
</div>
|
</template>
|
<el-input
|
size="small"
|
v-model="sendform.gongZhang"
|
placeholder="请输入"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<span
|
style="
|
color: rgb(16, 16, 16);
|
font-size: 1rem;
|
font-weight: bold;
|
margin-bottom: 1.25rem;
|
"
|
>质检组</span
|
>
|
</el-row>
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>电气质检</span
|
>
|
</div>
|
</template>
|
<el-select
|
v-model="sendform.zhiJianYuan_Dq"
|
placeholder="请选择"
|
size="small"
|
>
|
<el-option
|
v-for="item in UerTypeoptions.quality"
|
:key="item.userTrueName"
|
:label="item.userTrueName"
|
:value="item.userTrueName"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>机械质检</span
|
>
|
</div>
|
</template>
|
<el-select
|
v-model="sendform.zhiJianYuan_Lc"
|
placeholder="请选择"
|
size="small"
|
>
|
<el-option
|
v-for="item in UerTypeoptions.quality"
|
:key="item.userTrueName"
|
:label="item.userTrueName"
|
:value="item.userTrueName"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>地沟质检</span
|
>
|
</div>
|
</template>
|
<el-select
|
v-model="sendform.zhiJianYuan_Dg"
|
placeholder="请选择"
|
size="small"
|
>
|
<el-option
|
v-for="item in UerTypeoptions.quality"
|
:key="item.userTrueName"
|
:label="item.userTrueName"
|
:value="item.userTrueName"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<span
|
style="
|
color: rgb(16, 16, 16);
|
font-size: 1rem;
|
font-weight: bold;
|
margin-bottom: 1.25rem;
|
"
|
>电气组</span
|
>
|
</el-row>
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>电气力矩作业员</span
|
>
|
</div>
|
</template>
|
<el-select
|
v-model="sendform.liJu_Dq"
|
placeholder="请选择"
|
size="small"
|
>
|
<el-option
|
v-for="item in UerTypeoptions.electric"
|
:key="item.userTrueName"
|
:label="item.userTrueName"
|
:value="item.userTrueName"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>电气辅助员</span
|
>
|
</div>
|
</template>
|
<el-select
|
v-model="sendform.fuZhu_Dq"
|
placeholder="请选择"
|
size="small"
|
>
|
<el-option
|
v-for="item in UerTypeoptions.electric"
|
:key="item.userTrueName"
|
:label="item.userTrueName"
|
:value="item.userTrueName"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<span
|
style="
|
color: rgb(16, 16, 16);
|
font-size: 1rem;
|
font-weight: bold;
|
margin-bottom: 1.25rem;
|
"
|
>机械组</span
|
>
|
</el-row>
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>机械力矩作业员</span
|
>
|
</div>
|
</template>
|
<el-select
|
v-model="sendform.liJu_Lc"
|
placeholder="请选择"
|
size="small"
|
>
|
<el-option
|
v-for="item in UerTypeoptions.mechanical"
|
:key="item.userTrueName"
|
:label="item.userTrueName"
|
:value="item.userTrueName"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>机械辅助员</span
|
>
|
</div>
|
</template>
|
<el-select
|
v-model="sendform.fuZhu_Lc"
|
placeholder="请选择"
|
size="small"
|
>
|
<el-option
|
v-for="item in UerTypeoptions.mechanical"
|
:key="item.userTrueName"
|
:label="item.userTrueName"
|
:value="item.userTrueName"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<span
|
style="
|
color: rgb(16, 16, 16);
|
font-size: 1rem;
|
font-weight: bold;
|
margin-bottom: 1.25rem;
|
"
|
>地沟组</span
|
>
|
</el-row>
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>地沟力矩作业员</span
|
>
|
</div>
|
</template>
|
<el-select
|
v-model="sendform.liJu_Dg"
|
placeholder="请选择"
|
size="small"
|
>
|
<el-option
|
v-for="item in UerTypeoptions.trench"
|
:key="item.userTrueName"
|
:label="item.userTrueName"
|
:value="item.userTrueName"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item>
|
<template #label>
|
<div style="display: flex; align-items: flex-end">
|
<span style="color: red; margin-right: 0.2rem">*</span>
|
<span
|
style="font-size: 0.88rem; color: black; font-weight: bold"
|
>地沟辅助员</span
|
>
|
</div>
|
</template>
|
<el-select
|
v-model="sendform.fuZhu_Dg"
|
placeholder="请选择"
|
size="small"
|
>
|
<el-option
|
v-for="item in UerTypeoptions.trench"
|
:key="item.userTrueName"
|
:label="item.userTrueName"
|
:value="item.userTrueName"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
<template #footer>
|
<div class="dialog-footer" style="text-align: center">
|
<el-button
|
size="small"
|
@click="SenddialogVisible = false"
|
style="height: 2rem; font-size: 0.88rem"
|
>取消</el-button
|
>
|
<el-button
|
size="small"
|
type="primary"
|
@click="savesublit(sendformRef)"
|
style="height: 2rem; font-size: 0.88rem"
|
>
|
保存模板并提交
|
</el-button>
|
<el-button
|
size="small"
|
type="primary"
|
@click="sublit(sendformRef)"
|
style="height: 2rem; font-size: 0.88rem"
|
>
|
提交
|
</el-button>
|
</div>
|
</template>
|
</el-dialog>
|
|
<!-- 批量导入弹出框 -->
|
<!-- <el-dialog
|
v-model="dialogVisible"
|
title=""
|
width="60%"
|
@close="handleClose"
|
style="margin-top: 15.625rem"
|
>
|
<template #title>
|
<div
|
style="
|
height: 3.63rem;
|
display: flex;
|
border-bottom: 1px solid #e6e6e6;
|
"
|
>
|
<span
|
style="color: rgb(16, 16, 16); font-size: 1rem; font-weight: bold"
|
>批量导入</span
|
>
|
</div>
|
</template>
|
<el-table :data="gridtableData" style="width: 100%">
|
<el-table-column prop="date" label="车型" width="180" />
|
<el-table-column prop="name" label="车组" width="180" />
|
<el-table-column prop="address" label="股道" />
|
<el-table-column prop="address" label="车厢号位置" />
|
<el-table-column prop="address" label="转向架位置" />
|
<el-table-column prop="address" label="检修班组" />
|
<el-table-column prop="address" label="检修日期" />
|
</el-table>
|
<template #footer>
|
<div class="dialog-footer" style="text-align: center">
|
<el-button
|
size="small"
|
type="primary"
|
@click="dialogVisible = false"
|
style="height: 2rem; font-size: 0.88rem"
|
>
|
确认
|
</el-button>
|
<el-button
|
size="small"
|
@click="dialogVisible = false"
|
style="height: 2rem; font-size: 0.88rem"
|
>取消</el-button
|
>
|
</div>
|
</template>
|
</el-dialog> -->
|
<!-- 框架批量导入弹出框 -->
|
<el-dialog v-model="importDialogVisible">
|
<UploadExcel
|
@importExcelAfter="importExcelAfter"
|
url="/api/NjTask/Import"
|
:template="{
|
url: '/api/NjTask/DownLoadTemplate',
|
fileName: '任务模板',
|
}"
|
/>
|
</el-dialog>
|
</div>
|
</template>
|
<script setup>
|
import { ref, reactive, onMounted, toRef } from "vue";
|
import { useRouter } from "vue-router";
|
import {
|
GetPageData,
|
AddNJinfom,
|
Submit,
|
Submtandsave,
|
GetTemplate,
|
GetTemplateList,
|
Delete,
|
ExportApi,
|
Update,
|
} from "@/api/newapi/NjTask";
|
import { GetUerType } from "@/api/user";
|
import { formatTime } from "@/utils/index.js";
|
import { ElMessage } from "element-plus";
|
import UploadExcel from "@/components/basic/UploadExcel.vue";
|
//使用路由
|
const router = useRouter();
|
// 初始化数据
|
const obj = {
|
selectName: "",
|
selectTime: [], // 时间范围
|
selectType: "", //选择的类型
|
selectInput: "", //输入的数据
|
};
|
//搜索传的数据
|
const queryForm = toRef({ ...obj });
|
//页面的数量
|
const pageTotal = ref(0);
|
//表单的数据
|
const tableData = ref([]);
|
const UerTypeoptions = ref({
|
quality: [], //质检
|
electric: [], //电气
|
mechanical: [], //机械
|
trench: [], //地沟
|
});
|
|
//表单验证规则
|
const rules = reactive({
|
bogie: [{ required: true, message: "请输入转向架", trigger: "blur" }],
|
coachNum: [{ required: true, message: "请输入车厢号", trigger: "blur" }],
|
processDept: [{ required: true, message: "请输入检修班组", trigger: "blur" }],
|
track: [{ required: true, message: "请输入股道", trigger: "blur" }],
|
trainKind: [{ required: true, message: "请输入车型", trigger: "blur" }],
|
trainNum: [{ required: true, message: "请输入车组号", trigger: "blur" }],
|
});
|
//新建编辑表单ref值
|
const ruleFormRef = ref();
|
//添加/编辑的表单数据
|
const form = ref({
|
bogie: "", //转向架
|
coachNum: "", //车厢
|
processDept: "", //检修班组
|
track: "", //股道
|
trainKind: "", //车型
|
trainNum: "", //车组号
|
createDate: formatTime(new Date()), //创建时间
|
creater: JSON.parse(localStorage.getItem("user")).userName, //创建人
|
});
|
//删除
|
const dialogVisible1 = ref(false);
|
//派任务
|
const SenddialogVisible = ref(false);
|
//派任务表单ref值
|
const sendformRef = ref();
|
//批量导入
|
const dialogVisible = ref(false);
|
//批量导入数据
|
const gridtableData = ref([]);
|
//模板列表
|
const temopitions = ref([]);
|
|
const props = { multiple: true };
|
const table = ref(false);
|
const type = ref("新建");
|
//搜索选择的字段
|
const selectoptions = reactive([
|
{ label: "车型", value: "trainkind" },
|
{ label: "车组", value: "trainNum" },
|
{ label: "股道", value: "track" },
|
{ label: "检修班组", value: "processkept" },
|
]);
|
//提交的数据变量
|
const sendform = ref({});
|
//批量导入
|
const importDialogVisible = ref(false);
|
//监听文件上传成功的回调
|
const importExcelAfter = () => {
|
importDialogVisible.value = false;
|
initData();
|
};
|
|
//新建任务信息
|
const AddNJinfomclick = async (formEl) => {
|
if (!formEl) return;
|
await formEl.validate((valid, fields) => {
|
if (valid) {
|
if (type.value == "新建") {
|
AddNJinfom(form.value).then((res) => {
|
if (res.code == 0) {
|
ElMessage({
|
message: "创建成功",
|
type: "success",
|
});
|
dialogVisible1.value = false;
|
initData();
|
}
|
});
|
} else {
|
//编辑
|
Update(form.value).then((res) => {
|
if (res.code == 0) {
|
ElMessage({
|
message: "修改成功",
|
type: "success",
|
});
|
dialogVisible1.value = false;
|
initData();
|
}
|
});
|
}
|
} else {
|
console.log("error submit!", fields);
|
}
|
});
|
};
|
//新建任务信息
|
const addData = () => {
|
type.value = "新建";
|
dialogVisible1.value = true;
|
};
|
//编辑任务信息
|
const Editdata = (row) => {
|
let obj = Object.assign({}, row);
|
type.value = "编辑";
|
dialogVisible1.value = true;
|
form.value = obj;
|
};
|
|
//提交
|
const sublit = async (formEl) => {
|
let data = {
|
njtakeid: sendform.value.nJtaskID,
|
takename: sendform.value.takeName,
|
jishuyuan: sendform.value.jiShuYuan,
|
zhijianyuan_lc: sendform.value.zhiJianYuan_Lc,
|
zhijianyuan_dg: sendform.value.zhiJianYuan_Dg,
|
zhijianyuan_dq: sendform.value.zhiJianYuan_Dq,
|
gongzhang: sendform.value.gongZhang,
|
liju_lc: sendform.value.liJu_Lc,
|
fuzhu_lc: sendform.value.fuZhu_Lc,
|
liju_dg: sendform.value.liJu_Dg,
|
fuzhu_dg: sendform.value.fuZhu_Dg,
|
liju_dq: sendform.value.liJu_Dq,
|
fuzhu_dq: sendform.value.fuZhu_Dq,
|
};
|
if (!formEl) return;
|
await formEl.validate((valid, fields) => {
|
if (valid) {
|
Submit(data).then((res) => {
|
ElMessage({
|
message: res.message,
|
type: "success",
|
});
|
SenddialogVisible.value = false;
|
initData();
|
});
|
} else {
|
console.log("error submit!", fields);
|
}
|
});
|
};
|
//提交保存
|
const savesublit = async (formEl) => {
|
let data = {
|
tpid: sendform.value.templateID,
|
njtakeid: sendform.value.nJtaskID,
|
takename: sendform.value.takeName,
|
jishuyuan: sendform.value.jiShuYuan,
|
zhijianyuan_lc: sendform.value.zhiJianYuan_Lc,
|
zhijianyuan_dg: sendform.value.zhiJianYuan_Dg,
|
zhijianyuan_dq: sendform.value.zhiJianYuan_Dq,
|
gongzhang: sendform.value.gongZhang,
|
liju_lc: sendform.value.liJu_Lc,
|
fuzhu_lc: sendform.value.fuZhu_Lc,
|
liju_dg: sendform.value.liJu_Dg,
|
fuzhu_dg: sendform.value.fuZhu_Dg,
|
liju_dq: sendform.value.liJu_Dq,
|
fuzhu_dq: sendform.value.fuZhu_Dq,
|
};
|
if (!formEl) return;
|
await formEl.validate((valid, fields) => {
|
if (valid) {
|
Submtandsave(data).then((res) => {
|
ElMessage({
|
message: res.message,
|
type: "success",
|
});
|
initData();
|
SenddialogVisible.value = false;
|
});
|
} else {
|
console.log("error submit!", fields);
|
}
|
});
|
};
|
|
//数据导出的方法
|
const printExcel = () => {
|
// 查询条件
|
const startTime = formatTime(queryForm.value.selectTime[0]);
|
const endTime = formatTime(queryForm.value.selectTime[1]);
|
const filter = [
|
{
|
name: queryForm.value.selectType,
|
value: queryForm.value.selectInput,
|
displayType: "String",
|
},
|
|
{ name: "createTime", value: startTime, displayType: "ThanOrEqual" },
|
{ name: "createTime", value: endTime, displayType: "LessOrEqual" },
|
];
|
ExportApi({
|
...pageQuery.value,
|
filter,
|
});
|
};
|
// quality: [], //质检
|
// electric: [], //电气
|
// mechanical: [], //机械
|
// trench: [], //地沟
|
//派任务方法
|
const Send = (val) => {
|
SenddialogVisible.value = true;
|
sendform.value = { ...val };
|
getTemplateList();
|
GetUerType().then((res) => {
|
UerTypeoptions.value.quality = res.data.filter((item) => {
|
return item.user_Id != 1 && item.roleName.substring(2, 4) == "质检";
|
});
|
UerTypeoptions.value.electric = res.data.filter(
|
(item) =>
|
item.user_Id != 1 &&
|
item.roleName.substring(2, 4) != "质检" &&
|
item.roleName.substring(0, 2) == "电气"
|
);
|
UerTypeoptions.value.mechanical = res.data.filter(
|
(item) =>
|
item.user_Id != 1 &&
|
item.roleName.substring(2, 4) != "质检" &&
|
item.roleName.substring(0, 2) == "机械"
|
);
|
UerTypeoptions.value.trench = res.data.filter(
|
(item) =>
|
item.user_Id != 1 &&
|
item.roleName.substring(2, 4) != "质检" &&
|
item.roleName.substring(0, 2) == "地沟"
|
);
|
});
|
console.log(UerTypeoptions.value);
|
};
|
//获取所有模板
|
const getTemplateList = () => {
|
GetTemplateList({
|
page: 1,
|
rows: 1000,
|
total: 1000,
|
tableName: "string",
|
sort: "string",
|
order: "string",
|
wheres: "string",
|
export: true,
|
value: "string",
|
filter: [
|
{
|
name: "string",
|
value: "string",
|
displayType: "string",
|
},
|
],
|
}).then((res) => {
|
temopitions.value = res.rows;
|
});
|
};
|
//获取模板内容
|
const getTemplate = () => {
|
GetTemplate(sendform.value.templateID).then((res) => {
|
sendform.value = { ...sendform.value, ...res.data[0] };
|
});
|
};
|
//批量删除
|
const ids = ref([]); //批量删除的id
|
const SelectionChange = (val) => {
|
//获取批量删除的id
|
ids.value = [];
|
ids.value = val.map((item) => item.id);
|
};
|
//删除选中的数据
|
const deleteAll = () => {
|
if (ids.value.length == 0) {
|
ElMessage({ message: "请选择要删除的数据", type: "error" });
|
return;
|
}
|
Delete(ids.value).then((res) => {
|
ElMessage({ message: "删除成功", type: "success" });
|
initData();
|
});
|
};
|
|
//分页请求参数
|
const pageQuery = ref({
|
page: 1, //当前页面
|
rows: 10, //每页显示条数
|
order: "desc", //排序方式
|
sort: "", //排序字段
|
wheres: "", //条件查询
|
});
|
|
//分页页面大小改变
|
const handleSizeChange = (val) => {
|
pageQuery.value.rows = val;
|
initData();
|
};
|
|
//分页页面改变
|
const handleCurrentChange = (val) => {
|
pageQuery.value.page = val;
|
initData();
|
};
|
|
//页面初始化方法
|
const initData = () => {
|
// 查询条件
|
const startTime = formatTime(queryForm.value.selectTime[0]);
|
const endTime = formatTime(queryForm.value.selectTime[1]);
|
const filter = [
|
{
|
name: queryForm.value.selectType,
|
value: queryForm.value.selectInput,
|
displayType: "like",
|
},
|
{ name: "createtime", value: startTime, displayType: "ThanOrEqual" },
|
{ name: "createtime", value: endTime, displayType: "LessOrEqual" },
|
];
|
GetPageData({
|
...pageQuery.value,
|
filter,
|
}).then((res) => {
|
tableData.value = res.rows;
|
pageTotal.value = res.total;
|
});
|
};
|
|
//数据检索事件
|
const handleQuery = () => {
|
pageQuery.value.page = 1;
|
initData();
|
};
|
//重置表单
|
const resetForm = (formEl) => {
|
if (!formEl) return;
|
formEl.resetFields();
|
form.value = {
|
bogie: "", //转向架
|
coachNum: "", //车厢
|
processDept: "", //检修班组
|
track: "", //股道
|
trainKind: "", //车型
|
trainNum: "", //车组号
|
creater: "",
|
createDate: formatTime(new Date()), //创建时间
|
};
|
};
|
//重置方法
|
const resetQuery = () => {
|
queryForm.value = Object.assign({}, obj);
|
pageQuery.value.page = 1;
|
initData();
|
};
|
|
onMounted(() => {
|
initData();
|
GetUerType().then((res) => {
|
UerTypeoptions.value.quality = res.data.filter(
|
(item) => item.roleId != 1 && item.roleName.substring(2, 2) == "质检"
|
);
|
UerTypeoptions.value.electric = res.data.filter(
|
(item) =>
|
item.roleId != 1 &&
|
item.roleName.substring(2, 2) != "质检" &&
|
item.roleName.substring(0, 2) == "电气"
|
);
|
UerTypeoptions.value.mechanical = res.data.filter(
|
(item) =>
|
item.roleId != 1 &&
|
item.roleName.substring(2, 2) != "质检" &&
|
item.roleName.substring(0, 2) == "机械"
|
);
|
UerTypeoptions.value.trench = res.data.filter(
|
(item) =>
|
item.roleId != 1 &&
|
item.roleName.substring(2, 2) != "质检" &&
|
item.roleName.substring(0, 2) == "地沟"
|
);
|
});
|
});
|
</script>
|
<style lang="scss" scoped>
|
.Taskmanagement {
|
display: flex;
|
background-color: #fff;
|
|
.content {
|
width: 100%;
|
display: flex;
|
flex-direction: column;
|
|
.serch {
|
display: flex;
|
margin-top: 1.31rem;
|
align-items: center;
|
|
.time_box {
|
display: flex;
|
align-items: center;
|
text-align: center;
|
margin-left: 0.98rem;
|
|
.time {
|
box-sizing: border-box;
|
width: 6.88rem;
|
height: 2rem;
|
text-align: center;
|
border: 0.06rem solid rgba(222, 222, 222, 1);
|
border-radius: 0.25rem 0 0 0.25rem;
|
font-size: 0.75rem;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
}
|
|
.serch_box {
|
display: flex;
|
align-items: center;
|
text-align: center;
|
margin-left: 0.98rem;
|
border-radius: 0.38rem;
|
|
.serchb {
|
box-sizing: border-box;
|
width: 6.88rem;
|
height: 2rem;
|
text-align: center;
|
|
font-size: 0.75rem;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
|
input {
|
box-sizing: border-box;
|
outline: none;
|
width: 19rem;
|
height: 2rem;
|
border: 0.06rem solid rgba(222, 222, 222, 1);
|
border-radius: 0 0.25rem 0.25rem 0;
|
padding-left: 0.3125rem;
|
font-size: 1rem;
|
}
|
}
|
}
|
|
.btns {
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
margin-top: 1.31rem;
|
margin-left: 1.13rem;
|
padding-right: 2rem;
|
box-sizing: border-box;
|
}
|
}
|
}
|
</style>
|
<style>
|
.confirmButtonClass {
|
margin-right: 10px;
|
}
|
|
.el-message-box .el-message-box__btns {
|
flex-direction: row-reverse !important;
|
justify-content: normal !important;
|
}
|
</style>
|