diff --git a/src/api/dictionary.js b/src/api/dictionary.js index d0ac4ede..0e7f6382 100644 --- a/src/api/dictionary.js +++ b/src/api/dictionary.js @@ -1092,4 +1092,66 @@ export function deleteSysFileType(id) { url: `/SysFileType/deleteSysFileType/${id}`, method: 'delete' }) +} +// 项目文档-获取项目菜单 +export function getTrialFileTypeData(data) { + return request({ + url: `/TrialFileType/getTrialFileTypeData`, + method: 'post', + data + }) +} +// 项目文档-修改项目菜单启用 +export function setAuthorizedView(data) { + return request({ + url: `/TrialFileType/setAuthorizedView`, + method: 'post', + data + }) +} +// 项目文档-新增/修改项目菜单 +export function addOrUpdateTrialFileType(data) { + return request({ + url: `/TrialFileType/addOrUpdateTrialFileType`, + method: 'post', + data + }) +} +// 项目文档-删除项目菜单 +export function deleteTrialFileType(id) { + return request({ + url: `/TrialFileType/deleteTrialFileType/${id}`, + method: 'delete', + }) +} +// 项目文档-报告/文档列表 +export function getTrialFinalRecordList(data) { + return request({ + url: `/TrialFinalRecord/getTrialFinalRecordList`, + method: 'post', + data + }) +} +// 项目文档-报告/文档授权 +export function authorizedTrialFinalRecord(data) { + return request({ + url: `/TrialFinalRecord/authorizedTrialFinalRecord`, + method: 'post', + data + }) +} +// 项目文档-报告/文档新增/修改 +export function addOrUpdateTrialFinalRecord(data) { + return request({ + url: `/TrialFinalRecord/addOrUpdateTrialFinalRecord`, + method: 'post', + data + }) +} +// 项目文档-删除报告/文档 +export function deleteTrialFinalRecord(id) { + return request({ + url: `/TrialFinalRecord/deleteTrialFinalRecord/${id}`, + method: 'delete', + }) } \ No newline at end of file diff --git a/src/utils/index.js b/src/utils/index.js index 00d9b594..c62d6e22 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -34,7 +34,7 @@ export function parseTime(time, cFormat) { const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => { const value = formatObj[key] // Note: getDay() returns 0 on Sunday - if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] } + if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] } return value.toString().padStart(2, '0') }) return time_str @@ -51,12 +51,76 @@ export function param2Obj(url) { } return JSON.parse( '{"' + - decodeURIComponent(search) - .replace(/"/g, '\\"') - .replace(/&/g, '","') - .replace(/=/g, '":"') - .replace(/\+/g, ' ') + - '"}' + decodeURIComponent(search) + .replace(/"/g, '\\"') + .replace(/&/g, '","') + .replace(/=/g, '":"') + .replace(/\+/g, ' ') + + '"}' ) } +export function deepClone(target) { + const map = new WeakMap() + + function isObject(target) { + return (typeof target === 'object' && target) || typeof target === 'function' + } + + function clone(data) { + if (!isObject(data)) { + return data + } + if ([Date, RegExp].includes(data.constructor)) { + return new data.constructor(data) + } + if (typeof data === 'function') { + return new Function('return ' + data.toString())() + } + const exist = map.get(data) + if (exist) { + return exist + } + if (data instanceof Map) { + const result = new Map() + map.set(data, result) + data.forEach((val, key) => { + if (isObject(val)) { + result.set(key, clone(val)) + } else { + result.set(key, val) + } + }) + return result + } + if (data instanceof Set) { + const result = new Set() + map.set(data, result) + data.forEach(val => { + if (isObject(val)) { + result.add(clone(val)) + } else { + result.add(val) + } + }) + return result + } + const keys = Reflect.ownKeys(data) + const allDesc = Object.getOwnPropertyDescriptors(data) + const result = Object.create(Object.getPrototypeOf(data), allDesc) + map.set(data, result) + keys.forEach(key => { + const val = data[key] + if (isObject(val)) { + result[key] = clone(val) + } else { + result[key] = val + } + }) + return result + } + + return clone(target) +} + + diff --git a/src/views/trials/trials-panel/trial-summary/trial-document/components/menu.vue b/src/views/trials/trials-panel/trial-summary/trial-document/components/menu.vue new file mode 100644 index 00000000..4d3e69db --- /dev/null +++ b/src/views/trials/trials-panel/trial-summary/trial-document/components/menu.vue @@ -0,0 +1,413 @@ + + + \ No newline at end of file diff --git a/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/form.vue b/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/form.vue new file mode 100644 index 00000000..3ecc79f4 --- /dev/null +++ b/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/form.vue @@ -0,0 +1,214 @@ + + \ No newline at end of file diff --git a/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/index.vue b/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/index.vue new file mode 100644 index 00000000..263712d7 --- /dev/null +++ b/src/views/trials/trials-panel/trial-summary/trial-document/components/report_doc/index.vue @@ -0,0 +1,819 @@ + + + \ No newline at end of file diff --git a/src/views/trials/trials-panel/trial-summary/trial-document/index.vue b/src/views/trials/trials-panel/trial-summary/trial-document/index.vue new file mode 100644 index 00000000..b98a2d6a --- /dev/null +++ b/src/views/trials/trials-panel/trial-summary/trial-document/index.vue @@ -0,0 +1,133 @@ + + + \ No newline at end of file