forked from integrated_whb/integrated_whb_vue
安全通知模块->新增列表、新增、详情页面
parent
d3be2a8f2a
commit
f025e90a0a
|
@ -0,0 +1,18 @@
|
||||||
|
import { post,upload } from "@/request/axios.js";
|
||||||
|
import {getLevelsByParentId} from "@/request/data_dictionary.js";
|
||||||
|
import {ref} from "vue";
|
||||||
|
|
||||||
|
export const getSecurityNoticeList = (params) => post("/securitynotice/listForSecurityNotice", params); // 安全通知列表
|
||||||
|
export const getSecurityNotice = (params) => post("/securitynotice/getAllReadDetail", params); // 阅读详情
|
||||||
|
export const dateteSecurityNotice = (params) => post("/securitynotice/delete", params); // 安全通知删除
|
||||||
|
export const getSecurityNoticeInfo = (params) => post("/securitynotice/goEdit", params); // 安全通知详情
|
||||||
|
export const addSecurityNotice = (params) => upload("/securitynotice/add", params); // 添加安全通知
|
||||||
|
export const getUserListAll = (params) => post("/user/listUserByCorp", params);
|
||||||
|
|
||||||
|
export const layoutFnGetNotificationsClassification = async () => {
|
||||||
|
const resData = await getLevelsByParentId({
|
||||||
|
parentId: "aaecb47d95524b84904809671e48a777",
|
||||||
|
});
|
||||||
|
return ref(resData);
|
||||||
|
};
|
||||||
|
|
|
@ -253,7 +253,6 @@ import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import AddRisk from "@/views/risk_control/ledger/components/add.vue";
|
import AddRisk from "@/views/risk_control/ledger/components/add.vue";
|
||||||
import SelectRisk from "./components/select_risk.vue";
|
import SelectRisk from "./components/select_risk.vue";
|
||||||
import AddInspectionRoute from "./components/add_inspection_route.vue";
|
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
|
@ -57,7 +57,6 @@ import { useVModels } from "@vueuse/core";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import { debounce } from "throttle-debounce";
|
import { debounce } from "throttle-debounce";
|
||||||
import { setInventoryManagementRoute } from "@/request/hazard_investigation.js";
|
import { setInventoryManagementRoute } from "@/request/hazard_investigation.js";
|
||||||
import { VueDraggable } from "vue-draggable-plus";
|
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
visible: {
|
visible: {
|
||||||
|
|
|
@ -0,0 +1,178 @@
|
||||||
|
<template>
|
||||||
|
<layout-card>
|
||||||
|
<el-form
|
||||||
|
ref="formRef"
|
||||||
|
:model="data.form"
|
||||||
|
:rules="rules"
|
||||||
|
label-width="175px"
|
||||||
|
>
|
||||||
|
<el-divider content-position="left">添加</el-divider>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="通知标题" prop="TITLE">
|
||||||
|
<el-input v-model="data.form.TITLE" placeholder="请输入内容" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="5">
|
||||||
|
<el-form-item label="通知等级" prop="LEVEL">
|
||||||
|
<el-select v-model="data.form.LEVEL" placeholder="请选择通知等级">
|
||||||
|
<el-option
|
||||||
|
v-for="item in relatedClassificationList"
|
||||||
|
:key="item.BIANMA"
|
||||||
|
:label="item.NAME"
|
||||||
|
:value="item.BIANMA"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="人员选择" prop="PERSON">
|
||||||
|
<div class="flexBox">
|
||||||
|
<el-input
|
||||||
|
type="textarea"
|
||||||
|
placeholder="请选择人员"
|
||||||
|
v-model="data.form.PERSON"
|
||||||
|
disabled
|
||||||
|
></el-input>
|
||||||
|
<el-button
|
||||||
|
class="addBtn"
|
||||||
|
type="primary"
|
||||||
|
@click="data.selectRiskDialogVisible = true"
|
||||||
|
>
|
||||||
|
选择
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- <el-select-->
|
||||||
|
<!-- v-model="data.form.UNITS_PIC"-->
|
||||||
|
<!-- clearable-->
|
||||||
|
<!-- placeholder="请选择人员"-->
|
||||||
|
<!-- @change="fnSelectUnitsUser($event)"-->
|
||||||
|
<!-- >-->
|
||||||
|
<!-- <el-option-->
|
||||||
|
<!-- v-for="item in relatedClassificationList"-->
|
||||||
|
<!-- :key="item.BIANMA"-->
|
||||||
|
<!-- :label="item.NAME"-->
|
||||||
|
<!-- :value="item.BIANMA"-->
|
||||||
|
<!-- />-->
|
||||||
|
<!-- </el-select>-->
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="通知附件" prop="fileList">
|
||||||
|
<layout-upload
|
||||||
|
v-model:file-list="data.form.fileList"
|
||||||
|
accept=".pdf,.mp4"
|
||||||
|
delete-to-server
|
||||||
|
:limit="9"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="50">
|
||||||
|
<el-form-item label="通知内容" prop="NOTIFICATIONCONTENT">
|
||||||
|
<layout-editor
|
||||||
|
v-model="data.form.NOTIFICATIONCONTENT"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<div class="tc mt-10">
|
||||||
|
<el-button type="primary" @click="fnSubmit"> 确定 </el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<select-risk
|
||||||
|
v-model:visible="data.selectRiskDialogVisible"
|
||||||
|
:list-data="data.listAll"
|
||||||
|
@submit="fnSelectRiskSubmit"
|
||||||
|
@submitall="fnSelectAllRiskSubmit"
|
||||||
|
/>
|
||||||
|
</layout-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
layoutFnGetNotificationsClassification,
|
||||||
|
getUserListAll,
|
||||||
|
addSecurityNotice,
|
||||||
|
} from "@/request/safety_production_related.js";
|
||||||
|
import { reactive, ref } from "vue";
|
||||||
|
import LayoutUpload from "@/components/upload/index.vue";
|
||||||
|
import LayoutEditor from "@/components/editor/index.vue";
|
||||||
|
import SelectRisk from "./components/select_risk.vue";
|
||||||
|
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||||
|
const formRef = ref(null);
|
||||||
|
const rules = {
|
||||||
|
TITLE: [{ required: true, message: "请输入通知标题", trigger: "blur" }],
|
||||||
|
LEVEL: [{ required: true, message: "请选择通知等级", trigger: "blur" }],
|
||||||
|
PERSON: [{ required: true, message: "请选择通知人员", trigger: "blur" }],
|
||||||
|
NOTIFICATIONCONTENT: [
|
||||||
|
{ required: true, message: "请输入通知内容", trigger: "blur" },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
const fnGetUnitsList = async () => {
|
||||||
|
const resData = await getUserListAll({});
|
||||||
|
data.unitsList = resData.varList;
|
||||||
|
};
|
||||||
|
fnGetUnitsList();
|
||||||
|
const relatedClassificationTempList =
|
||||||
|
await layoutFnGetNotificationsClassification();
|
||||||
|
const relatedClassificationList = [];
|
||||||
|
JSON.parse(relatedClassificationTempList.value.zTreeNodes).forEach((e) => {
|
||||||
|
relatedClassificationList.push({ name: e.id, BIANMA: e.name });
|
||||||
|
});
|
||||||
|
|
||||||
|
const data = reactive({
|
||||||
|
form: {
|
||||||
|
TITLE: "",
|
||||||
|
LEVEL: "",
|
||||||
|
PERSON: "",
|
||||||
|
fileList: [],
|
||||||
|
NOTIFICATIONCONTENT: "",
|
||||||
|
allStatus: 0, // 是否全选
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const fnSubmit = async () => {
|
||||||
|
await useFormValidate(formRef);
|
||||||
|
const formData = new FormData();
|
||||||
|
Object.keys(data.form).forEach((key) => {
|
||||||
|
formData.append(key, data.form[key]);
|
||||||
|
});
|
||||||
|
formData.delete("fileList");
|
||||||
|
for (let i = 0; i < data.form.fileList.length; i++) {
|
||||||
|
if (data.form.fileList[i].raw)
|
||||||
|
formData.append("FFILE", data.form.fileList[i].raw);
|
||||||
|
}
|
||||||
|
await addSecurityNotice(formData);
|
||||||
|
};
|
||||||
|
const fnSelectRiskSubmit = (list) => {
|
||||||
|
console.log(list);
|
||||||
|
const nameList = list.map((val) => {
|
||||||
|
return val.USERNAME;
|
||||||
|
});
|
||||||
|
data.form.PERSON = nameList.join(",");
|
||||||
|
data.form.allStatus = 0;
|
||||||
|
console.log(data.PERSON, 19);
|
||||||
|
console.log("是否全选", data.form.allStatus);
|
||||||
|
};
|
||||||
|
|
||||||
|
const fnSelectAllRiskSubmit = () => {
|
||||||
|
data.form.allStatus = 1;
|
||||||
|
data.PERSON = "已全部选择";
|
||||||
|
console.log("是否全选", data.form.allStatus);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.flexBox {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-end;
|
||||||
|
|
||||||
|
.addBtn {
|
||||||
|
margin-left: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,116 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog title="选择人员" v-model="visible" width="1500">
|
||||||
|
<el-form
|
||||||
|
:model="searchForm"
|
||||||
|
label-width="60px"
|
||||||
|
@submit.prevent="fnResetPagination"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="关键字" prop="KEYWORDS">
|
||||||
|
<el-input
|
||||||
|
v-model="searchForm.KEYWORDS"
|
||||||
|
placeholder="请输入关键字"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label-width="10px">
|
||||||
|
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||||
|
<el-button native-type="reset" @click="fnResetPagination">
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
<layout-table
|
||||||
|
ref="tableRef"
|
||||||
|
:data="list"
|
||||||
|
v-model:pagination="pagination"
|
||||||
|
@get-data="fnGetData"
|
||||||
|
row-key="RISKCHECKITEM_ID"
|
||||||
|
>
|
||||||
|
<el-table-column reserve-selection type="selection" width="55" />
|
||||||
|
<el-table-column label="序号" width="70">
|
||||||
|
<template v-slot="{ $index }">
|
||||||
|
{{ serialNumber(pagination, $index) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="USERNAME" label="姓名" />
|
||||||
|
<el-table-column prop="DEPARTNAME" label="部门" />
|
||||||
|
</layout-table>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="fnClose">取消</el-button>
|
||||||
|
<el-button type="primary" @click="fnAllSubmit"> 全选 </el-button>
|
||||||
|
<el-button type="primary" @click="fnSubmit"> 确定 </el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useVModel } from "@vueuse/core";
|
||||||
|
import { debounce } from "throttle-debounce";
|
||||||
|
import useListData from "@/assets/js/useListData.js";
|
||||||
|
import { watch } from "vue";
|
||||||
|
import { serialNumber } from "@/assets/js/utils.js";
|
||||||
|
import { differenceWith } from "lodash-es";
|
||||||
|
import { getUserListAll } from "@/request/safety_production_related.js";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
listData: {
|
||||||
|
type: Array,
|
||||||
|
required: true,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const emits = defineEmits(["update:visible", "submit", "submitall"]);
|
||||||
|
const visible = useVModel(props, "visible", emits);
|
||||||
|
|
||||||
|
const { list, searchForm, pagination, fnGetData, fnResetPagination, tableRef } =
|
||||||
|
useListData(getUserListAll, {
|
||||||
|
key: "userList",
|
||||||
|
immediate: false,
|
||||||
|
clearSelection: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
// const riskClassificationList = await layoutFnGetRiskClassification();
|
||||||
|
const stop = watch(
|
||||||
|
() => props.visible,
|
||||||
|
(value) => {
|
||||||
|
if (value) {
|
||||||
|
fnGetData();
|
||||||
|
stop && stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
const fnClose = () => {
|
||||||
|
visible.value = false;
|
||||||
|
};
|
||||||
|
const fnSubmit = debounce(
|
||||||
|
1000,
|
||||||
|
() => {
|
||||||
|
const selectionData = tableRef.value.getSelectionRows();
|
||||||
|
const listData = differenceWith(
|
||||||
|
selectionData,
|
||||||
|
props.listData,
|
||||||
|
(a, b) => a.RISKCHECKITEM_ID === b.RISKCHECKITEM_ID
|
||||||
|
);
|
||||||
|
fnClose();
|
||||||
|
emits("submit", listData);
|
||||||
|
},
|
||||||
|
{ atBegin: true }
|
||||||
|
);
|
||||||
|
|
||||||
|
const fnAllSubmit = () => {
|
||||||
|
fnClose();
|
||||||
|
emits("submitall");
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,140 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card>
|
||||||
|
<el-form
|
||||||
|
:model="searchForm"
|
||||||
|
label-width="100px"
|
||||||
|
@submit.prevent="searchNotifications"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="从业人员" prop="PERSON">
|
||||||
|
<el-input v-model="searchForm.PERSON" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="从业类型" prop="PRACTITIONERTYPE">
|
||||||
|
<el-input v-model="searchForm.PRACTITIONERTYPE" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="签收状态" prop="SIGNEDSTATUS">
|
||||||
|
<el-select v-model="searchForm.SIGNEDSTATUS">
|
||||||
|
<el-option label="已签收" :value="1" />
|
||||||
|
<!-- 1代表已签收 -->
|
||||||
|
<el-option label="未签收" :value="0" />
|
||||||
|
<!-- 0代表未签收 -->
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="回复状态" prop="REPLYSTATUS">
|
||||||
|
<el-select v-model="searchForm.REPLYSTATUS">
|
||||||
|
<el-option label="已回复" :value="1" />
|
||||||
|
<!-- 1代表已回复 -->
|
||||||
|
<el-option label="未回复" :value="0" />
|
||||||
|
<!-- 0代表未回复 -->
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||||
|
<el-button native-type="reset" @click="resetSearchForm"
|
||||||
|
>重置</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<layout-card>
|
||||||
|
<layout-table
|
||||||
|
:data="list"
|
||||||
|
:pagination="pagination"
|
||||||
|
@get-data="fnGetData"
|
||||||
|
@update:pagination="updatePagination"
|
||||||
|
stripe
|
||||||
|
border
|
||||||
|
show-header
|
||||||
|
>
|
||||||
|
<el-table-column label="序号" width="60">
|
||||||
|
<template #default="{ $index }">
|
||||||
|
{{ serialNumber(pagination, $index) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="从业人员" prop="PERSON" />
|
||||||
|
<el-table-column label="从业类型" prop="PRACTITIONERTYPE" />
|
||||||
|
<el-table-column label="签收时间" prop="SIGNEDDATE">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span v-if="row.SIGNEDDATE">{{ row.SIGNEDDATE }}</span>
|
||||||
|
<el-tag v-else>未签收</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="回复时间" prop="REPLYDATE">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span v-if="row.REPLYDATE">{{ row.REPLYDATE }}</span>
|
||||||
|
<el-tag v-else>未回复</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="回复内容" prop="REPLYCONTENT">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span v-if="row.REPLYCONTENT">{{ row.REPLYCONTENT }}</span>
|
||||||
|
<el-tag v-else>未回复</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</layout-table>
|
||||||
|
</layout-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { reactive, onMounted } from "vue";
|
||||||
|
import { useRoute } from "vue-router";
|
||||||
|
import { getSecurityNotice } from "@/request/safety_production_related.js";
|
||||||
|
import { serialNumber } from "@/assets/js/utils";
|
||||||
|
import useListData from "@/assets/js/useListData";
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
|
const NOTIFICATION_ID = route.query.NOTIFICATION_ID;
|
||||||
|
|
||||||
|
const searchForm = reactive({
|
||||||
|
PERSON: "",
|
||||||
|
PRACTITIONERTYPE: "",
|
||||||
|
SIGNEDSTATUS: null,
|
||||||
|
REPLYSTATUS: null,
|
||||||
|
});
|
||||||
|
|
||||||
|
const { list, pagination, fnGetData, fnResetPagination } = useListData(
|
||||||
|
getSecurityNotice,
|
||||||
|
{
|
||||||
|
searchForm,
|
||||||
|
otherParams: { NOTIFICATION_ID },
|
||||||
|
usePagination: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
async function searchNotifications() {
|
||||||
|
const params = Object.keys(searchForm).reduce((acc, key) => {
|
||||||
|
acc[key] = searchForm[key];
|
||||||
|
return acc;
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
params.NOTIFICATION_ID = NOTIFICATION_ID;
|
||||||
|
await fnGetData(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重置表单时,也确保重置为初始值
|
||||||
|
function resetSearchForm() {
|
||||||
|
Object.keys(searchForm).forEach((key) => {
|
||||||
|
searchForm[key] = "";
|
||||||
|
});
|
||||||
|
fnResetPagination({ NOTIFICATION_ID });
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
fnGetData({ NOTIFICATION_ID });
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -0,0 +1,173 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card>
|
||||||
|
<el-form
|
||||||
|
:model="searchForm"
|
||||||
|
label-width="100px"
|
||||||
|
@submit.prevent="fnResetPagination"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="通知标题" prop="TITLE">
|
||||||
|
<el-input v-model="searchForm.TITLE" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="回复状态" prop="REPLYSTATUS">
|
||||||
|
<el-select v-model="searchForm.REPLYSTATUS">
|
||||||
|
<el-option label="已回复" :value="1" />
|
||||||
|
<!-- 1代表已回复 -->
|
||||||
|
<el-option label="未回复" :value="0" />
|
||||||
|
<!-- 0代表未回复 -->
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="通知等级" prop="RISKUNITNAME">
|
||||||
|
<el-select v-model="searchForm.RISKUNITNAME">
|
||||||
|
<el-option
|
||||||
|
v-for="item in relatedClassificationList"
|
||||||
|
:key="item.BIANMA"
|
||||||
|
:label="item.NAME"
|
||||||
|
:value="item.BIANMA"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label-width="10px">
|
||||||
|
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||||
|
<el-button native-type="reset" @click="fnResetPagination">
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<layout-card>
|
||||||
|
<layout-table
|
||||||
|
:data="list"
|
||||||
|
@get-data="fnGetData"
|
||||||
|
v-model:pagination="pagination"
|
||||||
|
>
|
||||||
|
<el-table-column label="序号" width="60">
|
||||||
|
<template #default="{ $index }">
|
||||||
|
{{ serialNumber(pagination, $index) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="TITLE" label="通知标题" width="250" />
|
||||||
|
<el-table-column prop="POSTSTATUS" label="发布状态" width="250">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ row.POSTSTATUS === 0 ? "未发布" : "已发布" }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="SIGNING" label="签收情况" width="120">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="REPLY" label="回复情况" />
|
||||||
|
<el-table-column prop="CREATETIME" label="创建时间" width="100" />
|
||||||
|
<el-table-column
|
||||||
|
prop="TRANSPORTATIONCOMPANY"
|
||||||
|
label="运输企业"
|
||||||
|
width="90"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="180">
|
||||||
|
<template v-slot:default="{ row }">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path: '/safety_production_related/security_notice/notice_info',
|
||||||
|
query: {
|
||||||
|
NOTIFICATION_ID: row.NOTIFICATION_ID,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path: '/safety_production_related/security_notice/add',
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
添加
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="deleteItem(row.NOTIFICATION_ID)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
<!-- 阅读详情按钮 -->
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path: '/safety_production_related/security_notice/details',
|
||||||
|
query: {
|
||||||
|
NOTIFIION_ID: row.NOTIFICATION_ID,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
阅读详情
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</layout-table>
|
||||||
|
</layout-card>
|
||||||
|
<edit
|
||||||
|
v-model:visible="data.analysisDialog.visible"
|
||||||
|
:info="data.analysisDialog.info"
|
||||||
|
@get-data="fnResetPagination"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { serialNumber } from "@/assets/js/utils";
|
||||||
|
import useListData from "@/assets/js/useListData.js";
|
||||||
|
import { reactive } from "vue";
|
||||||
|
import {
|
||||||
|
getSecurityNoticeList,
|
||||||
|
layoutFnGetNotificationsClassification,
|
||||||
|
dateteSecurityNotice,
|
||||||
|
} from "@/request/safety_production_related.js";
|
||||||
|
import router from "@/router/index.js";
|
||||||
|
import { ElMessageBox, ElMessage } from "element-plus";
|
||||||
|
|
||||||
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
|
useListData(getSecurityNoticeList);
|
||||||
|
const data = reactive({
|
||||||
|
analysisDialog: {
|
||||||
|
visible: false,
|
||||||
|
info: {},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
// 删除事件
|
||||||
|
const deleteItem = async (value) => {
|
||||||
|
await ElMessageBox.confirm(`确定要删除吗?`, {
|
||||||
|
type: "warning",
|
||||||
|
});
|
||||||
|
await dateteSecurityNotice({ NOTIFICATION_ID: value });
|
||||||
|
ElMessage.success("删除成功");
|
||||||
|
fnGetData();
|
||||||
|
};
|
||||||
|
const relatedClassificationList =
|
||||||
|
await layoutFnGetNotificationsClassification();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -0,0 +1,60 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<layout-card>
|
||||||
|
<el-descriptions :column="1" border>
|
||||||
|
<el-descriptions-item label="通知标题">
|
||||||
|
{{ detailItems.TITLE }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="通知等级">
|
||||||
|
{{ detailItems.LEVEL }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="回复状态">
|
||||||
|
<div style="display: flex; align-items: center">
|
||||||
|
<el-switch
|
||||||
|
v-model="detailItems.REPLYSTATUS"
|
||||||
|
active-value="1"
|
||||||
|
inactive-value="0"
|
||||||
|
active-color="#13ce66"
|
||||||
|
inactive-color="#ff4949"
|
||||||
|
>
|
||||||
|
</el-switch>
|
||||||
|
<span style="margin-left: 8px">
|
||||||
|
{{ detailItems.REPLYSTATUS === "1" ? "开" : "关" }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="企业下发人">
|
||||||
|
{{ detailItems.PERSON }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="运输企业">
|
||||||
|
{{ detailItems.TRANSPORTATIONCOMPANY }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="通知内容">
|
||||||
|
<div v-html="detailItems.NOTIFICATIONCONTENT"></div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</layout-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { onMounted, reactive } from "vue";
|
||||||
|
import { getSecurityNoticeInfo } from "@/request/safety_production_related.js";
|
||||||
|
import { useRoute } from "vue-router";
|
||||||
|
const route = useRoute();
|
||||||
|
const { NOTIFICATION_ID } = route.query;
|
||||||
|
|
||||||
|
const detailItems = reactive({
|
||||||
|
LEVEL: "",
|
||||||
|
PERSON: "",
|
||||||
|
TRANSPORTATIONCOMPANY: "",
|
||||||
|
NOTIFICATIONCONTENT: "",
|
||||||
|
});
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
const response = await getSecurityNoticeInfo({ NOTIFICATION_ID });
|
||||||
|
Object.assign(detailItems, response.pd);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
Loading…
Reference in New Issue