factory_web/src/views/opm/usecl.vue

740 lines
21 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<el-container>
<el-header>
<el-steps
:active="active"
style="width: 100%"
:align-center="true"
finish-status="success"
>
<el-step
v-for="(item, index) of stepTitle"
:key="index"
:title="item"
style="50%"
@click="handleStep(index)"
>
</el-step>
</el-steps>
</el-header>
<!--基本信息!-->
<el-main class="nopadding" v-show="active === 0">
<el-form
v-show="active === 0"
ref="dialogForm"
:model="form"
:rules="rules"
label-width="110px"
style="margin: 40px 40px 0px 40px"
>
<el-row>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="关联作业">
<el-input
v-model="form.name"
type="text"
:disabled="true"
></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="作业许可种类">
<el-input
v-model="pagtitle"
type="text"
:disabled="true"
></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="作业开始时间" prop="start_time">
<el-date-picker
v-model="form.start_time"
type="datetime"
placeholder="选择开始时间"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="作业结束时间" prop="end_time">
<el-date-picker
v-model="form.end_time"
type="datetime"
placeholder="选择开始时间"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="作业部门" prop="dept_do">
<el-cascader
placeholder="选择作业部门"
getCheckedNodes="true"
v-model="form.dept_do"
:options="deptoptions"
:props="{
expandTrigger: 'hover', // 次级菜单的展开方式
label: 'label', //
value: 'value', //
emitPath: false, // 在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组,若设置 false则只返回该节点的值
}"
clearable
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="作业监护人" prop="monitor">
<el-select v-model="form.monitor" placeholder="选择作业监护人">
<el-option
v-for="item in useroptions"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="供电制式" >
<el-select v-model="form.level" placeholder="选择供电制式">
<el-option
v-for="item in leveloptions"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="计划用电天数">
<el-input-number v-model="form.power_days" type="text" clearable></el-input-number>
</el-form-item>
</el-col>
<!--
临时用电 !-->
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="工作类型">
<el-select v-model="form.work_type" placeholder="选择工作类型">
<el-option
v-for="item in worktypeoptions"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="工作时间">
<el-date-picker
v-model="form.work_time"
type="datetime"
placeholder="选择开始时间"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="验收时间">
<el-date-picker
v-model="form.accept_time"
type="datetime"
placeholder="选择开始时间"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="用电功率">
<el-input v-model="form.power" type="text" clearable></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="用电地点">
<el-input v-model="form.power_to" type="text" clearable></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="用电开始">
<el-date-picker
v-model="form.power_start_time"
type="datetime"
placeholder="选择开始时间"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="用电截至">
<el-date-picker
v-model="form.power_end_time"
type="datetime"
placeholder="选择开始时间"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="电源接入点">
<el-input v-model="form.power_from" type="text" clearable></el-input>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="风险选择">
<el-checkbox-group v-model="form.risks_checked">
<el-checkbox
v-for="(item, index) in risklist"
:key="index"
:label="item.id"
>{{ item.name }}</el-checkbox
>
</el-checkbox-group>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="其他风险">
<el-input
v-model="form.other_risk"
type="text"
clearable
></el-input>
</el-form-item>
</el-col>
<!--
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="逃生路径">
<el-input v-model="escape_route" type="text" clearable></el-input>
</el-form-item>
</el-col> !-->
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="措施选择">
<el-checkbox-group v-model="form.measures_checked">
<el-checkbox
v-for="(item, index) in measurelist"
:key="index"
:label="item.id"
>{{ item.name }}</el-checkbox
>
</el-checkbox-group>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-card class="box-card">
<div class="clearfix">
<span>应急处置:</span>
</div>
<div class="content">
<p>发生人员触电事故,应迅速切断电源或采用绝缘工器具使触电者脱离电源,判断触电者无意识或心跳、呼吸已停止时,应立即报告,并由经过专业训练或具备相应能力的人员对触电者进行心肺复苏术,直至专业医务人员赶到现场为止。
其他应急处置
</p>
</div>
</el-card>
<el-form-item label="其他应急处置">
<el-input
v-model="form.other_emr"
type="text"
clearable
></el-input>
</el-form-item>
</el-col>
<!--
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="作业审批照片">
<el-input v-model="create_imgs" type="text" clearable></el-input>
</el-form-item>
</el-col>
!-->
</el-row>
</el-form>
<div style="margin-bottom: 20px; text-align:center">
<el-button type="primary" plain @click="handleNextStep"
>下一步
</el-button>
</div>
</el-main>
<!--作业人员!-->
<el-main class="nopadding" v-show="active === 1">
<div class="left-panel" style="margin: 10px">
<el-button
type="primary"
icon="el-icon-plus"
@click="addworker"
></el-button>
</div>
<scTable
ref="workerTable"
:data="apiworkerObj"
row-key="id"
hidePagination
stripe
>
<el-table-column
label="#"
fixed="left"
type="index"
width="50"
></el-table-column>
<el-table-column label="姓名" prop="name" width="150">
<template #default="scope">
{{ scope.row.worker_.name }}
</template>
</el-table-column>
<el-table-column label="工作职责" prop="duty" width="150">
</el-table-column>
<el-table-column label="证书" prop="certificates" width="150">
<template #default="scope" >
<el-tag v-for="item in scope.row.certificates_"
:key="item.number"
:label="item.name"
:value="item.number">{{item.name}}</el-tag>
</template>
</el-table-column>
<el-table-column
label="创建时间"
prop="create_time"
width="150"
></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="200">
<template #default="scope">
<el-popconfirm
title="确定删除该作业人员吗?"
@confirm="delWorker(scope.row)"
>
<template #reference>
<el-button text type="danger" size="small">删除</el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
</scTable>
<el-dialog v-model="workerdialog" draggable title="选择作业人员">
<el-form
ref="workerForm"
:model="formworker"
:rules="rules"
:disabled="mode == 'show'"
label-width="80px"
width="70%"
style="margin: 40px 40px 40px 40px"
>
<el-row>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="作业人员">
<el-select
v-model="formworker.worker"
@change="selectWorker"
placeholder="选择作业人员"
>
<el-option
v-for="item in useroptions"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="工作职责">
<el-select
v-model="formworker.duty"
filterable
allow-create
default-first-option
:reserve-keyword="false"
>
<el-option
v-for="item in dutyOptions"
:key="item.value"
:label="item.label"
:value="item.label"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="证书">
<el-select
v-model="formworker.certificates"
multiple
placeholder="选择证书"
>
<el-option
v-for="item in certificatesOptions"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<el-button @click="dialogcart = false">取 消</el-button>
<el-button type="primary" @click="submitWorker">确 定</el-button>
</template>
</el-dialog>
<div style="margin-top:20px;text-align:center">
<el-button @click="handleLastStep" style="margin-right:4px">上一步</el-button>
<el-button
:loading="tLoading"
v-for=" item in initForm.transitions"
:key="item.id"
type="primary"
@click="submitTicketCreate(item.id)"
style="margin-right:4px"
>{{item.name}}
</el-button>
<el-button @click="submitOut" type="warning">退出</el-button>
</div>
</el-main>
</el-container>
</template>
<style scoped>
.clearfix {
font-size: 20px;
}
.box-card p {
line-height: 20px;
}
.content {
margin-top: 10px;
}
.stepSuc:hover {
cursor: pointer;
}
.stepErr:hover {
cursor: not-allowed;
}
</style>
<script>
import { genTree } from "@/utils/verificate";
const defaultformworker = {
id: "",
worker: null,
duty: "作业人员",
certificates: [],
opl: "",
};
const defaultformgas = {
id: "",
check_time: null,
opl:""
};
export default {
name: "usecl",
components: {},
data() {
return {
active: 0,
stepSuc: [0],
stepTitle: ["基本信息", "作业人员"],
query: {},
selection: [],
issave: false, //控制基本信息提交
search: {
keyword: null,
},
form: {
id: "",
start_time: null,
end_time: null,
operation: "",
cate: "",
risks_checked: [],
},
initForm: {},
operationId: "",
oplcateId: "",
oplId: "",
leveloptions: [
{ id: 10, name: "单项" },
{ id: 20, name: "三相四线" },
{ id: 30, name: "三相五线" },
],
worktypeoptions: [
{ id: "安装", name: "安装" },
{ id: "拆除", name: "拆除" },
],
deptoptions: [],
useroptions: [],
risklist: [],
measurelist: [],
pagtitle: "",
dutyOptions: [
{ value: 40, label: "电工" },
],
certificatesOptions: [],
formworker: defaultformworker,
apiworkerObj: [],
workerdialog: false,
gasdialog: false,
formgas: defaultformgas,
apigasObj: [],
is_ok_: {
true: "正常",
false: "不正常",
},
rules: {
start_time: [
{required: true, message: '请选择'}
],
end_time: [
{required: true, message: '请选择'}
],
level: [
{required: true, message: '请选择'}
],
dept_do: [
{required: true, message: '请选择'}
],
charger: [
{required: true, message: '请选择'}
],
monitor: [
{required: true, message: '请选择'}
],
risks_checked: [
{required: true, message: '请选择'}
],
measures_checked: [
{required: true, message: '请选择'}
],
}
};
},
mounted() {
this.operationId = this.$route.query.operationid; //作业ID
this.oplcateId = this.$route.query.oplcateId; //作业许可证种类ID
this.oplId = this.$route.query.oplId; //许可证ID
this.getoplData();
this.getInit();
this.getDept();
},
methods: {
getoplData() {
if (this.oplId == "") {
this.getOperation();
this.getOplcates();
} else {
this.getData();
}
},
//根据oplId查许可证
getData() {
this.$API.opm.opl.read.req(this.oplId).then((res) => {
this.form = res;
this.oplcateId = res.cate;
this.operationId = res.operation;
this.getOperation();
this.getOplcates();
});
},
//根据operationId查作业信息
getOperation() {
this.$API.opm.operation.read.req(this.operationId).then((res) => {
this.form.start_time = res.start_time; //作业开始时间
this.form.end_time = res.end_time; //作业结束时间
console.log(res);
});
},
//作业部门
getDept() {
this.$API.system.dept.list.req({ page: 0 }).then((res) => {
this.deptoptions = genTree(res);
});
},
//作业负责人、作业监护人
getUser() {
this.$API.system.user.list.req({ page: 0 }).then((res) => {
this.useroptions = res;
});
},
//作业
//根据作业许可证ID获取风险、措施
getOplcates() {
this.$API.opm.oplcate.read.req(this.oplcateId).then((res) => {
console.log(res); //
this.pagtitle = res.name;
this.risklist = res.risk_options_; //风险缝隙
this.measurelist = res.measure_options_; //控制措施
});
},
handleStep(val) {
//点击步骤条
if (this.stepSuc.includes(val) === true) {
this.active = val;
}
},
//组件点击上一步
handleLastStep() {
if (--this.active === 0) {
this.active = 0;
}
},
//组件点击下一步
handleNextStep() {
if (this.active == 0) {
// console.log(this.oplId);
//如果是创建许可证书
if (this.oplId == "") {
//基本信息提交
debugger;
this.form.cate = this.oplcateId;
this.form.operation = this.operationId;
console.log(this.form);
this.$API.opm.opl.create
.req(this.form)
.then((res) => {
this.$emit("success", this.form);
this.$message.success("创建成功");
this.issave = true;
this.active = 1;
this.oplId = res.id;
this.getworkerList(res.id);
return res;
})
.catch((err) => {
return err;
});
} else if (this.oplId != "") {
this.$API.opm.opl.update.req(this.oplId, this.form).then(() => {
this.$message.success("基本修改成功!");
this.issave = true;
this.active = 1;
this.getworkerList(this.oplId);
});
} else {
this.active = 1;
}
}
// this.stepSuc.push(++this.active)
},
//选择人员后,调出该人员的所有证书
selectWorker() {
this.$API.hrm.certificate.list
.req({ employee__user: this.formworker.worker, page: 0 })
.then((res) => {
this.certificatesOptions = res;
console.log(res);
});
},
//作业人员列表
getworkerList(id) {
this.$API.opm.worker.list.req({ opl: id, page: 0 }).then((res) => {
this.apiworkerObj = res;
console.log(res);
});
},
//创建作业人员显示Form
addworker() {
this.workerdialog = true;
this.formworker = Object.assign({}, defaultformworker);
},
//删除作业人员
delWorker(row) {
this.$API.opm.worker.delete
.req(row.id)
.then((res) => {
this.$message.success("作业人员删除成功");
this.$refs.workerTable.refresh();
return res;
})
.catch((err) => {
return err;
});
},
//提交作业人员信息
submitWorker() {
this.formworker.opl = this.oplId;
this.$refs.workerForm.validate(async (valid) => {
this.$API.opm.worker.create
.req(this.formworker)
.then((res) => {
this.$message.success("创建作业人员成功");
this.workerdialog = false;
this.$refs.workerTable.refresh();
})
.catch((err) => {
return err;
});
});
},
//渲染工单提交按钮
getInit() {
this.$API.wf.workflow.initkey.req('opl_usecl').then((res) => {
this.initForm = res;
});
},
//提交,创建工单
submitTicketCreate(id) {
let ticket = {};
ticket.workflow = this.initForm.workflow;
ticket.ticket_data = {opl: this.oplId};
ticket.transition = id;
ticket.title = this.form.name + '-申请';
this.tLoading = true
this.$API.wf.ticket.create.req(ticket).then((res) => {
this.tLoading = false
this.$message.success("提交成功");
this.submitOut()
}).catch(e=>{this.tLoading=false});
},
//退出界面
submitOut(){
this.$router.push({
name: "opl",
query: {
operationid: this.$route.query.id,//作业ID
},
});
}
},
};
</script>