diff --git a/.env b/.env
index f15851b..5f92b71 100644
--- a/.env
+++ b/.env
@@ -1,5 +1,5 @@
VITE_BASE_URL=http://192.168.0.17:8001/
-VITE_PROXY=/api
+VITE_PROXY=/api/
VITE_FILE_URL=https://file.zcloudchina.com/YTHFile
-VITE_TEMPLATE_URL='https://qaaq.qhdsafety.com/file/'
+VITE_TEMPLATE_URL=https://qaaq.qhdsafety.com/file/
diff --git a/src/assets/js/asyncRouter.js b/src/assets/js/asyncRouter.js
index aa72e03..a19141f 100644
--- a/src/assets/js/asyncRouter.js
+++ b/src/assets/js/asyncRouter.js
@@ -112,6 +112,43 @@ export default [
},
],
},
+ {
+ path: "/system_operation",
+ redirect: "/system_operation/system_documents",
+ meta: { title: "体系运行", model: MODEL["1"] },
+ component: "children",
+ children: [
+ {
+ path: "/system_operation/system_documents",
+ meta: { title: "体系文件", isSubMenu: false },
+ component: "system_operation/system_documents/index",
+ },
+ ],
+ },
+ {
+ path: "/risk_control",
+ redirect: "/risk_control/risk_point",
+ meta: { title: "风险管控", model: MODEL["1"] },
+ component: "children",
+ children: [
+ {
+ path: "/risk_control/risk_point",
+ meta: { title: "风险点(单元)", isSubMenu: false },
+ component: "children",
+ children: [
+ {
+ path: "",
+ component: "risk_control/risk_point/index",
+ },
+ {
+ path: "/risk_control/risk_point/view",
+ meta: { title: "查看", activeMenu: "/risk_control/risk_point" },
+ component: "risk_control/risk_point/view",
+ },
+ ],
+ },
+ ],
+ },
{
path: "/platform_resource_library",
redirect: "/platform_resource_library/courseware",
diff --git a/src/assets/js/data_dictionary.js b/src/assets/js/data_dictionary.js
index caec7db..62687b1 100644
--- a/src/assets/js/data_dictionary.js
+++ b/src/assets/js/data_dictionary.js
@@ -4,6 +4,7 @@ import {
getLevelsAndChildrenNumber,
getRegulatoryType,
getDepartmentTree,
+ getLevelsCorp,
} from "@/request/data_dictionary.js";
import { ref } from "vue";
@@ -112,21 +113,21 @@ export const layoutFnGetPersonnelType = async () => {
};
// 职务
export const layoutFnGetDuties = async () => {
- const resData = await getLevels({
+ const resData = await getLevelsCorp({
DICTIONARIES_ID: "09e36ac01e9540f8bc84eab1c1a78754",
});
return ref(resData.list);
};
// 职称
export const layoutFnGetProfessionalTitle = async () => {
- const resData = await getLevels({
+ const resData = await getLevelsCorp({
DICTIONARIES_ID: "945a6b10e59946078b500f0fbafa8679",
});
return ref(resData.list);
};
// 工种
export const layoutFnGetJobType = async () => {
- const resData = await getLevels({
+ const resData = await getLevelsCorp({
DICTIONARIES_ID: "55484e491a5e442d839c4595380713ec",
});
return ref(resData.list);
@@ -139,8 +140,8 @@ export const layoutFnGetEmploymentSituation = async () => {
return ref(resData.list);
};
// 部门树
-export const layoutFnGetDepartmentTree = async () => {
- const resData = await getDepartmentTree();
+export const layoutFnGetDepartmentTree = async (params) => {
+ const resData = await getDepartmentTree(params);
return ref(JSON.parse(resData.zTreeNodes));
};
// 无法确定DICTIONARIES_ID的数据字典
diff --git a/src/assets/js/useDownloadFile.js b/src/assets/js/useDownloadFile.js
new file mode 100644
index 0000000..2c558fe
--- /dev/null
+++ b/src/assets/js/useDownloadFile.js
@@ -0,0 +1,22 @@
+import { ElMessageBox } from "element-plus";
+import { getFileName, getFileSuffix } from "@/assets/js/utils.js";
+
+export default async function useDownloadFile(url, name) {
+ if (!url) throw new Error("没有下载地址");
+ await ElMessageBox.confirm("确定要下载此文件吗?", { type: "warning" });
+ const FILE_URL = import.meta.env.VITE_FILE_URL;
+ name = name ? name + getFileSuffix(url) : getFileName(url);
+ fetch(FILE_URL + url)
+ .then((res) => res.blob())
+ .then((blob) => {
+ const a = document.createElement("a");
+ document.body.appendChild(a);
+ a.style.display = "none";
+ const url = window.URL.createObjectURL(blob);
+ a.href = url;
+ a.download = `${name}`;
+ a.click();
+ document.body.removeChild(a);
+ window.URL.revokeObjectURL(url);
+ });
+}
diff --git a/src/assets/js/utils.js b/src/assets/js/utils.js
index d81037e..912ac1e 100644
--- a/src/assets/js/utils.js
+++ b/src/assets/js/utils.js
@@ -1,4 +1,4 @@
-import { ElMessage, ElMessageBox } from "element-plus";
+import { ElMessage } from "element-plus";
/**
* @description 计算序号
@@ -266,16 +266,6 @@ export function secondConversion(second) {
}
}
-/**
- * @description 下载附件
- * @param {string} filePah 下载路径
- **/
-export async function downloadFile(filePah) {
- const FILE_URL = import.meta.env.VITE_FILE_URL;
- await ElMessageBox.confirm("确定要下载此文件吗?", { type: "warning" });
- window.open(FILE_URL + filePah, "_blank");
-}
-
/**
* @description 附件添加前缀
* @param {Array} list 附件数组
@@ -319,6 +309,18 @@ export function translationStatus(status, list) {
}
}
+/**
+ * @description 计算文件大小
+ * @param {number | string} size 文件kb
+ * @return {string} 计算后的文件大小
+ **/
+export function calculateFileSize(size) {
+ return size > 1024
+ ? (size / 1024 + "").substring(0, (size / 1024 + "").lastIndexOf(".") + 3) +
+ "MB"
+ : size + "KB";
+}
+
/**
* @description 根据身份证号获取出生日期和性别
* @param {String} idCard 身份证号
diff --git a/src/components/ali-player/index.vue b/src/components/ali-player/index.vue
index e65f734..e90ebd0 100644
--- a/src/components/ali-player/index.vue
+++ b/src/components/ali-player/index.vue
@@ -86,6 +86,10 @@ const play = () => {
const pause = () => {
player && player.pause();
};
+defineExpose({
+ play,
+ pause,
+});
diff --git a/src/components/pdf/index.vue b/src/components/pdf/index.vue
index f90b76f..48ab62c 100644
--- a/src/components/pdf/index.vue
+++ b/src/components/pdf/index.vue
@@ -5,7 +5,7 @@
ref="pdfRef"
v-for="page in numOfPages"
:key="page"
- :src="src"
+ :src="VITE_FILE_URL + src"
:page="page"
/>
@@ -18,6 +18,7 @@ import { VuePdf, createLoadingTask } from "vue3-pdfjs/esm";
import { ElMessage } from "element-plus";
import { useVModel } from "@vueuse/core";
+const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
defineOptions({
name: "LayoutPdf",
});
@@ -38,7 +39,7 @@ const pdfRef = ref(null);
const numOfPages = ref(0);
watchEffect(() => {
if (props.visible) {
- const loadingTask = createLoadingTask(props.src);
+ const loadingTask = createLoadingTask(VITE_FILE_URL + props.src);
loadingTask.promise
.then((pdf) => {
numOfPages.value = pdf.numPages;
diff --git a/src/components/qr_code/index.vue b/src/components/qr_code/index.vue
new file mode 100644
index 0000000..23a77f1
--- /dev/null
+++ b/src/components/qr_code/index.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/select_create/index.vue b/src/components/select_create/index.vue
index 5c8049f..561ff5c 100644
--- a/src/components/select_create/index.vue
+++ b/src/components/select_create/index.vue
@@ -20,7 +20,7 @@
>
{{ item.NAME }}
-
+
diff --git a/src/components/table/index.vue b/src/components/table/index.vue
index 4133715..73a1fb0 100644
--- a/src/components/table/index.vue
+++ b/src/components/table/index.vue
@@ -8,7 +8,7 @@
:height="height"
:max-height="maxHeight"
:highlight-current-row="highlightCurrentRow"
- :row-key="rowKey"
+ :row-key="getRowKey"
:row-class-name="rowClassName"
:show-header="showHeader"
:show-summary="showSummary"
@@ -121,6 +121,11 @@ const handleSizeChange = (val) => {
});
emits("get-data");
};
+const getRowKey = (row) => {
+ if (!props.rowKey) return;
+ if (typeof props.rowKey === "string") return row[props.rowKey];
+ else return props.rowKey(row);
+};
const rowClick = (row, column, event) => {
emits("row-click", row, column, event);
};
diff --git a/src/components/video/index.vue b/src/components/video/index.vue
new file mode 100644
index 0000000..84c90a9
--- /dev/null
+++ b/src/components/video/index.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/request/api.js b/src/request/api.js
index 0ca86bd..eaa0ee9 100644
--- a/src/request/api.js
+++ b/src/request/api.js
@@ -3,6 +3,7 @@ import { post, upload } from "./axios";
export const Login = (params) => post("/admin/check", params); // 登录
export const logout = (params) => post("/main/logout", params); // 退出登录
export const getAsyncRouter = (params) => post("/main/index", params); // 获取动态路由
+export const getHasMenu = (params) => post("/head/hasMenu", params); // 获取有没有权限访问路由
export const getUserInfo = (params) => post("/user/goEditMyInfo", params); // 获取用户信息
export const setUserInfo = (params) => post("/user/editUserOwn", params); // 修改用户信息
export const getVerifyDuplicateEmail = (params) =>
diff --git a/src/request/data_dictionary.js b/src/request/data_dictionary.js
index 2a458cf..76b130c 100644
--- a/src/request/data_dictionary.js
+++ b/src/request/data_dictionary.js
@@ -6,6 +6,12 @@ export const getLevels = (params) =>
loading: false,
...params,
});
+// 获取数据字典
+export const getLevelsCorp = (params) =>
+ post("/dictionariesCorp/getLevels", {
+ loading: false,
+ ...params,
+ });
// 获取数据字典包括子级数量
export const getLevelsAndChildrenNumber = (params) =>
post("/dictionaries/getLevelsAndSCount", {
diff --git a/src/request/enterprise_management.js b/src/request/enterprise_management.js
index 7129288..5358e93 100644
--- a/src/request/enterprise_management.js
+++ b/src/request/enterprise_management.js
@@ -39,3 +39,6 @@ export const getUserScheduleView = (params) =>
post("/shiftworkperiod/getWorkDate", params); // 用户管理查看排班表
export const setDictionaryDelete = (params) =>
post("/dictionariesCorp/delete", params); // 数据字典删除
+export const setUserAdd = (params) => post("/user/saveUser", params); // 用户管理添加
+export const setUserEdit = (params) => post("/user/editUser", params); // 用户管理修改
+export const getUserView = (params) => post("/user/goEditUser", params); // 用户管理查看
diff --git a/src/request/risk_control.js b/src/request/risk_control.js
new file mode 100644
index 0000000..e56827d
--- /dev/null
+++ b/src/request/risk_control.js
@@ -0,0 +1,13 @@
+import { post, upload } from "@/request/axios.js";
+
+export const getRiskPointList = (params) => post("/riskunit/list", params); // 风险点单元列表
+export const setRiskPointDelete = (params) => post("/riskunit/delete", params); // 风险点单元删除
+export const setRiskPointImport = (params) =>
+ upload("/riskunit/readExcel", params); // 风险点单元导入
+export const setRiskPointBatchDelete = (params) =>
+ post("/riskunit/deleteAll", params); // 风险点单元批量删除
+export const getRiskPointView = (params) => post("/riskunit/goEdit", params); // 风险点单元查看
+export const setRiskPointAdd = (params) => post("/riskunit/add", params); // 风险点单元添加
+export const setRiskPointEdit = (params) => post("/riskunit/edit", params); // 风险点单元修改
+export const getRiskPointInspectList = (params) =>
+ post("/riskunit/getRisByUnitId", params); // 风险点单元检查内容
diff --git a/src/request/system_operation.js b/src/request/system_operation.js
new file mode 100644
index 0000000..364910c
--- /dev/null
+++ b/src/request/system_operation.js
@@ -0,0 +1,13 @@
+import { post, upload } from "@/request/axios.js";
+
+export const getSystemDocumentsTree = (params) =>
+ post("/mfolder/listTree", params); // 体系文件树
+export const getSystemDocumentsList = (params) => post("/mfolder/list", params); // 体系文件列表
+export const setSystemDocumentsDelete = (params) =>
+ post("/mfolder/delete", params); // 体系文件删除
+export const setSystemDocumentsAddFolder = (params) =>
+ post("/mfolder/add", params); // 体系文件添加文件夹
+export const setSystemDocumentsUploadFile = (params) =>
+ upload("/mfolder/upload", params); // 体系文件上传文件
+export const setSystemDocumentsBatchUploadFile = (params) =>
+ upload("/mfolder/batchUpload", params); // 体系文件批量上传文件
diff --git a/src/views/enterprise_management/department/components/add.vue b/src/views/enterprise_management/department/components/add.vue
index f879b83..de70f2a 100644
--- a/src/views/enterprise_management/department/components/add.vue
+++ b/src/views/enterprise_management/department/components/add.vue
@@ -54,7 +54,12 @@
label="监管部门"
prop="checkedIds"
>
-
+
+
+
+
+
{{ info.CORP_NAME }}
+
+
+
+
+ 关闭
+ 打 印
+
+
+
+
+
+
+
diff --git a/src/views/enterprise_management/information/edit.vue b/src/views/enterprise_management/information/edit.vue
index 3b6eb47..f317506 100644
--- a/src/views/enterprise_management/information/edit.vue
+++ b/src/views/enterprise_management/information/edit.vue
@@ -584,7 +584,7 @@ const data = reactive({
SUBORDINATION: "",
SCALE: "",
SCALE_TYPE: "",
- TRAINTYPE: [],
+ TRAINTYPE: "",
USERS_NUM: "",
FOURTYPE: "",
four_images: [],
diff --git a/src/views/enterprise_management/information/info.vue b/src/views/enterprise_management/information/info.vue
index 1e8cb6b..93ffada 100644
--- a/src/views/enterprise_management/information/info.vue
+++ b/src/views/enterprise_management/information/info.vue
@@ -191,26 +191,9 @@
>
修改
- 二维码
+ 二维码
-
-
-
-
{{ data.info.CORP_NAME }}
-
-
-
-
-
-
- 关 闭
- 打 印
-
-
+
@@ -219,18 +202,14 @@ import { getEnterpriseInfo } from "@/request/enterprise_management.js";
import { addingPrefixToFile } from "@/assets/js/utils.js";
import { reactive } from "vue";
import { useRouter } from "vue-router";
-import { useQRCode } from "@vueuse/integrations/useQRCode";
-import { ElMessage } from "element-plus";
+import Print from "./components/print.vue";
const router = useRouter();
const data = reactive({
info: {},
bus_images: [],
four_images: [],
- qrCodeDialog: {
- visible: false,
- src: "",
- },
+ qrCodeDialogVisible: false,
});
const fnGetData = async () => {
const resData = await getEnterpriseInfo();
@@ -239,21 +218,6 @@ const fnGetData = async () => {
data.four_images = addingPrefixToFile(resData.fourImgs);
};
fnGetData();
-const fnQrCodeDialogChangeShow = () => {
- data.qrCodeDialog.visible = !data.qrCodeDialog.visible;
-};
-const fnQrCode = () => {
- if (data.info.CORPINFO_ID) {
- fnQrCodeDialogChangeShow();
- // TODO: 扫码跳转到企业信息页面
- data.qrCodeDialog.src = useQRCode("https://vueuse.org", {
- width: 200,
- height: 200,
- margin: 1,
- correctLevel: "H",
- });
- } else ElMessage.error("请重新获取二维码");
-};
diff --git a/src/views/enterprise_management/user/add.vue b/src/views/enterprise_management/user/add.vue
index e5b6549..3829575 100644
--- a/src/views/enterprise_management/user/add.vue
+++ b/src/views/enterprise_management/user/add.vue
@@ -390,7 +390,10 @@ import {
getUserCurrentShiftList,
getUserInfo,
getUserScheduling,
+ getUserView,
setDictionaryDelete,
+ setUserAdd,
+ setUserEdit,
} from "@/request/enterprise_management.js";
import LayoutDepartment from "@/components/department/index.vue";
import LayoutUpload from "@/components/upload/index.vue";
@@ -399,7 +402,11 @@ import { getPostListAll } from "@/request/data_dictionary.js";
import { useRoute, useRouter } from "vue-router";
import Scheduling from "./components/scheduling.vue";
import { InfoFilled } from "@element-plus/icons-vue";
-import { idCardGetDateAndGender } from "@/assets/js/utils.js";
+import {
+ addingPrefixToFile,
+ idCardGetDateAndGender,
+ image2Base64,
+} from "@/assets/js/utils.js";
import {
layoutFnGetDegreeOfEducation,
layoutFnGetDuties,
@@ -416,6 +423,7 @@ import { debounce } from "throttle-debounce";
import {
getVerifyDeduplicationUser,
getVerifyDuplicateEmail,
+ setUploadImg,
} from "@/request/api.js";
import useFormValidate from "@/assets/js/useFormValidate.js";
@@ -534,6 +542,8 @@ const data = reactive({
employmentSituationList: [],
allUser: 0,
USERS_NUM: 0,
+ oldPostId: "",
+ oldDepartId: "",
form: {
ROLE_ID: "",
DEPARTMENT_ID: "",
@@ -573,6 +583,24 @@ const data = reactive({
},
scheduleVisible: false,
});
+const fnGetData = async () => {
+ if (!USER_ID) return;
+ const resData = await getUserView({ USER_ID });
+ const form = resData.pd;
+ form.PASSWORD = "666666";
+ form.periodStr = resData.periodStr;
+ form.ISSTUDENT = resData.pd.ISSTUDENT.toString();
+ if (form.USERAVATARURL_CONVERT)
+ form.faceFile = [
+ { url: form.USERAVATARPREFIX + form.USERAVATARURL_CONVERT },
+ ];
+ data.scheduleInfo = resData.period;
+ data.oldPostId = form.POST_ID;
+ data.oldDepartId = form.DEPARTMENT_ID;
+ form.userCerFile = addingPrefixToFile(resData.userCerList);
+ data.form = { ...data.form, ...form };
+};
+fnGetData();
const fnGetUserRole = async () => {
const resData = await getUserInfo();
data.roleList = resData.roleList;
@@ -624,41 +652,27 @@ const fnChangeIdCard = () => {
data.form.SEX = sex;
data.form.DATE_OF_BIRTH = date;
};
-const fnGetNation = async () => {
- const { value } = await layoutFnGetNation();
- data.nationList = value;
-};
-const fnGetSex = async () => {
- const { value } = await layoutFnGetSex();
- data.sexList = value;
-};
-const fnGetPoliticalLandscape = async () => {
- const { value } = await layoutFnGetPoliticalLandscape();
- data.politicalLandscapeList = value;
-};
-const fnGetDegreeOfEducation = async () => {
- const { value } = await layoutFnGetDegreeOfEducation();
- data.degreeOfEducationList = value;
-};
-const fnGetPersonnelType = async () => {
- const { value } = await layoutFnGetPersonnelType();
- data.personnelTypeList = value;
-};
-const fnGetDuties = async () => {
- const { value } = await layoutFnGetDuties();
- data.dutiesList = value;
-};
-const fnGetProfessionalTitle = async () => {
- const { value } = await layoutFnGetProfessionalTitle();
- data.professionalTitleList = value;
-};
-const fnGetJobType = async () => {
- const { value } = await layoutFnGetJobType();
- data.jobTypeList = value;
-};
-const fnGetEmploymentSituation = async () => {
- const { value } = await layoutFnGetEmploymentSituation();
- data.employmentSituationList = value;
+const fnGetLevels = async () => {
+ const { value: nationList } = await layoutFnGetNation();
+ data.nationList = nationList;
+ const { value: sexList } = await layoutFnGetSex();
+ data.sexList = sexList;
+ const { value: politicalLandscapeList } =
+ await layoutFnGetPoliticalLandscape();
+ data.politicalLandscapeList = politicalLandscapeList;
+ const { value: degreeOfEducationList } = await layoutFnGetDegreeOfEducation();
+ data.degreeOfEducationList = degreeOfEducationList;
+ const { value: personnelTypeList } = await layoutFnGetPersonnelType();
+ data.personnelTypeList = personnelTypeList;
+ const { value: dutiesList } = await layoutFnGetDuties();
+ data.dutiesList = dutiesList;
+ const { value: professionalTitleList } = await layoutFnGetProfessionalTitle();
+ data.professionalTitleList = professionalTitleList;
+ const { value: jobTypeList } = await layoutFnGetJobType();
+ data.jobTypeList = jobTypeList;
+ const { value: employmentSituationList } =
+ await layoutFnGetEmploymentSituation();
+ data.employmentSituationList = employmentSituationList;
};
const fnDictionaryDelete = debounce(
1000,
@@ -704,15 +718,7 @@ const stop = watch(
() => data.form.ISSTUDENT,
(val) => {
if (val === "true") {
- fnGetNation();
- fnGetSex();
- fnGetPoliticalLandscape();
- fnGetDegreeOfEducation();
- fnGetPersonnelType();
- fnGetDuties();
- fnGetProfessionalTitle();
- fnGetJobType();
- fnGetEmploymentSituation();
+ fnGetLevels();
stop && stop();
}
},
@@ -728,20 +734,82 @@ const fnSubmit = debounce(
form.WORKSTATUS = data.scheduleInfo.WORKSTATUS;
form.DURATION = data.scheduleInfo.DURATION;
form.WORKPERIOD = data.scheduleInfo.WORKPERIOD;
+ if (fnFindValueInList("dutiesList", form.DUTIES)) {
+ form.letDutiesType = "select";
+ form.DUTIESValue = "";
+ } else {
+ form.letDutiesType = "value";
+ form.DUTIESValue = form.DUTIES;
+ }
+ if (fnFindValueInList("professionalTitleList", form.TITLE)) {
+ form.letTitleType = "select";
+ form.letTitleValue = "";
+ } else {
+ form.letTitleType = "value";
+ form.letTitleValue = form.TITLE;
+ }
+ if (fnFindValueInList("jobTypeList", form.TYPE_OF_WORK)) {
+ form.letTypeOfWorkType = "select";
+ form.letTypeOfWorkValue = "";
+ } else {
+ form.letTypeOfWorkType = "value";
+ form.letTypeOfWorkValue = form.TYPE_OF_WORK;
+ }
+ if (data.form.faceFile?.[0]?.raw) {
+ const resData = await image2Base64(data.form.faceFile[0].url);
+ form.USERAVATARPREFIX = resData.substring(
+ 0,
+ resData.indexOf("base64,") + 7
+ );
+ form.USERAVATARURL = resData.substring(resData.indexOf("base64,") + 7);
+ }
if (!USER_ID) {
- // 添加
- if (data.USERS_NUM > data.allUser) {
+ if (data.allUser > data.USERS_NUM) {
ElMessage.error("已超过可创建用户数量");
return;
}
+ const resData = await setUserAdd({ ...form });
+ if (data.form.ISSTUDENT === "true") await fnUploadImage(resData.USER_ID);
} else {
- // 修改
+ if (
+ data.oldDepartId !== data.form.DEPARTMENT_ID ||
+ data.oldPostId !== data.form.POST_ID
+ ) {
+ await ElMessageBox.confirm(
+ "如变更了部门或岗位,保存后将删除该用户所有清单,是否确定?",
+ { type: "warning" }
+ );
+ form.OPERATIONTYPE = 1;
+ }
+ await setUserEdit({ ...form });
+ if (data.form.ISSTUDENT === "true")
+ await fnUploadImage(data.form.USER_ID);
}
ElMessage.success("操作成功");
router.back();
},
{ atBegin: true }
);
+const fnUploadImage = async (USER_ID) => {
+ const formData = new FormData();
+ for (let i = 0; i < data.form.userCerFile.length; i++) {
+ if (data.form.userCerFile[i].raw)
+ formData.append("FFILE", data.form.userCerFile[i].raw);
+ }
+ formData.append("FOREIGN_KEY", USER_ID);
+ formData.append("TYPE", 18);
+ await setUploadImg(formData);
+};
+const fnFindValueInList = (list, value) => {
+ let existence = false;
+ for (let i = 0; i < data[list].length; i++) {
+ if (data[list][i].DICTIONARIES_ID === value) {
+ existence = true;
+ break;
+ }
+ }
+ return existence;
+};
diff --git a/src/views/risk_control/risk_point/components/add.vue b/src/views/risk_control/risk_point/components/add.vue
new file mode 100644
index 0000000..e7c6570
--- /dev/null
+++ b/src/views/risk_control/risk_point/components/add.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
+
+
diff --git a/src/views/risk_control/risk_point/components/print.vue b/src/views/risk_control/risk_point/components/print.vue
new file mode 100644
index 0000000..131cae7
--- /dev/null
+++ b/src/views/risk_control/risk_point/components/print.vue
@@ -0,0 +1,48 @@
+
+
+
+ 风险点(单元)信息
+
+
+ {{ info.RISKUNITNAME }}
+
+
+ {{ info.DEPT_NAME }}
+
+
+ {{ info.CORP_NAME }}
+
+
+ {{ info.HEADMAN }}
+
+
+
+
+
+ 关闭
+ 打印
+
+
+
+
+
+
+
diff --git a/src/views/risk_control/risk_point/index.vue b/src/views/risk_control/risk_point/index.vue
new file mode 100644
index 0000000..adb7025
--- /dev/null
+++ b/src/views/risk_control/risk_point/index.vue
@@ -0,0 +1,248 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+ 重置
+
+
+
+
+
+ 打印
+ 导入
+ 导出
+
+
+
+
+
+
+
+
+
+
+ {{ serialNumber(pagination, $index) }}
+
+
+
+
+
+
+
+ 二维码
+
+
+ 查看
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+ 新增
+
+ 批量删除
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/risk_control/risk_point/view.vue b/src/views/risk_control/risk_point/view.vue
new file mode 100644
index 0000000..08837c8
--- /dev/null
+++ b/src/views/risk_control/risk_point/view.vue
@@ -0,0 +1,55 @@
+
+
+ 风险点(单元)信息
+
+
+ {{ RISKUNITNAME }}
+
+
+ {{ DEPT_NAME }}
+
+
+ 检查内容
+
+
+
+
+
+
+
+ 低风险/D级
+
+
+ 一般风险/C级
+
+
+ 较大风险/B级
+
+
+ 重大风险/A级
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system_operation/system_documents/components/add_folder.vue b/src/views/system_operation/system_documents/components/add_folder.vue
new file mode 100644
index 0000000..6b778b1
--- /dev/null
+++ b/src/views/system_operation/system_documents/components/add_folder.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
+
+
diff --git a/src/views/system_operation/system_documents/components/batch_upload_file.vue b/src/views/system_operation/system_documents/components/batch_upload_file.vue
new file mode 100644
index 0000000..d949427
--- /dev/null
+++ b/src/views/system_operation/system_documents/components/batch_upload_file.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
+
+
diff --git a/src/views/system_operation/system_documents/components/upload_file.vue b/src/views/system_operation/system_documents/components/upload_file.vue
new file mode 100644
index 0000000..d39d8ad
--- /dev/null
+++ b/src/views/system_operation/system_documents/components/upload_file.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
+
+
diff --git a/src/views/system_operation/system_documents/index.vue b/src/views/system_operation/system_documents/index.vue
new file mode 100644
index 0000000..f3b73fc
--- /dev/null
+++ b/src/views/system_operation/system_documents/index.vue
@@ -0,0 +1,272 @@
+
+
+
+
+
+ {{ serialNumber(pagination, $index) }}
+
+
+
+
+
+ {{ row.NAME }}
+
+
+
+
+
+ {{ row.NAME }}
+
+ [预览]
+
+
+ [预览]
+
+
+ [预览]
+
+
+ [预览]
+
+
+
+
+
+
+ {{ calculateFileSize(row.FILESIZE) }}
+
+
+
+
+
+
+ {{ row.SHARE === "no" ? "私有文件" : "公共文件" }}
+
+
+
+
+
+
+ 删除
+
+
+ 下载
+
+
+
+
+
+ 新建文件夹
+
+
+
+ 上传文件
+
+
+ 批量上传
+
+ 返回
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+