diff --git a/src/api/base/proj.js b/src/api/base/proj.js new file mode 100644 index 0000000..f58fe77 --- /dev/null +++ b/src/api/base/proj.js @@ -0,0 +1,47 @@ +/** + * 工程管理页面 API + */ +import request from '@/utils/request' + +/** 工程列表查询 */ +export const queryProjListApi = (data) => { + return request.get('/base/tbProject/list', { + params: data + }) +} + +/** 工程名称查询 */ +export const queryProjNameApi = (data) => { + return request.get('/base/tbProject/getList', { + params: data + }) +} + +/** 电压等级查询 */ +export const queryVolLevelApi = (data) => { + return request.get('/base/tbProDepart/getDataList', { + params: data + }) +} + +/** 所属项目部查询 */ +export const queryDeptApi = (data) => { + return request.get('/base/tbProDepart/list', { + params: data + }) +} + +/** 新增工程 */ +export const addProjApi = (data) => { + return request.post('/base/tbProject', data) +} + +/** 修改工程 */ +export const editProjApi = (data) => { + return request.put('/base/tbProject', data) +} + +/** 删除工程 */ +export const deleteProjApi = (id) => { + return request.delete(`/base/tbProject/${id}`) +} diff --git a/src/api/base/projDept.js b/src/api/base/projDept.js new file mode 100644 index 0000000..b1b2f65 --- /dev/null +++ b/src/api/base/projDept.js @@ -0,0 +1,47 @@ +/** + * 项目部管理页面 API + */ +import request from '@/utils/request' + +/** 项目部列表查询 */ +export const queryProjDeptListApi = (data) => { + return request.get('/base/tbProDepart/list', { + params: data + }) +} + +/** 项目部名称查询 */ +export const queryProjDeptNameApi = (data) => { + return request.get('/base/tbProDepart/getList', { + params: data + }) +} + +/** 项目部类型查询 */ +export const queryProjDeptTypeApi = (data) => { + return request.get('/base/tbProDepart/getDataList', { + params: data + }) +} + +/** 各省份查询 */ +export const queryProvincesApi = (data) => { + return request.get('/base/tbProDepart/getAreaList', { + params: data + }) +} + +/** 新增项目部 */ +export const addProjDeptApi = (data) => { + return request.post('/base/tbProDepart', data) +} + +/** 修改项目部 */ +export const editProjDeptApi = (data) => { + return request.put('/base/tbProDepart', data) +} + +/** 删除项目部 */ +export const deleteProjDeptApi = (id) => { + return request.delete(`/base/tbProDepart/${id}`) +} diff --git a/src/api/menu.js b/src/api/menu.js index 845efd7..8c1c21a 100644 --- a/src/api/menu.js +++ b/src/api/menu.js @@ -6,4 +6,4 @@ export const getRouters = () => { url: '/system/menu/getRouters', method: 'get' }) -} \ No newline at end of file +} diff --git a/src/components/DialogModel/index.vue b/src/components/DialogModel/index.vue new file mode 100644 index 0000000..76c3dcc --- /dev/null +++ b/src/components/DialogModel/index.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/components/TableModel/index.vue b/src/components/TableModel/index.vue new file mode 100644 index 0000000..4a703b0 --- /dev/null +++ b/src/components/TableModel/index.vue @@ -0,0 +1,501 @@ + + + + + diff --git a/src/components/ToolbarModel/index.vue b/src/components/ToolbarModel/index.vue new file mode 100644 index 0000000..626b89f --- /dev/null +++ b/src/components/ToolbarModel/index.vue @@ -0,0 +1,227 @@ + + + diff --git a/src/main.js b/src/main.js index ae36024..d75b67b 100644 --- a/src/main.js +++ b/src/main.js @@ -18,7 +18,7 @@ import './assets/icons' // icon import './permission' // permission control import { getDicts } from "@/api/system/dict/data"; import { getConfigKey } from "@/api/system/config"; -import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/bonus"; +import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree, indexContinuation } from "@/utils/bonus"; // 分页组件 import Pagination from "@/components/Pagination"; // 自定义表格工具组件 @@ -37,6 +37,10 @@ import DictTag from '@/components/DictTag' import VueMeta from 'vue-meta' // 字典数据组件 import DictData from '@/components/DictData' +// 表格组件 +import TableModel from '@/components/TableModel' +// 弹框组件 +import DialogModel from '@/components/DialogModel' // 全局方法挂载 Vue.prototype.getDicts = getDicts @@ -48,6 +52,8 @@ Vue.prototype.selectDictLabel = selectDictLabel Vue.prototype.selectDictLabels = selectDictLabels Vue.prototype.download = download Vue.prototype.handleTree = handleTree +Vue.prototype.indexContinuation = indexContinuation + // 全局组件挂载 Vue.component('DictTag', DictTag) @@ -57,6 +63,8 @@ Vue.component('Editor', Editor) Vue.component('FileUpload', FileUpload) Vue.component('ImageUpload', ImageUpload) Vue.component('ImagePreview', ImagePreview) +Vue.component('TableModel', TableModel) +Vue.component('DialogModel', DialogModel) Vue.use(directive) Vue.use(plugins) diff --git a/src/utils/bonus.js b/src/utils/bonus.js index 723754c..53cc51f 100644 --- a/src/utils/bonus.js +++ b/src/utils/bonus.js @@ -234,3 +234,8 @@ export function tansParams(params) { export function blobValidate(data) { return data.type !== 'application/json' } + +// 解决表格翻页时 index 索引延续问题 +export function indexContinuation(num, size) { + return (num - 1) * size + 1 +} diff --git a/src/utils/configure.js b/src/utils/configure.js index b0396c2..3aa6e31 100644 --- a/src/utils/configure.js +++ b/src/utils/configure.js @@ -43,9 +43,9 @@ const CONFIG = { IS_CODE_LOGIN: LOGIN_CONFIG.CODE_EMAIL_LOGIN || LOGIN_CONFIG.CODE_PHONE_LOGIN, // 是否开启短信登录 // 数据设置 dataSettings: { - integrityCheck: DATA_SETTINGS.OPEN, // 数据完整性校验(true:开启,false:关闭) - encryptRequest: DATA_SETTINGS.OPEN, // 数据传输加密(true:开启,false:关闭) - encryptResponse: DATA_SETTINGS.OPEN // 数据返回解密(true:开启,false:关闭) + integrityCheck: DATA_SETTINGS.CLOSE, // 数据完整性校验(true:开启,false:关闭) + encryptRequest: DATA_SETTINGS.CLOSE, // 数据传输加密(true:开启,false:关闭) + encryptResponse: DATA_SETTINGS.CLOSE // 数据返回解密(true:开启,false:关闭) } } diff --git a/src/views/base/mixins/common.js b/src/views/base/mixins/common.js new file mode 100644 index 0000000..1d71899 --- /dev/null +++ b/src/views/base/mixins/common.js @@ -0,0 +1,73 @@ +import { param2Obj } from '@/utils' + +export const commonMixin = { + data() { + return { + // 修改时的数据源 + editParams: null, + } + }, + methods: { + /** 新建 */ + handleAddData() { + this.editParams = null + this.dialogConfig.outerTitle = this.addDialogTitle + this.dialogConfig.outerVisible = true + }, + /** 删除 */ + handleDeleteData(id, method) { + this.$modal.confirm('是否确定删除').then(() => { + method(id).then(res => { + this.$modal.msgSuccess('操作成功!') + this.$refs.tableRef.getTableList() + }).catch(err => {}) + }) + }, + /** 编辑 */ + handleEditData(data) { + this.editParams = data + this.dialogConfig.outerTitle = this.editDialogTitle + this.dialogConfig.outerVisible = true + }, + /** 导入数据 */ + handleImportData() { + console.log('导入--') + }, + /** 导出数据 */ + handleExportData(data, url, fileName, queryParams) { + this.download( + url, + { + ...queryParams, + dataCondition: data + }, + `${fileName}_${new Date().getTime()}.xlsx`, + ) + }, + /** 关闭外侧弹框 */ + closeDialogOuter() { + this.dialogConfig.outerVisible = false + }, + /** 关闭内侧弹框 */ + closeDialogInner() { + this.dialogConfig.innerVisible = false + }, + + /** 关闭弹框 由表单组件通知父组件关闭弹框的自定义事件 */ + closeDialog(type) { + this.dialogConfig.outerVisible = false + if(type) { + this.$refs.tableRef.getTableList() + } + }, + /** 手机号脱密处理 */ + phoneCrypto(phoneNumber) { + let reg = /^(1[3-9][0-9])\d{4}(\d{4}$)/ + let isMobile = reg.test(phoneNumber) + if (isMobile) { + return phoneNumber.replace(reg, "$1****$2") + } + return phoneNumber + } + } +} diff --git a/src/views/base/proj/components/form-project.vue b/src/views/base/proj/components/form-project.vue new file mode 100644 index 0000000..20f0eab --- /dev/null +++ b/src/views/base/proj/components/form-project.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/src/views/base/proj/components/table-tower-add.vue b/src/views/base/proj/components/table-tower-add.vue new file mode 100644 index 0000000..d12ba56 --- /dev/null +++ b/src/views/base/proj/components/table-tower-add.vue @@ -0,0 +1,122 @@ + + + diff --git a/src/views/base/proj/components/table-tower.vue b/src/views/base/proj/components/table-tower.vue new file mode 100644 index 0000000..9a4cafb --- /dev/null +++ b/src/views/base/proj/components/table-tower.vue @@ -0,0 +1,136 @@ + + + diff --git a/src/views/base/proj/config-tower.js b/src/views/base/proj/config-tower.js new file mode 100644 index 0000000..6f01282 --- /dev/null +++ b/src/views/base/proj/config-tower.js @@ -0,0 +1,20 @@ +export const formLabelTower = [ + { f_label: '杆塔名称', f_model: 'name', f_type: 'ipt' }, +] +export const columnsListTower = [ + { t_props: 'name', t_label: '杆塔名称', }, + { t_props: 'lon', t_label: '杆塔经度' }, + { t_props: 'lat', t_label: '杆塔纬度' }, +] + +export const dialogConfigTower = { + outerWidth: '60%', + outerTitle: '杆塔', + outerVisible: false, +} + +export const dialogConfigTowerAdd = { + outerWidth: '40%', + outerTitle: '新增杆塔', + outerVisible: false, +} diff --git a/src/views/base/proj/config.js b/src/views/base/proj/config.js new file mode 100644 index 0000000..508f3b0 --- /dev/null +++ b/src/views/base/proj/config.js @@ -0,0 +1,55 @@ +import { + queryVolLevelApi +} from '@/api/base/proj' +import { + queryProvincesApi +} from '@/api/base/projDept' + +export const querySel = () => { + queryVolLevelApi({ + dictType: 'rel_level' + }).then(res => { + formLabel[1].f_selList = res.data.map(item => { + return { + label: item.dictLabel, + value: item.dictCode + } + }) + }) + queryProvincesApi().then(res => { + formLabel[2].f_selList = res.data.map(item => { + return { + label: item.areaName, + value: item.areaId + } + }) + }) +} + +export const formLabel = [ + { f_label: '工程名称', f_model: 'proName', f_type: 'ipt' }, + { f_label: '电压等级', f_model: 'relId', f_type: 'sel', f_selList: [] }, + { f_label: '建管单位', f_model: 'areaId', f_type: 'sel', f_selList: [] }, + { f_label: '工程类型', f_model: 'proType', f_type: 'sel', f_selList: [ + { label: '变电工程', value: '1' }, + { label: '线路工程', value: '2' }, + { label: '电缆工程', value: '3' }, + ] }, + { f_label: '项目部名称', f_model: 'departId', f_type: 'ipt' }, +] +export const columnsList = [ + { t_props: 'departName', t_label: '所属项目部', }, + { t_props: 'proName', t_label: '工程名称' }, + { t_props: 'relName', t_label: '电压等级' }, + { t_props: 'proTypeName', t_label: '工程类型', }, + { t_props: 'proStatusName', t_label: '工程状态', }, + { t_props: 'lon', t_label: '经度', }, + { t_props: 'lat', t_label: '纬度', }, + { t_props: 'powerTotal', t_label: '杆塔', t_slot: 'powerTotal' }, +] + +export const dialogConfig = { + outerWidth: '60%', + outerTitle: '', + outerVisible: false, +} diff --git a/src/views/base/proj/index.vue b/src/views/base/proj/index.vue new file mode 100644 index 0000000..15de206 --- /dev/null +++ b/src/views/base/proj/index.vue @@ -0,0 +1,139 @@ + + + diff --git a/src/views/base/projDept/components/form-project.vue b/src/views/base/projDept/components/form-project.vue new file mode 100644 index 0000000..cddf31e --- /dev/null +++ b/src/views/base/projDept/components/form-project.vue @@ -0,0 +1,251 @@ + + + + + diff --git a/src/views/base/projDept/config.js b/src/views/base/projDept/config.js new file mode 100644 index 0000000..a3c2449 --- /dev/null +++ b/src/views/base/projDept/config.js @@ -0,0 +1,34 @@ +import { + queryProvincesApi +} from '@/api/base/projDept' + +export const queryProvinces = () => { + queryProvincesApi().then(res => { + formLabel[0].f_selList = res.data.map(item => { + return { + label: item.areaName, + value: item.areaId + } + }) + }).catch(err => {}) +} + +export const formLabel = [ + { f_label: '地区', f_model: 'areaId', f_type: 'sel', f_selList: [] }, + { f_label: '项目部名称', f_model: 'departName', f_type: 'ipt' }, + { f_label: '负责人', f_model: 'headUser', f_type: 'ipt' }, +] +export const columnsList = [ + { t_props: 'departName', t_label: '项目部名称', }, + { t_props: 'departType', t_label: '项目部类型' }, + { t_props: 'areaName', t_label: '地区' }, + { t_props: 'headUser', t_label: '负责人', }, + { t_props: 'headUserPhone', t_label: '电话', }, + { t_props: 'remarks', t_label: '备注', }, +] + +export const dialogConfig = { + outerWidth: '40%', + outerTitle: '', + outerVisible: false, +} diff --git a/src/views/base/projDept/index.vue b/src/views/base/projDept/index.vue new file mode 100644 index 0000000..1017ea6 --- /dev/null +++ b/src/views/base/projDept/index.vue @@ -0,0 +1,107 @@ + + + diff --git a/src/views/index.vue b/src/views/index.vue index da69c88..3d40a14 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -100,6 +100,9 @@ export default { // 版本号 version: "24.7.1", }; + }, + mounted() { + }, methods: { goTarget(href) {