diff --git a/sub-government-affairs-service/src/apis/plantingAndBreeding/base.js b/sub-government-affairs-service/src/apis/plantingAndBreeding/base.js new file mode 100644 index 0000000..ef3c3ad --- /dev/null +++ b/sub-government-affairs-service/src/apis/plantingAndBreeding/base.js @@ -0,0 +1,51 @@ +import request from '@/utils/axios'; + +/** + * @Title: 列表 + */ +export function GetEntityList(params = {}) { + return request('/cultivation-keep/api/cultivationbreedingbase/list', { + method: 'POST', + params, + }); +} + +/** + * @Title: 新增 + */ +export function AddEntity(data = {}) { + return request('/cultivation-keep/api/cultivationbreedingbase/add', { + method: 'POST', + data, + }); +} + +/** + * @Title: 修改 + */ +export function UpdateEntity(data = {}) { + return request('/cultivation-keep/api/cultivationbreedingbase/update', { + method: 'POST', + data, + }); +} + +/** + * @Title: 删除 + */ +export function DeleteEntity(params = {}) { + return request('/cultivation-keep/api/cultivationbreedingbase/del', { + method: 'POST', + params, + }); +} + +/** + * @Title: 更改状态 + */ +export function UpdateStatus(params = {}) { + return request('/cultivation-keep/api/cultivationbreedingbase/changeStatus', { + method: 'POST', + params, + }); +} diff --git a/sub-government-affairs-service/src/apis/system/dept.js b/sub-government-affairs-service/src/apis/system/dept.js index e109ac7..13bad19 100644 --- a/sub-government-affairs-service/src/apis/system/dept.js +++ b/sub-government-affairs-service/src/apis/system/dept.js @@ -10,15 +10,6 @@ export function GetEntityList(params = {}) { }); } -/** - * @Title: 信息 - */ -export function GetEntity(id) { - return request(`/system/dept/list/exclude/${id}`, { - method: 'GET', - }); -} - /** * @Title: 新增 */ @@ -43,7 +34,7 @@ export function UpdateEntity(data = {}) { * @Title: 删除 */ export function DeleteEntity(params = {}) { - return request(`/system/dict/type/${params.id}`, { + return request(`/system/dept/${params.id}`, { method: 'DELETE', }); } @@ -56,3 +47,12 @@ export function GetDeptExcludeChild(id) { method: 'GET', }); } + +/** + * @Title: 信息 + */ +export function GetDept(id) { + return request(`/system/dept/list/exclude/${id}`, { + method: 'GET', + }); +} diff --git a/sub-government-affairs-service/src/apis/system/menu.js b/sub-government-affairs-service/src/apis/system/menu.js new file mode 100644 index 0000000..6d1772d --- /dev/null +++ b/sub-government-affairs-service/src/apis/system/menu.js @@ -0,0 +1,62 @@ +import request from '@/utils/axios'; + +/** + * @Title: 列表 + */ +export function GetEntityList(params = {}) { + return request('/system/menu/list', { + method: 'GET', + params, + }); +} + +/** + * @Title: 新增 + */ +export function AddEntity(data = {}) { + return request('/system/menu', { + method: 'POST', + data, + }); +} + +/** + * @Title: 修改 + */ +export function UpdateEntity(data = {}) { + return request('/system/menu', { + method: 'PUT', + data, + }); +} + +/** + * @Title: 删除 + */ +export function DeleteEntity(params = {}) { + return request(`/system/menu/${params.id}`, { + method: 'DELETE', + }); +} + +// 查询菜单详细 +export function GetMenu(dictType) { + return request(`/system/menu/${dictType}`, { + method: 'GET', + }); +} + +// 查询菜单下拉树结构 +// 返回parentId +export function GetMenuTree() { + return request('/system/menu/treeselect', { + method: 'GET', + }); +} + +// 根据角色ID查询菜单下拉树结构 +export function GetRoleMenu(roleId) { + return request(`/system/menu/roleMenuTreeselect/${roleId}`, { + method: 'GET', + }); +} diff --git a/sub-government-affairs-service/src/router/modules/system.js b/sub-government-affairs-service/src/router/modules/system.js index 34badff..b03fab9 100644 --- a/sub-government-affairs-service/src/router/modules/system.js +++ b/sub-government-affairs-service/src/router/modules/system.js @@ -20,6 +20,18 @@ export default [ name: 'system-dict', meta: { title: '字典管理', icon: 'Document' }, }, + { + path: '/sub-government-affairs-service/system-menu', + component: () => import('@/views/system/menu/index.vue'), + name: 'system-menu', + meta: { title: '菜单管理', icon: 'Document' }, + }, + // { + // path: '/sub-government-affairs-service/system-dept', + // component: () => import('@/views/system/dept/index.vue'), + // name: 'system-dept', + // meta: { title: '部门管理', icon: 'Document' }, + // }, ], }, ]; diff --git a/sub-government-affairs-service/src/router/modules/trace.js b/sub-government-affairs-service/src/router/modules/trace.js index df876cb..23b908d 100644 --- a/sub-government-affairs-service/src/router/modules/trace.js +++ b/sub-government-affairs-service/src/router/modules/trace.js @@ -52,25 +52,17 @@ export default [ ], }, { - path: '/sub-government-affairs-service/trace-manage', - name: 'trace-manage', - component: Views, - meta: { title: '溯源查询和统计', icon: 'Document' }, - children: [ - { - path: '/sub-government-affairs-service/trace-search', - name: 'trace-search', - component: () => import('@/views/trace/search/index.vue'), - meta: { title: '溯源查询', icon: 'Document' }, - }, - { - path: '/sub-government-affairs-service/trace-info', - name: 'trace-info', - component: () => import('@/views/trace/search/info.vue'), - meta: { title: '溯源详情', icon: 'Document' }, - hidden: true, - }, - ], + path: '/sub-government-affairs-service/trace-search', + name: 'trace-search', + component: () => import('@/views/trace/search/index.vue'), + meta: { title: '溯源查询', icon: 'Document' }, + }, + { + path: '/sub-government-affairs-service/trace-info', + name: 'trace-info', + component: () => import('@/views/trace/search/info.vue'), + meta: { title: '溯源详情', icon: 'Document' }, + hidden: true, }, { path: '/sub-government-affairs-service/trace-statistic', diff --git a/sub-government-affairs-service/src/views/plantingAndBreeding/base/index.vue b/sub-government-affairs-service/src/views/plantingAndBreeding/base/index.vue index 3ccc2ab..f05972d 100644 --- a/sub-government-affairs-service/src/views/plantingAndBreeding/base/index.vue +++ b/sub-government-affairs-service/src/views/plantingAndBreeding/base/index.vue @@ -39,8 +39,9 @@ import { useRouter } from 'vue-router'; import { useApp } from '@/hooks'; import { useUserStore } from '@/store/modules/user'; import { CRUD_OPTIONS } from '@/config'; -import { isEmpty, mockData, sleep, setDicData } from '@/utils'; +import { isEmpty, setDicData, debounce } from '@/utils'; import { getLandsList } from '@/apis/land'; +import { GetEntityList, AddEntity, UpdateEntity, DeleteEntity, UpdateStatus } from '@/apis/plantingAndBreeding/base'; const { VITE_APP_BASE_API } = import.meta.env; const app = useApp(); @@ -61,7 +62,7 @@ const state = reactive({ column: [ { label: '基地名称', - prop: 'p1', + prop: 'baseName', search: true, width: 200, rules: { @@ -72,8 +73,8 @@ const state = reactive({ overHidden: true, }, { - label: '基地分类', - prop: 'type', + label: '基地类型', + prop: 'baseType', type: 'select', search: true, props: { @@ -95,7 +96,20 @@ const state = reactive({ label: '地块名', prop: 'landName', width: 200, + addDisplay: false, + editDisplay: false, + viewDisplay: true, + overHidden: true, + }, + { + label: '地块名', + prop: 'landId', + width: 200, type: 'select', + hide: true, + addDisplay: true, + editDisplay: true, + viewDisplay: false, props: { label: 'landName', value: 'id', @@ -108,37 +122,28 @@ const state = reactive({ filterable: true, remote: true, clearable: true, - remoteMethod: (val) => remoteLandList(val), + remoteMethod: (val) => debounce(remoteLandList(val), 200), change: (val) => selectedChange(val), rules: { required: true, message: '请选择', trigger: 'blur', }, - // addDisplay: true, - // editDisplay: true, - // viewDisplay: false, - // overHidden: true, }, { label: '区域位置', - prop: 'p3', + prop: 'address', width: 200, overHidden: true, - rules: { - required: true, - message: '请输入', - trigger: 'blur', - }, + disabled: true, + labelTip: '请先选择地块!', }, { label: '区域面积', - prop: 'p4', - rules: { - required: true, - message: '请输入', - trigger: 'blur', - }, + prop: 'area', + width: 100, + disabled: true, + labelTip: '请先选择地块!', }, { label: '状态', @@ -154,6 +159,7 @@ const state = reactive({ value: 0, }, ], + value: 1, rules: { required: true, message: '请输入', @@ -162,7 +168,7 @@ const state = reactive({ }, { label: '负责人', - prop: 'p5', + prop: 'contactPerson', rules: { required: true, message: '请输入', @@ -171,7 +177,7 @@ const state = reactive({ }, { label: '联系电话', - prop: 'p6', + prop: 'contactPhone', width: 150, rules: { required: true, @@ -181,15 +187,14 @@ const state = reactive({ }, { label: '创建时间', - prop: 'createTime', - width: 150, - // search: true, + prop: 'createdAt', + width: 200, display: false, }, { label: '更新时间', - prop: 'updateTime', - width: 150, + prop: 'updatedAt', + width: 200, display: false, }, ], @@ -204,16 +209,16 @@ const state = reactive({ icon: 'edit', event: ({ row }) => rowEdit(row), }, - // { - // type: 'success', - // name: ({ row }) => { - // return row.status === 1 ? '禁用' : '启用'; - // }, - // icon: ({ row }) => { - // return row.status === 1 ? 'turnOff' : 'open'; - // }, - // event: ({ row }) => rowStatus(row), - // }, + { + type: 'primary', + name: ({ row }) => { + return row.status === 1 ? '禁用' : '启用'; + }, + icon: ({ row }) => { + return row.status === 1 ? 'turnOff' : 'open'; + }, + event: ({ row }) => rowStatus(row), + }, { type: 'danger', name: '删除', @@ -233,45 +238,26 @@ const state = reactive({ // 加载 const loadData = async () => { - //state.loading = true; - // GetEntityList(state.query) - // .then((res) => { - // if (res.code === 200) { - // const { current, size, total, records } = res.data; - // state.data = records; - // state.pageData = { - // currentPage: current || 1, - // pageSize: size || 10, - // total: total, - // }; - // } - // }) - // .catch((err) => { - // app.$message.error(err.msg); - // state.data = []; - // }) - // .finally(() => { - // state.loading = false; - // }); - state.loading = true; - await sleep(500); - state.data = mockData( - { - p1: '耿马镇一号基地', - landName: '耿马镇2025001号地块', - p3: '耿马傣族佤族自治县/耿马镇', - p4: '1000', - p5: '张三', - p6: '13837633838', - status: 1, - type: 'base_plant', - createTime: '2025-01-01', - updateTime: '2025-01-15', - }, - 10 - ); - state.loading = false; + GetEntityList(state.query) + .then((res) => { + if (res.code === 200) { + const { current, size, total, records } = res.data; + state.data = records; + state.pageData = { + currentPage: current || 1, + pageSize: size || 10, + total: total, + }; + } + }) + .catch((err) => { + app.$message.error(err.msg); + state.data = []; + }) + .finally(() => { + state.loading = false; + }); }; loadData(); @@ -313,29 +299,36 @@ const rowView = (row) => { }; // 启用、禁用 -// const rowStatus = (row) => { -// console.info('操作状态'); -// }; +const rowStatus = (row) => { + let status = row.status === 1 ? 0 : 1; + UpdateStatus({ id: row.id, status }) + .then((res) => { + if (res.code === 200) { + app.$message.success('状态更改成功!'); + loadData(); + } + }) + .catch((err) => { + app.$message.error(err.msg); + }); +}; // 新增 -// const onAdd = () => { -// crudRef.value && crudRef.value.rowAdd(); -// }; const rowSave = (row, done, loading) => { - // AddEntity(row) - // .then((res) => { - // if (res.code === 200) { - // app.$message.success('添加成功!'); - // done(); - // loadData(); - // } - // }) - // .catch((err) => { - // app.$message.error(err.msg); - // }) - // .finally(() => { - // loading(); - // }); + AddEntity(row) + .then((res) => { + if (res.code === 200) { + app.$message.success('添加成功!'); + done(); + loadData(); + } + }) + .catch((err) => { + app.$message.error(err.msg); + }) + .finally(() => { + loading(); + }); }; // 编辑 @@ -344,20 +337,20 @@ const rowEdit = (row) => { }; const rowUpdate = (row, index, done, loading) => { - // UpdateEntity(row) - // .then((res) => { - // if (res.code === 200) { - // app.$message.success('更新成功!'); - // done(); - // loadData(); - // } - // }) - // .catch((err) => { - // app.$message.error(err.msg); - // }) - // .finally(() => { - // loading(); - // }); + UpdateEntity(row) + .then((res) => { + if (res.code === 200) { + app.$message.success('更新成功!'); + done(); + loadData(); + } + }) + .catch((err) => { + app.$message.error(err.msg); + }) + .finally(() => { + loading(); + }); }; // 删除 @@ -371,16 +364,16 @@ const onDel = (rows = []) => { type: 'warning', }) .then(() => { - // DeleteEntity({ ids: ids.join(',') }) - // .then((res) => { - // if (res.code === 200) { - // app.$message.success('删除成功!'); - // loadData(); - // } - // }) - // .catch((err) => { - // app.$message.error(err.msg); - // }); + DeleteEntity({ ids: ids.join(',') }) + .then((res) => { + if (res.code === 200) { + app.$message.success('删除成功!'); + loadData(); + } + }) + .catch((err) => { + app.$message.error(err.msg); + }); }) .catch(() => {}); }; @@ -391,16 +384,26 @@ const rowDel = (row, index, done) => { // 远程搜搜 const remoteLandList = async (val) => { - if (isEmpty(val)) return; + if (!isEmpty(val)) return; const query = { landName: val, current: 1, size: 20 }; const res = await getLandsList(query); if (res.code === 200) { - setDicData(state.options.column, 'landName', res.data.records); + setDicData(state.options.column, 'landId', res.data.records); } }; // 选择赋值 -const selectedChange = ({ value, item }) => { - console.log(430, value, item, item.landName, item.address, item.area); +const selectedChange = ({ item, value, dic }) => { + // console.log(390, value, item); + crudRef.value.tableForm.landId = item?.id; + crudRef.value.tableForm.landName = item?.landName; + crudRef.value.tableForm.address = item?.address; + crudRef.value.tableForm.area = item?.area; + crudRef.value.tableForm.provinceCode = item?.provinceCode; + // crudRef.value.tableForm.provinceName = item?.provinceName; + crudRef.value.tableForm.cityCode = item?.cityCode; + crudRef.value.tableForm.districtCode = item?.county; + crudRef.value.tableForm.townCode = item?.townCode; + crudRef.value.tableForm.villageCode = item?.villageCode; }; diff --git a/sub-government-affairs-service/src/views/system/dept/index.vue b/sub-government-affairs-service/src/views/system/dept/index.vue index 82169b5..bea75c2 100644 --- a/sub-government-affairs-service/src/views/system/dept/index.vue +++ b/sub-government-affairs-service/src/views/system/dept/index.vue @@ -15,6 +15,11 @@ @row-update="rowUpdate" @row-del="rowDel" > + + @@ -26,9 +31,12 @@ import { reactive, ref } from 'vue'; import { useApp } from '@/hooks'; import { CRUD_OPTIONS } from '@/config'; import { isEmpty, getTree } from '@/utils'; +import { useUserStore } from '@/store/modules/user'; import { GetEntityList, AddEntity, UpdateEntity, DeleteEntity } from '@/apis/system/dept'; +const { VITE_APP_BASE_API } = import.meta.env; const app = useApp(); +const UserStore = useUserStore(); const crudRef = ref(null); const state = reactive({ loading: false, @@ -40,18 +48,39 @@ const state = reactive({ rowKey: 'deptId', index: false, selection: false, - expand: true, + tree: true, + defaultExpandAll: true, + treeProps: { children: 'children', hasChildren: 'hasChildren' }, column: [ { label: '部门名称', prop: 'deptName', search: true, + width: 200, rules: { required: true, message: '请输入', trigger: 'blur', }, }, + { + label: '上级部门', + prop: 'parentId', + type: 'select', + hide: true, + props: { + label: 'deptName', + value: 'deptId', + }, + dicUrl: `${VITE_APP_BASE_API}/system/dept/list`, + dicHeaders: { + authorization: UserStore.token, + }, + dicFormatter: (res) => { + const data = [{ deptId: 0, deptName: '根目录' }, ...res.data]; + return data; + }, + }, { label: '状态', prop: 'status', @@ -70,7 +99,7 @@ const state = reactive({ value: '0', rules: { required: true, - message: '请输入', + message: '请选择', trigger: 'blur', }, }, @@ -137,7 +166,6 @@ const loadData = () => { .then((res) => { if (res.code === 200) { state.data = getTree(res.data, 'deptId'); - console.log(139, state.data); } }) .catch((err) => { @@ -223,7 +251,7 @@ const rowDel = (row, index, done) => { type: 'warning', }) .then(() => { - DeleteEntity({ id: row.id }) + DeleteEntity({ id: row.deptId }) .then((res) => { if (res.code === 200) { app.$message.success('删除成功!'); diff --git a/sub-government-affairs-service/src/views/system/dict/index.vue b/sub-government-affairs-service/src/views/system/dict/index.vue index bfd2833..832d5c3 100644 --- a/sub-government-affairs-service/src/views/system/dict/index.vue +++ b/sub-government-affairs-service/src/views/system/dict/index.vue @@ -18,6 +18,11 @@ @row-update="rowUpdate" @row-del="rowDel" > + + @@ -48,13 +53,6 @@ const state = reactive({ ...CRUD_OPTIONS, selection: false, column: [ - // { - // label: '编码', - // prop: 'dictCode', - // addDisplay: false, - // editDisplay: false, - // viewDisplay: false, - // }, { label: '字典名称', prop: 'dictLabel', @@ -116,6 +114,12 @@ const state = reactive({ trigger: 'blur', }, }, + { + label: '排序', + prop: 'dictSort', + type: 'number', + hide: true, + }, { label: '备注', prop: 'remark', diff --git a/sub-government-affairs-service/src/views/system/dict/type.vue b/sub-government-affairs-service/src/views/system/dict/type.vue index fc196ac..02df011 100644 --- a/sub-government-affairs-service/src/views/system/dict/type.vue +++ b/sub-government-affairs-service/src/views/system/dict/type.vue @@ -18,6 +18,11 @@ @row-update="rowUpdate" @row-del="rowDel" > + + diff --git a/sub-government-affairs-service/src/views/system/menu/index.vue b/sub-government-affairs-service/src/views/system/menu/index.vue new file mode 100644 index 0000000..f7cd740 --- /dev/null +++ b/sub-government-affairs-service/src/views/system/menu/index.vue @@ -0,0 +1,490 @@ + +