This commit is contained in:
shijing 2022-07-01 09:10:43 +08:00
commit b33043b230
23 changed files with 1443 additions and 153 deletions

View File

@ -5,7 +5,7 @@ export default {
/*访客 */
visitor: {
create: {
createz: {
name: "注册",
req: async function (data) {
return await http.post(
@ -13,11 +13,142 @@ export default {
data);
}
},
list: {
name: "获取",
req: async function (data) {
return await http.get(
`${config.API_URL}/vm/visitor/`,
data
);
}
},
read:{
name: "详情",
req: async function (id) {
return await http.get(
`${config.API_URL}/vm/visitor/${id}/`);
}
},
create: {
name: "创建",
req: async function (data) {
return await http.post(
`${config.API_URL}/vm/visitor/`,
data);
}
},
update: {
name: "更新",
req: async function (id, data) {
return await http.put(
`${config.API_URL}/vm/visitor/${id}/`,
data);
}
},
delete: {
name: "删除",
req: async function (id) {
return await http.delete(
`${config.API_URL}/vm/visitor/${id}/`);
}
}
},
/*来访项目 */
visit: {
list: {
name: "获取",
req: async function (data) {
return await http.get(
`${config.API_URL}/vm/visit/`,
data
);
}
},
read:{
name: "详情",
req: async function (id) {
return await http.get(
`${config.API_URL}/vm/visit/${id}/`);
}
},
create: {
name: "创建",
req: async function (data) {
return await http.post(
`${config.API_URL}/vm/visit/`,
data);
}
},
update: {
name: "更新",
req: async function (id, data) {
return await http.put(
`${config.API_URL}/vm/visit/${id}/`,
data);
}
},
delete: {
name: "删除",
req: async function (id) {
return await http.delete(
`${config.API_URL}/vm/visit/${id}/`);
}
}
},
/*项目人员绑定定 */
people: {
list: {
name: "获取",
req: async function (data) {
return await http.get(
`${config.API_URL}/vm/vpeople/`,
data
);
}
},
read:{
name: "详情",
req: async function (id) {
return await http.get(
`${config.API_URL}/vm/vpeople/${id}/`);
}
},
create: {
name: "创建",
req: async function (data) {
return await http.post(
`${config.API_URL}/vm/vpeople/`,
data);
}
},
update: {
name: "更新",
req: async function (id, data) {
return await http.put(
`${config.API_URL}/vm/vpeople/${id}/`,
data);
}
},
delete: {
name: "删除",
req: async function (id) {
return await http.delete(
`${config.API_URL}/vm/vpeople/${id}/`);
}
}
},
}

View File

@ -362,6 +362,15 @@ const routes = [
"icon": "el-icon-menu",
},
"component": "vm/visitor"
},{
"name": "people",
"path": "/vm/people",
"meta": {
"title": "访客人员",
"icon": "el-icon-menu",
"hidden": true
},
"component": "vm/people"
},
]
},
@ -431,6 +440,16 @@ const routes = [
"component": "hrm/employee"
}
,
{
"name": "certificates",
"path": "/hrm/certificates",
"meta": {
"title": "证书列表",
"icon": "el-icon-menu",
},
"component": "hrm/certificates"
}
,
{
"name": "certificate",
"path": "/hrm/certificate",

View File

@ -0,0 +1,233 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<!--
<el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button>
<el-button type="primary" plain :disabled="selection.length!=1" @click="permission">权限设置</el-button> -->
</div>
<div class="right-panel">
<div class="right-panel-search">
<el-input
v-model="search.keyword"
placeholder="姓名/手机号"
clearable
></el-input>
<el-button
type="primary"
icon="el-icon-search"
></el-button>
</div>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:data="apiObj"
row-key="id"
stripe
>
<el-table-column label="#" fixed="left" type="index" width="50"></el-table-column>
<el-table-column label="姓名" fixed="left" prop="employee_name" width="150"></el-table-column>
<el-table-column label="证书名称" fixed="left" prop="name" width="150"></el-table-column>
<el-table-column label="证书编号" prop="number" width="200"> </el-table-column>
<el-table-column label="证书类型" prop="type" width="200"><template #default="scope">{{type_[scope.row.type]}} </template></el-table-column>
<el-table-column label="发证日期" prop="issue_date" width="180"></el-table-column>
<el-table-column label="有效期" prop="expiration_date" width="200"> </el-table-column>
<el-table-column label="下一次复审日期" prop="review_date" width="180"></el-table-column>
<el-table-column label="证书文件" prop="file" width="180"></el-table-column>
</scTable>
</el-main>
</el-container>
<sc-dialog v-model="dialogcart" draggable title="创建人员证书">
<el-form
ref="dialogForm"
:model="form"
:rules="rules"
:disabled="mode === 'show'"
label-width="120px"
>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="证书名称" prop="name">
<el-input
v-model="form.name"
placeholder="请输入证书名称"
clearable
></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="证书编号" prop="number">
<el-input
v-model="form.number"
placeholder="请输入证书编号"
clearable
></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="证书类型" prop="type">
<el-select v-model="form.type" placeholder="选择证书类型">
<el-option
v-for="item in typeoptions"
: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-date-picker
v-model="form.issue_date"
type="date"
value-format="YYYY-MM-DD"
placeholder="选择发证日期"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="有效期">
<el-date-picker
v-model="form.expiration_date"
type="date"
value-format="YYYY-MM-DD"
placeholder="选择有效期"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="下一次复审日期">
<el-date-picker
v-model="form.review_date"
type="date"
value-format="YYYY-MM-DD"
placeholder="选择下一次复审日期"
/>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="上传证书文件">
<sc-upload-file
v-model="form.file"
:limit="5"
:data="{ otherData: 'demo' }"
tip="最多上传3个文件,单个文件不要超过10M,请上传xlsx/docx格式文件"
>
<el-button type="primary" icon="el-icon-upload"
>上传附件</el-button
>
</sc-upload-file>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<el-button @click="dialogcart = false"> </el-button>
<el-button type="primary" @click="submitcert"> </el-button>
</template>
</sc-dialog>
</template>
<script>
const defaultform=
{ id: "",
name: "",
number: "",
employee: ""
};
export default {
name: "certificate",
components: {},
data() {
return {
form:defaultform,
typeoptions: [
{ id: 10, name: "特种作业证书" },
{ id: 20, name: "特种设备操作证书" },
{ id: 30, name: "安全管理人员证书" },
],
type_: {
10: "特种作业证书",
20: "特种设备操作证书",
30: "安全管理人员证书",
},
dialogcart: false,
apiObj:[],
query: {},
selection: [],
search: {
keyword: null,
},
};
},
mounted() {
this.getcertificatelist();
},
methods: {
handleForm(type, row) {
if (type === "add") {
this.dialogcart = true;
this.form = Object.assign({}, defaultform);
} else {
this.dialogcart = true;
this.form = row;
}
},
//
getcertificatelist() {
this.$API.hrm.certificate.list
.req({ page: 0 })
.then((res) => {
this.apiObj = res;
});
},
//
submitcert() {
this.form.employee = this.$route.query.id;
this.$refs.dialogForm.validate((valid) => {
if (this.form.id == "") {
this.$API.hrm.certificate.create
.req(this.form)
.then((res) => {
this.$message.success("创建成功");
this.dialogcart = false;
return res;
})
.catch((err) => {
return err;
});
} else {
this.$API.hrm.certificate.update
.req(this.form.id, this.form)
.then((res) => {
this.$message.success("修改成功");
this.dialogcart = false;
return res;
return res;
})
.catch((err) => {
return err;
});
}
});
},
},
};
</script>

View File

@ -223,7 +223,7 @@ export default {
this.visitorsdialog=true;
},
submitvisitor(){
this.$API.vm.visitor.create
this.$API.vm.visitor.createz
.req(this.visitorform)
.then((res) => {
this.$message.success("创建成功!");

View File

@ -791,7 +791,8 @@ export default {
.req(row.id)
.then((res) => {
this.$message.success("作业人员删除成功");
this.$refs.workerTable.refresh();
return res;
})
.catch((err) => {
@ -807,6 +808,7 @@ export default {
.req(this.formworker)
.then((res) => {
this.$message.success("创建作业人员成功");
this.$refs.workerTable.refresh();
this.workerdialog = false;
})
@ -839,6 +841,8 @@ export default {
.req(this.formgas)
.then((res) => {
this.$message.success("创建气体浓度检测记录成功");
this.$refs.gasTable.refresh();
this.gasdialog = false;
})
@ -854,7 +858,7 @@ export default {
.req(row.id)
.then((res) => {
this.$message.success("气体浓度检测记录删除成功");
this.$refs.gasTable.refresh();
return res;
})
.catch((err) => {

View File

@ -485,7 +485,7 @@ export default {
this.oplId = res.id;
this.getworkerList(res.id);
this.getgasList(res.id);
return res;
})
.catch((err) => {
@ -497,7 +497,7 @@ export default {
this.$message.success("基本修改成功!");
this.issave = true;
this.active = 1;
this.getgasList(this.oplId);
this.getworkerList(this.oplId);
});
@ -538,7 +538,7 @@ export default {
.req(row.id)
.then((res) => {
this.$message.success("作业人员删除成功");
this.$refs.workerTable.refresh();
return res;
})
.catch((err) => {
@ -554,6 +554,7 @@ export default {
.req(this.formworker)
.then((res) => {
this.$message.success("创建作业人员成功");
this.$refs.workerTable.refresh();
this.workerdialog = false;
})

View File

@ -795,7 +795,7 @@ export default {
.req(row.id)
.then((res) => {
this.$message.success("作业人员删除成功");
this.$refs.workerTable.refresh();
return res;
})
.catch((err) => {
@ -811,6 +811,7 @@ export default {
.req(this.formworker)
.then((res) => {
this.$message.success("创建作业人员成功");
this.$refs.workerTable.refresh();
this.workerdialog = false;
})
@ -843,6 +844,7 @@ export default {
.req(this.formgas)
.then((res) => {
this.$message.success("创建气体检测记录成功");
this.$refs.gasTable.refresh();
this.gasdialog = false;
})
@ -858,7 +860,7 @@ export default {
.req(row.id)
.then((res) => {
this.$message.success("气体检测记录删除成功");
this.$refs.gasTable.refresh();
return res;
})
.catch((err) => {

View File

@ -575,7 +575,7 @@ export default {
this.oplId = res.id;
this.getworkerList(res.id);
this.getgasList(res.id);
return res;
})
.catch((err) => {
@ -587,7 +587,7 @@ export default {
this.$message.success("基本修改成功!");
this.issave = true;
this.active = 1;
this.getgasList(this.oplId);
this.getworkerList(this.oplId);
});
@ -628,7 +628,7 @@ export default {
.req(row.id)
.then((res) => {
this.$message.success("作业人员删除成功");
this.$refs.workerTable.refresh();
return res;
})
.catch((err) => {
@ -645,7 +645,7 @@ export default {
.then((res) => {
this.$message.success("创建作业人员成功");
this.workerdialog = false;
this.$refs.workerTable.refresh();
})
.catch((err) => {
return err;

View File

@ -575,7 +575,7 @@ export default {
this.oplId = res.id;
this.getworkerList(res.id);
this.getgasList(res.id);
return res;
})
.catch((err) => {
@ -587,7 +587,7 @@ export default {
this.$message.success("基本修改成功!");
this.issave = true;
this.active = 1;
this.getgasList(this.oplId);
this.getworkerList(this.oplId);
});
@ -628,7 +628,7 @@ export default {
.req(row.id)
.then((res) => {
this.$message.success("作业人员删除成功");
this.$refs.workerTable.refresh();
return res;
})
.catch((err) => {
@ -645,7 +645,7 @@ export default {
.then((res) => {
this.$message.success("创建作业人员成功");
this.workerdialog = false;
this.$refs.workerTable.refresh();
})
.catch((err) => {
return err;

View File

@ -24,7 +24,7 @@
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
ref="tableoperation"
:apiObj="apiObj"
row-key="id"
@selection-change="selectionChange"
@ -43,7 +43,7 @@
width="200"
fixed="left"
></el-table-column>
<el-table-column label="作业状态" prop="state" width="180" fixed="left">
<el-table-column label="作业状态" prop="state" width="180" fixed="left">
<template #default="scope">{{
stateoptions[scope.row.state]
}}</template></el-table-column
@ -103,18 +103,20 @@
<el-table-column label="操作" fixed="right" align="left" width="170">
<template #default="scope">
<el-button-group>
<el-button
<el-button
text
type="primary"
size="small"
@click="creatopl(scope.row)"
>许可证</el-button>
>关联许可证</el-button
>
<el-button
text
type="primary"
size="small"
@click="table_show(scope.row, scope.$index)"
>查看</el-button>
>查看</el-button
>
<el-button
text
type="warning"
@ -122,6 +124,14 @@
@click="table_edit(scope.row, scope.$index)"
>编辑</el-button
>
<el-button
text
type="primary"
size="small"
v-if="scope.row.state == 10"
@click="table_del(scope.row)"
>删除</el-button
>
</el-button-group>
</template>
</el-table-column>
@ -164,6 +174,7 @@ export default {
};
},
methods: {
//
add() {
this.dialog.save = true;
@ -186,14 +197,15 @@ export default {
this.$refs.saveDialog.open("show").setData(row);
});
},
//
creatopl(row){
this.$router.push({name: "opl",
query:{
id: row.id
} })
},
//
creatopl(row) {
this.$router.push({
name: "opl",
query: {
id: row.id,
},
});
},
//
permission() {
this.dialog.permission = true;
@ -201,34 +213,23 @@ export default {
this.$refs.permissionDialog.open();
});
},
//
async table_del(row) {
var reqData = { id: row.id };
var res = await this.$API.demo.post.post(reqData);
if (res.code == 200) {
this.$refs.table.refresh();
this.$message.success("删除成功");
} else {
this.$alert(res.message, "提示", { type: "error" });
}
},
//
async batch_del() {
this.$confirm(
`确定删除选中的 ${this.selection.length} 项吗?如果删除项中含有子集将会被一并删除`,
"提示",
{
type: "warning",
}
)
.then(() => {
const loading = this.$loading();
this.$refs.table.refresh();
loading.close();
this.$message.success("操作成功");
//
table_del(row) {
this.$API.opm.operation.delete
.req(row.id)
.then((res) => {
this.$message.success("删除成功");
this.$refs.tableoperation.refresh();
return res;
})
.catch(() => {});
.catch((err) => {
return err;
});
},
//
selectionChange(selection) {
this.selection = selection;
@ -258,15 +259,15 @@ export default {
}
});
}
filter(this.$refs.table.tableData);
filter(this.$refs.tableoperation.tableData);
return target;
},
//
handleSaveSuccess(data, mode) {
if (mode == "add") {
this.$refs.table.refresh();
this.$refs.tableoperation.refresh();
} else if (mode == "edit") {
this.$refs.table.refresh();
this.$refs.tableoperation.refresh();
}
},
resetQuery() {

View File

@ -17,17 +17,17 @@
>
<el-row>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="作业简介">
<el-form-item label="作业简介" prop="name">
<el-input v-model="form.name" type="text" clearable></el-input>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="具体地点">
<el-form-item label="具体地点" prop="place">
<el-input v-model="form.place" type="text" clearable></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="开始时间">
<el-form-item label="开始时间" prop="start_time">
<el-date-picker
v-model="form.start_time"
type="datetime"
@ -37,7 +37,7 @@
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="结束时间">
<el-form-item label="结束时间" prop="end_time">
<el-date-picker
v-model="form.end_time"
type="datetime"
@ -47,7 +47,7 @@
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="生产状态">
<el-form-item label="生产状态" prop="state_work">
<el-select v-model="form.state_work" placeholder="选择生产状态">
<el-option
v-for="item in stateoptions"
@ -59,7 +59,7 @@
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" :xs="24">
<el-form-item label="作业区域">
<el-form-item label="作业区域" prop="area">
<el-select v-model="form.area" placeholder="选择作业区域">
<el-option
v-for="item in areaoptions"
@ -73,7 +73,7 @@
<el-col :md="12" :sm="24" :xs="24">
<el-form-item label="业务部门">
<el-form-item label="业务部门" prop="dept_bus">
<el-cascader
placeholder="选择业务部门"
getCheckedNodes="true"
@ -91,7 +91,7 @@
</el-col>
<el-col :md="12" :sm="24" :xs="24">
<el-form-item label="部门协调员">
<el-form-item label="部门协调员" prop="coordinator">
<el-select
v-model="form.coordinator"
placeholder="选择业务部门协调员"
@ -106,7 +106,7 @@
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" :xs="24">
<el-form-item label="属地部门">
<el-form-item label="属地部门" prop="dept_ter">
<el-cascader
placeholder="选择属地部门"
getCheckedNodes="true"
@ -239,15 +239,6 @@ export default {
},
//
setData(data) {
// this.loading = true
// const params = {
// id: data.id
// }
// setTimeout(async ()=>{
// var res = await this.$API.system.table.info.get(params)
// this.loading = false
// this.form = res.data
// },400)
Object.assign(this.form, data);
},
//

View File

@ -33,7 +33,7 @@
<el-main class="nopadding">
<scTable
ref="table"
:apiObj="apiObj"
:data="apiObj"
row-key="id"
@selection-change="selectionChange"
stripe
@ -123,7 +123,7 @@ export default {
save: false,
permission: false,
},
apiObj: this.$API.opm.opl.list,
apiObj: [],
query: {},
selection: [],
search: {
@ -135,9 +135,17 @@ export default {
mounted() {
this.getoplcate();
this.getopllist();
},
methods: {
//
//
getopllist() {
this.$API.opm.opl.list.req({ operation:this.$route.query.id, page: 0 }).then((res) => {
this.apiObj = res;
});
},
//
getoplcate() {
this.$API.opm.oplcate.list.req({ page: 0 }).then((res) => {
this.oplcateList = res;

View File

@ -90,8 +90,8 @@
},
//
async table_del(row){
var reqData = {id: row.id}
var res = await this.$API.demo.post.post(reqData);
var res = await this.$API.opm.oplcate.delete( row.id);
if(res.code == 200){
this.$refs.table.refresh()
this.$message.success("删除成功")
@ -99,19 +99,7 @@
this.$alert(res.message, "提示", {type: 'error'})
}
},
//
async batch_del(){
this.$confirm(`确定删除选中的 ${this.selection.length} 项吗?如果删除项中含有子集将会被一并删除`, '提示', {
type: 'warning'
}).then(() => {
const loading = this.$loading();
this.$refs.table.refresh()
loading.close();
this.$message.success("操作成功")
}).catch(() => {
})
},
//
selectionChange(selection){
this.selection = selection;

View File

@ -64,9 +64,25 @@
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="作业部门">
<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="作业负责人">
<el-select v-model="form.charger" placeholder="选择作业负责人">
@ -91,7 +107,7 @@
</el-select>
</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">
@ -141,8 +157,12 @@
</div>
<div class="content">
<p>1发生火灾时立即使用消防器材进行灭火</p>
<p>2高温物料冲入眼睛时用洗眼器进行持续冲洗严重时拨打120送医</p>
<p>3发生人员烫伤时用喷淋装置对烫伤部位进行冲洗或用清水浸泡用干净的纱布或衣物盖住被烫伤部位伤势严重时立即拨打120送医若贴身衣服与伤口粘在一起时可用剪刀剪开然后缓慢剥离衣物</p>
<p>
2高温物料冲入眼睛时用洗眼器进行持续冲洗严重时拨打120送医
</p>
<p>
3发生人员烫伤时用喷淋装置对烫伤部位进行冲洗或用清水浸泡用干净的纱布或衣物盖住被烫伤部位伤势严重时立即拨打120送医若贴身衣服与伤口粘在一起时可用剪刀剪开然后缓慢剥离衣物
</p>
</div>
</el-card>
<el-form-item label="其他应急处置">
@ -189,6 +209,7 @@
row-key="id"
hidePagination
stripe
>
<el-table-column
label="#"
@ -204,11 +225,14 @@
<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 #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
@ -218,7 +242,6 @@
></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="200">
<template #default="scope">
<el-popconfirm
title="确定删除该作业人员吗?"
@confirm="delWorker(scope.row)"
@ -298,13 +321,11 @@
<el-button type="primary" @click="submitWorker"> </el-button>
</template>
</sc-dialog>
<el-button style="margin-top: 12px" @click="handleLastStep"
<el-button style="margin-top: 12px" @click="handleLastStep"
>上一步</el-button
>
<el-button style="margin-top: 12px" @click="submitOut">退出</el-button>
</el-main>
</el-container>
</template>
<style scoped>
@ -337,14 +358,13 @@ const defaultformworker = {
const defaultformgas = {
id: "",
check_time: null,
opl:""
opl: "",
};
export default {
name: "preheat",
components: {},
data() {
return {
active: 0,
stepSuc: [0],
stepTitle: ["基本信息", "作业人员"],
@ -368,7 +388,7 @@ export default {
oplId: "",
leveloptions: [
{ id: "一级吊装", name: "特级:>30米" },
{ id: "二级吊装", name: "二级吊装" },
{ id: "二级吊装", name: "二级吊装" },
{ id: "三级吊装", name: "三级吊装" },
],
deptoptions: [],
@ -407,8 +427,6 @@ export default {
this.getUser();
},
methods: {
getoplData() {
if (this.oplId == "") {
this.getOperation();
@ -477,7 +495,7 @@ export default {
//
handleNextStep() {
if (this.active == 0) {
// console.log(this.oplId);
// console.log(this.oplId);
//
if (this.oplId == "") {
//
@ -495,26 +513,24 @@ export default {
this.oplId = res.id;
this.getworkerList(res.id);
this.getgasList(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.getgasList(this.oplId);
this.getworkerList(this.oplId);
});
} else {
this.active = 1;
}
}
}
// this.stepSuc.push(++this.active)
},
@ -541,14 +557,14 @@ export default {
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) => {
@ -559,31 +575,30 @@ export default {
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;
})
.catch((err) => {
return err;
});
this.$API.opm.worker.create
.req(this.formworker)
.then((res) => {
this.$refs.workerTable.refresh();
this.$message.success("创建作业人员成功");
this.workerdialog = false;
})
.catch((err) => {
return err;
});
});
},
//退
submitOut(){
submitOut() {
this.$router.push({
name: "opl",
query: {
operationid: this.$route.query.id,//ID
operationid: this.$route.query.id, //ID
},
});
}
},
},
};
</script>

View File

@ -522,7 +522,7 @@ export default {
this.oplId = res.id;
this.getworkerList(res.id);
this.getgasList(res.id);
return res;
})
.catch((err) => {
@ -534,7 +534,7 @@ export default {
this.$message.success("基本修改成功!");
this.issave = true;
this.active = 1;
this.getgasList(this.oplId);
this.getworkerList(this.oplId);
});
@ -575,7 +575,7 @@ export default {
.req(row.id)
.then((res) => {
this.$message.success("作业人员删除成功");
this.$refs.workerTable.refresh();
return res;
})
.catch((err) => {
@ -592,7 +592,7 @@ export default {
.then((res) => {
this.$message.success("创建作业人员成功");
this.workerdialog = false;
this.$refs.workerTable.refresh();
})
.catch((err) => {
return err;

View File

@ -790,7 +790,7 @@ export default {
.req(row.id)
.then((res) => {
this.$message.success("作业人员删除成功");
this.$refs.workerTable.refresh();
return res;
})
.catch((err) => {
@ -807,7 +807,7 @@ export default {
.then((res) => {
this.$message.success("创建作业人员成功");
this.workerdialog = false;
this.$refs.workerTable.refresh();
})
.catch((err) => {
return err;
@ -839,6 +839,7 @@ export default {
.then((res) => {
this.$message.success("创建气体浓度检测记录成功");
this.gasdialog = false;
this.$refs.gasTable.refresh();
})
.catch((err) => {
@ -853,7 +854,7 @@ export default {
.req(row.id)
.then((res) => {
this.$message.success("气体浓度检测记录删除成功");
this.$refs.gasTable.refresh();
return res;
})
.catch((err) => {

View File

@ -607,7 +607,7 @@ export default {
this.oplId = res.id;
this.getworkerList(res.id);
this.getgasList(res.id);
return res;
})
.catch((err) => {
@ -619,7 +619,7 @@ export default {
this.$message.success("基本修改成功!");
this.issave = true;
this.active = 1;
this.getgasList(this.oplId);
this.getworkerList(this.oplId);
});
@ -660,7 +660,7 @@ export default {
.req(row.id)
.then((res) => {
this.$message.success("作业人员删除成功");
this.$refs.workerTable.refresh();
return res;
})
.catch((err) => {
@ -677,7 +677,7 @@ export default {
.then((res) => {
this.$message.success("创建作业人员成功");
this.workerdialog = false;
this.$refs.workerTable.refresh();
})
.catch((err) => {
return err;

View File

@ -46,13 +46,13 @@
@click="table_show(scope.row, scope.$index)"
>查看</el-button
>
<el-button
<!-- <el-button
text
type="warning"
size="small"
@click="table_edit(scope.row, scope.$index)"
>编辑</el-button
>
>-->
<el-popconfirm
title="确定删除吗?"
@confirm="table_del(scope.row, scope.$index)"

View File

@ -60,7 +60,7 @@
<template #default="scope">
<el-button-group>
<el-button
v-if="scope.row.admin!=null"
v-if="scope.row.admin==null"
text
type="primary"
size="small"

189
src/views/vm/people.vue Normal file
View File

@ -0,0 +1,189 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<el-button type="primary" icon="el-icon-plus" @click="add"></el-button>
<!-- <el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button>
<el-button type="primary" plain :disabled="selection.length!=1" @click="permission">权限设置</el-button> -->
</div>
<div class="right-panel">
<div class="right-panel-search">
<el-input
v-model="search.keyword"
placeholder="名称"
clearable
></el-input>
<el-button type="primary" icon="el-icon-search"></el-button>
</div>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:data="peoplelist"
row-key="id"
@selection-change="selectionChange"
stripe
@resetQuery="resetQuery"
>
<el-table-column
label="#"
fixed="left"
type="index"
width="50"
></el-table-column>
<el-table-column label="访客姓名" prop="visitor_.name"></el-table-column>
<el-table-column label="访客手机号" prop="visitor_.phone"></el-table-column>
<el-table-column label="访客身份证号" prop="visitor_.id_number"></el-table-column>
<el-table-column label="是否重要访客" prop="is_main">
<template #default="scope"
><el-space v-if="scope.row.is_main == true"></el-space>
<el-space v-else></el-space>
</template>
</el-table-column>
<el-table-column label="创建时间" prop="create_time"></el-table-column>
<el-table-column label="操作" fixed="right" align="left" width="170">
<template #default="scope">
<el-button-group>
<el-button
text
type="primary"
size="small"
@click="table_del(scope.row)"
>删除</el-button
>
</el-button-group>
</template>
</el-table-column>
</scTable>
<sc-dialog v-model="dialogpeople" draggable title="创建来访人员">
<el-form
ref="dialofrom"
:model="formpeople"
:rules="rules"
:disabled="mode === 'show'"
label-width="120px"
>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="访客姓名" prop="visitor">
<el-select
v-model="formpeople.visitor"
placeholder="选择接待人"
>
<el-option
v-for="item in visitoroptions"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="是否主访客" prop="is_main">
<el-radio-group v-model="formpeople.is_main">
<el-radio-button label="true"></el-radio-button>
<el-radio-button label="false"></el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<el-button @click="dialogpeople = false"> </el-button>
<el-button type="primary" @click="submitpeople"> </el-button>
</template>
</sc-dialog>
</el-main>
</el-container>
</template>
<script>
export default {
name: "people",
components: {},
data() {
return {
dialog: {
save: false,
permission: false,
},
apiObj: this.$API.vm.visit.list,
query: {},
selection: [],
search: {
keyword: null,
},
dialogpeople: false,
formpeople: {
id: "",
visit: "",
},
visitoroptions: [],
visttID: "",
peoplelist: [],
};
},
mounted() {
this.getvisitorlist();
this.visttID = this.$route.query.id;
this.getpeoplelistlist();
},
methods: {
//
add() {
this.dialogpeople = true;
},
//访
getpeoplelistlist() {
this.$API.vm.people.list
.req({ visit: this.visttID, page: 0 })
.then((res) => {
this.peoplelist = res;
});
},
//访
getvisitorlist() {
this.$API.vm.visitor.list.req({ page: 0 }).then((res) => {
this.visitoroptions = res;
});
},
//
submitpeople() {
this.formpeople.visit = this.visttID;
this.$refs.dialofrom.validate((valid) => {
this.$API.vm.people.create
.req(this.formpeople)
.then((res) => {
this.$message.success("创建成功");
this.dialogpeople = false;
return res;
})
.catch((err) => {
return err;
});
});
},
//访
table_del(row) {
this.$API.vm.people.delete
.req(row.id)
.then((res) => {
this.$message.success("访客删除成功");
return res;
})
.catch((err) => {
return err;
});
},
},
};
</script>

View File

@ -0,0 +1,263 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<el-button type="primary" icon="el-icon-plus" @click="add"></el-button>
<!-- <el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button>
<el-button type="primary" plain :disabled="selection.length!=1" @click="permission">权限设置</el-button> -->
</div>
<div class="right-panel">
<div class="right-panel-search">
<el-input
v-model="search.keyword"
placeholder="名称"
clearable
></el-input>
<el-button
type="primary"
icon="el-icon-search"
></el-button>
</div>
</div>
</el-header>
<el-main class="nopadding">
<scTable
ref="table"
:apiObj="apiObj"
row-key="id"
@selection-change="selectionChange"
stripe
@resetQuery="resetQuery"
>
<el-table-column
label="#"
fixed="left"
type="index"
width="50"
></el-table-column>
<el-table-column label="来访事由" prop="state" width="180" fixed="left">
<template #default="scope">{{
purpose_[scope.row.purpose]
}}</template></el-table-column>
<el-table-column
label="访问级别"
prop="level"
width="200"
fixed="left"
>
<template #default="scope"><el-space v-if="scope.row.level==10">一般</el-space>
<el-space v-else>重要</el-space>
</template>
</el-table-column>
<el-table-column
label="来访单位"
prop="company"
width="180"
fixed="left"
></el-table-column>
<el-table-column
label="状态"
prop="state"
width="180"
> <template #default="scope">{{
state_[scope.row.state]
}}</template>
</el-table-column>
<el-table-column
label="来访概述"
prop="name"
width="180"
></el-table-column>
<el-table-column
label="来访详述"
prop="description"
width="180"
></el-table-column>
<el-table-column
label="来访时间"
prop="visit_time"
width="180"
></el-table-column>
<el-table-column
label="离开时间"
prop="leave_time"
width="180"
></el-table-column>
<el-table-column
label="来访人数"
prop="count_people"
width="180"
></el-table-column>
<el-table-column
label="属地部门"
prop="belong_dept"
width="180"
></el-table-column>
<el-table-column
label="接待人"
prop="receptionist_name"
width="180"
></el-table-column>
<el-table-column
label="创建时间"
prop="create_time"
width="180"
></el-table-column>
<el-table-column label="操作" fixed="right" align="left" width="170">
<template #default="scope">
<el-button-group>
<el-button
text
v-if="scope.row.level==10"
type="primary"
size="small"
@click="bindpeople(scope.row, scope.$index)"
>绑定人员</el-button>
<el-button
text
type="primary"
size="small"
@click="table_show(scope.row, scope.$index)"
>查看</el-button>
<el-button
text
type="warning"
size="small"
@click="table_edit(scope.row, scope.$index)"
>编辑</el-button
>
<el-button
text
type="primary"
size="small"
@click="table_del(scope.row)"
>删除</el-button>
</el-button-group>
</template>
</el-table-column>
</scTable>
</el-main>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
@success="handleSaveSuccess"
@closed="dialog.save = false"
></save-dialog>
</el-container>
</template>
<script>
import saveDialog from "./visit_form.vue";
export default {
name: "visit",
components: {
saveDialog,
},
data() {
return {
dialog: {
save: false,
permission: false,
},
apiObj: this.$API.vm.visit.list,
query: {},
selection: [],
search: {
keyword: null,
},
purpose_: {
10: "参观",
20: "拜访",
30: "面试",
40: "开会"
},
state_: {
10: "创建中",
20: "审批中",
30: "待入厂",
40: "进行中",
50: "已完成",
},
};
},
methods: {
//
add() {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("add");
});
},
//
table_edit(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("edit").setData(row);
});
},
//
table_show(row) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("show").setData(row);
});
},
//
permission() {
this.dialog.permission = true;
this.$nextTick(() => {
this.$refs.permissionDialog.open();
});
},
//
table_del(row) {
this.$API.vm.visit.delete
.req(row.id)
.then((res) => {
this.$message.success("删除成功");
return res;
})
.catch((err) => {
return err;
});
},
//访
bindpeople(row){
this.$router.push({name: "people",
query:{
id: row.id
} })
},
//
selectionChange(selection) {
this.selection = selection;
},
//
handleSaveSuccess(data, mode) {
if (mode == "add") {
this.$refs.table.refresh();
} else if (mode == "edit") {
this.$refs.table.refresh();
}
},
resetQuery() {
this.query = {};
},
},
};
</script>

228
src/views/vm/visit_form.vue Normal file
View File

@ -0,0 +1,228 @@
<template>
<el-drawer
:title="titleMap[mode]"
v-model="visible"
:size="1000"
destroy-on-close
@closed="$emit('closed')"
>
<el-container v-loading="loading">
<el-main style="padding: 0 20px 20px 20px">
<el-form
ref="dialogForm"
:model="form"
:rules="rules"
:disabled="mode == 'show'"
label-width="100px"
>
<el-row>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="来访事由">
<el-select v-model="form.purpose" placeholder="选择来访事由">
<el-option
v-for="item in purposeoptions"
: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-input v-model="form.name" type="text" clearable></el-input>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24">
<el-form-item label="来访详述">
<el-input
v-model="form.description"
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.visit_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.leave_time"
type="datetime"
placeholder="选择离开时间"
/>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" :xs="24">
<el-form-item label="接待人">
<el-select v-model="form.receptionist" placeholder="选择接待人">
<el-option
v-for="item in receptionistoptions"
: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-input
v-model="form.company"
type="text"
clearable
></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" :xs="24">
<el-form-item label="来访级别">
<el-radio-group v-model="form.level">
<el-radio-button label="10">一般</el-radio-button>
<el-radio-button label="20">重要</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :md="12" :sm="12" :xs="24">
<el-form-item label="来访人数">
<el-input-number
v-model="form.count_people"
:min="0"
:max="32767"
controls-position="right"
></el-input-number>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-main>
<el-footer>
<el-button type="primary" :loading="isSaveing" @click="submit"
>保存</el-button
>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-container>
</el-drawer>
</template>
<script>
import { genTree } from "@/utils/verificate";
export default {
emits: ["success", "closed"],
data() {
return {
loading: false,
mode: "add",
titleMap: {
add: "新增",
edit: "编辑",
show: "查看",
},
form: {},
rules: {
purpose: [{ required: true, message: "请输入" }],
name: [{ required: true, message: "来访概述" }],
visit_time: [{ required: true, message: "请输入" }],
leave_time: [{ required: true, message: "请输入" }],
receptionist: [{ required: true, message: "请输入" }],
level: [{ required: true, message: "请输入" }]
},
visible: false,
isSaveing: false,
selectionFilters: [],
setFiltersVisible: false,
purposeoptions: [
{ id: 10, name: "参观" },
{ id: 20, name: "拜访" },
{ id: 30, name: "面试" },
{ id: 40, name: "开会" },
],
receptionistoptions: [],
};
},
mounted() {
this.getUser();
},
methods: {
//访
getUser() {
this.$API.system.user.list.req({ page: 0 }).then((res) => {
this.receptionistoptions = res;
});
},
//
open(mode = "add") {
this.mode = mode;
this.visible = true;
return this;
},
//
submit() {
this.$refs.dialogForm.validate(async (valid) => {
if (valid) {
this.isSaveing = true;
try {
var res;
if (this.mode == "add") {
res = await this.$API.vm.visit.create.req(this.form);
console.log(this.form);
} else if (this.mode == "edit") {
res = await this.$API.vm.visit.update.req(
this.form.id,
this.form
);
}
this.isSaveing = false;
this.$emit("success", this.form, this.mode);
this.visible = false;
this.$message.success("操作成功");
return res;
} catch (err) {
//
this.isSaveing = false;
return err;
}
}
});
},
//
setData(data) {
// this.loading = true
// const params = {
// id: data.id
// }
// setTimeout(async ()=>{
// var res = await this.$API.system.table.info.get(params)
// this.loading = false
// this.form = res.data
// },400)
Object.assign(this.form, data);
},
//
setFilters(filters) {
this.selectionFilters = filters;
this.setFiltersVisible = true;
},
},
};
</script>
<style scoped>
.el-transfer {
--el-transfer-panel-width: 345px !important;
}
</style>

View File

@ -0,0 +1,216 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<el-button
type="primary"
icon="el-icon-plus"
@click="handleForm('add')"
></el-button>
<!--
<el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button>
<el-button type="primary" plain :disabled="selection.length!=1" @click="permission">权限设置</el-button> -->
</div>
<div class="right-panel">
<div class="right-panel-search">
<el-input
v-model="search.keyword"
placeholder="姓名/手机号"
clearable
></el-input>
<el-button type="primary" icon="el-icon-search"></el-button>
</div>
</div>
</el-header>
<el-main class="nopadding">
<scTable ref="table" :data="apiObj" row-key="id" stripe>
<el-table-column
label="#"
fixed="left"
type="index"
width="50"
></el-table-column>
<el-table-column
label="姓名"
fixed="left"
prop="name"
></el-table-column>
<el-table-column label="手机号" prop="phone"> </el-table-column>
<el-table-column label="身份证号" prop="id_number"></el-table-column>
<el-table-column label="证件照" prop="photo"></el-table-column>
<el-table-column label="操作" fixed="right" align="left" width="170">
<template #default="scope">
<el-button-group>
<el-button
text
type="warning"
size="small"
@click="handleForm('edit', scope.row)"
>编辑</el-button
>
<el-popconfirm
title="确定删除该访客吗?"
@confirm="delVisitor(scope.row)"
>
<template #reference>
<el-button text type="danger" size="small">删除</el-button>
</template>
</el-popconfirm>
</el-button-group>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
<sc-dialog v-model="dialogcart" draggable title="创建来访人员">
<el-form
ref="dialogForm"
:model="form"
:rules="rules"
:disabled="mode === 'show'"
label-width="120px"
>
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="姓名" prop="name">
<el-input
v-model="form.name"
placeholder="请输入姓名"
clearable
></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="手机号" prop="phone">
<el-input
v-model="form.phone"
placeholder="请输入手机号"
clearable
></el-input>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="身份号" prop="id_number">
<el-input
v-model="form.id_number"
placeholder="请输入身份证号"
clearable
></el-input>
</el-form-item>
</el-col>
<el-col :md="24" :sm="12" :xs="24" prop="photo">
<el-form-item label="上传证件照">
<sc-upload v-model="form.photo" title="证件照"></sc-upload>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<el-button @click="dialogcart = false"> </el-button>
<el-button type="primary" @click="submitcert"> </el-button>
</template>
</sc-dialog>
</template>
<script>
const defaultform = { id: "", name: "", phone: "", id_number: "" };
export default {
name: "certificate",
components: {},
data() {
return {
form: defaultform,
//
rules: {
phone: [{ required: true, message: "请输入手机号" }],
name: [{ required: true, message: "请输入姓名" }],
photo: [{ required: true, message: "请上传证件照" }],
id_number: [
{ required: true, message: "请输入身份证号", trigger: "blur" },
{
pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
message: "你的身份证格式不正确",
},
/*{
validator: (rule, value, callback) => {
if (this.form.id_number.length !== 18) {
callback(new Error('请输入正确的身份证号!'));
}
callback();
}
}*/
],
},
dialogcart: false,
apiObj: [],
query: {},
selection: [],
search: {
keyword: null,
},
};
},
mounted() {
this.getvisitorlist();
},
methods: {
handleForm(type, row) {
if (type === "add") {
this.dialogcart = true;
this.form = Object.assign({}, defaultform);
} else {
this.dialogcart = true;
this.form = row;
}
},
//访
getvisitorlist() {
this.$API.vm.visitor.list.req({ page: 0 }).then((res) => {
this.apiObj = res;
});
},
//访
submitcert() {
this.form.employee = this.$route.query.id;
this.$refs.dialogForm.validate((valid) => {
if (this.form.id == "") {
this.$API.vm.visitor.create
.req(this.form)
.then((res) => {
this.$message.success("创建成功");
this.dialogcart = false;
return res;
})
.catch((err) => {
return err;
});
} else {
this.$API.vm.visitor.update
.req(this.form.id, this.form)
.then((res) => {
this.$message.success("修改成功");
this.dialogcart = false;
return res;
})
.catch((err) => {
return err;
});
}
});
},
//
delVisitor(row) {
this.$API.vm.visitor.delete
.req(row.id)
.then((res) => {
this.$message.success("访客删除成功");
return res;
})
.catch((err) => {
return err;
});
},
},
};
</script>