fix: edu/train
This commit is contained in:
zty 2024-06-12 10:09:00 +08:00
commit d1844a2104
13 changed files with 923 additions and 381 deletions

View File

@ -86,6 +86,39 @@ export default {
} }
}, },
}, },
checktaskset: {
list: {
name: "列表",
req: async function(data){
return await http.get(
`${config.API_URL}/dpm/checktaskset/`,
data
);
}
},
create: {
name: "创建",
req: async function(data){
return await http.post(
`${config.API_URL}/dpm/checktaskset/`,
data);
}
},
delete: {
name: "删除",
req: async function(id){
return await http.delete(
`${config.API_URL}/dpm/checktaskset/${id}/`);
}
},
toggle: {
name: "变更",
req: async function(id){
return await http.put(
`${config.API_URL}/dpm/checktaskset/${id}/toggle/`);
}
},
},
checkwork: { checkwork: {
list: { list: {
name: "列表", name: "列表",

View File

@ -184,4 +184,4 @@ export const schedulePeriodEnum = new EnumFactory({
'minutes': '分钟', 'minutes': '分钟',
'hours': '小时', 'hours': '小时',
'days': '天', 'days': '天',
}, parseInt) })

View File

@ -20,15 +20,21 @@
width="80" width="80"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="限(h)" label="(h)"
prop="expire" prop="expire"
width="80" width="80"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="启用" label="启用"
prop="enabled"
width="50" width="50"
></el-table-column> ><template #default="scope">
<el-icon v-if="scope.row.enabled" color="green"
><CircleCheckFilled
/></el-icon>
<el-icon v-else color="red"
><CircleCloseFilled
/></el-icon>
</template></el-table-column>
<el-table-column <el-table-column
label="派发次数" label="派发次数"
prop="total_run_count" prop="total_run_count"
@ -38,6 +44,40 @@
label="最近派发" label="最近派发"
prop="last_run_at" prop="last_run_at"
></el-table-column> ></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="80">
<template #default="scope">
<el-popconfirm
title="确定停用/启用吗?"
@confirm="table_toggle(scope.row, scope.$index)"
>
<template #reference>
<el-button
link
size="small"
v-auth="'checktaskset.update'"
type="warning"
icon="el-icon-opportunity"
></el-button
>
</template>
</el-popconfirm>
<el-popconfirm
title="确定删除吗?"
@confirm="table_del(scope.row, scope.$index)"
>
<template #reference>
<el-button
link
size="small"
v-auth="'checktaskset.delete'"
type="danger"
icon="el-icon-delete"
></el-button
>
</template>
</el-popconfirm>
</template>
</el-table-column>
</scTable> </scTable>
</template> </template>
<script> <script>
@ -52,18 +92,27 @@ export default {
riskLevelEnum, riskLevelEnum,
manageLevelEnum, manageLevelEnum,
riskTypeEnum, riskTypeEnum,
apiObj: this.$API.dpm.risk.list, apiObj: this.$API.dpm.checktaskset.list,
params: { riskpoint: this.rpId }, params: { riskpoint: this.rpId },
query: { query: {
search: "", search: "",
}, },
}; };
}, },
methods: {}, methods: {
created() {}, handleQuery() {
mounted() {}, this.$refs.table.queryData(this.query);
computed: {}, },
watch: {}, table_del(row) {
components: {}, this.$API.dpm.checktaskset.delete.req(row.id).then(() => {
this.handleQuery();
});
},
table_toggle(row) {
this.$API.dpm.checktaskset.toggle.req(row.id).then(res=>{
this.handleQuery();
})
}
},
}; };
</script> </script>

View File

@ -9,11 +9,61 @@
hideDo hideDo
style="height: 400px" style="height: 400px"
> >
<el-table-column
label="排序"
prop="sort"
width="50"
></el-table-column>
<el-table-column <el-table-column
label="名称" label="名称"
prop="name" prop="name"
min-width="100" min-width="100"
></el-table-column> ></el-table-column>
<el-table-column
label="等级"
prop="level"
width="100"
><template #default="scope"
><el-tag
:type="riskLevelEnum[scope.row.level]?.type"
>{{
riskLevelEnum[scope.row.level]?.text
}}</el-tag
>
</template></el-table-column>
<el-table-column
label="LECD值"
>
<template #default="scope">
{{scope.row.riskl}}*{{scope.row.riske}}*{{scope.row.riskc}}={{scope.row.riskd}}
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="80">
<template #default="scope">
<el-button
link
size="small"
@click="table_edit(scope.row)"
type="primary"
icon="el-icon-edit"
></el-button>
<el-popconfirm
title="确定删除吗?"
@confirm="
table_del(scope.row, scope.$index)
"
>
<template #reference>
<el-button
link
size="small"
type="danger"
icon="el-icon-delete"
></el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
</scTable> </scTable>
</template> </template>
<script> <script>
@ -33,11 +83,19 @@ export default {
}, },
}; };
}, },
methods: {}, methods: {
created() {}, handleQuery() {
mounted() {}, this.$refs.table.queryData(this.query);
computed: {}, },
watch: {}, table_edit(row) {
components: {}, this.$emit("updateRisk", row);
},
table_del(row) {
this.$API.dpm.risk.delete.req(row.id).then(() => {
this.handleQuery();
this.$message.success("删除成功");
});
}
},
}; };
</script> </script>

112
src/views/dpm/risk_form.vue Normal file
View File

@ -0,0 +1,112 @@
<template>
<el-form>
<el-form :model="saveForm" label-width="120px" ref="saveForm">
<el-row>
<el-col :span="12">
<el-form-item label="项目/步骤" required>
<el-input v-model="saveForm.name" type="textarea" :rows="1"></el-input>
</el-form-item>
<el-form-item label="检查标准">
<el-input v-model="saveForm.standard" type="textarea" :rows="2"></el-input>
</el-form-item>
<el-form-item label="危害因素">
<el-input v-model="saveForm.hazard_factors" type="textarea" :rows="2"></el-input>
</el-form-item>
<el-form-item label="可能后果">
<el-select v-model="saveForm.results" multiple>
<el-option v-for="item in resultOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="lecd判定" required>
<el-input-number :min="0" :precision="1" :step="0.1" controls-position="right" v-model="saveForm.riskl" placeholder="L值"/>
<el-input-number :min="0" :precision="1" :step="0.1" controls-position="right" v-model="saveForm.riske" placeholder="E值" style="margin-left: 2px"/>
<el-input-number :min="0" :precision="1" :step="0.1" controls-position="right" v-model="saveForm.riskc" placeholder="C值" style="margin-left: 2px"/>
<span style="margin-left: 6px">D值: <span v-if="saveForm.riskl*saveForm.riske*saveForm.riskc">{{saveForm.riskl*saveForm.riske*saveForm.riskc}}</span></span>
</el-form-item>
<el-form-item label="排序" required>
<el-input-number :min="0" controls-position="right" v-model="saveForm.sort"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工程技术措施" required>
<el-input v-model="saveForm.measure_tech" type="textarea" :rows="2"></el-input>
</el-form-item>
<el-form-item label="管理措施" required>
<el-input v-model="saveForm.measure_manage" type="textarea" :rows="2"></el-input>
</el-form-item>
<el-form-item label="培训教育措施" required>
<el-input v-model="saveForm.measure_edu" type="textarea" :rows="2"></el-input>
</el-form-item>
<el-form-item label="个体防护措施" required>
<el-input v-model="saveForm.measure_protect" type="textarea" :rows="2"></el-input>
</el-form-item>
<el-form-item label="应急处置措施" required>
<el-input v-model="saveForm.measure_emer" type="textarea" :rows="2"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div style="display: flex; justify-content: flex-end; margin-top: 10px">
<el-button
type="primary"
:loading="formSaving"
@click="formSubmit()"
> </el-button
>
</div>
</el-form>
</template>
<script>
const defaultForm = {};
export default {
props:{
riskpoint: {type: String, default: ""}
},
data() {
return {
saveForm: Object.assign({"riskpoint": this.riskpoint}, defaultForm),
formSaving: false,
resultOptions:[],
}
},
mounted() {
this.getResultOptions();
},
methods:{
setData(data){
this.saveForm = data;
},
getResultOptions() {
this.$API.system.dict.list.req({page: 0, type__code: "accident_result"}).then(res=>{
this.resultOptions = res;
})
},
formSubmit(){
this.formSaving = true;
if (this.saveForm.id) {
this.$API.dpm.risk.update
.req(this.saveForm.id, this.saveForm)
.then((res) => {
this.formSaving = false;
this.$message.success("更新成功");
this.$emit("riskConfirm");
})
.catch((e) => {
this.formSaving = false;
});
} else {
this.$API.dpm.risk.create
.req(this.saveForm)
.then((res) => {
this.formSaving = false;
this.$message.success("创建成功");
this.$emit("riskConfirm");
})
.catch((err) => {
this.formSaving = false;
});
}
}
}
}
</script>

View File

@ -174,11 +174,14 @@
</el-header> </el-header>
<el-main class="nopadding"> <el-main class="nopadding">
<Risk <Risk
ref="riskTable"
:rpId="rowData.id" :rpId="rowData.id"
v-if="defaultX == '风险列表' && rowData.id" v-if="defaultX == '风险列表' && rowData.id"
style="height: 100%" style="height: 100%"
@updateRisk="updateRisk"
></Risk> ></Risk>
<CheckTaskSet <CheckTaskSet
ref="checktasksetTable"
:rpId="rowData.id" :rpId="rowData.id"
v-if="defaultX == '排查任务配置' && rowData.id" v-if="defaultX == '排查任务配置' && rowData.id"
style="height: 100%" style="height: 100%"
@ -330,7 +333,10 @@
/> />
</span> </span>
</el-form-item> </el-form-item>
<el-form-item label="排查备注" prop="note" required> <el-form-item label="有效期(h)" prop="expire">
<el-input-number :min="0" controls-position="right" v-model="saveForm2.expire"/>
</el-form-item>
<el-form-item label="排查备注" prop="note">
<el-input <el-input
v-model="saveForm2.note" v-model="saveForm2.note"
clearable clearable
@ -348,7 +354,10 @@
</template> </template>
</el-dialog> </el-dialog>
<el-dialog v-model="choseMyScheduleDialog" title="选择策略"> <el-dialog v-model="choseMyScheduleDialog" title="选择策略">
<MySchedule></MySchedule> <MySchedule @scheduleChose="scheduleChose"></MySchedule>
</el-dialog>
<el-dialog v-model="riskDialog" title="新增/编辑" width="90%">
<RiskForm ref="riskForm" :riskpoint="rowData.id" @riskConfirm="riskConfirm"></RiskForm>
</el-dialog> </el-dialog>
</el-container> </el-container>
</template> </template>
@ -357,9 +366,10 @@ import { riskLevelEnum, manageLevelEnum, riskTypeEnum } from "@/utils/enum.js";
import Risk from "./risk.vue"; import Risk from "./risk.vue";
import CheckTaskSet from "./checktaskset.vue"; import CheckTaskSet from "./checktaskset.vue";
import MySchedule from "@/views/sys/myschedule.vue"; import MySchedule from "@/views/sys/myschedule.vue";
import RiskForm from "./risk_form.vue";
const defaultForm = {}; const defaultForm = {};
export default { export default {
components: { Risk, CheckTaskSet, MySchedule}, components: { Risk, CheckTaskSet, MySchedule, RiskForm},
data() { data() {
return { return {
riskTypeEnum, riskTypeEnum,
@ -368,13 +378,14 @@ export default {
formSaving: false, formSaving: false,
saveDialog: false, saveDialog: false,
saveDialog2: false, saveDialog2: false,
riskDialog: false,
choseMyScheduleDialog: false, choseMyScheduleDialog: false,
query: { query: {
search: "", search: "",
}, },
apiObj: this.$API.dpm.riskpoint.list, apiObj: this.$API.dpm.riskpoint.list,
saveForm: Object.assign({}, defaultForm), saveForm: Object.assign({}, defaultForm),
saveForm2: {}, saveForm2: {"expire": 0},
deptOptions: [], deptOptions: [],
rowData: {}, rowData: {},
xoptions: ["风险列表", "排查任务配置"], xoptions: ["风险列表", "排查任务配置"],
@ -386,8 +397,27 @@ export default {
this.getAreaOptions(); this.getAreaOptions();
}, },
methods: { methods: {
updateRisk(row) {
this.riskDialog = true;
this.$nextTick(() => {
this.$refs.riskForm.setData(row);
});
},
riskConfirm(){
this.riskDialog = false;
this.$refs.riskTable.handleQuery();
},
risk_add() {
this.riskDialog = true;
},
scheduleChose(item){
this.saveForm2.myschedule = item.id;
this.saveForm2.myschedule_name = item.name;
this.choseMyScheduleDialog = false;
},
checktaskset_add() { checktaskset_add() {
this.saveDialog2 = true; this.saveDialog2 = true;
this.saveForm2 = {"expire": 0};
}, },
rowClick(row) { rowClick(row) {
this.rowData = row; this.rowData = row;
@ -426,7 +456,27 @@ export default {
this.handleQuery(); this.handleQuery();
}); });
}, },
formSubmit2() {
this.$refs.saveForm2.validate((valid)=>{
if(valid){
this.formSaving = true;
this.$API.dpm.checktaskset.create
.req(this.saveForm2)
.then((res) => {
this.formSaving = false;
this.$message.success("创建成功");
this.$refs.checktasksetTable.handleQuery();
})
.catch((err) => {
this.formSaving = false;
});
}
})
},
formSubmit() { formSubmit() {
this.$refs.saveForm.validate((valid) => {
if (valid) {
this.formSaving = true; this.formSaving = true;
if (this.saveForm.id) { if (this.saveForm.id) {
this.$API.dpm.riskpoint.update this.$API.dpm.riskpoint.update
@ -452,7 +502,8 @@ export default {
.catch((err) => { .catch((err) => {
this.formSaving = false; this.formSaving = false;
}); });
} }}
});
}, },
}, },
}; };

View File

@ -37,7 +37,6 @@
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="进行中" label="进行中"
prop="can_attend"
width="80" width="80"
> >
<template #default="scope"> <template #default="scope">

View File

@ -863,7 +863,7 @@ export default {
getUserList() { getUserList() {
let that = this; let that = this;
this.$API.system.user.list this.$API.system.user.list
// .req({ page: 0, belong_dept__name: "" }) // .req({ page: 0,posts__name:'' })
.req({ page: 0 }) .req({ page: 0 })
.then((res) => { .then((res) => {
that.userList = res; that.userList = res;

View File

@ -1,310 +1,446 @@
<template> <template>
<el-dialog <el-dialog
title="性能检验" title="性能检验"
v-model="visible" v-model="visible"
:size="1000" :size="1000"
destroy-on-close destroy-on-close
@closed="$emit('closed')" @closed="$emit('closed')"
> >
<el-container v-loading="loading"> <el-container v-loading="loading">
<el-main style="padding: 0 20px 20px 20px"> <el-main style="padding: 0 20px 20px 20px">
<el-form <el-form
ref="dialogForm" ref="dialogForm"
:model="form" :model="form"
:rules="rules" :rules="rules"
label-width="160px" label-width="160px"
> >
<el-row> <el-row>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="检验类型" prop="testitem"> <el-form-item label="检验类型" prop="testitem">
<el-select <el-select
v-model="form.testitem" v-model="form.testitem"
placeholder="检验类型" placeholder="检验类型"
clearable clearable
style="width:100%" style="width: 100%"
disabled disabled
> >
<el-option <el-option
v-for="item in behaviors" v-for="item in behaviors"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="实验日期" prop="test_date"> <el-form-item label="实验日期" prop="test_date">
<el-date-picker <el-date-picker
v-model="form.test_date" v-model="form.test_date"
type="date" type="date"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
style="width:100%" style="width: 100%"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="样品编号" prop="sample_number"> <el-form-item label="样品编号" prop="sample_number">
<el-input v-model="form.sample_number"></el-input> <el-input
</el-form-item> v-model="form.sample_number"
</el-col> ></el-input>
<el-col :md="12" :sm="24" v-if="activeName=='透过率'"> </el-form-item>
<el-form-item label="样品厚度/mm" prop="val_hd"> </el-col>
<el-input-number v-model="form.val_hd" :min="0" style="width:100%" controls-position="right"> <el-col :md="12" :sm="24" v-if="activeName == '透过率'">
</el-input-number> <el-form-item label="样品厚度/mm" prop="val_hd">
</el-form-item> <el-input-number
</el-col> v-model="form.val_hd"
<el-col :md="12" :sm="24" v-if="activeName=='中温粘度'||activeName=='膨胀'"> :min="0"
<el-form-item label="规格型号" prop="specification"> style="width: 100%"
<el-input v-model="form.specification"></el-input> controls-position="right"
</el-form-item> >
</el-col> </el-input-number>
<el-col :md="12" :sm="24" v-if="activeName=='析晶'"> </el-form-item>
<el-form-item label="样品数量" prop="sample_count"> </el-col>
<el-input-number v-model="form.sample_count" :min="0" style="width:100%" controls-position="right"> <el-col
</el-input-number> :md="12"
</el-form-item> :sm="24"
</el-col> v-if="
<el-col :md="12" :sm="24" v-if="activeName=='高温粘度'"> activeName == '中温粘度' || activeName == '膨胀'
<el-form-item label="样品密度" prop="sample_density"> "
<el-input v-model="form.sample_density"></el-input> >
</el-form-item> <el-form-item label="规格型号" prop="specification">
</el-col> <el-input
<el-col :md="12" :sm="24"> v-model="form.specification"
<el-form-item label="检验员" prop="test_user"> ></el-input>
<el-select </el-form-item>
v-model="form.test_user" </el-col>
placeholder="检验员" <el-col :md="12" :sm="24" v-if="activeName == '析晶'">
clearable <el-form-item label="样品数量" prop="sample_count">
filterable <el-input-number
style="width:100%" v-model="form.sample_count"
> :min="0"
<el-option style="width: 100%"
v-for="item in userList" controls-position="right"
:key="item.id" >
:label="item.name" </el-input-number>
:value="item.id" </el-form-item>
/> </el-col>
</el-select> <el-col
</el-form-item> :md="12"
</el-col> :sm="24"
<el-col :md="12" :sm="24" v-if="activeName=='析晶'"> v-if="activeName == '高温粘度'"
<el-form-item label="实验温度及保温时间" prop="sample_density"> >
<el-input v-model="form.sample_number"></el-input> <el-form-item
</el-form-item> label="样品密度"
</el-col> prop="sample_density"
<el-col :md="12" :sm="24" v-if="activeName=='高温粘度'"> >
<el-form-item label="升至最高温度/℃" prop="val_zgwd"> <el-input
<el-input-number v-model="form.val_zgwd" :min="0" style="width:100%" controls-position="right"> v-model="form.sample_density"
</el-input-number> ></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24"> <el-col :md="12" :sm="24">
<el-form-item label="仪器状态" prop="equip_state"> <el-form-item label="检验员" prop="test_user">
<el-select <el-select
v-model="form.equip_state" v-model="form.test_user"
placeholder="仪器状态" placeholder="检验员"
clearable style="width:100%" clearable
> filterable
<el-option style="width: 100%"
v-for="item in stateOptios" >
:key="item.id" <el-option
:label="item.name" v-for="item in userList"
:value="item.id"> :key="item.id"
</el-option> :label="item.name"
</el-select> :value="item.id"
</el-form-item> />
</el-col> </el-select>
<el-col :md="12" :sm="24" v-if="activeName=='折射率'"> </el-form-item>
<el-form-item label="折射率(589nm)" prop="val_zsl"> </el-col>
<el-input-number v-model="form.val_zsl" :min="0" style="width:100%" controls-position="right"> <el-col :md="12" :sm="24" v-if="activeName == '析晶'">
</el-input-number> <el-form-item
</el-form-item> label="实验温度及保温时间"
</el-col> prop="sample_density"
<el-col :md="12" :sm="24" v-if="activeName=='透过率'"> >
<el-form-item label="透过率(550nm)" prop="val_tgl"> <el-input
<el-input-number v-model="form.val_tgl" :min="0" style="width:100%" controls-position="right"> v-model="form.sample_number"
</el-input-number> ></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24" v-if="activeName=='中温粘度'"> <el-col
<el-form-item label="Ts/℃" prop="val_ts"> :md="12"
<el-input-number v-model="form.val_ts" :min="0" style="width:100%" controls-position="right"> :sm="24"
</el-input-number> v-if="activeName == '高温粘度'"
</el-form-item> >
</el-col> <el-form-item
<el-col :md="12" :sm="24" v-if="activeName=='膨胀'"> label="升至最高温度/℃"
<el-form-item label="30-300℃膨胀系数" prop="val_pzxs"> prop="val_zgwd"
<el-input-number v-model="form.val_pzxs" :min="0" style="width:100%" controls-position="right"> >
</el-input-number> <el-input-number
</el-form-item> v-model="form.val_zgwd"
</el-col> :min="0"
<el-col :md="12" :sm="24" v-if="activeName=='膨胀'"> style="width: 100%"
<el-form-item label="Tg/℃" prop="val_tg"> controls-position="right"
<el-input-number v-model="form.val_tg" :min="0" style="width:100%" controls-position="right"> >
</el-input-number> </el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="12" :sm="24" v-if="activeName=='膨胀'"> <el-col :md="12" :sm="24">
<el-form-item label="Tf/℃" prop="val_tf"> <el-form-item label="仪器状态" prop="equip_state">
<el-input-number v-model="form.val_tf" :min="0" style="width:100%" controls-position="right"> <el-select
</el-input-number> v-model="form.equip_state"
</el-form-item> placeholder="仪器状态"
</el-col> clearable
<el-col :md="12" :sm="24" v-if="activeName=='析晶'"> style="width: 100%"
<el-form-item label="析晶状态" prop="val_xj"> >
<el-select <el-option
v-model="form.val_xj" v-for="item in stateOptios"
placeholder="析晶状态" :key="item.id"
clearable style="width:100%" :label="item.name"
> :value="item.id"
<el-option >
v-for="item in xjOptios" </el-option>
:key="item.id" </el-select>
:label="item.name" </el-form-item>
:value="item.id"> </el-col>
</el-option> <el-col :md="12" :sm="24" v-if="activeName == '折射率'">
</el-select> <el-form-item label="折射率(589nm)" prop="val_zsl">
</el-form-item> <el-input-number
</el-col> v-model="form.val_zsl"
<el-col :md="12" :sm="24"> :min="0"
<el-form-item label="备注"> style="width: 100%"
<el-input v-model="form.note" placeholder="备注"/> controls-position="right"
</el-form-item> >
</el-col> </el-input-number>
</el-row> </el-form-item>
</el-form> </el-col>
</el-main> <el-col :md="12" :sm="24" v-if="activeName == '透过率'">
<el-footer v-if="this.mode!=='show'"> <el-form-item label="透过率(550nm)" prop="val_tgl">
<el-button type="primary" :loading="isSaveing" @click="submit">保存</el-button> <el-input-number
<el-button @click="visible = false">取消</el-button> v-model="form.val_tgl"
</el-footer> :min="0"
</el-container> style="width: 100%"
</el-dialog> controls-position="right"
>
</el-input-number>
</el-form-item>
</el-col>
<el-col
:md="12"
:sm="24"
v-if="activeName == '中温粘度'"
>
<el-form-item label="Ts/℃" prop="val_ts">
<el-input-number
v-model="form.val_ts"
:min="0"
style="width: 100%"
controls-position="right"
>
</el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="activeName == '膨胀'">
<el-form-item
label="30-300℃膨胀系数"
prop="val_pzxs"
>
<el-input-number
v-model="form.val_pzxs"
:min="0"
style="width: 100%"
controls-position="right"
>
</el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="activeName == '膨胀'">
<el-form-item label="Tg/℃" prop="val_tg">
<el-input-number
v-model="form.val_tg"
:min="0"
style="width: 100%"
controls-position="right"
>
</el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="activeName == '膨胀'">
<el-form-item label="Tf/℃" prop="val_tf">
<el-input-number
v-model="form.val_tf"
:min="0"
style="width: 100%"
controls-position="right"
>
</el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24" v-if="activeName == '析晶'">
<el-form-item label="析晶状态" prop="val_xj">
<el-select
v-model="form.val_xj"
placeholder="析晶状态"
clearable
style="width: 100%"
>
<el-option
v-for="item in xjOptios"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="备注">
<el-input
v-model="form.note"
placeholder="备注"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-main>
<el-footer v-if="this.mode !== 'show'">
<el-button type="primary" :loading="isSaveing" @click="submit"
>保存</el-button
>
<el-button @click="visible = false">取消</el-button>
</el-footer>
</el-container>
</el-dialog>
</template> </template>
<script> <script>
export default { export default {
emits: ["success", "closed"], emits: ["success", "closed"],
props: { props: {
activeId: { type: String, default: "" }, activeId: { type: String, default: "" },
activeName: { type: String, default: "" }, activeName: { type: String, default: "" },
},
data() {
return {
loading: false,
form: {},
rules: {
belong_dept: [
{
required: true,
message: "请选择所属部门",
trigger: "blur",
},
],
test_date: [
{
required: true,
message: "请选择检验日期",
trigger: "blur",
},
],
test_user: [
{
required: true,
message: "请选择操作人",
trigger: "blur",
},
],
check_user: [
{
required: true,
message: "请选择专检人",
trigger: "blur",
},
],
test_group: [
{
required: true,
message: "请选择检测工序集",
trigger: "blur",
},
],
is_ok: [
{
required: true,
message: "请选择是否合格",
trigger: "blur",
},
],
},
stateOptios: [
{ id: "R", name: "正常" },
{ id: "T", name: "异常" },
],
xjOptios: [
{ id: "S", name: "析晶" },
{ id: "K", name: "不析晶" },
{ id: "θ", name: "未化" },
],
visible: false,
isSaveing: false,
userList: [],
options: [],
processOptions: [],
deptOptions: [],
selectionFilters: [],
setFiltersVisible: false,
belong_dept_options: [],
group: [],
behaviors: [],
};
},
mounted() {
console.log(this.activeId);
console.log(this.activeName);
this.form.testitem = this.activeId;
this.getTextItem();
this.getProcess();
this.getUserList();
this.getDeptOptions();
},
methods: {
//
open(mode = "add") {
this.mode = mode;
this.visible = true;
return this;
},
//
getTextItem() {
let that = this;
that.$API.qm.getTestItem
.get({ tag: "performance", page: 0 })
.then((res) => {
that.behaviors = res;
});
},
//
getDeptOptions() {
this.$API.system.dept.list
.req({ page: 0, type__in: "dept" })
.then((res) => {
this.deptOptions = res;
});
},
//
getUserList() {
let that = this;
this.$API.system.user.list
.req({ page: 0, posts__name: "检验" })
.then((res) => {
that.userList = res;
});
},
getProcess() {
let that = this;
this.$API.mtm.process.list.req({ page: 0 }).then((res) => {
that.processOptions = res;
});
},
handleClick() {},
//
submit() {
this.$refs.dialogForm.validate(async (valid) => {
if (valid) {
this.isSaveing = true;
try {
var res;
if (this.mode == "add") {
res = await this.$API.qm.ptest.create.req(
this.form
);
} else if (this.mode == "edit") {
res = await this.$API.qm.ptest.update.req(
this.form.id,
this.form
);
}
this.isSaveing = false;
this.$emit("success");
this.visible = false;
this.$message.success("操作成功");
} catch (err) {
//
this.isSaveing = false;
return err;
}
}
});
},
//
setData(data) {
Object.assign(this.form, data);
this.form.test_group = this.form.split(",");
},
//
setFilters(filters) {
this.selectionFilters = filters;
this.setFiltersVisible = true;
},
}, },
data() {
return {
loading: false,
form: {
},
rules: {
belong_dept: [{required: true, message: "请选择所属部门", trigger: "blur"}],
test_date: [{required: true, message: "请选择检验日期", trigger: "blur"}],
test_user: [{required: true, message: "请选择操作人", trigger: "blur"}],
check_user: [{required: true, message: "请选择专检人", trigger: "blur"}],
test_group:[{required: true, message: "请选择检测工序集", trigger: "blur"}],
is_ok: [{required: true, message: "请选择是否合格", trigger: "blur"}],
},
stateOptios:[
{id:'R',name:'正常'},
{id:'T',name:'异常'},
],
xjOptios:[
{id:'S',name:'析晶'},
{id:'K',name:'不析晶'},
{id:'θ',name:'未化'},
],
visible: false,
isSaveing: false,
userList:[],
options: [],
processOptions: [],
deptOptions: [],
selectionFilters: [],
setFiltersVisible: false,
belong_dept_options: [],
group: [],
behaviors:[],
};
},
mounted() {
console.log(this.activeId)
console.log(this.activeName)
this.form.testitem = this.activeId;
this.getTextItem();
this.getProcess();
this.getUserList();
this.getDeptOptions();
},
methods: {
//
open(mode = "add") {
this.mode = mode;
this.visible = true;
return this;
},
//
getTextItem(){
let that = this;
that.$API.qm.getTestItem.get({tag:'performance',page:0}).then(res=>{
that.behaviors = res;
})
},
//
getDeptOptions() {
this.$API.system.dept.list.req({ page: 0, type__in: 'dept' }).then((res) => {
this.deptOptions = res;
});
},
//
getUserList(){
let that = this;
this.$API.system.user.list.req({page:0,belong_dept__name:'检验管理部'}).then(res=>{
that.userList = res;
});
},
getProcess(){
let that = this;
this.$API.mtm.process.list.req({page:0}).then(res=>{
that.processOptions = res;
})
},
handleClick(){},
//
submit() {
this.$refs.dialogForm.validate(async (valid) => {
if (valid) {
this.isSaveing = true;
try {
var res;
if (this.mode == "add") {
res = await this.$API.qm.ptest.create.req(this.form);
} else if (this.mode == "edit") {
res = await this.$API.qm.ptest.update.req(this.form.id,this.form);
}
this.isSaveing = false;
this.$emit("success");
this.visible = false;
this.$message.success("操作成功");
} catch (err) {
//
this.isSaveing = false;
return err;
}
}
});
},
//
setData(data) {
Object.assign(this.form, data);
this.form.test_group = this.form.split(',')
},
//
setFilters(filters) {
this.selectionFilters = filters;
this.setFiltersVisible = true;
},
},
}; };
</script> </script>
<style> <style></style>
</style>

View File

@ -280,7 +280,7 @@ export default {
getUserList() { getUserList() {
let that = this; let that = this;
this.$API.system.user.list this.$API.system.user.list
.req({ page: 0, depts__name: "检验管理部" }) .req({ page: 0, posts__name: "检验" })
.then((res) => { .then((res) => {
that.userList = res.results; that.userList = res.results;
}); });

View File

@ -390,7 +390,7 @@ export default {
getUserList() { getUserList() {
let that = this; let that = this;
this.$API.system.user.list this.$API.system.user.list
.req({ page: 0, belong_dept__name: "检验管理部" }) .req({ page: 0, posts__name: "检验" })
.then((res) => { .then((res) => {
that.userList = res; that.userList = res;
}); });

View File

@ -38,7 +38,7 @@
<el-main class="nopadding"> <el-main class="nopadding">
<scTable ref="table" :apiObj="listApi" row-key="id" :params="listApiParams" @selection-change="selectionChange" stripe :paginationLayout="'prev, pager, next'"> <scTable ref="table" :apiObj="listApi" row-key="id" :params="listApiParams" @selection-change="selectionChange" stripe :paginationLayout="'prev, pager, next'">
<!-- <el-table-column type="selection" width="50"></el-table-column> --> <!-- <el-table-column type="selection" width="50"></el-table-column> -->
<el-table-column label="序号" type="index"></el-table-column> <el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column label="名称" prop="name" width="360"></el-table-column> <el-table-column label="名称" prop="name" width="360"></el-table-column>
<el-table-column label="标识" prop="code"></el-table-column> <el-table-column label="标识" prop="code"></el-table-column>
<el-table-column label="排序" prop="sort"></el-table-column> <el-table-column label="排序" prop="sort"></el-table-column>
@ -257,7 +257,7 @@
this.isSaveing = false; this.isSaveing = false;
if(res.name){ if(res.name){
this.visibleDicType = false; this.visibleDicType = false;
this.getDic(); this.getDicType();
this.$message.success("操作成功") this.$message.success("操作成功")
}else{ }else{
this.$alert(res.message, "提示", {type: 'error'}) this.$alert(res.message, "提示", {type: 'error'})
@ -364,7 +364,7 @@
}else{ }else{
that.$message.success("操作成功"); that.$message.success("操作成功");
that.visibleDicItem = false; that.visibleDicItem = false;
that.getDicType(); that.$refs.table.refresh()
} }
} }
}) })

View File

@ -1,9 +1,9 @@
<template> <template>
<el-button <el-button
type="primary" type="primary"
icon="el-icon-plus" icon="el-icon-plus"
@click="table_add" @click="table_add"
></el-button> ></el-button>
<el-divider></el-divider> <el-divider></el-divider>
<scTable <scTable
ref="table" ref="table"
@ -14,72 +14,176 @@
hidePagination hidePagination
hideDo hideDo
style="height: 400px" style="height: 400px"
@row-click="rowClick"
> >
<el-table-column label="类型" prop="name" width="80"></el-table-column> <el-table-column label="类型" prop="name" width="80">
<template #default="scope"
>{{ scheduleTypeEnum[scope.row.type]?.text }}
</template>
</el-table-column>
<el-table-column <el-table-column
label="名称" label="名称"
prop="name" prop="name"
min-width="100" min-width="100"
></el-table-column> ></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="80">
<template #default="scope">
<el-popconfirm
title="确定删除吗?"
@confirm="table_del(scope.row, scope.$index)"
>
<template #reference>
<el-button
link
size="small"
v-auth="'myschedule.delete'"
type="danger"
icon="el-icon-delete"
></el-button
>
</template>
</el-popconfirm>
</template>
</el-table-column>
</scTable> </scTable>
<el-dialog title="创建/编辑" v-model="dialogVisible" width="80%"> <el-dialog title="创建/编辑" v-model="dialogVisible" width="80%">
<el-form-item label="策略类型" prop="note" required> <el-form :model="saveForm" label-width="100px" ref="saveForm">
<el-select <el-form-item label="策略类型" required>
v-model="saveForm.type" <el-select v-model="saveForm.type">
> <el-option
</el-select> v-for="e in scheduleTypeEnum.values"
</el-form-item> :key="e.key"
<el-form-item label="策略式" required> :value="e.key"
每隔 :label="e.text"
<el-input-number ></el-option>
v-model="saveForm.interval_.every" </el-select>
:min="1" </el-form-item>
style="margin-left: 4px" <el-divider />
></el-input-number> <el-form-item label="策略式" required v-if="saveForm.type == 10">
<el-select <div style="display: flex">
v-model="saveForm.interval_.period" 每隔
> <el-input-number
<el-option v-model="saveForm.interval_.every"
v-for="e in schedulePeriodEnum.values" :min="1"
:key="e.key" style="margin-left: 4px"
:value="e.key" ></el-input-number>
:label="e.text" <el-select
></el-option> v-model="saveForm.interval_.period"
</el-select> style="width: 200px; margin-left: 4px"
</el-form-item> placeholder="间隔"
</el-dialog> >
<el-option
v-for="e in schedulePeriodEnum.values"
:key="e.key"
:value="e.key"
:label="e.text"
></el-option>
</el-select>
</div>
</el-form-item>
<el-form-item label="策略式" required v-if="saveForm.type == 20">
<div style="width: 100%">
<div style="display: flex">
<span style="margin-right: 4px; width: 100px">分钟</span
><el-input
v-model="saveForm.crontab_.minute"
></el-input>
</div>
<div style="display: flex; margin-top: 4px">
<span style="margin-right: 4px; width: 100px">小时</span
><el-input v-model="saveForm.crontab_.hour"></el-input>
</div>
<div style="display: flex; margin-top: 4px">
<span style="margin-right: 4px; width: 100px"
>每周的天</span
><el-input
v-model="saveForm.crontab_.day_of_week"
></el-input>
</div>
<div style="display: flex; margin-top: 4px">
<span style="margin-right: 4px; width: 100px"
>每月的天</span
><el-input
v-model="saveForm.crontab_.day_of_month"
></el-input>
</div>
<div style="display: flex; margin-top: 4px">
<span style="margin-right: 4px; width: 100px"
>每年的月</span
><el-input
v-model="saveForm.crontab_.month_of_year"
></el-input>
</div>
</div>
</el-form-item>
</el-form>
<template #footer>
<el-button
type="primary"
:loading="formSaving"
@click="formSubmit()"
> </el-button
>
</template>
</el-dialog>
</template> </template>
<script> <script>
import { scheduleTypeEnum, schedulePeriodEnum } from "@/utils/enum.js"; import { scheduleTypeEnum, schedulePeriodEnum } from "@/utils/enum.js";
const defaultForm = { const defaultForm = {
interval_: {}, interval_: {},
crontab_: {} crontab_: {},
} };
export default { export default {
name: "myschedule", name: "myschedule",
data() { data() {
return { return {
schedulePeriodEnum, scheduleTypeEnum, schedulePeriodEnum,
dialogVisible: false, scheduleTypeEnum,
formSaving: false,
dialogVisible: false,
apiObj: this.$API.system.myschedule.list, apiObj: this.$API.system.myschedule.list,
query: { query: {
search: "", search: "",
}, },
saveForm: Object.assign({}, defaultForm) params: {},
saveForm: Object.assign({}, defaultForm),
}; };
}, },
methods: { methods: {
table_add(){ rowClick(item) {
this.dialogVisible = true; console.log(item)
this.$nextTick(() => { this.$emit("scheduleChose", item);
this.saveForm = Object.assign({}, defaultForm) },
}); handleQuery() {
} this.$refs.table.queryData(this.query);
}, },
created() {}, table_add() {
mounted() {}, this.dialogVisible = true;
computed: {}, this.$nextTick(() => {
watch: {}, this.saveForm = Object.assign({}, defaultForm);
components: {}, });
},
table_del(row) {
this.$API.system.myschedule.delete.req(row.id).then(() => {
this.$message.success("操作成功");
this.handleQuery();
});
},
formSubmit() {
this.formSaving = true;
this.$refs.saveForm.validate((valid) => {
if (valid) {
this.$API.system.myschedule.create
.req(this.saveForm)
.then(() => {
this.handleQuery();
this.dialogVisible = false;
this.$message.success("操作成功");
});
}
this.formSaving = false;
});
},
},
}; };
</script> </script>