diff --git a/index.html b/index.html index 60f47c4..e5cbcd6 100644 --- a/index.html +++ b/index.html @@ -13,7 +13,7 @@ content="vue-next-admin,基于 vue3 + CompositionAPI + typescript + vite + element plus,适配手机、平板、pc 的后台开源免费管理系统模板!vue-prev-admin,基于 vue2 + element ui,适配手机、平板、pc 的后台开源免费管理系统模板!" /> - gfast3.2后台管理系统 + 外来入侵物种智能决策可视化模拟后台管理系统
diff --git a/package-lock.json b/package-lock.json index bce5ddc..e49148b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,6 +34,8 @@ "sortablejs": "^1.15.2", "spark-md5": "^3.0.2", "splitpanes": "^3.1.5", + "v-viewer": "^3.0.22", + "viewerjs": "^1.11.7", "vue": "^3.4.21", "vue-clipboard3": "^2.0.0", "vue-codemirror": "^6.1.1", @@ -1391,10 +1393,13 @@ } }, "node_modules/@popperjs/core": { - "name": "@sxzz/popperjs-es", "version": "2.11.7", - "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", - "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" + "resolved": "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.7.tgz", + "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } }, "node_modules/@rollup/pluginutils": { "version": "5.2.0", @@ -1686,10 +1691,8 @@ }, "node_modules/@types/js-cookie": { "version": "3.0.6", - "resolved": "https://registry.npmmirror.com/@types/js-cookie/-/js-cookie-3.0.6.tgz", "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/lodash": { "version": "4.17.20", @@ -1719,10 +1722,8 @@ }, "node_modules/@types/qs": { "version": "6.14.0", - "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.14.0.tgz", "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/sortablejs": { "version": "1.15.8", @@ -3515,7 +3516,6 @@ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -3749,7 +3749,6 @@ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -4413,6 +4412,26 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/v-viewer": { + "version": "3.0.22", + "resolved": "https://registry.npmmirror.com/v-viewer/-/v-viewer-3.0.22.tgz", + "integrity": "sha512-uYyP5FPT4K/Sd5D1mhB2HMVV8jnf6zYy2HD1PHCNAO6s2Iway+Wls60pwh7y4F3e2Nlc9549Pvy2HXaq8PKrAg==", + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21", + "viewerjs": "^1.11.6" + }, + "peerDependencies": { + "viewerjs": "^1.11.0", + "vue": "^3.0.0" + } + }, + "node_modules/viewerjs": { + "version": "1.11.7", + "resolved": "https://registry.npmmirror.com/viewerjs/-/viewerjs-1.11.7.tgz", + "integrity": "sha512-0JuVqOmL5v1jmEAlG5EBDR3XquxY8DWFQbFMprOXgaBB0F7Q/X9xWdEaQc59D8xzwkdUgXEMSSknTpriq95igg==", + "license": "MIT" + }, "node_modules/vite": { "version": "6.3.4", "integrity": "sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==", diff --git a/package.json b/package.json index aa79762..424356d 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,8 @@ "sortablejs": "^1.15.2", "spark-md5": "^3.0.2", "splitpanes": "^3.1.5", + "v-viewer": "^3.0.22", + "viewerjs": "^1.11.7", "vue": "^3.4.21", "vue-clipboard3": "^2.0.0", "vue-codemirror": "^6.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2675bab..9e97104 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,6 +83,12 @@ importers: splitpanes: specifier: ^3.1.5 version: 3.2.0(vue@3.5.18(typescript@5.9.2)) + v-viewer: + specifier: ^3.0.22 + version: 3.0.22(viewerjs@1.11.7)(vue@3.5.18(typescript@5.9.2)) + viewerjs: + specifier: ^1.11.7 + version: 1.11.7 vue: specifier: ^3.4.21 version: 3.5.18(typescript@5.9.2) @@ -1725,6 +1731,15 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + v-viewer@3.0.22: + resolution: {integrity: sha512-uYyP5FPT4K/Sd5D1mhB2HMVV8jnf6zYy2HD1PHCNAO6s2Iway+Wls60pwh7y4F3e2Nlc9549Pvy2HXaq8PKrAg==} + peerDependencies: + viewerjs: ^1.11.0 + vue: ^3.0.0 + + viewerjs@1.11.7: + resolution: {integrity: sha512-0JuVqOmL5v1jmEAlG5EBDR3XquxY8DWFQbFMprOXgaBB0F7Q/X9xWdEaQc59D8xzwkdUgXEMSSknTpriq95igg==} + vite-plugin-cdn-import@1.0.1: resolution: {integrity: sha512-lgjLxgwFSKvJLbqjVBirUZ0rQo00GpUGJzRpgQu8RyBw9LA7jaqG6fUMQzBC9qWmTGabPC3iOzwCcoi7PseRAQ==} @@ -3389,6 +3404,14 @@ snapshots: util-deprecate@1.0.2: {} + v-viewer@3.0.22(viewerjs@1.11.7)(vue@3.5.18(typescript@5.9.2)): + dependencies: + lodash-es: 4.17.21 + viewerjs: 1.11.7 + vue: 3.5.18(typescript@5.9.2) + + viewerjs@1.11.7: {} + vite-plugin-cdn-import@1.0.1(rollup@4.46.2)(vite@6.3.4(@types/node@20.19.9)(sass@1.89.2)): dependencies: rollup-plugin-external-globals: 0.10.0(rollup@4.46.2) diff --git a/src/api/system/dict/data.ts b/src/api/system/dict/data.ts index c97ae71..ebbbf71 100644 --- a/src/api/system/dict/data.ts +++ b/src/api/system/dict/data.ts @@ -1,70 +1,77 @@ import request from '/@/utils/request'; -import {ref ,toRefs,ToRefs} from 'vue' +import { ref, toRefs, ToRefs } from 'vue'; // 根据字典类型查询字典数据信息 -export function getDicts(dictType :string,defaultValue?:string):Promise { - let dv = defaultValue??'' - let params ={ - dictType:dictType, - defaultValue:dv - } - return request({ - url: '/api/v1/system/dict/data/getDictData', - method: 'get', - params:params - }) +export function getDicts(dictType: string, defaultValue?: string): Promise { + let dv = defaultValue ?? ''; + let params = { + dictType: dictType, + defaultValue: dv, + }; + return request({ + url: '/api/v1/system/dict/data/getDictData', + method: 'get', + params: params, + }); } /** * 获取字典数据 */ -export function useDict(...args:string[]):ToRefs{ - const res:any = ref({}); - args.forEach((d:string) => { - res.value[d] = []; - getDicts(d).then(resp => { - res.value[d] = resp.data.values.map((p:any) => ({ label: p.value, value: p.key, isDefault: p.isDefault })) - }) - }) - return toRefs(res.value); +export function useDict(...args: string[]): ToRefs { + const res: any = ref({}); + args.forEach((d: string) => { + res.value[d] = []; + getDicts(d).then((resp) => { + res.value[d] = resp.data.values.map((p: any) => ({ + label: p.value, + value: p.key, + isDefault: p.isDefault, + })); + }); + }); + return toRefs(res.value); } - -export function getDataList(query:Object) { - return request({ - url: '/api/v1/system/dict/data/list', - method: 'get', - params:query - }) +export function getDataList(query: Object) { + return request({ + url: '/api/v1/system/dict/data/list', + method: 'get', + params: query, + }); } -export function getData(dictCode:number) { - return request({ - url: '/api/v1/system/dict/data/get', - method: 'get', - params:{dictCode} - }) +export function getData(dictCode: number) { + return request({ + url: '/api/v1/system/dict/data/get', + method: 'get', + params: { dictCode }, + }); } -export function addData(data:any) { - return request({ - url: '/api/v1/system/dict/data/add', - method: 'post', - data:data - }) +export function addData(data: any) { + return request({ + url: '/api/v1/system/dict/data/add', + method: 'post', + data: data, + }); } -export function editData(data:any) { - return request({ - url: '/api/v1/system/dict/data/edit', - method: 'put', - data:data - }) +export function editData(data: any) { + return request({ + url: '/api/v1/system/dict/data/edit', + method: 'put', + data: data, + }); } -export function deleteData(ids:number[]) { - return request({ - url: '/api/v1/system/dict/data/delete', - method: 'delete', - data:{ids} - }) +export function deleteData(ids: number[]) { + return request({ + url: '/api/v1/system/dict/data/delete', + method: 'delete', + data: { ids }, + }); +} + +export function formatGetDicts(data: any) { + return data.data.values; } diff --git a/src/components/FilePreview/index.vue b/src/components/FilePreview/index.vue new file mode 100644 index 0000000..6df12bf --- /dev/null +++ b/src/components/FilePreview/index.vue @@ -0,0 +1,495 @@ + \ No newline at end of file diff --git a/src/components/dynamicpage/ProTable/index.vue b/src/components/dynamicpage/ProTable/index.vue index 56d5c27..d42689f 100644 --- a/src/components/dynamicpage/ProTable/index.vue +++ b/src/components/dynamicpage/ProTable/index.vue @@ -13,6 +13,7 @@ @row-dblclick="onRowDblClick" @selection-change="onSelectionChange" @sort-change="onSortChange" + @cell-dblclick="onCellClick" v-bind="tableProps" > @@ -133,6 +134,7 @@ const emit = defineEmits<{ (e: 'row-dblclick', row: any): void; (e: 'selection-change', selection: any[]): void; (e: 'sort-change', col: TableColumnCtx): void; + (e: 'cell-click',row:any,col:any):void }>(); // 表格高度 @@ -157,7 +159,7 @@ onBeforeUnmount(() => { const onRowDblClick = (row: any) => emit('row-dblclick', row); const onSelectionChange = (selection: any[]) => emit('selection-change', selection); const onSortChange = (col: TableColumnCtx) => emit('sort-change', col); - +const onCellClick=(row:any,col:any)=>emit('cell-click',row,col); // 暴露 Element Plus Table API const tableRef = ref(); const clearSelection = () => tableRef.value?.clearSelection(); diff --git a/src/components/dynamicpage/auditForm/index.vue b/src/components/dynamicpage/auditForm/index.vue index 0c12bfd..86943ed 100644 --- a/src/components/dynamicpage/auditForm/index.vue +++ b/src/components/dynamicpage/auditForm/index.vue @@ -82,7 +82,7 @@ const form = ref({ }); const open = (row: AuditFormModel, userOptions: UserItem[]) => { visible.value = true; - row.auditStatus='1' + row.auditStatus = '1'; form.value = row; userList.value = userOptions; }; @@ -92,6 +92,11 @@ defineExpose({ const handleSubmit = () => { formRef.value.validate((valid: boolean) => { if (valid) { + for (const key in form.value) { + if (key=='auditDate' && (form.value.auditDate as any) instanceof Date) { + form.value.auditDate = form.value.auditDate.toLocaleString(); + } + } emit('submit', form.value); handleCancel(); } else { diff --git a/src/components/dynamicpage/modalForm/index.vue b/src/components/dynamicpage/modalForm/index.vue index 75a33d5..e4931b3 100644 --- a/src/components/dynamicpage/modalForm/index.vue +++ b/src/components/dynamicpage/modalForm/index.vue @@ -1,90 +1,104 @@ + + diff --git a/src/components/uploadFile/index.vue b/src/components/uploadFile/index.vue index 21872b9..3dc4a5d 100644 --- a/src/components/uploadFile/index.vue +++ b/src/components/uploadFile/index.vue @@ -1,160 +1,151 @@ - diff --git a/src/components/uploadImg/index.vue b/src/components/uploadImg/index.vue index 0e432f6..c7b89b9 100644 --- a/src/components/uploadImg/index.vue +++ b/src/components/uploadImg/index.vue @@ -1,199 +1,199 @@ - diff --git a/src/layout/logo/index.vue b/src/layout/logo/index.vue index bede92d..0258ad1 100644 --- a/src/layout/logo/index.vue +++ b/src/layout/logo/index.vue @@ -38,11 +38,11 @@ const onThemeConfigChange = () => { justify-content: center; box-shadow: rgb(0 21 41 / 2%) 0px 1px 4px; color: var(--el-color-primary); - font-size: 16px; + font-size: 15px; cursor: pointer; animation: logoAnimation 0.3s ease-in-out; span { - white-space: nowrap; + // white-space: nowrap; display: inline-block; } &:hover { diff --git a/src/main.ts b/src/main.ts index 88dfa01..27e57a6 100644 --- a/src/main.ts +++ b/src/main.ts @@ -12,7 +12,7 @@ import 'element-plus/dist/index.css'; import '/@/theme/index.scss'; import mitt from 'mitt'; import {findChildrenByPid, flattenTree, getUpFileUrl, handleTree, parseTime, selectDictLabel} from '/@/utils/gfast'; -import {useDict} from '/@/api/system/dict/data'; +import {useDict,getDicts,formatGetDicts} from '/@/api/system/dict/data'; import {getItems, setItems, getOptionValue, isEmpty} from '/@/api/items' // 分页组件 import pagination from '/@/components/pagination/index.vue' @@ -42,6 +42,9 @@ app.config.globalProperties.handleTree=handleTree app.config.globalProperties.flattenTree=flattenTree app.config.globalProperties.findChildrenByPid=findChildrenByPid app.config.globalProperties.useDict=useDict +app.config.globalProperties.getDicts=getDicts +app.config.globalProperties.formatGetDicts=formatGetDicts + app.config.globalProperties.selectDictLabel=selectDictLabel app.config.globalProperties.getItems=getItems diff --git a/src/stores/themeConfig.ts b/src/stores/themeConfig.ts index 397dfcf..a1bd716 100644 --- a/src/stores/themeConfig.ts +++ b/src/stores/themeConfig.ts @@ -96,7 +96,7 @@ export const useThemeConfig = defineStore('themeConfig', { // 是否开启水印 isWartermark: false, // 水印文案 - wartermarkText: 'GFastV3', + wartermarkText: '外来入侵物种智能决策可视化模拟后台管理系统', /** * 其它设置 @@ -129,9 +129,9 @@ export const useThemeConfig = defineStore('themeConfig', { * 全局网站标题 / 副标题 */ // 网站主标题(菜单导航、浏览器当前网页标题) - globalTitle: 'gfast3.2后台管理系统', + globalTitle: '外来入侵物种智能决策可视化模拟后台管理系统', // 网站副标题(登录页顶部文字) - globalViceTitle: 'gfast3.2后台管理系统', + globalViceTitle: '外来入侵物种智能决策可视化模拟后台管理系统', // 默认初始语言,可选值"",默认 zh-cn globalI18n: 'zh-cn', // 默认全局组件大小,可选值"",默认 'large' diff --git a/src/types/index.ts b/src/types/index.ts index 924e5c6..d27bb9c 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -45,4 +45,8 @@ export interface UserItem { export interface VersionMap{ [key: string]: number +} +export interface AuditStatusOptions { + value: string; + key: string; } \ No newline at end of file diff --git a/src/views/businesses/biocontrolResource/api.ts b/src/views/businesses/biocontrolResource/api.ts new file mode 100644 index 0000000..5db125f --- /dev/null +++ b/src/views/businesses/biocontrolResource/api.ts @@ -0,0 +1,54 @@ +import request from '/@/utils/request'; +// 查询天敌昆虫列表 +export function reqList(query: object) { + return request({ + url: '/api/v1/businesses/biocontrolResource/list', + method: 'get', + params: query + }) +} +// 查询天敌昆虫详细 +export function reqGet(id: number) { + return request({ + url: '/api/v1/businesses/biocontrolResource/get', + method: 'get', + params: { + id: id.toString() + } + }) +} +// 新增天敌昆虫 +export function reqAdd(data: object) { + return request({ + url: '/api/v1/businesses/biocontrolResource/add', + method: 'post', + data: data + }) +} +// 修改天敌昆虫 +export function reqEdit(data: object) { + return request({ + url: '/api/v1/businesses/biocontrolResource/edit', + method: 'put', + data: data + }) +} +// 删除天敌昆虫 +export function reqDel(ids: number[], version: number[]) { + return request({ + url: '/api/v1/businesses/biocontrolResource/delete', + method: 'delete', + data: { + ids: ids, + version: version, + }, + }); +} + +export function reqAudit(data: object) { + return request({ + url: '/api/v1/businesses/biocontrolResource/audit', + method: 'post', + data: data, + }); +} diff --git a/src/views/businesses/biocontrolResource/index.vue b/src/views/businesses/biocontrolResource/index.vue new file mode 100644 index 0000000..9c1fc0f --- /dev/null +++ b/src/views/businesses/biocontrolResource/index.vue @@ -0,0 +1,616 @@ + + diff --git a/src/views/businesses/biocontrolResource/type.ts b/src/views/businesses/biocontrolResource/type.ts new file mode 100644 index 0000000..5a9e886 --- /dev/null +++ b/src/views/businesses/biocontrolResource/type.ts @@ -0,0 +1,59 @@ +export interface Columns { + id:number; // + speciesCode:string; // 物种编码 + zhName:string; // 中文学名 + zhSynonym:string; // 中文异名 + enName:string; // 英文学名 + latinName:string; // 拉丁学名 + latinSynonym:string; // 拉丁异名 + biocontrolType:number; // 生防物类型 + sourcesData:string; // 数据来源 + createUser:number; // 数据采集人 + createDate:string; // 数据采集日期 + auditUser:string; // 数据核查人 + auditDate:string; // 数据核查日期 + auditStatus:number; // 核查 + auditView:string; // 核查意见 + remark:string; // 备注 + version:number; // 版本 +} + +export interface InfoData { + id:number|undefined; // + speciesCode:string|undefined; // 物种编码 + zhName:string|undefined; // 中文学名 + zhSynonym:string|undefined; // 中文异名 + enName:string|undefined; // 英文学名 + latinName:string|undefined; // 拉丁学名 + latinSynonym:string|undefined; // 拉丁异名 + biocontrolType:number|undefined; // 生防物类型 + sourcesData:string|undefined; // 数据来源 + createUser:number|undefined; // 数据采集人 + createDate:string|undefined; // 数据采集日期 + auditUser:string|undefined; // 数据核查人 + auditDate:string|undefined; // 数据核查日期 + auditStatus:number|undefined; // 核查 + auditView:string|undefined; // 核查意见 + remark:string|undefined; // 备注 + version:number|undefined; // 版本 +} + +export interface State { + ids: any[]; + tableData: { + data: Array; + total: number; + loading: boolean; + param: { + pageNum: number; + pageSize: number; + }; + }; +} + +export interface EditState { + loading: boolean; + isShowDialog: boolean; + formData: InfoData; + rules: object; +} diff --git a/src/views/businesses/biologyEcology/api.ts b/src/views/businesses/biologyEcology/api.ts new file mode 100644 index 0000000..0fdf302 --- /dev/null +++ b/src/views/businesses/biologyEcology/api.ts @@ -0,0 +1,54 @@ +import request from '/@/utils/request'; +// 查询天敌昆虫列表 +export function reqList(query: object) { + return request({ + url: '/api/v1/businesses/biologyEcology/list', + method: 'get', + params: query + }) +} +// 查询天敌昆虫详细 +export function reqGet(id: number) { + return request({ + url: '/api/v1/businesses/biologyEcology/get', + method: 'get', + params: { + id: id.toString() + } + }) +} +// 新增天敌昆虫 +export function reqAdd(data: object) { + return request({ + url: '/api/v1/businesses/biologyEcology/add', + method: 'post', + data: data + }) +} +// 修改天敌昆虫 +export function reqEdit(data: object) { + return request({ + url: '/api/v1/businesses/biologyEcology/edit', + method: 'put', + data: data + }) +} +// 删除天敌昆虫 +export function reqDel(ids: number[], version: number[]) { + return request({ + url: '/api/v1/businesses/biologyEcology/delete', + method: 'delete', + data: { + ids: ids, + version: version, + }, + }); +} + +export function reqAudit(data: object) { + return request({ + url: '/api/v1/businesses/biologyEcology/audit', + method: 'post', + data: data, + }); +} diff --git a/src/views/businesses/biologyEcology/index.vue b/src/views/businesses/biologyEcology/index.vue new file mode 100644 index 0000000..4d5ec2b --- /dev/null +++ b/src/views/businesses/biologyEcology/index.vue @@ -0,0 +1,661 @@ + + diff --git a/src/views/businesses/biologyEcology/type.ts b/src/views/businesses/biologyEcology/type.ts new file mode 100644 index 0000000..9d35716 --- /dev/null +++ b/src/views/businesses/biologyEcology/type.ts @@ -0,0 +1,65 @@ +export interface Columns { + id:number; // + speciesCode:string; // 编码 + lifeHistory:string; // 生活史/侵染循环 + character:string; // 发生与危害特性 + habitatType:string; // 生境类型 + zoologyDescribe:string; // 生态、经济和社会影响描述 + specimenGather:string; // 模式标本采集地 + specimenSave:string; // 模式标本保存地 + introduceDesc:string; // 首次发现或引入的地点及时间 + diffuse:string; // 传播与扩散途径 + riskAssessment:string; // 风险评估结果 + sourcesData:string; // 数据来源 + createUser:number; // 数据采集人 + createDate:string; // 数据采集日期 + auditUser:string; // 数据核查人 + auditDate:string; // 数据核查日期 + auditStatus:number; // 核查 + auditView:string; // 核查意见 + remark:string; // 备注 + version:number; // 版本 +} + +export interface InfoData { + id:number|undefined; // + speciesCode:string|undefined; // 编码 + lifeHistory:string|undefined; // 生活史/侵染循环 + character:string|undefined; // 发生与危害特性 + habitatType:string|undefined; // 生境类型 + zoologyDescribe:string|undefined; // 生态、经济和社会影响描述 + specimenGather:string|undefined; // 模式标本采集地 + specimenSave:string|undefined; // 模式标本保存地 + introduceDesc:string|undefined; // 首次发现或引入的地点及时间 + diffuse:string|undefined; // 传播与扩散途径 + riskAssessment:string|undefined; // 风险评估结果 + sourcesData:string|undefined; // 数据来源 + createUser:number|undefined; // 数据采集人 + createDate:string|undefined; // 数据采集日期 + auditUser:string|undefined; // 数据核查人 + auditDate:string|undefined; // 数据核查日期 + auditStatus:number|undefined; // 核查 + auditView:string|undefined; // 核查意见 + remark:string|undefined; // 备注 + version:number|undefined; // 版本 +} + +export interface State { + ids: any[]; + tableData: { + data: Array; + total: number; + loading: boolean; + param: { + pageNum: number; + pageSize: number; + }; + }; +} + +export interface EditState { + loading: boolean; + isShowDialog: boolean; + formData: InfoData; + rules: object; +} diff --git a/src/views/businesses/characteristic/index.vue b/src/views/businesses/characteristic/index.vue index 5af8816..4d6c542 100644 --- a/src/views/businesses/characteristic/index.vue +++ b/src/views/businesses/characteristic/index.vue @@ -447,12 +447,12 @@ const handleCancel = () => { const handleAdd = () => { showDialog.value = true; - formTitle.value = '新增分类地位'; + formTitle.value = '新增识别特征'; formType.value = 'add'; }; const handleUpdate = (row: CharacteristicInfoData) => { showDialog.value = true; - formTitle.value = '编辑分类地位'; + formTitle.value = '编辑识别特征'; formType.value = 'edit'; formData.value = cloneDeep(row); }; @@ -489,7 +489,9 @@ const handleDelete = (row: CharacteristicTableColumns | null) => { const auditFormRef = ref(); const showAuditDialog = ref(false); const handleAudit = (row: CharacteristicTableColumns) => { - auditFormRef.value.open(cloneDeep(row), userOptions.value); + const val = cloneDeep(row); + val.auditUser = ''; + auditFormRef.value.open(val, userOptions.value); }; const onAuditSubmit = (val: CharacteristicTableColumns) => { auditCharacteristic(val).then(() => { diff --git a/src/views/businesses/characteristic/type.ts b/src/views/businesses/characteristic/type.ts index f0c0f92..812a0cb 100644 --- a/src/views/businesses/characteristic/type.ts +++ b/src/views/businesses/characteristic/type.ts @@ -6,7 +6,7 @@ export interface CharacteristicTableColumns { sourcesData:string; // 数据来源 createUser:number; // 数据采集人 createDate:string; // 数据采集日期 - auditUser:number; // 数据核查人 + auditUser:string; // 数据核查人 auditDate:string; // 数据核查日期 auditStatus:number; // auditView:string; // @@ -23,7 +23,7 @@ export interface CharacteristicInfoData { sourcesData:string|undefined; // 数据来源 createUser:number|undefined; // 数据采集人 createDate:string|undefined; // 数据采集日期 - auditUser:number|undefined; // 数据核查人 + auditUser:string|undefined; // 数据核查人 auditDate:string|undefined; // 数据核查日期 auditStatus:number|undefined; // auditView:string|undefined; // diff --git a/src/views/businesses/classifyStatuse/index.vue b/src/views/businesses/classifyStatuse/index.vue index 40c815f..0143c33 100644 --- a/src/views/businesses/classifyStatuse/index.vue +++ b/src/views/businesses/classifyStatuse/index.vue @@ -659,7 +659,9 @@ const handleDelete = (row: ClassifyStatuseTableColumns | null) => { const auditFormRef = ref(); const showAuditDialog = ref(false); const handleAudit = (row: ClassifyStatuseTableColumns) => { - auditFormRef.value.open(cloneDeep(row), userOptions.value); + const val = cloneDeep(row); + val.auditUser = ''; + auditFormRef.value.open(val, userOptions.value); }; const onAuditSubmit = (val: ClassifyStatuseTableColumns) => { auditSpeciesName(val).then(() => { diff --git a/src/views/businesses/classifyStatuse/type.ts b/src/views/businesses/classifyStatuse/type.ts index 6f9aab3..2e494db 100644 --- a/src/views/businesses/classifyStatuse/type.ts +++ b/src/views/businesses/classifyStatuse/type.ts @@ -19,7 +19,7 @@ export interface ClassifyStatuseTableColumns { sourcesData: string; // 数据来源 createUser: number; // 数据采集人 createDate: string; // 数据采集日期 - auditUser: number; // 数据核查人 + auditUser: string; // 数据核查人 auditDate: string; // 数据核查日期 auditStatus: number; // 核查 auditView: string; // 核查意见 @@ -49,7 +49,7 @@ export interface ClassifyStatuseInfoData { sourcesData: string | undefined; // 数据来源 createUser: number | undefined; // 数据采集人 createDate: string | undefined; // 数据采集日期 - auditUser: number | undefined; // 数据核查人 + auditUser: string | undefined; // 数据核查人 auditDate: string | undefined; // 数据核查日期 auditStatus: number | undefined; // 核查 auditView: string | undefined; // 核查意见 diff --git a/src/views/businesses/definiteness/api.ts b/src/views/businesses/definiteness/api.ts new file mode 100644 index 0000000..a20318d --- /dev/null +++ b/src/views/businesses/definiteness/api.ts @@ -0,0 +1,54 @@ +import request from '/@/utils/request'; +// 查询天敌昆虫列表 +export function reqList(query: object) { + return request({ + url: '/api/v1/businesses/definiteness/list', + method: 'get', + params: query + }) +} +// 查询天敌昆虫详细 +export function reqGet(id: number) { + return request({ + url: '/api/v1/businesses/definiteness/get', + method: 'get', + params: { + id: id.toString() + } + }) +} +// 新增天敌昆虫 +export function reqAdd(data: object) { + return request({ + url: '/api/v1/businesses/definiteness/add', + method: 'post', + data: data + }) +} +// 修改天敌昆虫 +export function reqEdit(data: object) { + return request({ + url: '/api/v1/businesses/definiteness/edit', + method: 'put', + data: data + }) +} +// 删除天敌昆虫 +export function reqDel(ids: number[], version: number[]) { + return request({ + url: '/api/v1/businesses/definiteness/delete', + method: 'delete', + data: { + ids: ids, + version: version, + }, + }); +} + +export function reqAudit(data: object) { + return request({ + url: '/api/v1/businesses/definiteness/audit', + method: 'post', + data: data, + }); +} diff --git a/src/views/businesses/definiteness/index.vue b/src/views/businesses/definiteness/index.vue new file mode 100644 index 0000000..53119fb --- /dev/null +++ b/src/views/businesses/definiteness/index.vue @@ -0,0 +1,533 @@ + + diff --git a/src/views/businesses/definiteness/type.ts b/src/views/businesses/definiteness/type.ts new file mode 100644 index 0000000..40ffa54 --- /dev/null +++ b/src/views/businesses/definiteness/type.ts @@ -0,0 +1,54 @@ +export interface Columns { + id:number; // + speciesCode:string; // 物种编码 + countryName:string; // 国家名称 + definiteness:string; // 限定性情况 + year:string; // 制定年份 + sourcesData:string; // 数据来源 + createUser:number; // 数据采集人 + createDate:string; // 数据采集日期 + auditUser:string; // 数据核查人 + auditDate:string; // 数据核查日期 + auditStatus:number; // 核查 + auditView:string; // 核查意见 + remark:string; // 备注 + version:number; // 版本 + createdAt:string; // +} + +export interface InfoData { + id:number|undefined; // + speciesCode:string|undefined; // 物种编码 + countryName:string|undefined; // 国家名称 + definiteness:string|undefined; // 限定性情况 + year:string|undefined; // 制定年份 + sourcesData:string|undefined; // 数据来源 + createUser:number|undefined; // 数据采集人 + createDate:string|undefined; // 数据采集日期 + auditUser:string|undefined; // 数据核查人 + auditDate:string|undefined; // 数据核查日期 + auditStatus:number|undefined; // 核查 + auditView:string|undefined; // 核查意见 + remark:string|undefined; // 备注 + version:number|undefined; // 版本 +} + +export interface State { + ids: any[]; + tableData: { + data: Array; + total: number; + loading: boolean; + param: { + pageNum: number; + pageSize: number; + }; + }; +} + +export interface EditState { + loading: boolean; + isShowDialog: boolean; + formData: InfoData; + rules: object; +} diff --git a/src/views/businesses/domestiDistribuion/index.vue b/src/views/businesses/domestiDistribuion/index.vue index 5dea46b..d69be9c 100644 --- a/src/views/businesses/domestiDistribuion/index.vue +++ b/src/views/businesses/domestiDistribuion/index.vue @@ -454,12 +454,12 @@ const handleCancel = () => { const handleAdd = () => { showDialog.value = true; - formTitle.value = '新增分类地位'; + formTitle.value = '新增国内分布'; formType.value = 'add'; }; const handleUpdate = (row: DomestiDistribuionInfoData) => { showDialog.value = true; - formTitle.value = '编辑分类地位'; + formTitle.value = '编辑国内分布'; formType.value = 'edit'; formData.value = cloneDeep(row); }; @@ -496,7 +496,9 @@ const handleDelete = (row: DomestiDistribuionTableColumns | null) => { const auditFormRef = ref(); const showAuditDialog = ref(false); const handleAudit = (row: DomestiDistribuionTableColumns) => { - auditFormRef.value.open(cloneDeep(row), userOptions.value); + const val = cloneDeep(row); + val.auditUser = ''; + auditFormRef.value.open(val, userOptions.value); }; const onAuditSubmit = (val: DomestiDistribuionTableColumns) => { auditDomestiDistribuion(val).then(() => { diff --git a/src/views/businesses/domestiDistribuion/type.ts b/src/views/businesses/domestiDistribuion/type.ts index 148d262..ab2c3ee 100644 --- a/src/views/businesses/domestiDistribuion/type.ts +++ b/src/views/businesses/domestiDistribuion/type.ts @@ -8,7 +8,7 @@ export interface DomestiDistribuionTableColumns { sourcesData: string; // 数据来源 createUser: number; // 数据采集人 createDate: string; // 数据采集日期 - auditUser: number; // 数据核查人 + auditUser: string; // 数据核查人 auditDate: string; // 数据核查日期 auditStatus: number; // auditView: string; // diff --git a/src/views/businesses/foreignDistribution/index.vue b/src/views/businesses/foreignDistribution/index.vue index ae57156..0ffb1e4 100644 --- a/src/views/businesses/foreignDistribution/index.vue +++ b/src/views/businesses/foreignDistribution/index.vue @@ -455,12 +455,12 @@ const handleCancel = () => { const handleAdd = () => { showDialog.value = true; - formTitle.value = '新增分类地位'; + formTitle.value = '新增国外分布'; formType.value = 'add'; }; const handleUpdate = (row: ForeignDistributionInfoData) => { showDialog.value = true; - formTitle.value = '编辑分类地位'; + formTitle.value = '编辑国外分布'; formType.value = 'edit'; formData.value = cloneDeep(row); }; @@ -497,7 +497,9 @@ const handleDelete = (row: ForeignDistributionTableColumns | null) => { const auditFormRef = ref(); const showAuditDialog = ref(false); const handleAudit = (row: ForeignDistributionTableColumns) => { - auditFormRef.value.open(cloneDeep(row), userOptions.value); + const val = cloneDeep(row); + val.auditUser = ''; + auditFormRef.value.open(val, userOptions.value); }; const onAuditSubmit = (val: ForeignDistributionTableColumns) => { auditForeignDistribution(val).then(() => { diff --git a/src/views/businesses/foreignDistribution/type.ts b/src/views/businesses/foreignDistribution/type.ts index 2be8f47..ed832f8 100644 --- a/src/views/businesses/foreignDistribution/type.ts +++ b/src/views/businesses/foreignDistribution/type.ts @@ -8,7 +8,7 @@ export interface ForeignDistributionTableColumns { references: string; // 参考文献 createUser: number; // 数据采集人 createDate: string; // 数据采集日期 - auditUser: number; // 数据核查人 + auditUser: string; // 数据核查人 auditDate: string; // 数据核查日期 auditStatus: number; // auditView: string; // @@ -26,7 +26,7 @@ export interface ForeignDistributionInfoData { references: string | undefined; // 参考文献 createUser: number | undefined; // 数据采集人 createDate: string | undefined; // 数据采集日期 - auditUser: number | undefined; // 数据核查人 + auditUser: string | undefined; // 数据核查人 auditDate: string | undefined; // 数据核查日期 auditStatus: number | undefined; // auditView: string | undefined; // diff --git a/src/views/businesses/geography/index.vue b/src/views/businesses/geography/index.vue index 87043af..c0f237d 100644 --- a/src/views/businesses/geography/index.vue +++ b/src/views/businesses/geography/index.vue @@ -24,7 +24,7 @@ > - + { const handleAdd = () => { showDialog.value = true; - formTitle.value = '新增分类地位'; + formTitle.value = '新增地理分布'; formType.value = 'add'; }; const handleUpdate = (row: GeographyInfoData) => { showDialog.value = true; - formTitle.value = '编辑分类地位'; + formTitle.value = '编辑地理分布'; formType.value = 'edit'; formData.value = cloneDeep(row); }; @@ -489,7 +489,9 @@ const handleDelete = (row: GeographyTableColumns | null) => { const auditFormRef = ref(); const showAuditDialog = ref(false); const handleAudit = (row: GeographyTableColumns) => { - auditFormRef.value.open(cloneDeep(row), userOptions.value); + const val = cloneDeep(row); + val.auditUser = ''; + auditFormRef.value.open(val, userOptions.value); }; const onAuditSubmit = (val: GeographyTableColumns) => { auditGeography(val).then(() => { diff --git a/src/views/businesses/geography/type.ts b/src/views/businesses/geography/type.ts index e5c5167..2db906b 100644 --- a/src/views/businesses/geography/type.ts +++ b/src/views/businesses/geography/type.ts @@ -7,7 +7,7 @@ export interface GeographyTableColumns { domesticInfo: string; // 国内分布描述 createUser: number; // 数据采集人 createDate: string; // 数据采集日期 - auditUser: number; // 数据核查人 + auditUser: string; // 数据核查人 auditDate: string; // 数据核查日期 auditStatus: number; // 核查状态 auditView: string; // 核查意见 @@ -25,7 +25,7 @@ export interface GeographyInfoData { domesticInfo: string | undefined; // 国内分布描述 createUser: number | undefined; // 数据采集人 createDate: string | undefined; // 数据采集日期 - auditUser: number | undefined; // 数据核查人 + auditUser: string | undefined; // 数据核查人 auditDate: string | undefined; // 数据核查日期 auditStatus: number | undefined; // 核查状态 auditView: string | undefined; // 核查意见 diff --git a/src/views/businesses/hostBotany/api.ts b/src/views/businesses/hostBotany/api.ts new file mode 100644 index 0000000..f24b902 --- /dev/null +++ b/src/views/businesses/hostBotany/api.ts @@ -0,0 +1,54 @@ +import request from '/@/utils/request'; +// 查询寄主生物列表 +export function listHostBotany(query: object) { + return request({ + url: '/api/v1/businesses/hostBotany/list', + method: 'get', + params: query, + }); +} +// 查询寄主生物详细 +export function getHostBotany(id: number) { + return request({ + url: '/api/v1/businesses/hostBotany/get', + method: 'get', + params: { + id: id.toString(), + }, + }); +} +// 新增寄主生物 +export function addHostBotany(data: object) { + return request({ + url: '/api/v1/businesses/hostBotany/add', + method: 'post', + data: data, + }); +} +// 修改寄主生物 +export function updateHostBotany(data: object) { + return request({ + url: '/api/v1/businesses/hostBotany/edit', + method: 'put', + data: data, + }); +} +// 删除寄主生物 +export function delHostBotany(ids: number[], version: number[]) { + return request({ + url: '/api/v1/businesses/hostBotany/delete', + method: 'delete', + data: { + ids: ids, + version: version, + }, + }); +} + +export function auditHostBotany(data:object) { + return request({ + url: '/api/v1/businesses/hostBotany/audit', + method: 'post', + data: data, + }); +} diff --git a/src/views/businesses/hostBotany/index.vue b/src/views/businesses/hostBotany/index.vue new file mode 100644 index 0000000..08c6ea8 --- /dev/null +++ b/src/views/businesses/hostBotany/index.vue @@ -0,0 +1,678 @@ + + diff --git a/src/views/businesses/hostBotany/type.ts b/src/views/businesses/hostBotany/type.ts new file mode 100644 index 0000000..52e200a --- /dev/null +++ b/src/views/businesses/hostBotany/type.ts @@ -0,0 +1,76 @@ +export interface HostBotanyTableColumns { + id: number; // + speciesCode: string; // 物种编码 + zhName: string; // 中文学名 + zhSynonym: string; // 中文异名 + enName: string; // 英文学名 + latinName: string; // 拉丁学名 + latinSynonym: string; // 拉丁异名 + mu: string; // 目 + orderTitle: string; // Order + ke: string; // 科 + family: string; // Family + shu: string; // 属 + genus: string; // Genus + zhong: string; // 种 + species: string; // Species + hostType: string; // 寄主类型 + sourcesData: string; // 数据来源 + createUser: number; // 数据采集人 + createDate: string; // 数据采集日期 + auditUser: string; // 数据核查人 + auditDate: string; // 数据核查日期 + auditStatus: number; // 核查 + auditView: string; // 核查意见 + remark: string; // 备注 + version: number; // 版本 + createdAt: string; // +} + +export interface HostBotanyInfoData { + id: number | undefined; // + speciesCode: string | undefined; // 物种编码 + zhName: string | undefined; // 中文学名 + zhSynonym: string | undefined; // 中文异名 + enName: string | undefined; // 英文学名 + latinName: string | undefined; // 拉丁学名 + latinSynonym: string | undefined; // 拉丁异名 + mu: string | undefined; // 目 + orderTitle: string | undefined; // Order + ke: string | undefined; // 科 + family: string | undefined; // Family + shu: string | undefined; // 属 + genus: string | undefined; // Genus + zhong: string | undefined; // 种 + species: string | undefined; // Species + hostType: string | undefined; // 寄主类型 + sourcesData: string | undefined; // 数据来源 + createUser: number | undefined; // 数据采集人 + createDate: string | undefined; // 数据采集日期 + auditUser: string | undefined; // 数据核查人 + auditDate: string | undefined; // 数据核查日期 + auditStatus: number | undefined; // 核查 + auditView: string | undefined; // 核查意见 + remark: string | undefined; // 备注 + version: number | undefined; // 版本 +} + +export interface HostBotanyTableDataState { + ids: any[]; + tableData: { + data: Array; + total: number; + loading: boolean; + param: { + pageNum: number; + pageSize: number; + }; + }; +} + +export interface HostBotanyEditState { + loading: boolean; + isShowDialog: boolean; + formData: HostBotanyInfoData; + rules: object; +} diff --git a/src/views/businesses/naturalEnemyInsect/api.ts b/src/views/businesses/naturalEnemyInsect/api.ts new file mode 100644 index 0000000..ea0e405 --- /dev/null +++ b/src/views/businesses/naturalEnemyInsect/api.ts @@ -0,0 +1,54 @@ +import request from '/@/utils/request'; +// 查询天敌昆虫列表 +export function reqList(query: object) { + return request({ + url: '/api/v1/businesses/naturalEnemyInsect/list', + method: 'get', + params: query, + }); +} +// 查询天敌昆虫详细 +export function reqGet(id: number) { + return request({ + url: '/api/v1/businesses/naturalEnemyInsect/get', + method: 'get', + params: { + id: id.toString(), + }, + }); +} +// 新增天敌昆虫 +export function reqAdd(data: object) { + return request({ + url: '/api/v1/businesses/naturalEnemyInsect/add', + method: 'post', + data: data, + }); +} +// 修改天敌昆虫 +export function reqEdit(data: object) { + return request({ + url: '/api/v1/businesses/naturalEnemyInsect/edit', + method: 'put', + data: data, + }); +} +// 删除天敌昆虫 +export function reqDel(ids: number[], version: number[]) { + return request({ + url: '/api/v1/businesses/naturalEnemyInsect/delete', + method: 'delete', + data: { + ids: ids, + version: version, + }, + }); +} + +export function reqAudit(data: object) { + return request({ + url: '/api/v1/businesses/naturalEnemyInsect/audit', + method: 'post', + data: data, + }); +} diff --git a/src/views/businesses/naturalEnemyInsect/index.vue b/src/views/businesses/naturalEnemyInsect/index.vue new file mode 100644 index 0000000..612744f --- /dev/null +++ b/src/views/businesses/naturalEnemyInsect/index.vue @@ -0,0 +1,826 @@ + + diff --git a/src/views/businesses/naturalEnemyInsect/type.ts b/src/views/businesses/naturalEnemyInsect/type.ts new file mode 100644 index 0000000..8ad61e1 --- /dev/null +++ b/src/views/businesses/naturalEnemyInsect/type.ts @@ -0,0 +1,90 @@ +export interface Columns { + id: number; // + speciesCode: string; // 物种编码(入侵种) + zhName: string; // 中文名称(天敌) + latinName: string; // 拉丁学名(天敌) + mu: string; // 目 + orderTitle: string; // Order + ke: string; // 科 + family: string; // Family + shu: string; // 属 + genus: string; // Genus + sourceArea: string; // 原产地 + source: string; // 来源地 + studyPlot: string; // 释放地/实验地 + experimentDate: string; // 引进时间/实验时间 + selectivity: string; // 专一性 + feedingHarm: string; // 取食/危害阶段 + feedingPart: string; // 取食/危害部位 + answerIndicator: string; // 响应指标 + releaseRecord: string; // 释放记录 + isCreateGroup: number; // 是否建群 + feedingStage: string; // 取食阶段 + isTarget: number; // 有无非目标影响 + feedingDate: string; // 取食时间/活跃时间 + sourcesData: string; // 数据来源 + createUser: number; // 数据采集人 + createDate: string; // 数据采集日期 + auditUser: string; // 数据核查人 + auditDate: string; // 数据核查日期 + auditStatus: number; // 核查 + auditView: string; // 核查意见 + remark: string; // 备注 + version: number; // 版本 + createdAt: string; // +} + +export interface InfoData { + id: number | undefined; // + speciesCode: string | undefined; // 物种编码(入侵种) + zhName: string | undefined; // 中文名称(天敌) + latinName: string | undefined; // 拉丁学名(天敌) + mu: string | undefined; // 目 + orderTitle: string | undefined; // Order + ke: string | undefined; // 科 + family: string | undefined; // Family + shu: string | undefined; // 属 + genus: string | undefined; // Genus + sourceArea: string | undefined; // 原产地 + source: string | undefined; // 来源地 + studyPlot: string | undefined; // 释放地/实验地 + experimentDate: string | undefined; // 引进时间/实验时间 + selectivity: string | undefined; // 专一性 + feedingHarm: string | undefined; // 取食/危害阶段 + feedingPart: string | undefined; // 取食/危害部位 + answerIndicator: string | undefined; // 响应指标 + releaseRecord: string | undefined; // 释放记录 + isCreateGroup: number | undefined; // 是否建群 + feedingStage: string | undefined; // 取食阶段 + isTarget: number | undefined; // 有无非目标影响 + feedingDate: string | undefined; // 取食时间/活跃时间 + sourcesData: string | undefined; // 数据来源 + createUser: number | undefined; // 数据采集人 + createDate: string | undefined; // 数据采集日期 + auditUser: string | undefined; // 数据核查人 + auditDate: string | undefined; // 数据核查日期 + auditStatus: number | undefined; // 核查 + auditView: string | undefined; // 核查意见 + remark: string | undefined; // 备注 + version: number | undefined; // 版本 +} + +export interface State { + ids: any[]; + tableData: { + data: Array; + total: number; + loading: boolean; + param: { + pageNum: number; + pageSize: number; + }; + }; +} + +export interface EditState { + loading: boolean; + isShowDialog: boolean; + formData: InfoData; + rules: object; +} diff --git a/src/views/businesses/prevention/api.ts b/src/views/businesses/prevention/api.ts new file mode 100644 index 0000000..7b5cf7b --- /dev/null +++ b/src/views/businesses/prevention/api.ts @@ -0,0 +1,53 @@ +import request from '/@/utils/request' +// 查询防控措施列表 +export function listPrevention(query:object) { + return request({ + url: '/api/v1/businesses/prevention/list', + method: 'get', + params: query + }) +} +// 查询防控措施详细 +export function getPrevention(id:number) { + return request({ + url: '/api/v1/businesses/prevention/get', + method: 'get', + params: { + id: id.toString() + } + }) +} +// 新增防控措施 +export function addPrevention(data:object) { + return request({ + url: '/api/v1/businesses/prevention/add', + method: 'post', + data: data + }) +} +// 修改防控措施 +export function updatePrevention(data:object) { + return request({ + url: '/api/v1/businesses/prevention/edit', + method: 'put', + data: data + }) +} +// 删除防控措施 +export function delPrevention(ids:number[],version:number[]) { + return request({ + url: '/api/v1/businesses/prevention/delete', + method: 'delete', + data:{ + ids:ids, + version:version, + } + }) +} +export function auditPrevention(data:object) { + return request({ + url: '/api/v1/businesses/prevention/audit', + method: 'post', + data: data, + }); +} diff --git a/src/views/businesses/prevention/index.vue b/src/views/businesses/prevention/index.vue new file mode 100644 index 0000000..e527686 --- /dev/null +++ b/src/views/businesses/prevention/index.vue @@ -0,0 +1,542 @@ + + diff --git a/src/views/businesses/prevention/type.ts b/src/views/businesses/prevention/type.ts new file mode 100644 index 0000000..2241b79 --- /dev/null +++ b/src/views/businesses/prevention/type.ts @@ -0,0 +1,57 @@ +export interface PreventionTableColumns { + id: number; // + speciesCode: string; // 物种编码 + botanyQuarantine: string; // 植物检疫 + physics: string; // 物理防治 + chemistry: string; // 化学防治 + biology: string; // 生物防治 + other: string; // 其他防控措施 + sourcesData: string; // 数据来源 + createUser: number; // 数据采集人 + createDate: string; // 数据采集日期 + auditUser: string; // 数据核查人 + auditDate: string; // 数据核查日期 + auditStatus: number; // 核查 + auditView: string; // 核查意见 + remark: string; // 备注 + version: number; // 版本 +} + +export interface PreventionInfoData { + id: number | undefined; // + speciesCode: string | undefined; // 物种编码 + botanyQuarantine: string | undefined; // 植物检疫 + physics: string | undefined; // 物理防治 + chemistry: string | undefined; // 化学防治 + biology: string | undefined; // 生物防治 + other: string | undefined; // 其他防控措施 + sourcesData: string | undefined; // 数据来源 + createUser: number | undefined; // 数据采集人 + createDate: string | undefined; // 数据采集日期 + auditUser: string | undefined; // 数据核查人 + auditDate: string | undefined; // 数据核查日期 + auditStatus: number | undefined; // 核查 + auditView: string | undefined; // 核查意见 + remark: string | undefined; // 备注 + version: number | undefined; // 版本 +} + +export interface PreventionTableDataState { + ids: any[]; + tableData: { + data: Array; + total: number; + loading: boolean; + param: { + pageNum: number; + pageSize: number; + }; + }; +} + +export interface PreventionEditState { + loading: boolean; + isShowDialog: boolean; + formData: PreventionInfoData; + rules: object; +} diff --git a/src/views/businesses/speciesImgs/api.ts b/src/views/businesses/speciesImgs/api.ts new file mode 100644 index 0000000..22eafaa --- /dev/null +++ b/src/views/businesses/speciesImgs/api.ts @@ -0,0 +1,54 @@ +import request from '/@/utils/request'; +// 查询天敌昆虫列表 +export function reqList(query: object) { + return request({ + url: '/api/v1/businesses/speciesImgs/list', + method: 'get', + params: query + }) +} +// 查询天敌昆虫详细 +export function reqGet(id: number) { + return request({ + url: '/api/v1/businesses/speciesImgs/get', + method: 'get', + params: { + id: id.toString() + } + }) +} +// 新增天敌昆虫 +export function reqAdd(data: object) { + return request({ + url: '/api/v1/businesses/speciesImgs/add', + method: 'post', + data: data + }) +} +// 修改天敌昆虫 +export function reqEdit(data: object) { + return request({ + url: '/api/v1/businesses/speciesImgs/edit', + method: 'put', + data: data + }) +} +// 删除天敌昆虫 +export function reqDel(ids: number[], version: number[]) { + return request({ + url: '/api/v1/businesses/speciesImgs/delete', + method: 'delete', + data: { + ids: ids, + version: version, + }, + }); +} + +export function reqAudit(data: object) { + return request({ + url: '/api/v1/businesses/speciesImgs/audit', + method: 'post', + data: data, + }); +} diff --git a/src/views/businesses/speciesImgs/index.vue b/src/views/businesses/speciesImgs/index.vue new file mode 100644 index 0000000..6dc7e1a --- /dev/null +++ b/src/views/businesses/speciesImgs/index.vue @@ -0,0 +1,538 @@ + + diff --git a/src/views/businesses/speciesImgs/type.ts b/src/views/businesses/speciesImgs/type.ts new file mode 100644 index 0000000..83d2eee --- /dev/null +++ b/src/views/businesses/speciesImgs/type.ts @@ -0,0 +1,51 @@ +export interface Columns { + id: number; // + speciesCode: string; // 物种编码 + imgs: string; // 图片 + imgType: string; // 图片类型 + imgSource: string; // 图片来源 + createUser: number; // 图片拍摄/提供人 + createDate: string; // 图片拍摄/提供日期 + auditUser: string; // 图片核查人 + auditDate: string; // 图片核查日期 + auditStatus: number; // 核查 + auditView: string; // 核查意见 + remark: string; // 备注 + version: number; // 版本 +} + +export interface InfoData { + id: number | undefined; // + speciesCode: string | undefined; // 物种编码 + imgs: string | undefined; // 图片 + imgType: string | undefined; // 图片类型 + imgSource: string | undefined; // 图片来源 + createUser: number | undefined; // 图片拍摄/提供人 + createDate: string | undefined; // 图片拍摄/提供日期 + auditUser: string | undefined; // 图片核查人 + auditDate: string | undefined; // 图片核查日期 + auditStatus: number | undefined; // 核查 + auditView: string | undefined; // 核查意见 + remark: string | undefined; // 备注 + version: number | undefined; // 版本 +} + +export interface State { + ids: any[]; + tableData: { + data: Array; + total: number; + loading: boolean; + param: { + pageNum: number; + pageSize: number; + }; + }; +} + +export interface EditState { + loading: boolean; + isShowDialog: boolean; + formData: InfoData; + rules: object; +} diff --git a/src/views/businesses/speciesName/index.vue b/src/views/businesses/speciesName/index.vue index 4836b64..ea7a1b7 100644 --- a/src/views/businesses/speciesName/index.vue +++ b/src/views/businesses/speciesName/index.vue @@ -36,16 +36,7 @@ @selection-change="handleSelectionChange" :heightOffset="400" :action-width="280" - :show-expand="true" > -