四模块字段-上传修改

This commit is contained in:
FrancisHu 2024-08-12 18:09:14 +08:00
parent 266edb37e6
commit 143a920733
21 changed files with 195 additions and 85 deletions

View File

@ -5,7 +5,7 @@ VUE_APP_TITLE = 博诺思管理系统
ENV = 'development'
# 博诺思管理系统/开发环境
VUE_APP_BASE_API = '/dev-api'
VUE_APP_BASE_API = '/prod'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true

View File

@ -9,7 +9,7 @@ export const addProtocolApi = (data) => {
}
/** 删除协议 */
export const deleteProtocolApi = (id) => {
return request.delete('/xxx/xx', id)
return request.delete(`/base/agreement/${id}`)
}
/** 修改协议 */
export const editProtocolApi = (data) => {

View File

@ -9,7 +9,7 @@ export const addContactUnitsApi = (data) => {
}
/** 删除往来单位 */
export const deleteContactUnitsApi = (id) => {
return request.delete('/xxx/xx', id)
return request.delete(`/base/customer/${id}`)
}
/** 修改往来单位 */
export const editContactUnitsApi = (data) => {

View File

@ -9,7 +9,7 @@ export const addProjectApi = (data) => {
}
/** 删除工程 */
export const deleteProjectApi = (id) => {
return request.delete(`/base/project?${id}`, )
return request.delete(`/base/project/${id}`, )
}
/** 修改工程 */
export const editProjectApi = (data) => {

View File

@ -9,7 +9,7 @@ export const addUnitTypeApi = (data) => {
}
/** 删除单位类型*/
export const deleteUnitTypeApi = (id) => {
return request.delete('/xxx/xx', id)
return request.delete(`/base/unittype/${id}`)
}
/** 修改单位类型*/
export const editUnitTypeApi = (data) => {

24
src/api/system/upload.js Normal file
View File

@ -0,0 +1,24 @@
import request from '@/utils/request'
//资源图片上传
export function imgUpLoad(param) {
const formData = new FormData()
formData.append('file', param.file)
// formData.append('fileType', param.type)
return request({
url: '/file/upload',
method: 'post',
data: formData,
header: 'multipart/form-data'
})
}
//资源文件上传
export function fileUpLoad(param) {
const formData = new FormData()
formData.append('file', param.file)
return request({
url: '/file/upload',
method: 'post',
data: formData,
})
}

View File

@ -98,7 +98,7 @@ service.interceptors.response.use(res => {
isRelogin.show = false;
});
}
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
// return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
Message({ message: msg, type: 'error' })
return Promise.reject(new Error(msg))

View File

@ -13,15 +13,16 @@ export const commonMixin = {
this.dialogConfig.outerVisible = true
},
/** 删除 */
handleDeleteData(id) {
handleDeleteData(id, method) {
this.$modal.confirm('是否确定删除').then(() => {
console.log('确定删除--', id)
/* deleteProjectApi(id).then(res => {
method(id).then(res => {
console.log(res)
history.go(0)
}).catch(err => {
console.log(err)
}) */
if(res.code === 200) {
// this.$message.msgSuccess('操作成功!')
this.$refs.tableRef.getTableList()
}
}).catch(err => {})
})
},
/** 编辑 */
@ -35,8 +36,14 @@ export const commonMixin = {
console.log('导入--')
},
/** 导出数据 */
handleExportData() {
console.log('导出--')
handleExportData(data, url, fileName) {
this.download(
url,
{
...data
},
`${fileName}_${new Date().getTime()}.xlsx`,
)
},
/** 关闭外侧弹框 */
closeDialogOuter() {
@ -48,8 +55,11 @@ export const commonMixin = {
},
/** 关闭弹框 由表单组件通知父组件关闭弹框的自定义事件 */
closeDialog() {
closeDialog(type) {
this.dialogConfig.outerVisible = false
if(type) {
this.$refs.tableRef.getTableList()
}
},
}
}

View File

@ -80,7 +80,22 @@
</el-col>
<el-col :span="12">
<el-form-item label="合同附件" prop="url">
<el-input v-model="protocolParams.url" />
<el-upload
:http-request="(obj) => imgUpLoad(obj)"
action="#"
:file-list="fileList"
:show-file-list="false"
list-type="picture-card"
accept=".png,.jpg,.jpeg"
>
<img
v-if="protocolParams.url"
:src="protocolParams.url"
style="width: 140px; height: 140px"
class="avatar"
/>
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-col>
</el-row>
@ -114,7 +129,10 @@ import {
import {
queryProjectSelApi
} from '@/api/base/project'
import { addProjectApi, editProjectApi } from '@/api/base/project'
import {
fileUpLoad,
imgUpLoad
} from '@/api/system/upload'
export default {
name: 'FormProtocol',
props: {
@ -148,6 +166,7 @@ export default {
remark: '', //
url: '', //
},
fileList: [],
//
unitSelRange: [],
//
@ -210,6 +229,14 @@ export default {
})
}).catch(err => {})
},
/** 上传图片 */
imgUpLoad(param) {
console.log(param)
imgUpLoad(param).then(res => {
console.log(res, process.env.VUE_APP_BASE_API)
this.protocolParams.url = res.data.url
}).catch(err => {})
},
/** 确认按钮 */
onSubmit() {
this.$refs.protocolParamsRef.validate((valid) => {
@ -219,24 +246,18 @@ export default {
if(this.subSort === 1) {
addProtocolApi(this.protocolParams).then(res => {
console.log(res)
// 2.
this.$emit('closeDialog')
history.go(0)
}).catch(err => {
console.log(err)
})
} else if(this.subSort === 2) {
editProtocolApi(this.protocolParams).then(res => {
console.log(res)
// 2.
this.$emit('closeDialog')
history.go(0)
}).catch(err => {
console.log(err)
})
}
// 2.
this.$emit('closeDialog')
this.$emit('closeDialog', true)
}
})
},
@ -248,4 +269,7 @@ export default {
::v-deep .el-select {
width: 100%;
}
::v-deep .el-form-item__label{
font-weight: normal;
}
</style>

View File

@ -13,14 +13,14 @@ export const columnsList = [
{ t_props: 'signDate', t_label: '协议签订时间', },
{ t_props: 'code', t_label: '协议编号' },
{ t_props: 'contractNumber', t_label: '合同编号' },
{ t_props: 'customer', t_label: '租赁单位', },
{ t_props: 'project', t_label: '租赁工程', },
{ t_props: 'unitName', t_label: '租赁单位', },
{ t_props: 'projectName', t_label: '租赁工程', },
{ t_props: 'startTime', t_label: '开始日期', },
// { t_props: 'itemType', t_label: '租赁期限(天)', },
{ t_props: 'authorizingPerson', t_label: '授权人', },
{ t_props: 'authorizingPhone', t_label: '授权人电话', },
// { t_props: 'itemType', t_label: '租赁单位类型', },
{ t_props: 'url', t_label: '合同文件', },
{ t_props: 'url', t_label: '合同文件', t_slot: 'url' },
{ t_props: 'remark', t_label: '备注', },
]

View File

@ -6,12 +6,13 @@
:formLabel="formLabel"
:columnsList="columnsList"
:request-api="queryProtocolListApi"
ref="tableRef"
>
<template slot="btn" slot-scope="{ queryParams }">
<el-button type="primary" @click="handleAddData()"
>新增协议</el-button
>
<el-button @click="handleExportData(queryParams)"
<el-button @click="handleExportData(queryParams, 'base/agreement/export', '协议清单')"
>导出</el-button
>
</template>
@ -25,10 +26,13 @@
<el-button
type="danger"
size="mini"
@click="handleDeleteData(data)"
@click="handleDeleteData(data.id, deleteProtocolApi)"
>删除</el-button
>
</template>
<template slot="url" slot-scope="{ data }">
<img :src="data.url" style="width: 50px; height: 50px">
</template>
</TableModel>
<!-- 新增以及修改时的弹框 -->
@ -51,14 +55,14 @@
import { formLabel, columnsList, dialogConfig } from './config'
import { commonMixin } from '../mixins/common'
import FormProtocol from './components/form-protocol'
import { queryProtocolListApi } from '@/api/base/agreement'
import { queryProtocolListApi, deleteProtocolApi } from '@/api/base/agreement'
export default {
name: 'ProtocolManage',
mixins: [commonMixin], //
components: {
FormProtocol,
},
methods: { queryProtocolListApi },
methods: { queryProtocolListApi, deleteProtocolApi },
data() {
return {
formLabel,

View File

@ -25,10 +25,10 @@
</el-form-item>
<el-form-item label="启用状态" prop="isActive">
<el-switch
active-text="启用"
inactive-text="禁用"
active-value="1"
inactive-value="0"
active-color="#13ce66"
inactive-color="#ff4949"
v-model="contactUnitsParams.isActive"
></el-switch>
</el-form-item>
@ -129,16 +129,14 @@ export default {
if(this.subSort === 1) {
addContactUnitsApi(this.contactUnitsParams).then(res => {
console.log(res)
history.go(0)
}).catch(err => {})
} else if(this.subSort === 2) {
editContactUnitsApi(this.contactUnitsParams).then(res => {
console.log(res)
history.go(0)
}).catch(err => {})
}
// 2.
this.$emit('closeDialog')
this.$emit('closeDialog', true)
}
})
},
@ -150,4 +148,7 @@ export default {
::v-deep .el-select {
width: 100%;
}
::v-deep .el-form-item__label{
font-weight: normal;
}
</style>

View File

@ -8,7 +8,7 @@ export const columnsList = [
{ t_props: 'companyId', t_label: '所属分公司' },
{ t_props: 'materialClerk', t_label: '材料员', },
{ t_props: 'phone', t_label: '联系电话', },
{ t_props: 'isActive', t_label: '状态', },
{ t_props: 'isActive', t_label: '状态', t_slot: 'isActive' },
]
export const dialogConfig = {

View File

@ -6,12 +6,14 @@
:formLabel="formLabel"
:columnsList="columnsList"
:request-api="queryContactUnitsListApi"
ref="tableRef"
>
<template slot="btn" slot-scope="{ queryParams }">
<el-button type="primary" @click="handleAddData()"
>新建</el-button
>
<el-button @click="handleExportData(queryParams)"
<el-button @click="handleExportData(queryParams, 'base/customer/export', '往来单位清单')"
>导出</el-button
>
</template>
@ -26,10 +28,13 @@
<el-button
type="danger"
size="mini"
@click="handleDeleteData(data)"
@click="handleDeleteData(data.id, deleteContactUnitsApi)"
>删除</el-button
>
</template>
<template slot="isActive" slot-scope="{ data }">
{{ data.isActive == '1' ? '启用' : '不启用' }}
</template>
</TableModel>
<!-- 新增以及修改时的弹框 -->
@ -52,12 +57,12 @@
import { formLabel, columnsList, dialogConfig } from './config'
import { commonMixin } from '../mixins/common'
import FormContactUnits from './components/form-contact-units.vue'
import { queryContactUnitsListApi } from '@/api/base/customer'
import { queryContactUnitsListApi, deleteContactUnitsApi } from '@/api/base/customer'
export default {
name: 'ContactUnits',
mixins: [commonMixin], //
components: { FormContactUnits },
methods: { queryContactUnitsListApi },
methods: { queryContactUnitsListApi, deleteContactUnitsApi },
data() {
return {
formLabel,

View File

@ -24,27 +24,52 @@
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="实施单位" prop="impUnit">
<el-select v-model="projectParams.impUnit"></el-select>
<el-select
v-model="projectParams.impUnit"
>
<el-option
v-for="item in proSelRanges.pro_unit_range"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工程类型" prop="pro_type_of">
<el-select
v-model="projectParams.pro_type_of"
></el-select>
v-model="projectParams.projectType"
>
<el-option
v-for="item in proSelRanges.pro_type_range"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="工程状态" prop="pro_type">
<el-select v-model="projectParams.pro_type"></el-select>
<el-form-item label="工程状态" prop="stats">
<el-select
v-model="projectParams.stats"
>
<el-option
v-for="item in proSelRanges.pro_stats_range"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工程性质" prop="pro_nature">
<el-form-item label="工程性质" prop="nature">
<el-select
v-model="projectParams.pro_nature"
v-model="projectParams.nature"
>
<el-option
v-for="item in proSelRanges.pro_nature_range"
@ -152,6 +177,9 @@ export default {
name: '', //
num: '', //
impUnit: '', //
projectType: '', //
stats: '', //
nature: '', //
manager: '', //
phone: '', //
htzt: '', //
@ -162,11 +190,10 @@ export default {
},
//
proSelRanges: {
pro_nature_range: [
{ label: 'a', value: '1' },
{ label: 'b', value: '2' },
{ label: 'c', value: '3' },
]
pro_unit_range: [], //
pro_type_range: [], //
pro_stats_range: [], //
pro_nature_range: [], //
},
//
projectParamsRules: {
@ -209,6 +236,10 @@ export default {
}
},
methods: {
/** 获取各类下拉框 */
getSelRanges() {
//
},
/** 确认按钮 */
onSubmit() {
this.$refs.projectParamsRef.validate(valid => {
@ -218,22 +249,18 @@ export default {
if(this.subSort === 1) {
addProjectApi(this.projectParams).then(res => {
console.log(res)
// 2.
this.$emit('closeDialog')
history.go(0)
}).catch(err => {
console.log(err)
})
} else if(this.subSort === 2) {
editProjectApi(this.projectParams).then(res => {
console.log(res)
// 2.
this.$emit('closeDialog')
history.go(0)
}).catch(err => {
console.log(err)
})
}
// 2.
this.$emit('closeDialog', true)
}
})
},
@ -245,4 +272,7 @@ export default {
::v-deep .el-select {
width: 100%;
}
::v-deep .el-form-item__label{
font-weight: normal;
}
</style>

View File

@ -1,17 +1,18 @@
export const formLabel = [
{ f_label: '工程名称', f_model: 'keywords', f_type: 'ipt' },
{ f_label: '工程名称', f_model: 'name', f_type: 'ipt' },
]
export const columnsList = [
{ t_props: 'name', t_label: '工程项目名称', },
{ t_props: 'impUnit', t_label: '实施单位' },
{ t_props: 'projectType', t_label: '工程类型' },
{ t_props: 'proId', t_label: 'i8工程id', },
{ t_props: 'isMatch', t_label: '是否匹配i8工程', },
{ t_props: 'isMatch', t_label: '是否匹配i8工程', t_slot: 'isMatch' },
{ t_props: 'htzt', t_label: '合同主体', },
{ t_props: 'manager', t_label: '项目经理', },
{ t_props: 'phone', t_label: '联系电话', },
{ t_props: 'stats', t_label: '工程状态', },
{ t_props: 'remark', t_label: '备注', },
]
export const dialogConfig = {

View File

@ -6,12 +6,14 @@
:formLabel="formLabel"
:columnsList="columnsList"
:request-api="queryProjectListApi"
ref="tableRef"
>
<template slot="btn" slot-scope="{ queryParams }">
<el-button type="primary" @click="handleAddData()"
>新建</el-button
>
<el-button @click="handleExportData(queryParams)"
<el-button @click="handleExportData(queryParams, 'base/project/export', '工程清单')"
>导出</el-button
>
</template>
@ -25,10 +27,13 @@
<el-button
type="danger"
size="mini"
@click="handleDeleteData(data.id)"
@click="handleDeleteData(data.id, deleteProjectApi)"
>删除</el-button
>
</template>
<template slot="isMatch" slot-scope="{ data }">
{{ data.proId == null ? '不匹配' : '匹配' }}
</template>
</TableModel>
<!-- 新增以及修改时的弹框 -->
@ -51,10 +56,10 @@
import { formLabel, columnsList, dialogConfig } from './config'
import { commonMixin } from '../mixins/common'
import FormProject from './components/form-project'
import { queryProjectListApi } from '@/api/base/project'
import { queryProjectListApi, deleteProjectApi } from '@/api/base/project'
export default {
name: 'ProjectManage',
methods: { queryProjectListApi },
methods: { queryProjectListApi, deleteProjectApi },
mixins: [commonMixin], //
components: {
FormProject,

View File

@ -12,10 +12,10 @@
<el-input v-model="unitsTypeParams.name" />
</el-form-item>
<el-form-item label="启用状态" prop="isActive">
<el-form-item label="启用状态" prop="isActive" v-if="subSort !== 1">
<el-switch
active-text="启用"
inactive-text="禁用"
active-color="#13ce66"
inactive-color="#ff4949"
active-value="1"
inactive-value="0"
v-model="unitsTypeParams.isActive"
@ -39,7 +39,7 @@
<script>
import {
addUnitTypeApi,
editUnitTypeApi
editUnitTypeApi,
} from '@/api/base/unitType'
export default {
name: 'FormUnitsType',
@ -63,7 +63,7 @@ export default {
subSort: '', // 1 / 2
unitsTypeParams: {
name: '', //
isActive: '', //
isActive: '1', //
},
//
unitsTypeParamsRules: {
@ -94,27 +94,30 @@ export default {
if(this.subSort === 1) {
addUnitTypeApi(this.unitsTypeParams).then(res => {
console.log(res)
// 2.
this.$emit('closeDialog')
history.go(0)
}).catch(err => {
console.log(err)
})
} else if(this.subSort === 2) {
editUnitTypeApi(this.unitsTypeParams).then(res => {
console.log(res)
// 2.
this.$emit('closeDialog')
history.go(0)
}).catch(err => {
console.log(err)
})
}
// 2.
this.$emit('closeDialog')
this.$emit('closeDialog', true)
}
})
},
},
}
</script>
<style scoped>
::v-deep .el-select {
width: 100%;
}
::v-deep .el-form-item__label{
font-weight: normal;
}
</style>

View File

@ -1,6 +1,6 @@
export const formLabel = [
{ f_label: '单位名称', f_model: 'keywords', f_type: 'ipt' },
{ f_label: '单位名称', f_model: 'name', f_type: 'ipt' },
]
export const columnsList = [
{ t_props: 'name', t_label: '单位类型', },

View File

@ -6,12 +6,14 @@
:formLabel="formLabel"
:columnsList="columnsList"
:requestApi="queryUnitTypeListApi"
ref="tableRef"
>
<template slot="btn" slot-scope="{ queryParams }">
<el-button type="primary" @click="handleAddData()"
>新建</el-button
>
<el-button @click="handleExportData(queryParams)"
<el-button @click="handleExportData(queryParams, 'base/unittype/export', '单位类型清单')"
>导出</el-button
>
</template>
@ -25,13 +27,13 @@
<el-button
type="danger"
size="mini"
@click="handleDeleteData(data)"
@click="handleDeleteData(data.id, deleteUnitTypeApi)"
>删除</el-button
>
</template>
<template slot="isActive" slot-scope="{ data }">
<!-- {{ data }}-->
{{ data.isActive == '1' ? '启用' : '用' }}
{{ data.isActive == '1' ? '启用' : '不启用' }}
</template>
</TableModel>
@ -55,14 +57,14 @@
import { formLabel, columnsList, dialogConfig } from './config'
import { commonMixin } from '../mixins/common'
import FormUnitsType from './components/form-units-type'
import { queryUnitTypeListApi } from '@/api/base/unitType.js'
import { queryUnitTypeListApi, deleteUnitTypeApi } from '@/api/base/unitType.js'
export default {
name: 'UnitType',
mixins: [commonMixin], //
components: {
FormUnitsType,
},
methods: { queryUnitTypeListApi },
methods: { queryUnitTypeListApi, deleteUnitTypeApi },
data() {
return {
formLabel,
@ -72,7 +74,6 @@ export default {
addDialogTitle: '新建单位类型',
//
editDialogTitle: '修改单位类型',
queryUnitTypeListApi,
}
},
}

View File

@ -35,7 +35,9 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `http://192.168.2.31:18080`, // 代理的后台ip 端口 解决请求跨域
// target: `http://192.168.2.13:18080`, // 代理的后台ip 端口 解决请求跨域
// target: `http://172.20.10.2:18080`, // 阮
target: `http://192.168.2.21:18080`, // 马
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''