Compare commits
3 Commits
16cf0e8b69
...
9c4f408256
| Author | SHA1 | Date |
|---|---|---|
|
|
9c4f408256 | |
|
|
88d1e485f2 | |
|
|
dae8de2d5d |
|
|
@ -14,7 +14,7 @@
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.personList"
|
v-for="item in data.personList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.name"
|
:label="item.u_name"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
|
||||||
|
|
@ -218,8 +218,8 @@
|
||||||
<el-button
|
<el-button
|
||||||
v-if="
|
v-if="
|
||||||
userStore.getUserInfo.ISMAIN === '1' &&
|
userStore.getUserInfo.ISMAIN === '1' &&
|
||||||
entrance === 'archive' &&
|
row.STEP_ID !== -1 &&
|
||||||
row.STEP_ID !== -1
|
row.STEP_ID !== 0
|
||||||
"
|
"
|
||||||
type="danger"
|
type="danger"
|
||||||
text
|
text
|
||||||
|
|
@ -240,7 +240,7 @@
|
||||||
<check-list
|
<check-list
|
||||||
v-if="data.checkListDialog.visible"
|
v-if="data.checkListDialog.visible"
|
||||||
v-model:visible="data.checkListDialog.visible"
|
v-model:visible="data.checkListDialog.visible"
|
||||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||||
/>
|
/>
|
||||||
<layout-video
|
<layout-video
|
||||||
v-model:visible="data.videoDialog.visible"
|
v-model:visible="data.videoDialog.visible"
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="工段负责人" prop="WORKSHOP_USER_ID">
|
<el-form-item label="工段负责人" prop="WORKSHOP_USER_ID">
|
||||||
<el-select v-model="form.WORKSHOP_USER_ID" filterable>
|
<el-select v-model="form.WORKSHOP_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.workshopUserList"
|
v-for="item in data.workshopUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分厂贯标中心负责人" prop="LEADER_USER_ID">
|
<el-form-item label="分厂贯标中心负责人" prop="LEADER_USER_ID">
|
||||||
<el-select v-model="form.LEADER_USER_ID" filterable>
|
<el-select v-model="form.LEADER_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.leaderUserList"
|
v-for="item in data.leaderUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -61,7 +61,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
||||||
<el-select v-model="form.AUDIT_USER_ID" filterable>
|
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.auditUserList"
|
v-for="item in data.auditUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -78,7 +78,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="煤气防护站负责人" prop="APPROVE_USER_ID">
|
<el-form-item label="煤气防护站负责人" prop="APPROVE_USER_ID">
|
||||||
<el-select v-model="form.APPROVE_USER_ID" filterable>
|
<el-select v-model="form.APPROVE_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.approveUserList"
|
v-for="item in data.approveUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -94,7 +94,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="总调度室负责人" prop="PROJECT_MANAGER_USER_ID">
|
<el-form-item label="总调度室负责人" prop="PROJECT_MANAGER_USER_ID">
|
||||||
<el-select v-model="form.PROJECT_MANAGER_USER_ID" filterable>
|
<el-select v-model="form.PROJECT_MANAGER_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.projectUserList"
|
v-for="item in data.projectUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -151,23 +151,18 @@ const props = defineProps({
|
||||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||||
const { visible, form } = useVModels(props, emits);
|
const { visible, form } = useVModels(props, emits);
|
||||||
|
|
||||||
const fnHasLevel = async (rule, value, callback) => {
|
const fnHasLevel = async () => {
|
||||||
if (value) {
|
const resData = await getBlindBoardVerifyConfigurationUser({
|
||||||
const resData = await getBlindBoardVerifyConfigurationUser({
|
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
});
|
||||||
});
|
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
return ElMessage.error("该申请单位已存在");
|
||||||
callback(new Error("该申请部门已存在"));
|
|
||||||
else callback();
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const rules = {
|
const rules = {
|
||||||
APPLY_DEPARTMENT_ID: [
|
APPLY_DEPARTMENT_ID: [
|
||||||
{ required: true, message: "请选择申请部门", trigger: "change" },
|
{ required: true, message: "请选择申请部门", trigger: "change" },
|
||||||
{ validator: fnHasLevel, trigger: "blur" },
|
// { validator: fnHasLevel, trigger: "blur" },
|
||||||
],
|
],
|
||||||
LEADER_DEPARTMENT_ID: [
|
LEADER_DEPARTMENT_ID: [
|
||||||
{
|
{
|
||||||
|
|
@ -222,24 +217,24 @@ const data = reactive({
|
||||||
|
|
||||||
const fnLeaderDepartmentChange = () => {
|
const fnLeaderDepartmentChange = () => {
|
||||||
data.leaderUserList = [];
|
data.leaderUserList = [];
|
||||||
form.value.LEADER_USER_ID = "";
|
form.value.LEADER_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnAuditDepartmentChange = () => {
|
const fnAuditDepartmentChange = () => {
|
||||||
data.auditUserList = [];
|
data.auditUserList = [];
|
||||||
form.value.AUDIT_USER_ID = "";
|
form.value.AUDIT_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnApproveDepartmentChange = () => {
|
const fnApproveDepartmentChange = () => {
|
||||||
data.approveUserList = [];
|
data.approveUserList = [];
|
||||||
form.value.APPROVE_USER_ID = "";
|
form.value.APPROVE_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnWorkshopDepartmentChange = () => {
|
const fnWorkshopDepartmentChange = () => {
|
||||||
data.workshopUserList = [];
|
data.workshopUserList = [];
|
||||||
form.value.WORKSHOP_USER_ID = "";
|
form.value.WORKSHOP_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnProjectDepartmentChange = () => {
|
const fnProjectDepartmentChange = () => {
|
||||||
data.projectUserList = [];
|
data.projectUserList = [];
|
||||||
form.value.PROJECT_MANAGER_USER_ID = "";
|
form.value.PROJECT_MANAGER_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnClose = () => {
|
const fnClose = () => {
|
||||||
|
|
@ -252,11 +247,39 @@ const fnSubmit = debounce(
|
||||||
1000,
|
1000,
|
||||||
async () => {
|
async () => {
|
||||||
const form = props.form;
|
const form = props.form;
|
||||||
|
await useFormValidate(formRef);
|
||||||
|
const WORKSHOP_USER_ID = form.WORKSHOP_USER_ID
|
||||||
|
? form.WORKSHOP_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const LEADER_USER_ID = form.LEADER_USER_ID
|
||||||
|
? form.LEADER_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const AUDIT_USER_ID = form.AUDIT_USER_ID
|
||||||
|
? form.AUDIT_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const APPROVE_USER_ID = form.APPROVE_USER_ID
|
||||||
|
? form.APPROVE_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const PROJECT_MANAGER_USER_ID = form.PROJECT_MANAGER_USER_ID
|
||||||
|
? form.PROJECT_MANAGER_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const params = {
|
||||||
|
...form,
|
||||||
|
WORKSHOP_USER_ID,
|
||||||
|
LEADER_USER_ID,
|
||||||
|
AUDIT_USER_ID,
|
||||||
|
APPROVE_USER_ID,
|
||||||
|
PROJECT_MANAGER_USER_ID,
|
||||||
|
};
|
||||||
if (props.type === "add") {
|
if (props.type === "add") {
|
||||||
await useFormValidate(formRef);
|
const isCon = await fnHasLevel();
|
||||||
await setBlindBoardConfigurationUserAdd(form);
|
if (!isCon) {
|
||||||
|
await setBlindBoardConfigurationUserAdd(params);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
await setBlindBoardConfigurationUserEdit(form);
|
await setBlindBoardConfigurationUserEdit(params);
|
||||||
}
|
}
|
||||||
ElMessage.success("提交成功");
|
ElMessage.success("提交成功");
|
||||||
fnClose();
|
fnClose();
|
||||||
|
|
@ -305,6 +328,7 @@ watchEffect(() => {
|
||||||
if (form.value.PROJECT_MANAGER_DEPARTMENT_ID)
|
if (form.value.PROJECT_MANAGER_DEPARTMENT_ID)
|
||||||
fnGetProjectUser(form.value.PROJECT_MANAGER_DEPARTMENT_ID);
|
fnGetProjectUser(form.value.PROJECT_MANAGER_DEPARTMENT_ID);
|
||||||
});
|
});
|
||||||
|
watchEffect(() => {});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss"></style>
|
||||||
|
|
|
||||||
|
|
@ -169,16 +169,16 @@ const data = reactive({
|
||||||
CONFIGURATION_ID: "",
|
CONFIGURATION_ID: "",
|
||||||
APPLY_DEPARTMENT_ID: "",
|
APPLY_DEPARTMENT_ID: "",
|
||||||
WORK_LEVEL: "",
|
WORK_LEVEL: "",
|
||||||
|
WORKSHOP_DEPARTMENT_ID: "",
|
||||||
|
WORKSHOP_USER_ID: [],
|
||||||
LEADER_DEPARTMENT_ID: "",
|
LEADER_DEPARTMENT_ID: "",
|
||||||
LEADER_USER_ID: "",
|
LEADER_USER_ID: [],
|
||||||
AUDIT_DEPARTMENT_ID: "",
|
AUDIT_DEPARTMENT_ID: "",
|
||||||
AUDIT_USER_ID: "",
|
AUDIT_USER_ID: [],
|
||||||
APPROVE_DEPARTMENT_ID: "",
|
APPROVE_DEPARTMENT_ID: "",
|
||||||
APPROVE_USER_ID: "",
|
APPROVE_USER_ID: [],
|
||||||
MONITOR_DEPARTMENT_ID: "",
|
|
||||||
MONITOR_USER_ID: "",
|
|
||||||
PROJECT_MANAGER_DEPARTMENT_ID: "",
|
PROJECT_MANAGER_DEPARTMENT_ID: "",
|
||||||
PROJECT_MANAGER_USER_ID: "",
|
PROJECT_MANAGER_USER_ID: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
@ -228,6 +228,13 @@ const fnGoEdit = async (id) => {
|
||||||
const resData = await getBlindBoardConfigurationUserView({
|
const resData = await getBlindBoardConfigurationUserView({
|
||||||
CONFIGURATION_ID: id,
|
CONFIGURATION_ID: id,
|
||||||
});
|
});
|
||||||
|
resData.pd.LEADER_USER_ID = resData.pd.LEADER_USER_ID.toString().split(",");
|
||||||
|
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||||
|
resData.pd.APPROVE_USER_ID = resData.pd.APPROVE_USER_ID.toString().split(",");
|
||||||
|
resData.pd.WORKSHOP_USER_ID =
|
||||||
|
resData.pd.WORKSHOP_USER_ID.toString().split(",");
|
||||||
|
resData.pd.PROJECT_MANAGER_USER_ID =
|
||||||
|
resData.pd.PROJECT_MANAGER_USER_ID.toString().split(",");
|
||||||
data.editDialog.form = resData.pd;
|
data.editDialog.form = resData.pd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -224,8 +224,8 @@
|
||||||
<el-button
|
<el-button
|
||||||
v-if="
|
v-if="
|
||||||
userStore.getUserInfo.ISMAIN === '1' &&
|
userStore.getUserInfo.ISMAIN === '1' &&
|
||||||
entrance === 'archive' &&
|
row.STEP_ID !== -1 &&
|
||||||
row.STEP_ID !== -1
|
row.STEP_ID !== 0
|
||||||
"
|
"
|
||||||
type="danger"
|
type="danger"
|
||||||
text
|
text
|
||||||
|
|
@ -246,7 +246,7 @@
|
||||||
<check-list
|
<check-list
|
||||||
v-if="data.checkListDialog.visible"
|
v-if="data.checkListDialog.visible"
|
||||||
v-model:visible="data.checkListDialog.visible"
|
v-model:visible="data.checkListDialog.visible"
|
||||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||||
/>
|
/>
|
||||||
<layout-video
|
<layout-video
|
||||||
v-model:visible="data.videoDialog.visible"
|
v-model:visible="data.videoDialog.visible"
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="工段负责人" prop="WORKSHOP_USER_ID">
|
<el-form-item label="工段负责人" prop="WORKSHOP_USER_ID">
|
||||||
<el-select v-model="form.WORKSHOP_USER_ID" filterable>
|
<el-select v-model="form.WORKSHOP_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.workshopUserList"
|
v-for="item in data.workshopUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分厂贯标中心负责人" prop="LEADER_USER_ID">
|
<el-form-item label="分厂贯标中心负责人" prop="LEADER_USER_ID">
|
||||||
<el-select v-model="form.LEADER_USER_ID" filterable>
|
<el-select v-model="form.LEADER_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.leaderUserList"
|
v-for="item in data.leaderUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -61,7 +61,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
||||||
<el-select v-model="form.AUDIT_USER_ID" filterable>
|
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.auditUserList"
|
v-for="item in data.auditUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -78,7 +78,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="煤气防护站负责人" prop="APPROVE_USER_ID">
|
<el-form-item label="煤气防护站负责人" prop="APPROVE_USER_ID">
|
||||||
<el-select v-model="form.APPROVE_USER_ID" filterable>
|
<el-select v-model="form.APPROVE_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.approveUserList"
|
v-for="item in data.approveUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -94,7 +94,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="生产部负责人" prop="SAFETY_USER_ID">
|
<el-form-item label="生产部负责人" prop="SAFETY_USER_ID">
|
||||||
<el-select v-model="form.SAFETY_USER_ID" filterable>
|
<el-select v-model="form.SAFETY_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.safetyUserList"
|
v-for="item in data.safetyUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -110,7 +110,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="公司领导" prop="PROJECT_MANAGER_USER_ID">
|
<el-form-item label="公司领导" prop="PROJECT_MANAGER_USER_ID">
|
||||||
<el-select v-model="form.PROJECT_MANAGER_USER_ID" filterable>
|
<el-select v-model="form.PROJECT_MANAGER_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.projectUserList"
|
v-for="item in data.projectUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -167,24 +167,18 @@ const props = defineProps({
|
||||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||||
const { visible, form } = useVModels(props, emits);
|
const { visible, form } = useVModels(props, emits);
|
||||||
|
|
||||||
const fnHasLevel = async (rule, value, callback) => {
|
const fnHasLevel = async () => {
|
||||||
if (value) {
|
const resData = await getConfinedspaceVerifyConfigurationUser({
|
||||||
const resData = await getConfinedspaceVerifyConfigurationUser({
|
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||||
WORK_LEVEL: value,
|
});
|
||||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||||
});
|
return ElMessage.error("该申请单位已存在");
|
||||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
|
||||||
callback(new Error("该申请部门已存在"));
|
|
||||||
else callback();
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const rules = {
|
const rules = {
|
||||||
APPLY_DEPARTMENT_ID: [
|
APPLY_DEPARTMENT_ID: [
|
||||||
{ required: true, message: "请选择申请部门", trigger: "change" },
|
{ required: true, message: "请选择申请部门", trigger: "change" },
|
||||||
{ validator: fnHasLevel, trigger: "blur" },
|
// { validator: fnHasLevel, trigger: "blur" },
|
||||||
],
|
],
|
||||||
LEADER_DEPARTMENT_ID: [
|
LEADER_DEPARTMENT_ID: [
|
||||||
{
|
{
|
||||||
|
|
@ -213,10 +207,10 @@ const rules = {
|
||||||
{ required: true, message: "请选择安全处负责人", trigger: "change" },
|
{ required: true, message: "请选择安全处负责人", trigger: "change" },
|
||||||
],
|
],
|
||||||
SAFETY_DEPARTMENT_ID: [
|
SAFETY_DEPARTMENT_ID: [
|
||||||
{ required: true, message: "请选择安全部", trigger: "change" },
|
{ required: true, message: "请选择生产部", trigger: "change" },
|
||||||
],
|
],
|
||||||
SAFETY_USER_ID: [
|
SAFETY_USER_ID: [
|
||||||
{ required: true, message: "请选择安全部负责人", trigger: "change" },
|
{ required: true, message: "请选择生产部负责人", trigger: "change" },
|
||||||
],
|
],
|
||||||
WORKSHOP_DEPARTMENT_ID: [
|
WORKSHOP_DEPARTMENT_ID: [
|
||||||
{ required: true, message: "请选择工段部门", trigger: "change" },
|
{ required: true, message: "请选择工段部门", trigger: "change" },
|
||||||
|
|
@ -246,28 +240,28 @@ const data = reactive({
|
||||||
|
|
||||||
const fnLeaderDepartmentChange = () => {
|
const fnLeaderDepartmentChange = () => {
|
||||||
data.leaderUserList = [];
|
data.leaderUserList = [];
|
||||||
form.value.LEADER_USER_ID = "";
|
form.value.LEADER_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnAuditDepartmentChange = () => {
|
const fnAuditDepartmentChange = () => {
|
||||||
data.auditUserList = [];
|
data.auditUserList = [];
|
||||||
form.value.AUDIT_USER_ID = "";
|
form.value.AUDIT_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnApproveDepartmentChange = () => {
|
const fnApproveDepartmentChange = () => {
|
||||||
data.approveUserList = [];
|
data.approveUserList = [];
|
||||||
form.value.APPROVE_USER_ID = "";
|
form.value.APPROVE_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnSafetyDepartmentChange = () => {
|
const fnSafetyDepartmentChange = () => {
|
||||||
data.safetyUserList = [];
|
data.safetyUserList = [];
|
||||||
form.value.SAFETY_USER_ID = "";
|
form.value.SAFETY_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnWorkshopDepartmentChange = () => {
|
const fnWorkshopDepartmentChange = () => {
|
||||||
data.workshopUserList = [];
|
data.workshopUserList = [];
|
||||||
form.value.WORKSHOP_USER_ID = "";
|
form.value.WORKSHOP_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnProjectDepartmentChange = () => {
|
const fnProjectDepartmentChange = () => {
|
||||||
data.projectUserList = [];
|
data.projectUserList = [];
|
||||||
form.value.PROJECT_MANAGER_USER_ID = "";
|
form.value.PROJECT_MANAGER_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnClose = () => {
|
const fnClose = () => {
|
||||||
|
|
@ -280,11 +274,43 @@ const fnSubmit = debounce(
|
||||||
1000,
|
1000,
|
||||||
async () => {
|
async () => {
|
||||||
const form = props.form;
|
const form = props.form;
|
||||||
|
await useFormValidate(formRef);
|
||||||
|
const LEADER_USER_ID = form.LEADER_USER_ID
|
||||||
|
? form.LEADER_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const AUDIT_USER_ID = form.AUDIT_USER_ID
|
||||||
|
? form.AUDIT_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const APPROVE_USER_ID = form.APPROVE_USER_ID
|
||||||
|
? form.APPROVE_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const WORKSHOP_USER_ID = form.WORKSHOP_USER_ID
|
||||||
|
? form.WORKSHOP_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const SAFETY_USER_ID = form.SAFETY_USER_ID
|
||||||
|
? form.SAFETY_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const PROJECT_MANAGER_USER_ID = form.PROJECT_MANAGER_USER_ID
|
||||||
|
? form.PROJECT_MANAGER_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const params = {
|
||||||
|
...form,
|
||||||
|
LEADER_USER_ID,
|
||||||
|
AUDIT_USER_ID,
|
||||||
|
APPROVE_USER_ID,
|
||||||
|
WORKSHOP_USER_ID,
|
||||||
|
SAFETY_USER_ID,
|
||||||
|
PROJECT_MANAGER_USER_ID,
|
||||||
|
};
|
||||||
if (props.type === "add") {
|
if (props.type === "add") {
|
||||||
await useFormValidate(formRef);
|
const isCon = await fnHasLevel();
|
||||||
await setConfinedspaceConfigurationUserAdd(form);
|
if (!isCon) {
|
||||||
|
await setConfinedspaceConfigurationUserAdd(params);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
await setConfinedspaceConfigurationUserEdit(form);
|
await setConfinedspaceConfigurationUserEdit(params);
|
||||||
}
|
}
|
||||||
ElMessage.success("提交成功");
|
ElMessage.success("提交成功");
|
||||||
fnClose();
|
fnClose();
|
||||||
|
|
@ -339,6 +365,7 @@ watchEffect(() => {
|
||||||
if (form.value.SAFETY_DEPARTMENT_ID)
|
if (form.value.SAFETY_DEPARTMENT_ID)
|
||||||
fnGetSafetyUser(form.value.SAFETY_DEPARTMENT_ID);
|
fnGetSafetyUser(form.value.SAFETY_DEPARTMENT_ID);
|
||||||
});
|
});
|
||||||
|
watchEffect(() => {});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss"></style>
|
||||||
|
|
|
||||||
|
|
@ -179,15 +179,17 @@ const data = reactive({
|
||||||
APPLY_DEPARTMENT_ID: "",
|
APPLY_DEPARTMENT_ID: "",
|
||||||
WORK_LEVEL: "",
|
WORK_LEVEL: "",
|
||||||
LEADER_DEPARTMENT_ID: "",
|
LEADER_DEPARTMENT_ID: "",
|
||||||
LEADER_USER_ID: "",
|
LEADER_USER_ID: [],
|
||||||
AUDIT_DEPARTMENT_ID: "",
|
AUDIT_DEPARTMENT_ID: "",
|
||||||
AUDIT_USER_ID: "",
|
AUDIT_USER_ID: [],
|
||||||
APPROVE_DEPARTMENT_ID: "",
|
APPROVE_DEPARTMENT_ID: "",
|
||||||
APPROVE_USER_ID: "",
|
APPROVE_USER_ID: [],
|
||||||
MONITOR_DEPARTMENT_ID: "",
|
WORKSHOP_DEPARTMENT_ID: "",
|
||||||
MONITOR_USER_ID: "",
|
WORKSHOP_USER_ID: [],
|
||||||
|
SAFETY_DEPARTMENT_ID: "",
|
||||||
|
SAFETY_USER_ID: [],
|
||||||
PROJECT_MANAGER_DEPARTMENT_ID: "",
|
PROJECT_MANAGER_DEPARTMENT_ID: "",
|
||||||
PROJECT_MANAGER_USER_ID: "",
|
PROJECT_MANAGER_USER_ID: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
@ -237,6 +239,14 @@ const fnGoEdit = async (id) => {
|
||||||
const resData = await getConfinedspaceConfigurationUserView({
|
const resData = await getConfinedspaceConfigurationUserView({
|
||||||
CONFIGURATION_ID: id,
|
CONFIGURATION_ID: id,
|
||||||
});
|
});
|
||||||
|
resData.pd.LEADER_USER_ID = resData.pd.LEADER_USER_ID.toString().split(",");
|
||||||
|
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||||
|
resData.pd.APPROVE_USER_ID = resData.pd.APPROVE_USER_ID.toString().split(",");
|
||||||
|
resData.pd.WORKSHOP_USER_ID =
|
||||||
|
resData.pd.WORKSHOP_USER_ID.toString().split(",");
|
||||||
|
resData.pd.SAFETY_USER_ID = resData.pd.SAFETY_USER_ID.toString().split(",");
|
||||||
|
resData.pd.PROJECT_MANAGER_USER_ID =
|
||||||
|
resData.pd.PROJECT_MANAGER_USER_ID.toString().split(",");
|
||||||
data.editDialog.form = resData.pd;
|
data.editDialog.form = resData.pd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ import { ref } from "vue";
|
||||||
import { debounce } from "throttle-debounce";
|
import { debounce } from "throttle-debounce";
|
||||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||||
import { layoutFnGetInventoryLevel } from "@/assets/js/data_dictionary.js";
|
import { layoutFnGetInventoryLevel } from "@/assets/js/data_dictionary.js";
|
||||||
import LayoutDepartment from "@/components/department/index.vue";
|
import LayoutDepartment from "./department.vue";
|
||||||
import { useUserStore } from "@/pinia/user.js";
|
import { useUserStore } from "@/pinia/user.js";
|
||||||
import {
|
import {
|
||||||
setDepartmentAdd,
|
setDepartmentAdd,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
<template>
|
||||||
|
<el-tree-select
|
||||||
|
ref="treeSelectRef"
|
||||||
|
v-model="modelValue"
|
||||||
|
:data="departmentTree"
|
||||||
|
:disabled="disabled"
|
||||||
|
node-key="id"
|
||||||
|
:props="{
|
||||||
|
children: 'nodes',
|
||||||
|
label: 'name',
|
||||||
|
}"
|
||||||
|
:render-after-expand="false"
|
||||||
|
accordion
|
||||||
|
:check-strictly="checkStrictly"
|
||||||
|
:clearable="clearable"
|
||||||
|
:show-checkbox="showCheckbox"
|
||||||
|
:multiple="multiple"
|
||||||
|
:collapse-tags="collapseTags"
|
||||||
|
@check="fnCheck"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { layoutFnGetDepartmentzTree } from "@/assets/js/data_dictionary";
|
||||||
|
import { useVModel } from "@vueuse/core";
|
||||||
|
import { ref, watch } from "vue";
|
||||||
|
|
||||||
|
const treeSelectRef = ref(null);
|
||||||
|
defineOptions({
|
||||||
|
name: "LayoutDepartment",
|
||||||
|
});
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: [String, Array],
|
||||||
|
required: true,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
checkStrictly: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
showCheckbox: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
collapseTags: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
clearable: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
rootDisabled: {
|
||||||
|
type: String,
|
||||||
|
default: "N",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const emits = defineEmits(["update:modelValue"]);
|
||||||
|
const modelValue = useVModel(props, "modelValue", emits);
|
||||||
|
// if (props.multiple) {
|
||||||
|
// modelValue.value = [];
|
||||||
|
// }
|
||||||
|
const departmentTree = await layoutFnGetDepartmentzTree({
|
||||||
|
rootDisabled: props.rootDisabled,
|
||||||
|
});
|
||||||
|
|
||||||
|
// 监听 modelValue 变化,确保树加载后设置选中项
|
||||||
|
watch(
|
||||||
|
() => modelValue.value,
|
||||||
|
(newVal) => {
|
||||||
|
if (treeSelectRef.value && newVal && Array.isArray(newVal)) {
|
||||||
|
// 设置树的选中项
|
||||||
|
treeSelectRef.value.setCheckedKeys(newVal);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true } // 立即执行一次,用于初始化
|
||||||
|
);
|
||||||
|
|
||||||
|
const fnCheck = () => {
|
||||||
|
if (props.showCheckbox && !props.checkStrictly) {
|
||||||
|
modelValue.value = treeSelectRef.value.getCheckedKeys();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
|
|
@ -0,0 +1,200 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog v-model="visible" title="告警预览" width="50%" @close="fnClose">
|
||||||
|
<el-scrollbar style="height: 600px">
|
||||||
|
<div
|
||||||
|
v-if="list.length > 0"
|
||||||
|
style="display: flex; flex-wrap: wrap; gap: 20px; margin-top: 10px"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-for="item in list"
|
||||||
|
:id="'_dialog' + item.PLC_ID"
|
||||||
|
:key="item.PLC_ID"
|
||||||
|
style="width: calc(20% - 20px); height: 190px"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-else
|
||||||
|
style="
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 600px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
暂无报警设备
|
||||||
|
</div>
|
||||||
|
</el-scrollbar>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useVModel } from "@vueuse/core";
|
||||||
|
import * as echarts from "echarts";
|
||||||
|
import { nextTick, onMounted, watch } from "vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
list: {
|
||||||
|
type: Array,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const emits = defineEmits(["update:visible"]);
|
||||||
|
const visible = useVModel(props, "visible", emits);
|
||||||
|
let myChartMap = {};
|
||||||
|
const fnInitEcharts = (data) => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
// const normalColor = "rgb(255,255,255)";
|
||||||
|
// const alarmColor = "rgb(0,255,0)";
|
||||||
|
// const alarmColors = "rgb(0,0,255)";
|
||||||
|
// const normalColors = "rgb(255, 255, 0)";
|
||||||
|
// const assistantColors = "rgb(255,0,0)";
|
||||||
|
const assistantColor = "rgb(0,191,255)";
|
||||||
|
let myChart;
|
||||||
|
if (!myChartMap[`_dialog${data.PLC_ID}`]) {
|
||||||
|
myChart = echarts.init(document.querySelector(`#_dialog${data.PLC_ID}`));
|
||||||
|
} else {
|
||||||
|
myChart = myChartMap[`_dialog${data.PLC_ID}`];
|
||||||
|
}
|
||||||
|
const option = {
|
||||||
|
title: {
|
||||||
|
text: data.TARGET_PLACE.replace(/(.{20})/g, "$1\n"),
|
||||||
|
textStyle: {
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: 400,
|
||||||
|
color: assistantColor,
|
||||||
|
lineHeight: 16,
|
||||||
|
},
|
||||||
|
left: "center",
|
||||||
|
top: "0",
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: "gauge",
|
||||||
|
name: "外层辅助",
|
||||||
|
radius: "86%",
|
||||||
|
center: ["50%", "62%"],
|
||||||
|
startAngle: "225",
|
||||||
|
endAngle: "-45",
|
||||||
|
splitNumber: "120",
|
||||||
|
pointer: { show: false },
|
||||||
|
detail: { show: false },
|
||||||
|
data: [{ value: 1 }],
|
||||||
|
title: { show: false },
|
||||||
|
axisLine: {
|
||||||
|
show: true,
|
||||||
|
lineStyle: { color: [[1, assistantColor]], width: 3 },
|
||||||
|
},
|
||||||
|
axisTick: { show: false },
|
||||||
|
splitLine: { show: false },
|
||||||
|
axisLabel: { show: false },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "内层数据刻度",
|
||||||
|
type: "gauge",
|
||||||
|
radius: "75%",
|
||||||
|
center: ["50%", "62%"],
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
width: 10,
|
||||||
|
color: [
|
||||||
|
[23 / 200, "#FFFFFF"],
|
||||||
|
[50 / 200, "#00FF00"],
|
||||||
|
[100 / 200, "#0000FF"],
|
||||||
|
[160 / 200, "#FFFF00"],
|
||||||
|
[1, "#FF0000"],
|
||||||
|
// [23/200, normalColor],
|
||||||
|
// [0.50, alarmColor],
|
||||||
|
// [1.0, alarmColors],
|
||||||
|
// [1.60, normalColors],
|
||||||
|
// [2.00, assistantColors],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
max: 200,
|
||||||
|
splitLine: { show: false },
|
||||||
|
axisTick: { show: false },
|
||||||
|
axisLabel: { show: false },
|
||||||
|
detail: {
|
||||||
|
show: true,
|
||||||
|
offsetCenter: ["0", "80%"],
|
||||||
|
fontSize: 20,
|
||||||
|
color: getColorByValue(data.CURRENT_VALUE),
|
||||||
|
// color: data.CURRENT_VALUE >= 24 ? alarmColor : normalColor,
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
// color: data.CURRENT_VALUE >= 24 ? alarmColor : normalColor,
|
||||||
|
color: getColorByValue(data.CURRENT_VALUE),
|
||||||
|
},
|
||||||
|
pointer: { width: 3, length: "95%" },
|
||||||
|
data: [{ value: data.CURRENT_VALUE }],
|
||||||
|
silent: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "最内层线",
|
||||||
|
type: "gauge",
|
||||||
|
radius: "50%",
|
||||||
|
center: ["50%", "62%"],
|
||||||
|
startAngle: 360,
|
||||||
|
endAngle: 0,
|
||||||
|
axisLine: { show: false, lineStyle: { opacity: 0 } },
|
||||||
|
splitLine: { show: false, lineStyle: { opacity: 0 } },
|
||||||
|
axisLabel: { show: false },
|
||||||
|
axisTick: {
|
||||||
|
length: 2,
|
||||||
|
splitNumber: 3,
|
||||||
|
lineStyle: { color: assistantColor, width: 2, type: "dashed" },
|
||||||
|
},
|
||||||
|
detail: { show: false },
|
||||||
|
pointer: { show: false },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
myChart.setOption(option);
|
||||||
|
if (!myChartMap[`_dialog${data.PLC_ID}`]) {
|
||||||
|
myChartMap[`_dialog${data.PLC_ID}`] = myChart;
|
||||||
|
}
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
onMounted(() => {
|
||||||
|
watch(
|
||||||
|
() => [props.list, visible.value],
|
||||||
|
async (value) => {
|
||||||
|
if (value[1]) {
|
||||||
|
await nextTick();
|
||||||
|
fnDisposeEcharts();
|
||||||
|
for (const item of value[0]) {
|
||||||
|
await fnInitEcharts(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
const fnDisposeEcharts = () => {
|
||||||
|
for (const myChartListKey in myChartMap) {
|
||||||
|
myChartMap[myChartListKey].dispose();
|
||||||
|
}
|
||||||
|
myChartMap = {};
|
||||||
|
};
|
||||||
|
const fnClose = () => {
|
||||||
|
fnDisposeEcharts();
|
||||||
|
visible.value = false;
|
||||||
|
};
|
||||||
|
const getColorByValue = (value) => {
|
||||||
|
return value < 24
|
||||||
|
? "rgb(255, 255, 255)" // 白色
|
||||||
|
: value <= 50
|
||||||
|
? "rgb(0, 255, 0)" // 绿色
|
||||||
|
: value <= 100
|
||||||
|
? "rgb(0, 0, 255)" // 蓝色
|
||||||
|
: value <= 160
|
||||||
|
? "rgb(255, 255, 0)" // 黄色
|
||||||
|
: "rgb(255, 0, 0)"; // 红色
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
||||||
|
|
@ -1,33 +1,81 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div style="width: 300px">
|
<div style="width: 300px">
|
||||||
<el-input
|
<div>
|
||||||
v-model="searchTextWait"
|
<el-button
|
||||||
class="mb-10"
|
size="small"
|
||||||
placeholder="输入搜索内容"
|
style="
|
||||||
>
|
margin-right: 10px;
|
||||||
<template #append>
|
background-color: transparent;
|
||||||
<el-button :icon="Search" @click="fnSetSearch" />
|
border: 0;
|
||||||
</template>
|
color: white;
|
||||||
</el-input>
|
border-radius: 4px;
|
||||||
<el-tree
|
padding: 8px 12px;
|
||||||
ref="treeRef"
|
height: 36px;
|
||||||
node-key="label"
|
margin-bottom: 10px;
|
||||||
accordion
|
"
|
||||||
:data="treeData"
|
@click="goBack"
|
||||||
:filter-node-method="fnFilterNode"
|
>
|
||||||
:default-expanded-keys="[treeData.length > 0 ? treeData[0].label : '']"
|
<el-icon><arrow-left /></el-icon>
|
||||||
@node-click="fnNodeClick"
|
返回
|
||||||
/>
|
</el-button>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex; align-items: center; margin-bottom: 10px">
|
||||||
|
<span
|
||||||
|
style="
|
||||||
|
display: inline-block;
|
||||||
|
padding: 8px 12px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
color: white;
|
||||||
|
font-size: 14px;
|
||||||
|
"
|
||||||
|
>安装地点</span
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model="searchTextWait"
|
||||||
|
class="mb-10"
|
||||||
|
placeholder="输入搜索安装地点"
|
||||||
|
style="flex: 1"
|
||||||
|
>
|
||||||
|
<template #append>
|
||||||
|
<el-button :icon="Search" @click="fnSetSearch" />
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-tree
|
||||||
|
ref="treeRef"
|
||||||
|
node-key="label"
|
||||||
|
accordion
|
||||||
|
:data="treeData"
|
||||||
|
:filter-node-method="fnFilterNode"
|
||||||
|
:default-expanded-keys="defaultExpandedKeys"
|
||||||
|
@node-click="fnNodeClick"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="flex: 1; display: flex; flex-wrap: wrap; gap: 20px">
|
<div style="flex: 1">
|
||||||
<div
|
<div style="margin-bottom: 20px; padding: 0 20px">
|
||||||
v-for="item in list"
|
<el-breadcrumb separator="/" style="margin-top: 10px">
|
||||||
:id="'_' + item.PLC_ID"
|
<!-- 动态面包屑项 -->
|
||||||
:key="item.PLC_ID"
|
<el-breadcrumb-item
|
||||||
style="width: calc(20% - 20px); height: 190px"
|
v-for="(item, index) in breadcrumbItems"
|
||||||
@click="fnViewInfo(item)"
|
:key="index"
|
||||||
/>
|
style="padding: 0"
|
||||||
|
>
|
||||||
|
{{ item }}
|
||||||
|
</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex; flex-wrap: wrap; gap: 20px; margin-top: 10px">
|
||||||
|
<div
|
||||||
|
v-for="item in list"
|
||||||
|
:id="'_' + item.PLC_ID"
|
||||||
|
:key="item.PLC_ID"
|
||||||
|
style="width: calc(20% - 20px); height: 190px"
|
||||||
|
@click="fnViewInfo(item)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<view-info
|
<view-info
|
||||||
|
|
@ -36,6 +84,7 @@
|
||||||
v-model:visible="item.visible"
|
v-model:visible="item.visible"
|
||||||
:item="item"
|
:item="item"
|
||||||
/>
|
/>
|
||||||
|
<waring v-model:visible="waringDialog" :list="waringList" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
@ -45,7 +94,10 @@ import ViewInfo from "./components/view_info.vue";
|
||||||
import { getEquipmentInfo, getEquipmentTree } from "@/request/gas_alarm.js";
|
import { getEquipmentInfo, getEquipmentTree } from "@/request/gas_alarm.js";
|
||||||
import { useUserStore } from "@/pinia/user.js";
|
import { useUserStore } from "@/pinia/user.js";
|
||||||
import { useIntervalFn } from "@vueuse/core";
|
import { useIntervalFn } from "@vueuse/core";
|
||||||
import { Search } from "@element-plus/icons-vue";
|
import { Search, ArrowLeft } from "@element-plus/icons-vue";
|
||||||
|
import Waring from "./components/waring.vue";
|
||||||
|
import { ElNotification, ElBreadcrumb, ElBreadcrumbItem } from "element-plus";
|
||||||
|
|
||||||
const { pause, resume } = useIntervalFn(
|
const { pause, resume } = useIntervalFn(
|
||||||
() => {
|
() => {
|
||||||
fnGetData();
|
fnGetData();
|
||||||
|
|
@ -58,6 +110,9 @@ const treeRef = ref(null);
|
||||||
const treeData = ref([]);
|
const treeData = ref([]);
|
||||||
const searchText = ref("");
|
const searchText = ref("");
|
||||||
const searchTextWait = ref("");
|
const searchTextWait = ref("");
|
||||||
|
const breadcrumbItems = ref([]);
|
||||||
|
const defaultExpandedKeys = ref([]); // 新增响应式变量来控制展开节点
|
||||||
|
let isFirstLoad = true; // 标志位,标识是否为首次加载
|
||||||
const fnFilterNode = (value, data) => {
|
const fnFilterNode = (value, data) => {
|
||||||
if (!value) return true;
|
if (!value) return true;
|
||||||
return data.label.includes(value);
|
return data.label.includes(value);
|
||||||
|
|
@ -65,6 +120,24 @@ const fnFilterNode = (value, data) => {
|
||||||
const fnNodeClick = (_data, { data, parent }) => {
|
const fnNodeClick = (_data, { data, parent }) => {
|
||||||
searchTextWait.value = "";
|
searchTextWait.value = "";
|
||||||
searchText.value = "";
|
searchText.value = "";
|
||||||
|
|
||||||
|
// 构建面包屑路径
|
||||||
|
const path = [];
|
||||||
|
const current = data;
|
||||||
|
|
||||||
|
// 添加当前节点
|
||||||
|
path.unshift(current.label);
|
||||||
|
|
||||||
|
// 如果有父节点,添加父节点
|
||||||
|
if (parent && parent.data) {
|
||||||
|
if (!parent.data.length) {
|
||||||
|
path.unshift(parent.data.label);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置面包屑数据
|
||||||
|
breadcrumbItems.value = path;
|
||||||
|
|
||||||
if (parent.parent) {
|
if (parent.parent) {
|
||||||
equipmentInfoParams = {
|
equipmentInfoParams = {
|
||||||
ORG: parent.data.label,
|
ORG: parent.data.label,
|
||||||
|
|
@ -79,9 +152,16 @@ const fnNodeClick = (_data, { data, parent }) => {
|
||||||
fnDisposeEcharts();
|
fnDisposeEcharts();
|
||||||
pause();
|
pause();
|
||||||
resume();
|
resume();
|
||||||
|
|
||||||
|
// 首次加载后设置标志位为false
|
||||||
|
if (isFirstLoad) {
|
||||||
|
isFirstLoad = false;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const list = ref([]);
|
const list = ref([]);
|
||||||
|
const waringList = ref([]);
|
||||||
|
const waringDialog = ref(false);
|
||||||
const dialog = ref([]);
|
const dialog = ref([]);
|
||||||
let equipmentInfoParams = {};
|
let equipmentInfoParams = {};
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|
@ -100,15 +180,71 @@ const fnConversionTree = (data) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const fnGetTreeData = async () => {
|
const fnGetTreeData = async () => {
|
||||||
const { root } = await getEquipmentTree({
|
const { root, npd } = await getEquipmentTree({
|
||||||
DEVICE_TYPE: "gdsyyhtbjq01",
|
DEVICE_TYPE: "gdsyyhtbjq01",
|
||||||
CORPINFO_ID: userStore.getUserInfo.CORPINFO_ID,
|
CORPINFO_ID: userStore.getUserInfo.CORPINFO_ID,
|
||||||
});
|
});
|
||||||
|
|
||||||
treeData.value = fnConversionTree(root.children);
|
treeData.value = fnConversionTree(root.children);
|
||||||
equipmentInfoParams = {
|
|
||||||
ORG: treeData.value[0].label,
|
// 处理 npd.ALLDEPTNAME 值
|
||||||
DEPARTMENT: treeData.value[0].children[0].label,
|
if (npd && npd.ALLDEPTNAME) {
|
||||||
};
|
// 获取需要展开的节点
|
||||||
|
defaultExpandedKeys.value = [];
|
||||||
|
|
||||||
|
// 遍历树数据,找到包含这些部门名称的一级节点
|
||||||
|
treeData.value.forEach((node) => {
|
||||||
|
if (npd.ALLDEPTNAME.includes(node.label)) {
|
||||||
|
defaultExpandedKeys.value.push(node.label);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 只在首次加载时设置默认展开节点
|
||||||
|
if (isFirstLoad && treeData.value.length > 0) {
|
||||||
|
// 如果 defaultExpandedKeys 有值,使用它
|
||||||
|
if (defaultExpandedKeys.value.length > 0) {
|
||||||
|
// 找到对应的节点
|
||||||
|
const targetNode = treeData.value.find(
|
||||||
|
(node) => node.label === defaultExpandedKeys.value[0]
|
||||||
|
);
|
||||||
|
|
||||||
|
// 设置默认展开的节点
|
||||||
|
equipmentInfoParams = {
|
||||||
|
ORG: defaultExpandedKeys.value[0],
|
||||||
|
DEPARTMENT:
|
||||||
|
targetNode && targetNode.children && targetNode.children.length > 0
|
||||||
|
? targetNode.children[0].label
|
||||||
|
: "",
|
||||||
|
};
|
||||||
|
|
||||||
|
breadcrumbItems.value = [
|
||||||
|
defaultExpandedKeys.value[0],
|
||||||
|
targetNode.children[0].label,
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
defaultExpandedKeys.value = [treeData.value[0].label];
|
||||||
|
// 如果没有设置,默认使用第一个节点
|
||||||
|
equipmentInfoParams = {
|
||||||
|
ORG: treeData.value[0].label,
|
||||||
|
DEPARTMENT: treeData.value[0].children[0].label,
|
||||||
|
};
|
||||||
|
breadcrumbItems.value = [
|
||||||
|
treeData.value[0].label,
|
||||||
|
treeData.value[0].children[0].label,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
equipmentInfoParams = {
|
||||||
|
ORG: treeData.value[0].label,
|
||||||
|
DEPARTMENT: treeData.value[0].children[0].label,
|
||||||
|
};
|
||||||
|
breadcrumbItems.value = [
|
||||||
|
treeData.value[0].label,
|
||||||
|
treeData.value[0].children[0].label,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
resume();
|
resume();
|
||||||
};
|
};
|
||||||
let isPending = false;
|
let isPending = false;
|
||||||
|
|
@ -123,11 +259,24 @@ const fnGetData = async () => {
|
||||||
loading: false,
|
loading: false,
|
||||||
});
|
});
|
||||||
list.value = varList;
|
list.value = varList;
|
||||||
|
waringList.value = varList.filter((item) => item.CURRENT_VALUE >= 24);
|
||||||
|
if (waringList.value.length > 0) {
|
||||||
|
ElNotification({
|
||||||
|
title: "警告",
|
||||||
|
message: `<div style="color:#606266">当前有${waringList.value.length}个设备处于报警状态</div>`,
|
||||||
|
type: "warning",
|
||||||
|
dangerouslyUseHTMLString: true,
|
||||||
|
duration: 5000,
|
||||||
|
onClick: () => {
|
||||||
|
waringDialog.value = true;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
isPending = false;
|
isPending = false;
|
||||||
await nextTick();
|
await nextTick();
|
||||||
list.value.forEach(async (item) => {
|
for (const item of list.value) {
|
||||||
await fnInitEcharts(item);
|
await fnInitEcharts(item);
|
||||||
});
|
}
|
||||||
};
|
};
|
||||||
let myChartMap = {};
|
let myChartMap = {};
|
||||||
const fnInitEcharts = (data) => {
|
const fnInitEcharts = (data) => {
|
||||||
|
|
@ -186,11 +335,11 @@ const fnInitEcharts = (data) => {
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
width: 10,
|
width: 10,
|
||||||
color: [
|
color: [
|
||||||
[23/200, '#FFFFFF'],
|
[23 / 200, "#FFFFFF"],
|
||||||
[50/200, '#00FF00'],
|
[50 / 200, "#00FF00"],
|
||||||
[100/200, '#0000FF'],
|
[100 / 200, "#0000FF"],
|
||||||
[160/200, '#FFFF00'],
|
[160 / 200, "#FFFF00"],
|
||||||
[1, '#FF0000']
|
[1, "#FF0000"],
|
||||||
// [23/200, normalColor],
|
// [23/200, normalColor],
|
||||||
// [0.50, alarmColor],
|
// [0.50, alarmColor],
|
||||||
// [1.0, alarmColors],
|
// [1.0, alarmColors],
|
||||||
|
|
@ -207,12 +356,12 @@ const fnInitEcharts = (data) => {
|
||||||
show: true,
|
show: true,
|
||||||
offsetCenter: ["0", "80%"],
|
offsetCenter: ["0", "80%"],
|
||||||
fontSize: 20,
|
fontSize: 20,
|
||||||
color: getColorByValue(data.CURRENT_VALUE)
|
color: getColorByValue(data.CURRENT_VALUE),
|
||||||
// color: data.CURRENT_VALUE >= 24 ? alarmColor : normalColor,
|
// color: data.CURRENT_VALUE >= 24 ? alarmColor : normalColor,
|
||||||
},
|
},
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
// color: data.CURRENT_VALUE >= 24 ? alarmColor : normalColor,
|
// color: data.CURRENT_VALUE >= 24 ? alarmColor : normalColor,
|
||||||
color: getColorByValue(data.CURRENT_VALUE)
|
color: getColorByValue(data.CURRENT_VALUE),
|
||||||
},
|
},
|
||||||
pointer: { width: 3, length: "95%" },
|
pointer: { width: 3, length: "95%" },
|
||||||
data: [{ value: data.CURRENT_VALUE }],
|
data: [{ value: data.CURRENT_VALUE }],
|
||||||
|
|
@ -267,12 +416,21 @@ const fnDisposeEcharts = () => {
|
||||||
myChartMap = {};
|
myChartMap = {};
|
||||||
};
|
};
|
||||||
const getColorByValue = (value) => {
|
const getColorByValue = (value) => {
|
||||||
return value < 24 ? 'rgb(255, 255, 255)' : // 白色
|
return value < 24
|
||||||
value <= 50 ? 'rgb(0, 255, 0)' : // 绿色
|
? "rgb(255, 255, 255)" // 白色
|
||||||
value <= 100 ? 'rgb(0, 0, 255)' : // 蓝色
|
: value <= 50
|
||||||
value <= 160 ? 'rgb(255, 255, 0)' : // 黄色
|
? "rgb(0, 255, 0)" // 绿色
|
||||||
'rgb(255, 0, 0)'; // 红色
|
: value <= 100
|
||||||
|
? "rgb(0, 0, 255)" // 蓝色
|
||||||
|
: value <= 160
|
||||||
|
? "rgb(255, 255, 0)" // 黄色
|
||||||
|
: "rgb(255, 0, 0)"; // 红色
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const goBack = () => {
|
||||||
|
window.history.back();
|
||||||
|
};
|
||||||
|
|
||||||
onBeforeUnmount(() => {
|
onBeforeUnmount(() => {
|
||||||
fnDisposeEcharts();
|
fnDisposeEcharts();
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -201,8 +201,8 @@
|
||||||
<el-button
|
<el-button
|
||||||
v-if="
|
v-if="
|
||||||
userStore.getUserInfo.ISMAIN === '1' &&
|
userStore.getUserInfo.ISMAIN === '1' &&
|
||||||
entrance === 'archive' &&
|
row.STEP_ID !== -1 &&
|
||||||
row.STEP_ID !== -1
|
row.STEP_ID !== 0
|
||||||
"
|
"
|
||||||
type="danger"
|
type="danger"
|
||||||
text
|
text
|
||||||
|
|
@ -223,7 +223,7 @@
|
||||||
<check-list
|
<check-list
|
||||||
v-if="data.checkListDialog.visible"
|
v-if="data.checkListDialog.visible"
|
||||||
v-model:visible="data.checkListDialog.visible"
|
v-model:visible="data.checkListDialog.visible"
|
||||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||||
/>
|
/>
|
||||||
<layout-video
|
<layout-video
|
||||||
v-model:visible="data.videoDialog.visible"
|
v-model:visible="data.videoDialog.visible"
|
||||||
|
|
@ -248,7 +248,8 @@ import {
|
||||||
getGroundbreakingList,
|
getGroundbreakingList,
|
||||||
getTaskSetps,
|
getTaskSetps,
|
||||||
getGroundbreakingFlow,
|
getGroundbreakingFlow,
|
||||||
setEightWorkInvalid, getApplyDept
|
setEightWorkInvalid,
|
||||||
|
getApplyDept,
|
||||||
} from "@/request/eight_work.js";
|
} from "@/request/eight_work.js";
|
||||||
import CheckList from "@/components/safety_briefing_checklist/index.vue";
|
import CheckList from "@/components/safety_briefing_checklist/index.vue";
|
||||||
import ShowPoints from "@/views/map_settings/assignment_ticket_area_settings/components/show_points.vue";
|
import ShowPoints from "@/views/map_settings/assignment_ticket_area_settings/components/show_points.vue";
|
||||||
|
|
|
||||||
|
|
@ -22,22 +22,6 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分厂部门" prop="AUDIT_DEPARTMENT_ID">
|
|
||||||
<layout-department
|
|
||||||
v-model="form.AUDIT_DEPARTMENT_ID"
|
|
||||||
@update:model-value="fnAuditDepartmentChange"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
|
||||||
<el-select v-model="form.AUDIT_USER_ID" filterable>
|
|
||||||
<el-option
|
|
||||||
v-for="item in data.auditUserList"
|
|
||||||
:key="item.USER_ID"
|
|
||||||
:label="item.NAME"
|
|
||||||
:value="item.USER_ID"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="form.WORK_LEVEL === '4' || !form.WORK_LEVEL"
|
v-if="form.WORK_LEVEL === '4' || !form.WORK_LEVEL"
|
||||||
label="所在单位"
|
label="所在单位"
|
||||||
|
|
@ -53,7 +37,7 @@
|
||||||
label="所在单位负责人"
|
label="所在单位负责人"
|
||||||
prop="SAFETY_USER_ID"
|
prop="SAFETY_USER_ID"
|
||||||
>
|
>
|
||||||
<el-select v-model="form.SAFETY_USER_ID" filterable>
|
<el-select v-model="form.SAFETY_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.safetyUserList"
|
v-for="item in data.safetyUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -62,6 +46,22 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="分厂部门" prop="AUDIT_DEPARTMENT_ID">
|
||||||
|
<layout-department
|
||||||
|
v-model="form.AUDIT_DEPARTMENT_ID"
|
||||||
|
@update:model-value="fnAuditDepartmentChange"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
||||||
|
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||||
|
<el-option
|
||||||
|
v-for="item in data.auditUserList"
|
||||||
|
:key="item.USER_ID"
|
||||||
|
:label="item.NAME"
|
||||||
|
:value="item.USER_ID"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="fnClose">取 消</el-button>
|
<el-button @click="fnClose">取 消</el-button>
|
||||||
|
|
@ -110,23 +110,18 @@ const props = defineProps({
|
||||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||||
const { visible, form } = useVModels(props, emits);
|
const { visible, form } = useVModels(props, emits);
|
||||||
|
|
||||||
const fnHasLevel = async (rule, value, callback) => {
|
const fnHasLevel = async () => {
|
||||||
if (value) {
|
const resData = await getBreakGroundVerifyConfigurationUser({
|
||||||
const resData = await getBreakGroundVerifyConfigurationUser({
|
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
});
|
||||||
});
|
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
return ElMessage.error("该申请单位已存在");
|
||||||
callback(new Error("该申请部门已存在"));
|
|
||||||
else callback();
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const rules = {
|
const rules = {
|
||||||
APPLY_DEPARTMENT_ID: [
|
APPLY_DEPARTMENT_ID: [
|
||||||
{ required: true, message: "请选择申请部门", trigger: "change" },
|
{ required: true, message: "请选择申请部门", trigger: "change" },
|
||||||
{ validator: fnHasLevel, trigger: "blur" },
|
// { validator: fnHasLevel, trigger: "blur" },
|
||||||
],
|
],
|
||||||
|
|
||||||
AUDIT_DEPARTMENT_ID: [
|
AUDIT_DEPARTMENT_ID: [
|
||||||
|
|
@ -163,12 +158,12 @@ const data = reactive({
|
||||||
|
|
||||||
const fnAuditDepartmentChange = () => {
|
const fnAuditDepartmentChange = () => {
|
||||||
data.auditUserList = [];
|
data.auditUserList = [];
|
||||||
form.value.AUDIT_USER_ID = "";
|
form.value.AUDIT_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnSafetyDepartmentChange = () => {
|
const fnSafetyDepartmentChange = () => {
|
||||||
data.safetyUserList = [];
|
data.safetyUserList = [];
|
||||||
form.value.SAFETY_USER_ID = "";
|
form.value.SAFETY_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnClose = () => {
|
const fnClose = () => {
|
||||||
|
|
@ -181,11 +176,28 @@ const fnSubmit = debounce(
|
||||||
1000,
|
1000,
|
||||||
async () => {
|
async () => {
|
||||||
const form = props.form;
|
const form = props.form;
|
||||||
|
|
||||||
|
await useFormValidate(formRef);
|
||||||
|
const AUDIT_USER_ID = form.AUDIT_USER_ID
|
||||||
|
? form.AUDIT_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const SAFETY_USER_ID = form.SAFETY_USER_ID
|
||||||
|
? form.SAFETY_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const params = {
|
||||||
|
...form,
|
||||||
|
AUDIT_USER_ID,
|
||||||
|
SAFETY_USER_ID,
|
||||||
|
};
|
||||||
if (props.type === "add") {
|
if (props.type === "add") {
|
||||||
await useFormValidate(formRef);
|
const isCon = await fnHasLevel();
|
||||||
await setBreakGroundConfigurationUserAdd(form);
|
if (!isCon) {
|
||||||
|
await setBreakGroundConfigurationUserAdd(params);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
await setBreakGroundConfigurationUserEdit(form);
|
await setBreakGroundConfigurationUserEdit(params);
|
||||||
}
|
}
|
||||||
ElMessage.success("提交成功");
|
ElMessage.success("提交成功");
|
||||||
fnClose();
|
fnClose();
|
||||||
|
|
@ -215,8 +227,8 @@ watchEffect(() => {
|
||||||
fnGetAuditUser(form.value.AUDIT_DEPARTMENT_ID);
|
fnGetAuditUser(form.value.AUDIT_DEPARTMENT_ID);
|
||||||
if (form.value.SAFETY_DEPARTMENT_ID)
|
if (form.value.SAFETY_DEPARTMENT_ID)
|
||||||
fnGetSafetyUser(form.value.SAFETY_DEPARTMENT_ID);
|
fnGetSafetyUser(form.value.SAFETY_DEPARTMENT_ID);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
watchEffect(() => {});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss"></style>
|
||||||
|
|
|
||||||
|
|
@ -48,16 +48,6 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="APPLY_DEPARTMENT_NAME" label="申请单位" />
|
<el-table-column prop="APPLY_DEPARTMENT_NAME" label="申请单位" />
|
||||||
<el-table-column
|
|
||||||
prop="AUDIT_DEPARTMENT_NAME"
|
|
||||||
label="分厂部门"
|
|
||||||
width="150"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
prop="AUDIT_USER_NAME"
|
|
||||||
label="分厂部门负责人"
|
|
||||||
width="150"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="SAFETY_DEPARTMENT_NAME"
|
prop="SAFETY_DEPARTMENT_NAME"
|
||||||
label="水、电、汽、工艺、设备、消防、 安全管理等动土所在单位"
|
label="水、电、汽、工艺、设备、消防、 安全管理等动土所在单位"
|
||||||
|
|
@ -68,6 +58,16 @@
|
||||||
label="水、电、汽、工艺、设备、消防、 安全管理等动土所在单位负责人"
|
label="水、电、汽、工艺、设备、消防、 安全管理等动土所在单位负责人"
|
||||||
width="390"
|
width="390"
|
||||||
/>
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="AUDIT_DEPARTMENT_NAME"
|
||||||
|
label="分厂部门"
|
||||||
|
width="150"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="AUDIT_USER_NAME"
|
||||||
|
label="分厂部门负责人"
|
||||||
|
width="150"
|
||||||
|
/>
|
||||||
|
|
||||||
<el-table-column label="操作" align="center" width="240">
|
<el-table-column label="操作" align="center" width="240">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
|
|
@ -138,9 +138,9 @@ const data = reactive({
|
||||||
CONFIGURATION_ID: "",
|
CONFIGURATION_ID: "",
|
||||||
APPLY_DEPARTMENT_ID: "",
|
APPLY_DEPARTMENT_ID: "",
|
||||||
AUDIT_DEPARTMENT_ID: "",
|
AUDIT_DEPARTMENT_ID: "",
|
||||||
AUDIT_USER_ID: "",
|
AUDIT_USER_ID: [],
|
||||||
SAFETY_DEPARTMENT_ID: "",
|
SAFETY_DEPARTMENT_ID: "",
|
||||||
SAFETY_USER_ID: "",
|
SAFETY_USER_ID: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
@ -192,6 +192,8 @@ const fnGoEdit = async (id) => {
|
||||||
const resData = await getBreakGroundConfigurationUserView({
|
const resData = await getBreakGroundConfigurationUserView({
|
||||||
CONFIGURATION_ID: id,
|
CONFIGURATION_ID: id,
|
||||||
});
|
});
|
||||||
|
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||||
|
resData.pd.SAFETY_USER_ID = resData.pd.SAFETY_USER_ID.toString().split(",");
|
||||||
data.editDialog.form = resData.pd;
|
data.editDialog.form = resData.pd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,7 @@ const fnSubmit = debounce(
|
||||||
...params,
|
...params,
|
||||||
// 来源 2风险清单 隐患清单
|
// 来源 2风险清单 隐患清单
|
||||||
SOURCE: "2",
|
SOURCE: "2",
|
||||||
|
HAVESCHEME: 0,
|
||||||
RISK_UNIT: props.info.RISKUNITNAME,
|
RISK_UNIT: props.info.RISKUNITNAME,
|
||||||
IDENTIFICATION: props.info.PARTSNAME,
|
IDENTIFICATION: props.info.PARTSNAME,
|
||||||
RISK_DESCR: props.info.RISK_DESCR,
|
RISK_DESCR: props.info.RISK_DESCR,
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,7 @@ const fnSubmit = debounce(
|
||||||
...form.value,
|
...form.value,
|
||||||
STATE: "16",
|
STATE: "16",
|
||||||
HAVESCHEME: 0,
|
HAVESCHEME: 0,
|
||||||
|
IS_REBUILD: 0,
|
||||||
HIDDENTYPE1: form.value.HIDDENTYPE[0],
|
HIDDENTYPE1: form.value.HIDDENTYPE[0],
|
||||||
HIDDENTYPE2: form.value.HIDDENTYPE[1],
|
HIDDENTYPE2: form.value.HIDDENTYPE[1],
|
||||||
HIDDENTYPE3: form.value.HIDDENTYPE[2],
|
HIDDENTYPE3: form.value.HIDDENTYPE[2],
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@
|
||||||
<el-divider />
|
<el-divider />
|
||||||
<el-checkbox-group v-model="checkOptions" @change="fnCheckedChange">
|
<el-checkbox-group v-model="checkOptions" @change="fnCheckedChange">
|
||||||
<el-row>
|
<el-row>
|
||||||
|
<el-col v-for="(item, index) in defaultOptions" :key="index" :span="4">
|
||||||
|
<el-checkbox :label="item" :value="item" />
|
||||||
|
</el-col>
|
||||||
<el-col v-for="(item, index) in options" :key="index" :span="4">
|
<el-col v-for="(item, index) in options" :key="index" :span="4">
|
||||||
<el-checkbox :label="item" :value="item" />
|
<el-checkbox :label="item" :value="item" />
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -71,7 +74,6 @@ const options = [
|
||||||
"检查内容",
|
"检查内容",
|
||||||
"隐患级别",
|
"隐患级别",
|
||||||
"隐患状态",
|
"隐患状态",
|
||||||
"隐患部位",
|
|
||||||
"隐患发现部门",
|
"隐患发现部门",
|
||||||
"发现人",
|
"发现人",
|
||||||
"隐患确认部门",
|
"隐患确认部门",
|
||||||
|
|
@ -98,12 +100,13 @@ const options = [
|
||||||
"验收时间",
|
"验收时间",
|
||||||
"验收图片",
|
"验收图片",
|
||||||
];
|
];
|
||||||
const checkAll = ref(true);
|
const checkAll = ref(false);
|
||||||
const isIndeterminate = ref(false);
|
const isIndeterminate = ref(false);
|
||||||
const checkOptions = ref(options);
|
const checkOptions = ref(defaultOptions);
|
||||||
const havePicture = ref(false);
|
const havePicture = ref(false);
|
||||||
const fnCheckAllChange = (val) => {
|
const fnCheckAllChange = (val) => {
|
||||||
checkOptions.value = val ? options : [];
|
// 把defaultOptions+options赋给checkOptions
|
||||||
|
checkOptions.value = val ? [...defaultOptions, ...options] : [];
|
||||||
isIndeterminate.value = false;
|
isIndeterminate.value = false;
|
||||||
};
|
};
|
||||||
const fnCheckedChange = (value) => {
|
const fnCheckedChange = (value) => {
|
||||||
|
|
@ -113,16 +116,15 @@ const fnCheckedChange = (value) => {
|
||||||
};
|
};
|
||||||
const fnClose = () => {
|
const fnClose = () => {
|
||||||
visible.value = false;
|
visible.value = false;
|
||||||
checkOptions.value = options;
|
checkOptions.value = defaultOptions;
|
||||||
isIndeterminate.value = false;
|
isIndeterminate.value = false;
|
||||||
checkAll.value = true;
|
checkAll.value = false;
|
||||||
havePicture.value = false;
|
havePicture.value = false;
|
||||||
};
|
};
|
||||||
const fnSubmit = debounce(
|
const fnSubmit = debounce(
|
||||||
1000,
|
1000,
|
||||||
() => {
|
() => {
|
||||||
checkOptions.value = [...defaultOptions, ...checkOptions.value];
|
checkOptions.value = [...checkOptions.value];
|
||||||
console.log(checkOptions.value);
|
|
||||||
let data = {
|
let data = {
|
||||||
havePicture: 1,
|
havePicture: 1,
|
||||||
ids: props.ids.join(","),
|
ids: props.ids.join(","),
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,18 @@
|
||||||
@submit.prevent="fnResetPaginationTransfer"
|
@submit.prevent="fnResetPaginationTransfer"
|
||||||
>
|
>
|
||||||
<el-row>
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="隐患区域" prop="checkedIds">
|
||||||
|
<layout-department
|
||||||
|
v-model="searchForm.checkedIds"
|
||||||
|
show-checkbox
|
||||||
|
multiple
|
||||||
|
collapse-tags
|
||||||
|
:check-strictly="false"
|
||||||
|
root-disabled="Y"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="隐患描述" prop="KEYWORDS">
|
<el-form-item label="隐患描述" prop="KEYWORDS">
|
||||||
<el-input v-model="searchForm.KEYWORDS" />
|
<el-input v-model="searchForm.KEYWORDS" />
|
||||||
|
|
@ -113,19 +125,15 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="24">
|
||||||
<el-form-item label-width="10px">
|
<el-form-item label-width="10px" class="end">
|
||||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||||
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
<el-button native-type="reset" @click="fnResetPaginationTransfer">
|
||||||
重置
|
重置
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- <el-button type="success" @click="fnReport"> 上报</el-button>-->
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label-width="10px" class="end">
|
|
||||||
<el-button @click="fnPrint">打印</el-button>
|
<el-button @click="fnPrint">打印</el-button>
|
||||||
<el-button @click="fnExport">导出</el-button>
|
<el-button @click="fnExport">导出</el-button>
|
||||||
|
<!-- <el-button type="success" @click="fnReport"> 上报</el-button>-->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -203,7 +211,9 @@
|
||||||
/>
|
/>
|
||||||
<el-table-column label="是否合格" width="100">
|
<el-table-column label="是否合格" width="100">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<span v-if="row.CHECK_STATUS === '1'"> 是 </span>
|
<span v-if="row.CHECK_STATUS === '1' || row.STATE === '4'">
|
||||||
|
是
|
||||||
|
</span>
|
||||||
<span v-else> 否 </span>
|
<span v-else> 否 </span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -355,6 +365,7 @@ const fnGetDataTransfer = () => {
|
||||||
ENDTIME: searchForm.value.dates?.[1],
|
ENDTIME: searchForm.value.dates?.[1],
|
||||||
HIDDEN_RECTIFICATION_DEPT_IDS:
|
HIDDEN_RECTIFICATION_DEPT_IDS:
|
||||||
searchForm.value.HIDDEN_RECTIFICATION_DEPT_IDS?.join(","),
|
searchForm.value.HIDDEN_RECTIFICATION_DEPT_IDS?.join(","),
|
||||||
|
checkedIds: searchForm.value.checkedIds?.join(","),
|
||||||
HIDDEN_FIND_DEPT_IDS: searchForm.value.HIDDEN_FIND_DEPT_IDS?.join(","),
|
HIDDEN_FIND_DEPT_IDS: searchForm.value.HIDDEN_FIND_DEPT_IDS?.join(","),
|
||||||
HIDDEN_CONFIRM_DEPT_IDS:
|
HIDDEN_CONFIRM_DEPT_IDS:
|
||||||
searchForm.value.HIDDEN_CONFIRM_DEPT_IDS?.join(","),
|
searchForm.value.HIDDEN_CONFIRM_DEPT_IDS?.join(","),
|
||||||
|
|
@ -366,6 +377,7 @@ const fnResetPaginationTransfer = () => {
|
||||||
ENDTIME: searchForm.value.dates?.[1],
|
ENDTIME: searchForm.value.dates?.[1],
|
||||||
HIDDEN_RECTIFICATION_DEPT_IDS:
|
HIDDEN_RECTIFICATION_DEPT_IDS:
|
||||||
searchForm.value.HIDDEN_RECTIFICATION_DEPT_IDS?.join(","),
|
searchForm.value.HIDDEN_RECTIFICATION_DEPT_IDS?.join(","),
|
||||||
|
checkedIds: searchForm.value.checkedIds?.join(","),
|
||||||
HIDDEN_FIND_DEPT_IDS: searchForm.value.HIDDEN_FIND_DEPT_IDS?.join(","),
|
HIDDEN_FIND_DEPT_IDS: searchForm.value.HIDDEN_FIND_DEPT_IDS?.join(","),
|
||||||
HIDDEN_CONFIRM_DEPT_IDS:
|
HIDDEN_CONFIRM_DEPT_IDS:
|
||||||
searchForm.value.HIDDEN_CONFIRM_DEPT_IDS?.join(","),
|
searchForm.value.HIDDEN_CONFIRM_DEPT_IDS?.join(","),
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="SAFETY_USER_NAME"
|
prop="SAFETY_USER_NAME"
|
||||||
label="安全部负责人"
|
label="生产部负责人"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
|
|
@ -122,7 +122,7 @@
|
||||||
<check-list
|
<check-list
|
||||||
v-if="data.checkListDialog.visible"
|
v-if="data.checkListDialog.visible"
|
||||||
v-model:visible="data.checkListDialog.visible"
|
v-model:visible="data.checkListDialog.visible"
|
||||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="SAFETY_USER_NAME"
|
prop="SAFETY_USER_NAME"
|
||||||
label="安全部负责人"
|
label="生产部负责人"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
|
|
@ -208,8 +208,8 @@
|
||||||
<el-button
|
<el-button
|
||||||
v-if="
|
v-if="
|
||||||
userStore.getUserInfo.ISMAIN === '1' &&
|
userStore.getUserInfo.ISMAIN === '1' &&
|
||||||
entrance === 'archive' &&
|
row.STEP_ID !== -1 &&
|
||||||
row.STEP_ID !== -1
|
row.STEP_ID !== 0
|
||||||
"
|
"
|
||||||
type="danger"
|
type="danger"
|
||||||
text
|
text
|
||||||
|
|
@ -230,7 +230,7 @@
|
||||||
<check-list
|
<check-list
|
||||||
v-if="data.checkListDialog.visible"
|
v-if="data.checkListDialog.visible"
|
||||||
v-model:visible="data.checkListDialog.visible"
|
v-model:visible="data.checkListDialog.visible"
|
||||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||||
/>
|
/>
|
||||||
<layout-video
|
<layout-video
|
||||||
v-model:visible="data.videoDialog.visible"
|
v-model:visible="data.videoDialog.visible"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,11 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="title">作业申请单位</td>
|
<td class="title">作业申请单位</td>
|
||||||
<td>{{ data.info.APPLY_DEPARTMENT_NAME }}-{{data.info.APPLY_WORKSHOP_DEPARTMENT_NAME}}</td>
|
<td>
|
||||||
|
{{ data.info.APPLY_DEPARTMENT_NAME }}-{{
|
||||||
|
data.info.APPLY_WORKSHOP_DEPARTMENT_NAME
|
||||||
|
}}
|
||||||
|
</td>
|
||||||
<td class="title">申请人</td>
|
<td class="title">申请人</td>
|
||||||
<td>{{ data.info.APPLY_USER_NAME }}</td>
|
<td>{{ data.info.APPLY_USER_NAME }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -287,7 +291,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-if="data.signs.SAFETY">
|
<tr v-if="data.signs.SAFETY">
|
||||||
<td colspan="10">
|
<td colspan="10">
|
||||||
<div>安全部意见:{{ data.signs.SAFETY?.[0].DESCR }}</div>
|
<div>生产部意见:{{ data.signs.SAFETY?.[0].DESCR }}</div>
|
||||||
<div
|
<div
|
||||||
v-for="(item, index) in data.signs.SAFETY?.[0].SIGN_TIME"
|
v-for="(item, index) in data.signs.SAFETY?.[0].SIGN_TIME"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,12 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="高处作业级别" prop="WORK_LEVEL">
|
<el-form-item label="高处作业级别" prop="WORK_LEVEL">
|
||||||
<el-select v-model="form.WORK_LEVEL" placeholder="请选择高处作业级别" :disabled="props.type === 'edit'">
|
<el-select
|
||||||
|
v-model="form.WORK_LEVEL"
|
||||||
|
placeholder="请选择高处作业级别"
|
||||||
|
:disabled="props.type === 'edit'"
|
||||||
|
@change="fnWorkLevelChange"
|
||||||
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.levelList"
|
v-for="item in data.levelList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
|
|
@ -39,7 +44,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="工段负责人" prop="WORKSHOP_USER_ID">
|
<el-form-item label="工段负责人" prop="WORKSHOP_USER_ID">
|
||||||
<el-select v-model="form.WORKSHOP_USER_ID" filterable>
|
<el-select v-model="form.WORKSHOP_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.workshopUserList"
|
v-for="item in data.workshopUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -54,8 +59,13 @@
|
||||||
@update:model-value="fnLeaderDepartmentChange"
|
@update:model-value="fnLeaderDepartmentChange"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分厂贯标中心负责人" prop="LEADER_USER_ID" filterable>
|
<el-form-item
|
||||||
<el-select v-model="form.LEADER_USER_ID">
|
label="分厂贯标中心负责人"
|
||||||
|
prop="LEADER_USER_ID"
|
||||||
|
filterable
|
||||||
|
multiple
|
||||||
|
>
|
||||||
|
<el-select v-model="form.LEADER_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.leaderUserList"
|
v-for="item in data.leaderUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -89,7 +99,7 @@
|
||||||
label="分厂负责人"
|
label="分厂负责人"
|
||||||
prop="AUDIT_USER_ID"
|
prop="AUDIT_USER_ID"
|
||||||
>
|
>
|
||||||
<el-select v-model="form.AUDIT_USER_ID" filterable>
|
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.auditUserList"
|
v-for="item in data.auditUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -118,7 +128,7 @@
|
||||||
label="安全处负责人"
|
label="安全处负责人"
|
||||||
prop="APPROVE_USER_ID"
|
prop="APPROVE_USER_ID"
|
||||||
>
|
>
|
||||||
<el-select v-model="form.APPROVE_USER_ID" filterable>
|
<el-select v-model="form.APPROVE_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.approveUserList"
|
v-for="item in data.approveUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -129,7 +139,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="form.WORK_LEVEL === '4' || !form.WORK_LEVEL"
|
v-if="form.WORK_LEVEL === '4' || !form.WORK_LEVEL"
|
||||||
label="安全部"
|
label="生产部"
|
||||||
prop="SAFETY_DEPARTMENT_ID"
|
prop="SAFETY_DEPARTMENT_ID"
|
||||||
>
|
>
|
||||||
<layout-department
|
<layout-department
|
||||||
|
|
@ -139,10 +149,10 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="form.WORK_LEVEL === '4' || !form.WORK_LEVEL"
|
v-if="form.WORK_LEVEL === '4' || !form.WORK_LEVEL"
|
||||||
label="安全部负责人"
|
label="生产部负责人"
|
||||||
prop="SAFETY_USER_ID"
|
prop="SAFETY_USER_ID"
|
||||||
>
|
>
|
||||||
<el-select v-model="form.SAFETY_USER_ID" filterable>
|
<el-select v-model="form.SAFETY_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.safetyUserList"
|
v-for="item in data.safetyUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -199,17 +209,15 @@ const props = defineProps({
|
||||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||||
const { visible, form } = useVModels(props, emits);
|
const { visible, form } = useVModels(props, emits);
|
||||||
|
|
||||||
const fnHasLevel = async (rule, value, callback) => {
|
const fnHasLevel = async (value) => {
|
||||||
if (value) {
|
if (value) {
|
||||||
const resData = await getHighVerifyConfigurationUser({
|
const resData = await getHighVerifyConfigurationUser({
|
||||||
WORK_LEVEL: value,
|
WORK_LEVEL: value,
|
||||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||||
});
|
});
|
||||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||||
callback(new Error("该申请单位和高处作业等级已存在"));
|
return ElMessage.error("该申请单位和高处作业等级已存在");
|
||||||
else callback();
|
// callback(new Error("该申请单位和高处作业等级已存在"));
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -218,8 +226,8 @@ const rules = {
|
||||||
{ required: true, message: "请选择申请部门", trigger: "change" },
|
{ required: true, message: "请选择申请部门", trigger: "change" },
|
||||||
],
|
],
|
||||||
WORK_LEVEL: [
|
WORK_LEVEL: [
|
||||||
{ required: true, message: "请选择动火等级", trigger: "blur" },
|
{ required: true, message: "请选择高处作业等级", trigger: "blur" },
|
||||||
{ validator: fnHasLevel, trigger: "blur" },
|
// { validator: fnHasLevel, trigger: "blur" },
|
||||||
],
|
],
|
||||||
LEADER_DEPARTMENT_ID: [
|
LEADER_DEPARTMENT_ID: [
|
||||||
{
|
{
|
||||||
|
|
@ -248,10 +256,10 @@ const rules = {
|
||||||
{ required: true, message: "请选择安全处负责人", trigger: "change" },
|
{ required: true, message: "请选择安全处负责人", trigger: "change" },
|
||||||
],
|
],
|
||||||
SAFETY_DEPARTMENT_ID: [
|
SAFETY_DEPARTMENT_ID: [
|
||||||
{ required: true, message: "请选择安全部", trigger: "change" },
|
{ required: true, message: "请选择生产部", trigger: "change" },
|
||||||
],
|
],
|
||||||
SAFETY_USER_ID: [
|
SAFETY_USER_ID: [
|
||||||
{ required: true, message: "请选择安全部负责人", trigger: "change" },
|
{ required: true, message: "请选择生产部负责人", trigger: "change" },
|
||||||
],
|
],
|
||||||
WORKSHOP_DEPARTMENT_ID: [
|
WORKSHOP_DEPARTMENT_ID: [
|
||||||
{ required: true, message: "请选择工段部门", trigger: "change" },
|
{ required: true, message: "请选择工段部门", trigger: "change" },
|
||||||
|
|
@ -292,23 +300,23 @@ const data = reactive({
|
||||||
|
|
||||||
const fnLeaderDepartmentChange = () => {
|
const fnLeaderDepartmentChange = () => {
|
||||||
data.leaderUserList = [];
|
data.leaderUserList = [];
|
||||||
form.value.LEADER_USER_ID = "";
|
form.value.LEADER_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnAuditDepartmentChange = () => {
|
const fnAuditDepartmentChange = () => {
|
||||||
data.auditUserList = [];
|
data.auditUserList = [];
|
||||||
form.value.AUDIT_USER_ID = "";
|
form.value.AUDIT_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnApproveDepartmentChange = () => {
|
const fnApproveDepartmentChange = () => {
|
||||||
data.approveUserList = [];
|
data.approveUserList = [];
|
||||||
form.value.APPROVE_USER_ID = "";
|
form.value.APPROVE_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnSafetyDepartmentChange = () => {
|
const fnSafetyDepartmentChange = () => {
|
||||||
data.safetyUserList = [];
|
data.safetyUserList = [];
|
||||||
form.value.SAFETY_USER_ID = "";
|
form.value.SAFETY_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnWorkshopDepartmentChange = () => {
|
const fnWorkshopDepartmentChange = () => {
|
||||||
data.workshopUserList = [];
|
data.workshopUserList = [];
|
||||||
form.value.WORKSHOP_USER_ID = "";
|
form.value.WORKSHOP_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnClose = () => {
|
const fnClose = () => {
|
||||||
|
|
@ -321,11 +329,32 @@ const fnSubmit = debounce(
|
||||||
1000,
|
1000,
|
||||||
async () => {
|
async () => {
|
||||||
const form = props.form;
|
const form = props.form;
|
||||||
|
// if (props.type === "add") {
|
||||||
|
// await fnHasLevel(form.WORK_LEVEL);
|
||||||
|
// }
|
||||||
|
await useFormValidate(formRef);
|
||||||
|
const LEADER_USER_ID = form.LEADER_USER_ID.join(",");
|
||||||
|
const AUDIT_USER_ID = form.AUDIT_USER_ID.join(",");
|
||||||
|
const APPROVE_USER_ID = form.APPROVE_USER_ID.join(",");
|
||||||
|
const SAFETY_USER_ID = form.SAFETY_USER_ID.join(",");
|
||||||
|
const WORKSHOP_USER_ID = form.WORKSHOP_USER_ID.join(",");
|
||||||
|
const params = {
|
||||||
|
...form,
|
||||||
|
LEADER_USER_ID,
|
||||||
|
AUDIT_USER_ID,
|
||||||
|
APPROVE_USER_ID,
|
||||||
|
SAFETY_USER_ID,
|
||||||
|
WORKSHOP_USER_ID,
|
||||||
|
};
|
||||||
if (props.type === "add") {
|
if (props.type === "add") {
|
||||||
await useFormValidate(formRef);
|
const isCon = await fnHasLevel(form.WORK_LEVEL);
|
||||||
await setHighConfigurationUserAdd(form);
|
if (!isCon) {
|
||||||
|
await setHighConfigurationUserAdd(params);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
await setHighConfigurationUserEdit(form);
|
await setHighConfigurationUserEdit(params);
|
||||||
}
|
}
|
||||||
ElMessage.success("提交成功");
|
ElMessage.success("提交成功");
|
||||||
fnClose();
|
fnClose();
|
||||||
|
|
@ -374,6 +403,25 @@ watchEffect(() => {
|
||||||
if (form.value.WORKSHOP_DEPARTMENT_ID)
|
if (form.value.WORKSHOP_DEPARTMENT_ID)
|
||||||
fnGetWorkshopUser(form.value.WORKSHOP_DEPARTMENT_ID);
|
fnGetWorkshopUser(form.value.WORKSHOP_DEPARTMENT_ID);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const fnWorkLevelChange = () => {
|
||||||
|
data.leaderUserList = [];
|
||||||
|
form.value.LEADER_DEPARTMENT_ID = "";
|
||||||
|
form.value.LEADER_USER_ID = [];
|
||||||
|
data.auditUserList = [];
|
||||||
|
form.value.AUDIT_DEPARTMENT_ID = "";
|
||||||
|
form.value.AUDIT_USER_ID = [];
|
||||||
|
data.approveUserList = [];
|
||||||
|
form.value.APPROVE_DEPARTMENT_ID = "";
|
||||||
|
form.value.APPROVE_USER_ID = [];
|
||||||
|
data.safetyUserList = [];
|
||||||
|
form.value.SAFETY_DEPARTMENT_ID = "";
|
||||||
|
form.value.SAFETY_USER_ID = [];
|
||||||
|
data.workshopUserList = [];
|
||||||
|
form.value.WORKSHOP_DEPARTMENT_ID = "";
|
||||||
|
form.value.WORKSHOP_USER_ID = [];
|
||||||
|
};
|
||||||
|
watchEffect(() => {});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss"></style>
|
||||||
|
|
|
||||||
|
|
@ -99,12 +99,12 @@
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="SAFETY_DEPARTMENT_NAME"
|
prop="SAFETY_DEPARTMENT_NAME"
|
||||||
label="安全部"
|
label="生产部"
|
||||||
width="100"
|
width="100"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="SAFETY_USER_NAME"
|
prop="SAFETY_USER_NAME"
|
||||||
label="安全部负责人"
|
label="生产部负责人"
|
||||||
width="100"
|
width="100"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
@ -178,15 +178,15 @@ const data = reactive({
|
||||||
APPLY_DEPARTMENT_ID: "",
|
APPLY_DEPARTMENT_ID: "",
|
||||||
WORK_LEVEL: "",
|
WORK_LEVEL: "",
|
||||||
LEADER_DEPARTMENT_ID: "",
|
LEADER_DEPARTMENT_ID: "",
|
||||||
LEADER_USER_ID: "",
|
LEADER_USER_ID: [],
|
||||||
AUDIT_DEPARTMENT_ID: "",
|
AUDIT_DEPARTMENT_ID: "",
|
||||||
AUDIT_USER_ID: "",
|
AUDIT_USER_ID: [],
|
||||||
APPROVE_DEPARTMENT_ID: "",
|
APPROVE_DEPARTMENT_ID: "",
|
||||||
APPROVE_USER_ID: "",
|
APPROVE_USER_ID: [],
|
||||||
SAFETY_DEPARTMENT_ID: "",
|
SAFETY_DEPARTMENT_ID: "",
|
||||||
SAFETY_USER_ID: "",
|
SAFETY_USER_ID: [],
|
||||||
WORKSHOP_DEPARTMENT_ID: "",
|
WORKSHOP_DEPARTMENT_ID: "",
|
||||||
WORKSHOP_USER_ID: "",
|
WORKSHOP_USER_ID: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
@ -236,6 +236,12 @@ const fnGoEdit = async (id) => {
|
||||||
const resData = await getHighConfigurationUserView({
|
const resData = await getHighConfigurationUserView({
|
||||||
CONFIGURATION_ID: id,
|
CONFIGURATION_ID: id,
|
||||||
});
|
});
|
||||||
|
resData.pd.WORKSHOP_USER_ID =
|
||||||
|
resData.pd.WORKSHOP_USER_ID.toString().split(",");
|
||||||
|
resData.pd.LEADER_USER_ID = resData.pd.LEADER_USER_ID.toString().split(",");
|
||||||
|
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||||
|
resData.pd.APPROVE_USER_ID = resData.pd.APPROVE_USER_ID.toString().split(",");
|
||||||
|
resData.pd.SAFETY_USER_ID = resData.pd.SAFETY_USER_ID.toString().split(",");
|
||||||
data.editDialog.form = resData.pd;
|
data.editDialog.form = resData.pd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="SAFETY_USER_NAME"
|
prop="SAFETY_USER_NAME"
|
||||||
label="安全部负责人"
|
label="生产部负责人"
|
||||||
width="100"
|
width="100"
|
||||||
/>
|
/>
|
||||||
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" />
|
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" />
|
||||||
|
|
@ -123,7 +123,7 @@
|
||||||
<check-list
|
<check-list
|
||||||
v-if="data.checkListDialog.visible"
|
v-if="data.checkListDialog.visible"
|
||||||
v-model:visible="data.checkListDialog.visible"
|
v-model:visible="data.checkListDialog.visible"
|
||||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="SAFETY_USER_NAME"
|
prop="SAFETY_USER_NAME"
|
||||||
label="安全部负责人"
|
label="生产部负责人"
|
||||||
width="100"
|
width="100"
|
||||||
/>
|
/>
|
||||||
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" />
|
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" />
|
||||||
|
|
@ -207,8 +207,8 @@
|
||||||
<el-button
|
<el-button
|
||||||
v-if="
|
v-if="
|
||||||
userStore.getUserInfo.ISMAIN === '1' &&
|
userStore.getUserInfo.ISMAIN === '1' &&
|
||||||
entrance === 'archive' &&
|
row.STEP_ID !== -1 &&
|
||||||
row.STEP_ID !== -1
|
row.STEP_ID !== 0
|
||||||
"
|
"
|
||||||
type="danger"
|
type="danger"
|
||||||
text
|
text
|
||||||
|
|
@ -229,7 +229,7 @@
|
||||||
<check-list
|
<check-list
|
||||||
v-if="data.checkListDialog.visible"
|
v-if="data.checkListDialog.visible"
|
||||||
v-model:visible="data.checkListDialog.visible"
|
v-model:visible="data.checkListDialog.visible"
|
||||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||||
/>
|
/>
|
||||||
<layout-video
|
<layout-video
|
||||||
v-model:visible="data.videoDialog.visible"
|
v-model:visible="data.videoDialog.visible"
|
||||||
|
|
@ -254,7 +254,8 @@ import {
|
||||||
getHoistingList,
|
getHoistingList,
|
||||||
getTaskSetps,
|
getTaskSetps,
|
||||||
getHoistingFlow,
|
getHoistingFlow,
|
||||||
setEightWorkInvalid, getApplyDept
|
setEightWorkInvalid,
|
||||||
|
getApplyDept,
|
||||||
} from "@/request/eight_work.js";
|
} from "@/request/eight_work.js";
|
||||||
import CheckList from "@/components/safety_briefing_checklist/index.vue";
|
import CheckList from "@/components/safety_briefing_checklist/index.vue";
|
||||||
import ShowPoints from "@/views/map_settings/assignment_ticket_area_settings/components/show_points.vue";
|
import ShowPoints from "@/views/map_settings/assignment_ticket_area_settings/components/show_points.vue";
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,11 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="title">作业申请单位</td>
|
<td class="title">作业申请单位</td>
|
||||||
<td>{{ data.info.APPLY_DEPARTMENT_NAME }}-{{data.info.APPLY_WORKSHOP_DEPARTMENT_NAME}}</td>
|
<td>
|
||||||
|
{{ data.info.APPLY_DEPARTMENT_NAME }}-{{
|
||||||
|
data.info.APPLY_WORKSHOP_DEPARTMENT_NAME
|
||||||
|
}}
|
||||||
|
</td>
|
||||||
<td class="title">作业单位</td>
|
<td class="title">作业单位</td>
|
||||||
<td>{{ data.info.LEADER_DEPARTMENT_NAME }}</td>
|
<td>{{ data.info.LEADER_DEPARTMENT_NAME }}</td>
|
||||||
<td class="title">作业申请时间</td>
|
<td class="title">作业申请时间</td>
|
||||||
|
|
@ -315,7 +319,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-if="data.signs.SAFETY">
|
<tr v-if="data.signs.SAFETY">
|
||||||
<td colspan="10">
|
<td colspan="10">
|
||||||
<div>安全部意见:{{ data.signs.SAFETY?.[0].DESCR }}</div>
|
<div>生产部意见:{{ data.signs.SAFETY?.[0].DESCR }}</div>
|
||||||
<div
|
<div
|
||||||
v-for="(item, index) in data.signs.SAFETY?.[0].SIGN_TIME"
|
v-for="(item, index) in data.signs.SAFETY?.[0].SIGN_TIME"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,12 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="作业级别" prop="WORK_LEVEL">
|
<el-form-item label="作业级别" prop="WORK_LEVEL">
|
||||||
<el-select v-model="form.WORK_LEVEL" placeholder="请选择作业级别" :disabled="props.type === 'edit'">
|
<el-select
|
||||||
|
v-model="form.WORK_LEVEL"
|
||||||
|
placeholder="请选择作业级别"
|
||||||
|
:disabled="props.type === 'edit'"
|
||||||
|
@change="fnWorkLevelChange"
|
||||||
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.levelList"
|
v-for="item in data.levelList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
|
|
@ -38,8 +43,13 @@
|
||||||
@update:model-value="fnWorkshopDepartmentChange"
|
@update:model-value="fnWorkshopDepartmentChange"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="工段负责人" prop="WORKSHOP_USER_ID" filterable>
|
<el-form-item
|
||||||
<el-select v-model="form.WORKSHOP_USER_ID">
|
label="工段负责人"
|
||||||
|
prop="WORKSHOP_USER_ID"
|
||||||
|
filterable
|
||||||
|
multiple
|
||||||
|
>
|
||||||
|
<el-select v-model="form.WORKSHOP_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.workshopUserList"
|
v-for="item in data.workshopUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -54,8 +64,13 @@
|
||||||
@update:model-value="fnLeaderDepartmentChange"
|
@update:model-value="fnLeaderDepartmentChange"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分厂贯标中心负责人" prop="LEADER_USER_ID" filterable>
|
<el-form-item
|
||||||
<el-select v-model="form.LEADER_USER_ID">
|
label="分厂贯标中心负责人"
|
||||||
|
prop="LEADER_USER_ID"
|
||||||
|
filterable
|
||||||
|
multiple
|
||||||
|
>
|
||||||
|
<el-select v-model="form.LEADER_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.leaderUserList"
|
v-for="item in data.leaderUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -70,8 +85,8 @@
|
||||||
@update:model-value="fnAuditDepartmentChange"
|
@update:model-value="fnAuditDepartmentChange"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID" filterable>
|
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
||||||
<el-select v-model="form.AUDIT_USER_ID">
|
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.auditUserList"
|
v-for="item in data.auditUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -96,7 +111,7 @@
|
||||||
label="安全处负责人"
|
label="安全处负责人"
|
||||||
prop="APPROVE_USER_ID"
|
prop="APPROVE_USER_ID"
|
||||||
>
|
>
|
||||||
<el-select v-model="form.APPROVE_USER_ID" filterable>
|
<el-select v-model="form.APPROVE_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.approveUserList"
|
v-for="item in data.approveUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -107,7 +122,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="form.WORK_LEVEL === '1' || !form.WORK_LEVEL"
|
v-if="form.WORK_LEVEL === '1' || !form.WORK_LEVEL"
|
||||||
label="安全部"
|
label="生产部"
|
||||||
prop="SAFETY_DEPARTMENT_ID"
|
prop="SAFETY_DEPARTMENT_ID"
|
||||||
>
|
>
|
||||||
<layout-department
|
<layout-department
|
||||||
|
|
@ -117,10 +132,10 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="form.WORK_LEVEL === '1' || !form.WORK_LEVEL"
|
v-if="form.WORK_LEVEL === '1' || !form.WORK_LEVEL"
|
||||||
label="安全部负责人"
|
label="生产部负责人"
|
||||||
prop="SAFETY_USER_ID"
|
prop="SAFETY_USER_ID"
|
||||||
>
|
>
|
||||||
<el-select v-model="form.SAFETY_USER_ID" filterable>
|
<el-select v-model="form.SAFETY_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.safetyUserList"
|
v-for="item in data.safetyUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -177,17 +192,14 @@ const props = defineProps({
|
||||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||||
const { visible, form } = useVModels(props, emits);
|
const { visible, form } = useVModels(props, emits);
|
||||||
|
|
||||||
const fnHasLevel = async (rule, value, callback) => {
|
const fnHasLevel = async (value) => {
|
||||||
if (value) {
|
if (value) {
|
||||||
const resData = await getHoistingVerifyConfigurationUser({
|
const resData = await getHoistingVerifyConfigurationUser({
|
||||||
WORK_LEVEL: value,
|
WORK_LEVEL: value,
|
||||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||||
});
|
});
|
||||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||||
callback(new Error("该申请单位和作业等级已存在"));
|
return ElMessage.error("该申请单位和吊装作业等级已存在");
|
||||||
else callback();
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -197,7 +209,7 @@ const rules = {
|
||||||
],
|
],
|
||||||
WORK_LEVEL: [
|
WORK_LEVEL: [
|
||||||
{ required: true, message: "请选择作业等级", trigger: "blur" },
|
{ required: true, message: "请选择作业等级", trigger: "blur" },
|
||||||
{ validator: fnHasLevel, trigger: "blur" },
|
// { validator: fnHasLevel, trigger: "blur" },
|
||||||
],
|
],
|
||||||
LEADER_DEPARTMENT_ID: [
|
LEADER_DEPARTMENT_ID: [
|
||||||
{
|
{
|
||||||
|
|
@ -226,10 +238,10 @@ const rules = {
|
||||||
{ required: true, message: "请选择安全处负责人", trigger: "change" },
|
{ required: true, message: "请选择安全处负责人", trigger: "change" },
|
||||||
],
|
],
|
||||||
SAFETY_DEPARTMENT_ID: [
|
SAFETY_DEPARTMENT_ID: [
|
||||||
{ required: true, message: "请选择安全部", trigger: "change" },
|
{ required: true, message: "请选择生产部", trigger: "change" },
|
||||||
],
|
],
|
||||||
SAFETY_USER_ID: [
|
SAFETY_USER_ID: [
|
||||||
{ required: true, message: "请选择安全部负责人", trigger: "change" },
|
{ required: true, message: "请选择生产部负责人", trigger: "change" },
|
||||||
],
|
],
|
||||||
WORKSHOP_DEPARTMENT_ID: [
|
WORKSHOP_DEPARTMENT_ID: [
|
||||||
{ required: true, message: "请选择工段部门", trigger: "change" },
|
{ required: true, message: "请选择工段部门", trigger: "change" },
|
||||||
|
|
@ -266,23 +278,41 @@ const data = reactive({
|
||||||
|
|
||||||
const fnLeaderDepartmentChange = () => {
|
const fnLeaderDepartmentChange = () => {
|
||||||
data.leaderUserList = [];
|
data.leaderUserList = [];
|
||||||
form.value.LEADER_USER_ID = "";
|
form.value.LEADER_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnAuditDepartmentChange = () => {
|
const fnAuditDepartmentChange = () => {
|
||||||
data.auditUserList = [];
|
data.auditUserList = [];
|
||||||
form.value.AUDIT_USER_ID = "";
|
form.value.AUDIT_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnApproveDepartmentChange = () => {
|
const fnApproveDepartmentChange = () => {
|
||||||
data.approveUserList = [];
|
data.approveUserList = [];
|
||||||
form.value.APPROVE_USER_ID = "";
|
form.value.APPROVE_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnSafetyDepartmentChange = () => {
|
const fnSafetyDepartmentChange = () => {
|
||||||
data.safetyUserList = [];
|
data.safetyUserList = [];
|
||||||
form.value.SAFETY_USER_ID = "";
|
form.value.SAFETY_USER_ID = [];
|
||||||
};
|
};
|
||||||
const fnWorkshopDepartmentChange = () => {
|
const fnWorkshopDepartmentChange = () => {
|
||||||
data.workshopUserList = [];
|
data.workshopUserList = [];
|
||||||
form.value.WORKSHOP_USER_ID = "";
|
form.value.WORKSHOP_USER_ID = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
const fnWorkLevelChange = () => {
|
||||||
|
data.leaderUserList = [];
|
||||||
|
form.value.LEADER_DEPARTMENT_ID = "";
|
||||||
|
form.value.LEADER_USER_ID = [];
|
||||||
|
data.auditUserList = [];
|
||||||
|
form.value.AUDIT_DEPARTMENT_ID = "";
|
||||||
|
form.value.AUDIT_USER_ID = [];
|
||||||
|
data.approveUserList = [];
|
||||||
|
form.value.APPROVE_DEPARTMENT_ID = "";
|
||||||
|
form.value.APPROVE_USER_ID = [];
|
||||||
|
data.safetyUserList = [];
|
||||||
|
form.value.SAFETY_DEPARTMENT_ID = "";
|
||||||
|
form.value.SAFETY_USER_ID = [];
|
||||||
|
data.workshopUserList = [];
|
||||||
|
form.value.WORKSHOP_DEPARTMENT_ID = "";
|
||||||
|
form.value.WORKSHOP_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnClose = () => {
|
const fnClose = () => {
|
||||||
|
|
@ -295,11 +325,29 @@ const fnSubmit = debounce(
|
||||||
1000,
|
1000,
|
||||||
async () => {
|
async () => {
|
||||||
const form = props.form;
|
const form = props.form;
|
||||||
|
await useFormValidate(formRef);
|
||||||
|
const LEADER_USER_ID = form.LEADER_USER_ID.join(",");
|
||||||
|
const AUDIT_USER_ID = form.AUDIT_USER_ID.join(",");
|
||||||
|
const APPROVE_USER_ID = form.APPROVE_USER_ID.join(",");
|
||||||
|
const SAFETY_USER_ID = form.SAFETY_USER_ID.join(",");
|
||||||
|
const WORKSHOP_USER_ID = form.WORKSHOP_USER_ID.join(",");
|
||||||
|
const params = {
|
||||||
|
...form,
|
||||||
|
LEADER_USER_ID,
|
||||||
|
AUDIT_USER_ID,
|
||||||
|
APPROVE_USER_ID,
|
||||||
|
SAFETY_USER_ID,
|
||||||
|
WORKSHOP_USER_ID,
|
||||||
|
};
|
||||||
if (props.type === "add") {
|
if (props.type === "add") {
|
||||||
await useFormValidate(formRef);
|
const isCon = await fnHasLevel(form.WORK_LEVEL);
|
||||||
await setHoistingConfigurationUserAdd(form);
|
if (!isCon) {
|
||||||
|
await setHoistingConfigurationUserAdd(params);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
await setHoistingConfigurationUserEdit(form);
|
await setHoistingConfigurationUserEdit(params);
|
||||||
}
|
}
|
||||||
ElMessage.success("提交成功");
|
ElMessage.success("提交成功");
|
||||||
fnClose();
|
fnClose();
|
||||||
|
|
|
||||||
|
|
@ -98,12 +98,12 @@
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="SAFETY_DEPARTMENT_NAME"
|
prop="SAFETY_DEPARTMENT_NAME"
|
||||||
label="安全部"
|
label="生产部"
|
||||||
width="100"
|
width="100"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="SAFETY_USER_NAME"
|
prop="SAFETY_USER_NAME"
|
||||||
label="安全部负责人"
|
label="生产部负责人"
|
||||||
width="100"
|
width="100"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
@ -162,7 +162,7 @@ import {
|
||||||
getHoistingConfigurationUserView,
|
getHoistingConfigurationUserView,
|
||||||
setHoistingConfigurationUserDelete,
|
setHoistingConfigurationUserDelete,
|
||||||
setHoistingConfigurationUserDeleteAll,
|
setHoistingConfigurationUserDeleteAll,
|
||||||
setHoistingConfigurationUserList
|
setHoistingConfigurationUserList,
|
||||||
} from "@/request/eight_work.js";
|
} from "@/request/eight_work.js";
|
||||||
|
|
||||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||||
|
|
@ -177,15 +177,15 @@ const data = reactive({
|
||||||
APPLY_DEPARTMENT_ID: "",
|
APPLY_DEPARTMENT_ID: "",
|
||||||
WORK_LEVEL: "",
|
WORK_LEVEL: "",
|
||||||
LEADER_DEPARTMENT_ID: "",
|
LEADER_DEPARTMENT_ID: "",
|
||||||
LEADER_USER_ID: "",
|
LEADER_USER_ID: [],
|
||||||
AUDIT_DEPARTMENT_ID: "",
|
AUDIT_DEPARTMENT_ID: "",
|
||||||
AUDIT_USER_ID: "",
|
AUDIT_USER_ID: [],
|
||||||
APPROVE_DEPARTMENT_ID: "",
|
APPROVE_DEPARTMENT_ID: "",
|
||||||
APPROVE_USER_ID: "",
|
APPROVE_USER_ID: [],
|
||||||
SAFETY_DEPARTMENT_ID: "",
|
SAFETY_DEPARTMENT_ID: "",
|
||||||
SAFETY_USER_ID: "",
|
SAFETY_USER_ID: [],
|
||||||
WORKSHOP_DEPARTMENT_ID: "",
|
WORKSHOP_DEPARTMENT_ID: "",
|
||||||
WORKSHOP_USER_ID: "",
|
WORKSHOP_USER_ID: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
@ -235,6 +235,12 @@ const fnGoEdit = async (id) => {
|
||||||
const resData = await getHoistingConfigurationUserView({
|
const resData = await getHoistingConfigurationUserView({
|
||||||
CONFIGURATION_ID: id,
|
CONFIGURATION_ID: id,
|
||||||
});
|
});
|
||||||
|
resData.pd.WORKSHOP_USER_ID =
|
||||||
|
resData.pd.WORKSHOP_USER_ID.toString().split(",");
|
||||||
|
resData.pd.LEADER_USER_ID = resData.pd.LEADER_USER_ID.toString().split(",");
|
||||||
|
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||||
|
resData.pd.APPROVE_USER_ID = resData.pd.APPROVE_USER_ID.toString().split(",");
|
||||||
|
resData.pd.SAFETY_USER_ID = resData.pd.SAFETY_USER_ID.toString().split(",");
|
||||||
data.editDialog.form = resData.pd;
|
data.editDialog.form = resData.pd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -217,8 +217,8 @@
|
||||||
<el-button
|
<el-button
|
||||||
v-if="
|
v-if="
|
||||||
userStore.getUserInfo.ISMAIN === '1' &&
|
userStore.getUserInfo.ISMAIN === '1' &&
|
||||||
entrance === 'archive' &&
|
row.STEP_ID !== -1 &&
|
||||||
row.STEP_ID !== -1
|
row.STEP_ID !== 0
|
||||||
"
|
"
|
||||||
type="danger"
|
type="danger"
|
||||||
text
|
text
|
||||||
|
|
@ -244,7 +244,7 @@
|
||||||
<check-list
|
<check-list
|
||||||
v-if="data.checkListDialog.visible"
|
v-if="data.checkListDialog.visible"
|
||||||
v-model:visible="data.checkListDialog.visible"
|
v-model:visible="data.checkListDialog.visible"
|
||||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||||
/>
|
/>
|
||||||
<show-points
|
<show-points
|
||||||
:id="data.showPointsDialog.id"
|
:id="data.showPointsDialog.id"
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@
|
||||||
v-model="form.WORK_LEVEL"
|
v-model="form.WORK_LEVEL"
|
||||||
placeholder="请选择动火等级"
|
placeholder="请选择动火等级"
|
||||||
:disabled="props.type === 'edit'"
|
:disabled="props.type === 'edit'"
|
||||||
|
@change="fnWorkLevelChange"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.levelList"
|
v-for="item in data.levelList"
|
||||||
|
|
@ -204,17 +205,18 @@ const props = defineProps({
|
||||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||||
const { visible, form } = useVModels(props, emits);
|
const { visible, form } = useVModels(props, emits);
|
||||||
|
|
||||||
const fnHasLevel = async (rule, value, callback) => {
|
const fnHasLevel = async (value) => {
|
||||||
if (value) {
|
if (value) {
|
||||||
const resData = await getHotVerifyConfigurationUser({
|
const resData = await getHotVerifyConfigurationUser({
|
||||||
WORK_LEVEL: value,
|
WORK_LEVEL: value,
|
||||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||||
});
|
});
|
||||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
if (resData?.pd?.APPLY_DEPARTMENT_ID) {
|
||||||
callback(new Error("该申请单位和动火等级已存在"));
|
ElMessage.error("该申请单位和动火等级已存在");
|
||||||
else callback();
|
return true;
|
||||||
} else {
|
} else {
|
||||||
callback();
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -224,7 +226,7 @@ const rules = {
|
||||||
],
|
],
|
||||||
WORK_LEVEL: [
|
WORK_LEVEL: [
|
||||||
{ required: true, message: "请选择动火等级", trigger: "blur" },
|
{ required: true, message: "请选择动火等级", trigger: "blur" },
|
||||||
{ validator: fnHasLevel, trigger: "blur" },
|
// { validator: fnHasLevel, trigger: "blur" },
|
||||||
],
|
],
|
||||||
LEADER_DEPARTMENT_ID: [
|
LEADER_DEPARTMENT_ID: [
|
||||||
{
|
{
|
||||||
|
|
@ -291,10 +293,29 @@ const data = reactive({
|
||||||
projectUserList: [],
|
projectUserList: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const fnWorkLevelChange = () => {
|
||||||
|
data.leaderUserList = [];
|
||||||
|
form.value.LEADER_DEPARTMENT_ID = "";
|
||||||
|
form.value.LEADER_USER_ID = [];
|
||||||
|
data.auditUserList = [];
|
||||||
|
form.value.AUDIT_DEPARTMENT_ID = "";
|
||||||
|
form.value.AUDIT_USER_ID = [];
|
||||||
|
data.approveUserList = [];
|
||||||
|
form.value.APPROVE_DEPARTMENT_ID = "";
|
||||||
|
form.value.APPROVE_USER_ID = [];
|
||||||
|
data.monitorUserList = [];
|
||||||
|
form.value.MONITOR_DEPARTMENT_ID = "";
|
||||||
|
form.value.MONITOR_USER_ID = [];
|
||||||
|
data.projectUserList = [];
|
||||||
|
form.value.PROJECT_MANAGER_DEPARTMENT_ID = "";
|
||||||
|
form.value.PROJECT_MANAGER_USER_ID = [];
|
||||||
|
};
|
||||||
|
|
||||||
const fnLeaderDepartmentChange = () => {
|
const fnLeaderDepartmentChange = () => {
|
||||||
data.leaderUserList = [];
|
data.leaderUserList = [];
|
||||||
form.value.LEADER_USER_ID = [];
|
form.value.LEADER_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnAuditDepartmentChange = () => {
|
const fnAuditDepartmentChange = () => {
|
||||||
data.auditUserList = [];
|
data.auditUserList = [];
|
||||||
form.value.AUDIT_USER_ID = [];
|
form.value.AUDIT_USER_ID = [];
|
||||||
|
|
@ -322,17 +343,44 @@ const fnSubmit = debounce(
|
||||||
1000,
|
1000,
|
||||||
async () => {
|
async () => {
|
||||||
const form = props.form;
|
const form = props.form;
|
||||||
form.LEADER_USER_ID = form.LEADER_USER_ID.join(",");
|
await useFormValidate(formRef);
|
||||||
form.AUDIT_USER_ID = form.AUDIT_USER_ID.join(",");
|
// if (props.type === "add") {
|
||||||
form.APPROVE_USER_ID = form.APPROVE_USER_ID.join(",");
|
// fnHasLevel(form.WORK_LEVEL);
|
||||||
form.MONITOR_USER_ID = form.MONITOR_USER_ID.join(",");
|
// }
|
||||||
form.PROJECT_MANAGER_USER_ID = form.PROJECT_MANAGER_USER_ID.join(",");
|
const LEADER_USER_ID = form.LEADER_USER_ID
|
||||||
|
? form.LEADER_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const AUDIT_USER_ID = form.AUDIT_USER_ID
|
||||||
|
? form.AUDIT_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const APPROVE_USER_ID = form.APPROVE_USER_ID
|
||||||
|
? form.APPROVE_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const MONITOR_USER_ID = form.MONITOR_USER_ID
|
||||||
|
? form.MONITOR_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const PROJECT_MANAGER_USER_ID = form.PROJECT_MANAGER_USER_ID
|
||||||
|
? form.PROJECT_MANAGER_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const params = {
|
||||||
|
...form,
|
||||||
|
LEADER_USER_ID,
|
||||||
|
AUDIT_USER_ID,
|
||||||
|
APPROVE_USER_ID,
|
||||||
|
MONITOR_USER_ID,
|
||||||
|
PROJECT_MANAGER_USER_ID,
|
||||||
|
};
|
||||||
if (props.type === "add") {
|
if (props.type === "add") {
|
||||||
await useFormValidate(formRef);
|
const isCon = await fnHasLevel(form.WORK_LEVEL);
|
||||||
await setHotConfigurationUserAdd(form);
|
if (!isCon) {
|
||||||
|
await setHotConfigurationUserAdd(params);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
await setHotConfigurationUserEdit(form);
|
await setHotConfigurationUserEdit(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
ElMessage.success("提交成功");
|
ElMessage.success("提交成功");
|
||||||
fnClose();
|
fnClose();
|
||||||
emits("get-data");
|
emits("get-data");
|
||||||
|
|
@ -380,6 +428,8 @@ watchEffect(() => {
|
||||||
if (form.value.PROJECT_MANAGER_DEPARTMENT_ID)
|
if (form.value.PROJECT_MANAGER_DEPARTMENT_ID)
|
||||||
fnGetProjectUser(form.value.PROJECT_MANAGER_DEPARTMENT_ID);
|
fnGetProjectUser(form.value.PROJECT_MANAGER_DEPARTMENT_ID);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
watchEffect(() => {});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss"></style>
|
||||||
|
|
|
||||||
|
|
@ -171,15 +171,15 @@ const data = reactive({
|
||||||
APPLY_DEPARTMENT_ID: "",
|
APPLY_DEPARTMENT_ID: "",
|
||||||
WORK_LEVEL: "",
|
WORK_LEVEL: "",
|
||||||
LEADER_DEPARTMENT_ID: "",
|
LEADER_DEPARTMENT_ID: "",
|
||||||
LEADER_USER_ID: "",
|
LEADER_USER_ID: [],
|
||||||
AUDIT_DEPARTMENT_ID: "",
|
AUDIT_DEPARTMENT_ID: "",
|
||||||
AUDIT_USER_ID: "",
|
AUDIT_USER_ID: [],
|
||||||
APPROVE_DEPARTMENT_ID: "",
|
APPROVE_DEPARTMENT_ID: "",
|
||||||
APPROVE_USER_ID: "",
|
APPROVE_USER_ID: [],
|
||||||
MONITOR_DEPARTMENT_ID: "",
|
MONITOR_DEPARTMENT_ID: "",
|
||||||
MONITOR_USER_ID: "",
|
MONITOR_USER_ID: [],
|
||||||
PROJECT_MANAGER_DEPARTMENT_ID: "",
|
PROJECT_MANAGER_DEPARTMENT_ID: "",
|
||||||
PROJECT_MANAGER_USER_ID: "",
|
PROJECT_MANAGER_USER_ID: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -34,24 +34,28 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label-width="10px">
|
<el-form-item label-width="10px">
|
||||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
<el-button type="primary" @click="fnGetDataTransfer"
|
||||||
<el-button native-type="reset" @click="fnGetDataTransfer">
|
>搜索</el-button
|
||||||
重置
|
>
|
||||||
</el-button>
|
<el-button @click="reset"> 重置 </el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
<layout-card>
|
<layout-card>
|
||||||
<layout-table :data="list" :show-pagination="false">
|
<layout-table
|
||||||
|
:data="list"
|
||||||
|
:show-pagination="false"
|
||||||
|
show-summary
|
||||||
|
:summary-method="fnGetSummaries"
|
||||||
|
>
|
||||||
<el-table-column label="序号" width="70">
|
<el-table-column label="序号" width="70">
|
||||||
<template #default="{ $index }">
|
<template #default="{ $index }">
|
||||||
{{ serialNumber(pagination, $index) }}
|
{{ serialNumber(pagination, $index) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="NAME" label="部门" />
|
<el-table-column prop="NAME" label="部门" />
|
||||||
|
|
||||||
<el-table-column prop="LOGIN_RATE" label="登录率" />
|
<el-table-column prop="LOGIN_RATE" label="登录率" />
|
||||||
</layout-table>
|
</layout-table>
|
||||||
</layout-card>
|
</layout-card>
|
||||||
|
|
@ -62,10 +66,10 @@
|
||||||
import LayoutDepartment from "@/components/department/index.vue";
|
import LayoutDepartment from "@/components/department/index.vue";
|
||||||
import { serialNumber } from "@/assets/js/utils.js";
|
import { serialNumber } from "@/assets/js/utils.js";
|
||||||
import useListData from "@/assets/js/useListData.js";
|
import useListData from "@/assets/js/useListData.js";
|
||||||
import {
|
import { getFhlogStatsList } from "@/request/statistical_analysis.js";
|
||||||
getFhlogStatsList,
|
import { sumBy } from "lodash-es";
|
||||||
getDetectionSituationListTime,
|
import dayjs from "dayjs";
|
||||||
} from "@/request/statistical_analysis.js";
|
import { onMounted } from "vue";
|
||||||
|
|
||||||
const handleExtraData = (dataList) => {
|
const handleExtraData = (dataList) => {
|
||||||
dataList.forEach((item) => {
|
dataList.forEach((item) => {
|
||||||
|
|
@ -81,6 +85,11 @@ const { list, searchForm, pagination, fnGetData } = useListData(
|
||||||
usePagination: false,
|
usePagination: false,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
reset();
|
||||||
|
});
|
||||||
|
|
||||||
const fnGetDataTransfer = () => {
|
const fnGetDataTransfer = () => {
|
||||||
fnGetData({
|
fnGetData({
|
||||||
START_TIME: searchForm.value.dates?.[0],
|
START_TIME: searchForm.value.dates?.[0],
|
||||||
|
|
@ -88,13 +97,48 @@ const fnGetDataTransfer = () => {
|
||||||
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const fnInit = async () => {
|
|
||||||
const resData = await getDetectionSituationListTime();
|
const reset = () => {
|
||||||
searchForm.value.dates = [resData.pd.MINTIME, resData.pd.MAXTIME];
|
searchForm.value.dates = [
|
||||||
|
dayjs().startOf("year").format("YYYY-MM-DD"),
|
||||||
|
dayjs().format("YYYY-MM-DD"),
|
||||||
|
];
|
||||||
|
searchForm.value.DEPTIDS = [];
|
||||||
fnGetDataTransfer();
|
fnGetDataTransfer();
|
||||||
};
|
};
|
||||||
|
const fnGetSummaries = ({ columns, data }) => {
|
||||||
|
const sums = [];
|
||||||
|
columns.forEach((column, index) => {
|
||||||
|
if (index === 0) {
|
||||||
|
sums[index] = "合计";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
fnInit();
|
const property = column.property;
|
||||||
|
if (property === "NAME") {
|
||||||
|
sums[index] = "--"; // 不显示合计
|
||||||
|
} else {
|
||||||
|
// 特殊处理“排查率”
|
||||||
|
const totalReal = sumBy(data, (item) => {
|
||||||
|
const val = item.LOGIN_COUNTS;
|
||||||
|
return isNaN(val) ? 0 : Number(val);
|
||||||
|
});
|
||||||
|
const totalNeed = sumBy(data, (item) => {
|
||||||
|
const val = item.WORKER_COUNTS;
|
||||||
|
return isNaN(val) ? 0 : Number(val);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (totalNeed > 0) {
|
||||||
|
const rate = (totalReal / totalNeed) * 100;
|
||||||
|
sums[index] = `${rate.toFixed(2)}%`;
|
||||||
|
} else {
|
||||||
|
sums[index] = "0.00%";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return sums;
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss"></style>
|
||||||
|
|
|
||||||
|
|
@ -209,8 +209,8 @@
|
||||||
<el-button
|
<el-button
|
||||||
v-if="
|
v-if="
|
||||||
userStore.getUserInfo.ISMAIN === '1' &&
|
userStore.getUserInfo.ISMAIN === '1' &&
|
||||||
entrance === 'archive' &&
|
row.STEP_ID !== -1 &&
|
||||||
row.STEP_ID !== -1
|
row.STEP_ID !== 0
|
||||||
"
|
"
|
||||||
type="danger"
|
type="danger"
|
||||||
text
|
text
|
||||||
|
|
@ -231,7 +231,7 @@
|
||||||
<check-list
|
<check-list
|
||||||
v-if="data.checkListDialog.visible"
|
v-if="data.checkListDialog.visible"
|
||||||
v-model:visible="data.checkListDialog.visible"
|
v-model:visible="data.checkListDialog.visible"
|
||||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||||
/>
|
/>
|
||||||
<layout-video
|
<layout-video
|
||||||
v-model:visible="data.videoDialog.visible"
|
v-model:visible="data.videoDialog.visible"
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
label="断路所在单位消防、安全管理部门负责人"
|
label="断路所在单位消防、安全管理部门负责人"
|
||||||
prop="LEADER_USER_ID"
|
prop="LEADER_USER_ID"
|
||||||
>
|
>
|
||||||
<el-select v-model="form.LEADER_USER_ID" filterable>
|
<el-select v-model="form.LEADER_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.safetyUserList"
|
v-for="item in data.safetyUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -51,7 +51,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
||||||
<el-select v-model="form.AUDIT_USER_ID" filterable>
|
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.auditUserList"
|
v-for="item in data.auditUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -108,23 +108,18 @@ const props = defineProps({
|
||||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||||
const { visible, form } = useVModels(props, emits);
|
const { visible, form } = useVModels(props, emits);
|
||||||
|
|
||||||
const fnHasLevel = async (rule, value, callback) => {
|
const fnHasLevel = async () => {
|
||||||
if (value) {
|
const resData = await getCutRoadVerifyConfigurationUser({
|
||||||
const resData = await getCutRoadVerifyConfigurationUser({
|
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
});
|
||||||
});
|
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
return ElMessage.error("该申请单位已存在");
|
||||||
callback(new Error("该申请部门已存在"));
|
|
||||||
else callback();
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const rules = {
|
const rules = {
|
||||||
APPLY_DEPARTMENT_ID: [
|
APPLY_DEPARTMENT_ID: [
|
||||||
{ required: true, message: "请选择申请部门", trigger: "change" },
|
{ required: true, message: "请选择申请部门", trigger: "change" },
|
||||||
{ validator: fnHasLevel, trigger: "blur" },
|
// { validator: fnHasLevel, trigger: "blur" },
|
||||||
],
|
],
|
||||||
|
|
||||||
AUDIT_DEPARTMENT_ID: [
|
AUDIT_DEPARTMENT_ID: [
|
||||||
|
|
@ -160,12 +155,12 @@ const data = reactive({
|
||||||
|
|
||||||
const fnAuditDepartmentChange = () => {
|
const fnAuditDepartmentChange = () => {
|
||||||
data.auditUserList = [];
|
data.auditUserList = [];
|
||||||
form.value.AUDIT_USER_ID = "";
|
form.value.AUDIT_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnSafetyDepartmentChange = () => {
|
const fnSafetyDepartmentChange = () => {
|
||||||
data.safetyUserList = [];
|
data.safetyUserList = [];
|
||||||
form.value.LEADER_USER_ID = "";
|
form.value.LEADER_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnClose = () => {
|
const fnClose = () => {
|
||||||
|
|
@ -178,11 +173,28 @@ const fnSubmit = debounce(
|
||||||
1000,
|
1000,
|
||||||
async () => {
|
async () => {
|
||||||
const form = props.form;
|
const form = props.form;
|
||||||
|
|
||||||
|
await useFormValidate(formRef);
|
||||||
|
const AUDIT_USER_ID = form.AUDIT_USER_ID
|
||||||
|
? form.AUDIT_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const LEADER_USER_ID = form.LEADER_USER_ID
|
||||||
|
? form.LEADER_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const params = {
|
||||||
|
...form,
|
||||||
|
AUDIT_USER_ID,
|
||||||
|
LEADER_USER_ID,
|
||||||
|
};
|
||||||
if (props.type === "add") {
|
if (props.type === "add") {
|
||||||
await useFormValidate(formRef);
|
const isCon = await fnHasLevel();
|
||||||
await setCutRoadConfigurationUserAdd(form);
|
if (!isCon) {
|
||||||
|
await setCutRoadConfigurationUserAdd(params);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
await setCutRoadConfigurationUserEdit(form);
|
await setCutRoadConfigurationUserEdit(params);
|
||||||
}
|
}
|
||||||
ElMessage.success("提交成功");
|
ElMessage.success("提交成功");
|
||||||
fnClose();
|
fnClose();
|
||||||
|
|
@ -213,6 +225,7 @@ watchEffect(() => {
|
||||||
if (form.value.LEADER_DEPARTMENT_ID)
|
if (form.value.LEADER_DEPARTMENT_ID)
|
||||||
fnGetSafetyUser(form.value.LEADER_DEPARTMENT_ID);
|
fnGetSafetyUser(form.value.LEADER_DEPARTMENT_ID);
|
||||||
});
|
});
|
||||||
|
watchEffect(() => {});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss"></style>
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ import {
|
||||||
getCutRoadConfigurationUserView,
|
getCutRoadConfigurationUserView,
|
||||||
setCutRoadConfigurationUserDelete,
|
setCutRoadConfigurationUserDelete,
|
||||||
setCutRoadConfigurationUserDeleteAll,
|
setCutRoadConfigurationUserDeleteAll,
|
||||||
setCutRoadConfigurationUserList
|
setCutRoadConfigurationUserList,
|
||||||
} from "@/request/eight_work.js";
|
} from "@/request/eight_work.js";
|
||||||
|
|
||||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||||
|
|
@ -137,15 +137,13 @@ const data = reactive({
|
||||||
CONFIGURATION_ID: "",
|
CONFIGURATION_ID: "",
|
||||||
APPLY_DEPARTMENT_ID: "",
|
APPLY_DEPARTMENT_ID: "",
|
||||||
AUDIT_DEPARTMENT_ID: "",
|
AUDIT_DEPARTMENT_ID: "",
|
||||||
AUDIT_USER_ID: "",
|
AUDIT_USER_ID: [],
|
||||||
LEADER_DEPARTMENT_ID: "",
|
LEADER_DEPARTMENT_ID: "",
|
||||||
LEADER_USER_ID: "",
|
LEADER_USER_ID: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const handleDelete = async (CONFIGURATION_ID) => {
|
const handleDelete = async (CONFIGURATION_ID) => {
|
||||||
await ElMessageBox.confirm("确定要删除吗?", {
|
await ElMessageBox.confirm("确定要删除吗?", {
|
||||||
type: "warning",
|
type: "warning",
|
||||||
|
|
@ -192,6 +190,8 @@ const fnGoEdit = async (id) => {
|
||||||
const resData = await getCutRoadConfigurationUserView({
|
const resData = await getCutRoadConfigurationUserView({
|
||||||
CONFIGURATION_ID: id,
|
CONFIGURATION_ID: id,
|
||||||
});
|
});
|
||||||
|
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||||
|
resData.pd.LEADER_USER_ID = resData.pd.LEADER_USER_ID.toString().split(",");
|
||||||
data.editDialog.form = resData.pd;
|
data.editDialog.form = resData.pd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
type="date"
|
type="date"
|
||||||
@change="judgeExamineTime()"
|
@change="judgeExamineTime"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -96,7 +96,7 @@
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
type="date"
|
type="date"
|
||||||
@change="judgeExamineTime()"
|
@change="judgeExamineTime"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -172,6 +172,11 @@ const fnDisabledDate = (time) => {
|
||||||
};
|
};
|
||||||
const personnelManagementJobTypeList =
|
const personnelManagementJobTypeList =
|
||||||
await layoutFnGetPersonnelManagementJobType();
|
await layoutFnGetPersonnelManagementJobType();
|
||||||
|
|
||||||
|
// 保存原始的复审时间值
|
||||||
|
const originalReviewTime1 = ref("");
|
||||||
|
const originalReviewTime2 = ref("");
|
||||||
|
|
||||||
// 特种作业证书编号 去除唯一校验
|
// 特种作业证书编号 去除唯一校验
|
||||||
// const fnHasCertificate = async (rule, value, callback) => {
|
// const fnHasCertificate = async (rule, value, callback) => {
|
||||||
// if (value) {
|
// if (value) {
|
||||||
|
|
@ -276,6 +281,9 @@ const fnGetData = async () => {
|
||||||
});
|
});
|
||||||
await fnGetAllUserList(resData.pd.DEPARTMENT_ID);
|
await fnGetAllUserList(resData.pd.DEPARTMENT_ID);
|
||||||
form.value = resData.pd;
|
form.value = resData.pd;
|
||||||
|
// 保存原始值
|
||||||
|
originalReviewTime1.value = resData.pd.REVIEWTIME1 || "";
|
||||||
|
originalReviewTime2.value = resData.pd.REVIEWTIME2 || "";
|
||||||
await fnGetUserDetail();
|
await fnGetUserDetail();
|
||||||
};
|
};
|
||||||
fnGetData();
|
fnGetData();
|
||||||
|
|
@ -289,6 +297,17 @@ const fnSubmit = debounce(
|
||||||
form.value.PTYPE === "公司员工" ? CORPINFO_ID : form.value.UNITS_ID,
|
form.value.PTYPE === "公司员工" ? CORPINFO_ID : form.value.UNITS_ID,
|
||||||
VALID_ETIME: form.value.VALID_ETIME,
|
VALID_ETIME: form.value.VALID_ETIME,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 检查复审时间是否有变化,如果有变化则添加额外参数
|
||||||
|
if (SPECIALOPERATIONS_ID) {
|
||||||
|
if (form.value.REVIEWTIME1 !== originalReviewTime1.value) {
|
||||||
|
params.REVIEWTIME1_CHANGED = "1";
|
||||||
|
}
|
||||||
|
if (form.value.REVIEWTIME2 !== originalReviewTime2.value) {
|
||||||
|
params.REVIEWTIME2_CHANGED = "1";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
!SPECIALOPERATIONS_ID
|
!SPECIALOPERATIONS_ID
|
||||||
? await setPersonnelManagementAdd(params)
|
? await setPersonnelManagementAdd(params)
|
||||||
: await setPersonnelManagementEdit(params);
|
: await setPersonnelManagementEdit(params);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,27 @@
|
||||||
<template>
|
<template>
|
||||||
<el-dialog v-model="visible" :title="title" :before-close="fnClose">
|
<el-dialog v-model="visible" :title="title" :before-close="fnClose">
|
||||||
<el-form label-width="110px">
|
<el-form label-width="110px">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="总实际取证人数">
|
||||||
|
<el-input v-model="dataList.total.TOTAL" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="总应取证人数">
|
||||||
|
<el-input
|
||||||
|
v-model.number="dataList.total.fnumber"
|
||||||
|
placeholder="请输入总应取证人数"
|
||||||
|
@blur="handleBlurTotal(dataList.total)"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="总取证率">
|
||||||
|
<el-input :value="calculateRateTotal(dataList.total)" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
<el-row v-for="(item, index) in dataList.varList" :key="index">
|
<el-row v-for="(item, index) in dataList.varList" :key="index">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="证书类型">
|
<el-form-item label="证书类型">
|
||||||
|
|
@ -66,6 +87,14 @@ const calculateRate = (item) => {
|
||||||
return ((fnumber / numbers) * 100).toFixed(2) + "%";
|
return ((fnumber / numbers) * 100).toFixed(2) + "%";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const calculateRateTotal = (item) => {
|
||||||
|
const fnumber = Number(item.fnumber) || 0;
|
||||||
|
const numbers = Number(item.TOTAL) || 0;
|
||||||
|
|
||||||
|
if (fnumber === 0) return "0.00%";
|
||||||
|
return ((fnumber / numbers) * 100).toFixed(2) + "%";
|
||||||
|
};
|
||||||
|
|
||||||
const handleBlur = (item) => {
|
const handleBlur = (item) => {
|
||||||
// 确保输入值不为空且为数字
|
// 确保输入值不为空且为数字
|
||||||
const value = Number(item.fnumber) || 0;
|
const value = Number(item.fnumber) || 0;
|
||||||
|
|
@ -78,6 +107,18 @@ const handleBlur = (item) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleBlurTotal = (item) => {
|
||||||
|
// 确保输入值不为空且为数字
|
||||||
|
const value = Number(item.fnumber) || 0;
|
||||||
|
const maxValue = Number(item.TOTAL) || 0;
|
||||||
|
|
||||||
|
if (value > maxValue) {
|
||||||
|
// 超过最大值时自动修正
|
||||||
|
item.fnumber = maxValue;
|
||||||
|
ElMessage.warning(`输入值不能超过 ${maxValue}`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const fnClose = () => {
|
const fnClose = () => {
|
||||||
// 清空 dataList 中的 fnumber 字段
|
// 清空 dataList 中的 fnumber 字段
|
||||||
if (dataList.value && dataList.value.varList) {
|
if (dataList.value && dataList.value.varList) {
|
||||||
|
|
|
||||||
|
|
@ -209,14 +209,15 @@ const fnExportTemplates = async () => {
|
||||||
}/specialoperations/excelAll`;
|
}/specialoperations/excelAll`;
|
||||||
};
|
};
|
||||||
// 使用 ref 包装数据使其具有响应性
|
// 使用 ref 包装数据使其具有响应性
|
||||||
const dataList = ref({ varList: [] });
|
const dataList = ref({ varList: [], total: 0 });
|
||||||
|
|
||||||
getForeNsicStatisticsList().then((data) => {
|
getForeNsicStatisticsList().then((data) => {
|
||||||
if (data && data.varList) {
|
if (data && data.varList) {
|
||||||
data.varList.forEach((item) => {
|
data.varList.forEach((item) => {
|
||||||
item.fnumber = 0;
|
item.fnumber = 0;
|
||||||
});
|
});
|
||||||
dataList.value = data;
|
dataList.value.varList = data.varList;
|
||||||
|
dataList.value.total = data.total;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const fnSubmitImport = async (formData) => {
|
const fnSubmitImport = async (formData) => {
|
||||||
|
|
|
||||||
|
|
@ -34,17 +34,20 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label-width="10px">
|
<el-form-item label-width="10px">
|
||||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
<el-button type="primary" @click="search">搜索</el-button>
|
||||||
<el-button native-type="reset" @click="fnGetDataTransfer">
|
<el-button @click="fnGetDataTransfer"> 重置 </el-button>
|
||||||
重置
|
|
||||||
</el-button>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
<layout-card>
|
<layout-card>
|
||||||
<layout-table :data="list" :show-pagination="false">
|
<layout-table
|
||||||
|
:data="list"
|
||||||
|
:show-pagination="false"
|
||||||
|
show-summary
|
||||||
|
:summary-method="fnGetSummaries"
|
||||||
|
>
|
||||||
<el-table-column label="序号" width="70">
|
<el-table-column label="序号" width="70">
|
||||||
<template #default="{ $index }">
|
<template #default="{ $index }">
|
||||||
{{ serialNumber(pagination, $index) }}
|
{{ serialNumber(pagination, $index) }}
|
||||||
|
|
@ -52,9 +55,13 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="DEPARTMENT_NAME" label="部门" />
|
<el-table-column prop="DEPARTMENT_NAME" label="部门" />
|
||||||
<el-table-column prop="TOTAL_COUNT" label="清单数量" />
|
<el-table-column prop="TOTAL_COUNT" label="清单数量" />
|
||||||
<el-table-column prop="TOTAL_CODE_num" label="待排查清单数量" />
|
<el-table-column prop="NEED_COUNT" label="应排查次数" />
|
||||||
<el-table-column prop="ALREADY_CHECK_COUNT" label="己排查清单数量" />
|
<el-table-column prop="REAL_COUNT" label="已排查次数" />
|
||||||
<el-table-column prop="CHECK_RATE" label="排查率" />
|
<el-table-column prop="CHECK_RATE" label="排查率">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ row.CHECK_RATE + "%" }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</layout-table>
|
</layout-table>
|
||||||
</layout-card>
|
</layout-card>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -68,11 +75,19 @@ import {
|
||||||
getListmanagerDeptList,
|
getListmanagerDeptList,
|
||||||
getDetectionSituationListTime,
|
getDetectionSituationListTime,
|
||||||
} from "@/request/statistical_analysis.js";
|
} from "@/request/statistical_analysis.js";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import { sumBy } from "lodash-es";
|
||||||
|
|
||||||
const handleExtraData = (dataList) => {
|
const handleExtraData = (dataList) => {
|
||||||
dataList.forEach((item) => {
|
dataList.forEach((item) => {
|
||||||
item.TOTAL_CODE_num = item.TOTAL_COUNT - item.ALREADY_CHECK_COUNT;
|
if (item.NEED_COUNT && item.REAL_COUNT) {
|
||||||
item.CHECK_RATE = item.CHECK_RATE.toFixed(2) + "%";
|
item.CHECK_RATE = (
|
||||||
|
(Number(item.REAL_COUNT) / Number(item.NEED_COUNT)) *
|
||||||
|
100
|
||||||
|
).toFixed(2);
|
||||||
|
} else {
|
||||||
|
item.CHECK_RATE = "0.00";
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -84,13 +99,78 @@ const { list, searchForm, pagination, fnGetData } = useListData(
|
||||||
usePagination: false,
|
usePagination: false,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
const fnGetDataTransfer = () => {
|
const fnGetDataTransfer = () => {
|
||||||
|
searchForm.value.dates = [
|
||||||
|
dayjs().startOf("year").format("YYYY-MM-DD"),
|
||||||
|
dayjs().format("YYYY-MM-DD"),
|
||||||
|
];
|
||||||
|
searchForm.value.DEPTIDS = [];
|
||||||
fnGetData({
|
fnGetData({
|
||||||
START_TIME: searchForm.value.dates?.[0],
|
START_TIME: searchForm.value.dates?.[0],
|
||||||
END_TIME: searchForm.value.dates?.[1],
|
END_TIME: searchForm.value.dates?.[1],
|
||||||
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const fnGetSummaries = ({ columns, data }) => {
|
||||||
|
const sums = [];
|
||||||
|
columns.forEach((column, index) => {
|
||||||
|
if (index === 0) {
|
||||||
|
sums[index] = "合计";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const property = column.property;
|
||||||
|
|
||||||
|
// 对于需要求和的字段(数值型)
|
||||||
|
if (
|
||||||
|
property === "REAL_COUNT" ||
|
||||||
|
property === "NEED_COUNT" ||
|
||||||
|
property === "TOTAL_COUNT"
|
||||||
|
) {
|
||||||
|
const total = sumBy(data, (item) => {
|
||||||
|
const val = item[property];
|
||||||
|
return isNaN(val) ? 0 : Number(val);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 显示 0 或 --(仅当所有值都为 NaN 时才显示 --)
|
||||||
|
sums[index] = total === 0 ? "0" : total.toString();
|
||||||
|
}
|
||||||
|
// 对于“排查率”列,单独处理
|
||||||
|
else if (property === "DEPARTMENT_NAME") {
|
||||||
|
sums[index] = "--"; // 不显示合计
|
||||||
|
} else {
|
||||||
|
// 特殊处理“排查率”
|
||||||
|
const totalReal = sumBy(data, (item) => {
|
||||||
|
const val = item.REAL_COUNT;
|
||||||
|
return isNaN(val) ? 0 : Number(val);
|
||||||
|
});
|
||||||
|
const totalNeed = sumBy(data, (item) => {
|
||||||
|
const val = item.NEED_COUNT;
|
||||||
|
return isNaN(val) ? 0 : Number(val);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (totalNeed > 0) {
|
||||||
|
const rate = (totalReal / totalNeed) * 100;
|
||||||
|
sums[index] = `${rate.toFixed(2)}%`;
|
||||||
|
} else {
|
||||||
|
sums[index] = "0.00%";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return sums;
|
||||||
|
};
|
||||||
|
|
||||||
|
const search = () => {
|
||||||
|
fnGetData({
|
||||||
|
START_TIME: searchForm.value.dates?.[0],
|
||||||
|
END_TIME: searchForm.value.dates?.[1],
|
||||||
|
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const fnInit = async () => {
|
const fnInit = async () => {
|
||||||
const resData = await getDetectionSituationListTime();
|
const resData = await getDetectionSituationListTime();
|
||||||
searchForm.value.dates = [resData.pd.MINTIME, resData.pd.MAXTIME];
|
searchForm.value.dates = [resData.pd.MINTIME, resData.pd.MAXTIME];
|
||||||
|
|
|
||||||
|
|
@ -44,10 +44,10 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label-width="10px">
|
<el-form-item label-width="10px">
|
||||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
<el-button type="primary" @click="fnGetDataTransfer"
|
||||||
<el-button native-type="reset" @click="findList = []">
|
>搜索</el-button
|
||||||
重置
|
>
|
||||||
</el-button>
|
<el-button @click="reset"> 重置 </el-button>
|
||||||
<el-button
|
<el-button
|
||||||
@click="
|
@click="
|
||||||
router.push({
|
router.push({
|
||||||
|
|
@ -121,7 +121,9 @@
|
||||||
>安全隐患。
|
>安全隐患。
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
截止{{ searchForm.dates[1] }}到期整改完成率<span class="text-red">
|
截止{{ searchForm.dates[1] }}到期整改完成(验收合格)率<span
|
||||||
|
class="text-red"
|
||||||
|
>
|
||||||
{{
|
{{
|
||||||
(
|
(
|
||||||
(rectifyCountSummary.yzgCount /
|
(rectifyCountSummary.yzgCount /
|
||||||
|
|
@ -263,35 +265,42 @@ const fnGetPercent = ({ columns, data }) => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 第八列(索引为 7):第五列(索引为 4) / 第四列(索引为 3)
|
// 第13列:整改率
|
||||||
if (index === 7) {
|
if (index === 13) {
|
||||||
const sum4 = sumBy(data, (item) => {
|
// 获取第4列(隐患数量)的总和
|
||||||
const val = item[columns[4]?.property];
|
const totalHiddenCount = sumBy(data, (item) => {
|
||||||
return isNaN(val) ? 0 : Number(val);
|
|
||||||
});
|
|
||||||
const sum3 = sumBy(data, (item) => {
|
|
||||||
const val = item[columns[3]?.property];
|
const val = item[columns[3]?.property];
|
||||||
return isNaN(val) ? 0 : Number(val);
|
return isNaN(val) ? 0 : Number(val);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (sum3 === 0) {
|
// 只计算“已验收数量”
|
||||||
|
const totalYysCount = sumBy(data, (item) => {
|
||||||
|
const yys = item[columns[6]?.property]; // 已验收数量
|
||||||
|
return isNaN(yys) ? 0 : Number(yys);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (totalHiddenCount === 0) {
|
||||||
sums[index] = "0%";
|
sums[index] = "0%";
|
||||||
} else {
|
} else {
|
||||||
sums[index] = ((sum4 / sum3) * 100).toFixed(2) + "%";
|
const rate = (totalYysCount / totalHiddenCount) * 100;
|
||||||
|
sums[index] = `${rate.toFixed(2)}%`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 其他列:常规求和逻辑
|
// 其他列:常规求和
|
||||||
if (!data.every((value) => isNaN(value[column.property]))) {
|
const allNaN = data.every((value) => isNaN(value[column.property]));
|
||||||
sums[index] =
|
if (allNaN) {
|
||||||
sumBy(data, (item) => {
|
|
||||||
return item[column.property];
|
|
||||||
}) || "--";
|
|
||||||
} else {
|
|
||||||
sums[index] = "--";
|
sums[index] = "--";
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const total = sumBy(data, (item) => {
|
||||||
|
const val = item[column.property];
|
||||||
|
return isNaN(val) ? 0 : Number(val);
|
||||||
|
});
|
||||||
|
|
||||||
|
sums[index] = total === 0 ? "0" : total.toString();
|
||||||
});
|
});
|
||||||
|
|
||||||
return sums;
|
return sums;
|
||||||
|
|
@ -335,20 +344,44 @@ const resultListCorrect = ref([
|
||||||
dataName: "隐患数量",
|
dataName: "隐患数量",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
dataItem: "yzgCount",
|
dataItem: "wzgCount",
|
||||||
dataName: "整改数量",
|
dataName: "未整改数量",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
dataItem: "wzgCount",
|
dataItem: "yzgCount",
|
||||||
dataName: "未完成整改隐患数量",
|
dataName: "已整改数量",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dataItem: "yysCount",
|
||||||
|
dataName: "已验收数量",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dataItem: "ygqCount",
|
||||||
|
dataName: "已过期数量",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dataItem: "dqrCount",
|
||||||
|
dataName: "待确认数量",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dataItem: "qrdhCount",
|
||||||
|
dataName: "确认时打回数量",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dataItem: "zgdhCount",
|
||||||
|
dataName: "整改时打回数量",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
dataItem: "yqCount",
|
dataItem: "yqCount",
|
||||||
dataName: "已延期整改数量",
|
dataName: "已延期整改数量",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
dataItem: "wzczgCount",
|
||||||
|
dataName: "未完成整改情况数量",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
dataItem: "rectificationRate",
|
dataItem: "rectificationRate",
|
||||||
dataName: "整改率",
|
dataName: "整改率(验收合格)",
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
const resultListAccept = ref([
|
const resultListAccept = ref([
|
||||||
|
|
@ -435,12 +468,27 @@ onMounted(() => {
|
||||||
fnGetDataTransfer();
|
fnGetDataTransfer();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const reset = () => {
|
||||||
|
const endDate = new Date();
|
||||||
|
const startDate = new Date();
|
||||||
|
startDate.setDate(endDate.getDate() - 7);
|
||||||
|
|
||||||
|
searchForm.value.dates = [
|
||||||
|
startDate.toISOString().split("T")[0],
|
||||||
|
endDate.toISOString().split("T")[0],
|
||||||
|
];
|
||||||
|
searchForm.value.HIDDEN_CLASSIFICATION = [];
|
||||||
|
searchForm.value.checkedIds = [];
|
||||||
|
// 调用数据获取方法
|
||||||
|
fnGetDataTransfer();
|
||||||
|
};
|
||||||
|
|
||||||
const fnGetDataTransfer = () => {
|
const fnGetDataTransfer = () => {
|
||||||
fnGetData({
|
fnGetData({
|
||||||
STARTTIME: searchForm.value.dates[0],
|
STARTTIME: searchForm.value.dates[0],
|
||||||
ENDTIME: searchForm.value.dates[1],
|
ENDTIME: searchForm.value.dates[1],
|
||||||
HIDDEN_CLASSIFICATION: searchForm.value.HIDDEN_CLASSIFICATION.join(","),
|
HIDDEN_CLASSIFICATION: searchForm.value.HIDDEN_CLASSIFICATION?.join(","),
|
||||||
checkedIds: searchForm.value.checkedIds.join(","),
|
checkedIds: searchForm.value.checkedIds?.join(","),
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -192,7 +192,11 @@
|
||||||
审批表详情
|
审批表详情
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="userStore.getUserInfo.ISMAIN === '1'"
|
v-if="
|
||||||
|
userStore.getUserInfo.ISMAIN === '1' &&
|
||||||
|
row.STEP_ID !== -1 &&
|
||||||
|
row.STEP_ID !== 0
|
||||||
|
"
|
||||||
type="danger"
|
type="danger"
|
||||||
text
|
text
|
||||||
link
|
link
|
||||||
|
|
@ -212,7 +216,7 @@
|
||||||
<check-list
|
<check-list
|
||||||
v-if="data.checkListDialog.visible"
|
v-if="data.checkListDialog.visible"
|
||||||
v-model:visible="data.checkListDialog.visible"
|
v-model:visible="data.checkListDialog.visible"
|
||||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||||
/>
|
/>
|
||||||
<layout-video
|
<layout-video
|
||||||
v-model:visible="data.videoDialog.visible"
|
v-model:visible="data.videoDialog.visible"
|
||||||
|
|
@ -236,7 +240,8 @@ import {
|
||||||
getTemporaryElectricityUsageFlow,
|
getTemporaryElectricityUsageFlow,
|
||||||
getTaskSetps,
|
getTaskSetps,
|
||||||
getTemporaryElectricityUsageList,
|
getTemporaryElectricityUsageList,
|
||||||
setEightWorkInvalid, getApplyDept
|
setEightWorkInvalid,
|
||||||
|
getApplyDept,
|
||||||
} from "@/request/eight_work.js";
|
} from "@/request/eight_work.js";
|
||||||
import LayoutVideo from "@/components/video/index.vue";
|
import LayoutVideo from "@/components/video/index.vue";
|
||||||
import CheckList from "@/components/safety_briefing_checklist/index.vue";
|
import CheckList from "@/components/safety_briefing_checklist/index.vue";
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用电单位负责人" prop="AUDIT_USER_ID">
|
<el-form-item label="用电单位负责人" prop="AUDIT_USER_ID">
|
||||||
<el-select v-model="form.AUDIT_USER_ID" filterable>
|
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.auditUserList"
|
v-for="item in data.auditUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="配送电单位负责人" prop="APPROVE_USER_ID">
|
<el-form-item label="配送电单位负责人" prop="APPROVE_USER_ID">
|
||||||
<el-select v-model="form.APPROVE_USER_ID" filterable>
|
<el-select v-model="form.APPROVE_USER_ID" filterable multiple>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in data.safetyUserList"
|
v-for="item in data.safetyUserList"
|
||||||
:key="item.USER_ID"
|
:key="item.USER_ID"
|
||||||
|
|
@ -102,23 +102,18 @@ const props = defineProps({
|
||||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||||
const { visible, form } = useVModels(props, emits);
|
const { visible, form } = useVModels(props, emits);
|
||||||
|
|
||||||
const fnHasLevel = async (rule, value, callback) => {
|
const fnHasLevel = async () => {
|
||||||
if (value) {
|
const resData = await getElectricityVerifyConfigurationUser({
|
||||||
const resData = await getElectricityVerifyConfigurationUser({
|
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
});
|
||||||
});
|
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
return ElMessage.error("该申请部门已存在");
|
||||||
callback(new Error("该申请部门已存在"));
|
|
||||||
else callback();
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const rules = {
|
const rules = {
|
||||||
APPLY_DEPARTMENT_ID: [
|
APPLY_DEPARTMENT_ID: [
|
||||||
{ required: true, message: "请选择申请部门", trigger: "change" },
|
{ required: true, message: "请选择申请部门", trigger: "change" },
|
||||||
{ validator: fnHasLevel, trigger: "blur" },
|
// { validator: fnHasLevel, trigger: "blur" },
|
||||||
],
|
],
|
||||||
|
|
||||||
AUDIT_DEPARTMENT_ID: [
|
AUDIT_DEPARTMENT_ID: [
|
||||||
|
|
@ -154,12 +149,12 @@ const data = reactive({
|
||||||
|
|
||||||
const fnAuditDepartmentChange = () => {
|
const fnAuditDepartmentChange = () => {
|
||||||
data.auditUserList = [];
|
data.auditUserList = [];
|
||||||
form.value.AUDIT_USER_ID = "";
|
form.value.AUDIT_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnSafetyDepartmentChange = () => {
|
const fnSafetyDepartmentChange = () => {
|
||||||
data.safetyUserList = [];
|
data.safetyUserList = [];
|
||||||
form.value.APPROVE_USER_ID = "";
|
form.value.APPROVE_USER_ID = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnClose = () => {
|
const fnClose = () => {
|
||||||
|
|
@ -172,11 +167,27 @@ const fnSubmit = debounce(
|
||||||
1000,
|
1000,
|
||||||
async () => {
|
async () => {
|
||||||
const form = props.form;
|
const form = props.form;
|
||||||
|
await useFormValidate(formRef);
|
||||||
|
const AUDIT_USER_ID = form.AUDIT_USER_ID
|
||||||
|
? form.AUDIT_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const APPROVE_USER_ID = form.APPROVE_USER_ID
|
||||||
|
? form.APPROVE_USER_ID.join(",")
|
||||||
|
: "";
|
||||||
|
const params = {
|
||||||
|
...form,
|
||||||
|
AUDIT_USER_ID,
|
||||||
|
APPROVE_USER_ID,
|
||||||
|
};
|
||||||
if (props.type === "add") {
|
if (props.type === "add") {
|
||||||
await useFormValidate(formRef);
|
const isCon = await fnHasLevel();
|
||||||
await setElectricityConfigurationUserAdd(form);
|
if (!isCon) {
|
||||||
|
await setElectricityConfigurationUserAdd(params);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
await setElectricityConfigurationUserEdit(form);
|
await setElectricityConfigurationUserEdit(params);
|
||||||
}
|
}
|
||||||
ElMessage.success("提交成功");
|
ElMessage.success("提交成功");
|
||||||
fnClose();
|
fnClose();
|
||||||
|
|
@ -207,6 +218,7 @@ watchEffect(() => {
|
||||||
if (form.value.APPROVE_DEPARTMENT_ID)
|
if (form.value.APPROVE_DEPARTMENT_ID)
|
||||||
fnGetSafetyUser(form.value.APPROVE_DEPARTMENT_ID);
|
fnGetSafetyUser(form.value.APPROVE_DEPARTMENT_ID);
|
||||||
});
|
});
|
||||||
|
watchEffect(() => {});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss"></style>
|
||||||
|
|
|
||||||
|
|
@ -138,9 +138,9 @@ const data = reactive({
|
||||||
CONFIGURATION_ID: "",
|
CONFIGURATION_ID: "",
|
||||||
APPLY_DEPARTMENT_ID: "",
|
APPLY_DEPARTMENT_ID: "",
|
||||||
AUDIT_DEPARTMENT_ID: "",
|
AUDIT_DEPARTMENT_ID: "",
|
||||||
AUDIT_USER_ID: "",
|
AUDIT_USER_ID: [],
|
||||||
APPROVE_DEPARTMENT_ID: "",
|
APPROVE_DEPARTMENT_ID: "",
|
||||||
APPROVE_USER_ID: "",
|
APPROVE_USER_ID: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
@ -190,6 +190,8 @@ const fnGoEdit = async (id) => {
|
||||||
const resData = await getElectricityConfigurationUserView({
|
const resData = await getElectricityConfigurationUserView({
|
||||||
CONFIGURATION_ID: id,
|
CONFIGURATION_ID: id,
|
||||||
});
|
});
|
||||||
|
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||||
|
resData.pd.APPROVE_USER_ID = resData.pd.APPROVE_USER_ID.toString().split(",");
|
||||||
data.editDialog.form = resData.pd;
|
data.editDialog.form = resData.pd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -209,6 +209,16 @@ const fnPreviewVideo = async (row) => {
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
ElMessage.error("启动转码失败: " + (error.message || "未知错误"));
|
ElMessage.error("启动转码失败: " + (error.message || "未知错误"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// // 直接打开播放器弹窗,使用大华SDK的预览接口
|
||||||
|
// data.transcodeVideoDialog.visible = true;
|
||||||
|
// // 构造大华SDK预览URL,通道号从row.PLS_ID获取
|
||||||
|
// data.transcodeVideoDialog.src = `/api/video/start-preview?channel=${row.PLS_ID || 0}`;
|
||||||
|
// data.transcodeVideoDialog.id = row.PLS_ID;
|
||||||
|
// } catch (error) {
|
||||||
|
// ElMessage.error("播放视频失败: " + (error.message || "未知错误"));
|
||||||
|
// }
|
||||||
};
|
};
|
||||||
|
|
||||||
const fnDeleteVideo = async (row) => {
|
const fnDeleteVideo = async (row) => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue