分包商管理接口调试完成

This commit is contained in:
BianLzhaoMin 2025-04-25 16:37:05 +08:00
parent 04f573ef1d
commit fd9aead61c
10 changed files with 274 additions and 118 deletions

View File

@ -0,0 +1,39 @@
import request from '@/utils/request'
// 分包商管理 ---- 分包商管理管理
// 分包商管理列表
export function getSubManageListAPI(data) {
return request({
url: '/tbSub/getTbSubList',
method: 'get',
params: data,
})
}
// 新增分包商管理
export function addSubManageAPI(data) {
return request({
url: '/tbSub/addTbSub',
method: 'post',
data: data,
})
}
// 编辑分包商管理
export function editSubManageAPI(data) {
return request({
url: '/tbSub/updateTbSub',
method: 'post',
data: data,
})
}
// 删除分包商管理
export function deleteSubManageAPI(data) {
return request({
url: '/tbSub/delTbSub',
method: 'post',
data: data,
})
}

View File

@ -133,6 +133,7 @@ export default {
// //
handleBeforeUpload(file) { handleBeforeUpload(file) {
console.log(file.type, ' file.type', this.fileType)
const isFormat = this.fileType.some((e) => file.type.includes(e)) const isFormat = this.fileType.some((e) => file.type.includes(e))
if (!isFormat) { if (!isFormat) {
this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join('、')}格式的文件!`) this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join('、')}格式的文件!`)

View File

@ -40,7 +40,7 @@
:limit="1" :limit="1"
:file-size="10" :file-size="10"
@deleteFile="deleteFile" @deleteFile="deleteFile"
:file-type="['jpg', 'png']" :file-type="['jpg', 'png', 'jpeg']"
:upload-file-url="uploadFileUrl" :upload-file-url="uploadFileUrl"
:file-list.sync="addAndEditForm.idCardFront" :file-list.sync="addAndEditForm.idCardFront"
> >
@ -52,7 +52,7 @@
:limit="1" :limit="1"
:file-size="10" :file-size="10"
@deleteFile="deleteFile" @deleteFile="deleteFile"
:file-type="['jpg', 'png']" :file-type="['jpg', 'png', 'jpeg']"
:upload-file-url="uploadFileUrl" :upload-file-url="uploadFileUrl"
:file-list.sync="addAndEditForm.idCardBack" :file-list.sync="addAndEditForm.idCardBack"
> >
@ -186,7 +186,7 @@
:file-size="10" :file-size="10"
:multiple="true" :multiple="true"
@deleteFile="deleteFile" @deleteFile="deleteFile"
:file-type="['jpg', 'png']" :file-type="['jpg', 'png', 'jpeg']"
:upload-file-url="uploadFileUrl" :upload-file-url="uploadFileUrl"
:file-list.sync="addAndEditForm.diplomaImg" :file-list.sync="addAndEditForm.diplomaImg"
/> />
@ -205,7 +205,7 @@
:limit="5" :limit="5"
:file-size="10" :file-size="10"
:multiple="true" :multiple="true"
:file-type="['jpg', 'png']" :file-type="['jpg', 'png', 'jpeg']"
@deleteFile="deleteFile" @deleteFile="deleteFile"
:upload-file-url="uploadFileUrl" :upload-file-url="uploadFileUrl"
:file-list.sync="addAndEditForm.otherImg" :file-list.sync="addAndEditForm.otherImg"

View File

@ -245,6 +245,7 @@ export default {
resetQueryParams() { resetQueryParams() {
this.$refs.queryParamsRef.resetFields() this.$refs.queryParamsRef.resetFields()
this.queryParams.pageNum = 1 this.queryParams.pageNum = 1
this.queryParams.pageSize = 10
this.getKeyPersonList() this.getKeyPersonList()
}, },
// //

View File

@ -35,7 +35,7 @@
:limit="1" :limit="1"
:file-size="10" :file-size="10"
@deleteFile="deleteFile" @deleteFile="deleteFile"
:file-type="['jpg', 'png']" :file-type="['jpg', 'png', 'jpeg']"
:upload-file-url="uploadFileUrl" :upload-file-url="uploadFileUrl"
:file-list.sync="addAndEditForm.idCardFront" :file-list.sync="addAndEditForm.idCardFront"
> >
@ -47,7 +47,7 @@
:limit="1" :limit="1"
:file-size="10" :file-size="10"
@deleteFile="deleteFile" @deleteFile="deleteFile"
:file-type="['jpg', 'png']" :file-type="['jpg', 'png', 'jpeg']"
:upload-file-url="uploadFileUrl" :upload-file-url="uploadFileUrl"
:file-list.sync="addAndEditForm.idCardBack" :file-list.sync="addAndEditForm.idCardBack"
> >
@ -167,7 +167,7 @@
:file-size="10" :file-size="10"
:multiple="true" :multiple="true"
@deleteFile="deleteFile" @deleteFile="deleteFile"
:file-type="['jpg', 'png']" :file-type="['jpg', 'png', 'jpeg']"
:upload-file-url="uploadFileUrl" :upload-file-url="uploadFileUrl"
:file-list.sync="addAndEditForm.diplomaImg" :file-list.sync="addAndEditForm.diplomaImg"
/> />
@ -187,7 +187,7 @@
:file-size="10" :file-size="10"
:multiple="true" :multiple="true"
@deleteFile="deleteFile" @deleteFile="deleteFile"
:file-type="['jpg', 'png']" :file-type="['jpg', 'png', 'jpeg']"
:upload-file-url="uploadFileUrl" :upload-file-url="uploadFileUrl"
:file-list.sync="addAndEditForm.otherImg" :file-list.sync="addAndEditForm.otherImg"
/> />

View File

@ -247,6 +247,7 @@ export default {
resetQueryParams() { resetQueryParams() {
this.$refs.queryParamsRef.resetFields() this.$refs.queryParamsRef.resetFields()
this.queryParams.pageNum = 1 this.queryParams.pageNum = 1
this.queryParams.pageSize = 10
this.getOtherPersonList() this.getOtherPersonList()
}, },
// //

View File

@ -177,7 +177,7 @@
:limit="8" :limit="8"
:file-size="10" :file-size="10"
:multiple="true" :multiple="true"
:file-type="['jpg', 'png']" :file-type="['jpg', 'png', 'jpeg']"
@deleteFile="deleteFile" @deleteFile="deleteFile"
:upload-file-url="uploadFileUrl" :upload-file-url="uploadFileUrl"
:file-list.sync="addAndEditForm.htKeyFileList" :file-list.sync="addAndEditForm.htKeyFileList"
@ -207,7 +207,7 @@
:limit="4" :limit="4"
:file-size="10" :file-size="10"
:multiple="true" :multiple="true"
:file-type="['jpg', 'png']" :file-type="['jpg', 'png', 'jpeg']"
@deleteFile="deleteFile" @deleteFile="deleteFile"
:file-list.sync="proveFileList" :file-list.sync="proveFileList"
:upload-file-url="uploadFileUrl" :upload-file-url="uploadFileUrl"

View File

@ -237,6 +237,7 @@ export default {
// //
resetQueryParams() { resetQueryParams() {
this.queryParams.pageNum = 1 this.queryParams.pageNum = 1
this.queryParams.pageSize = 10
this.timeValue = [] this.timeValue = []
this.queryParams = { this.queryParams = {
proName: '', proName: '',

View File

@ -1,34 +1,34 @@
<template> <template>
<div> <div>
<el-form <el-form
ref="login"
label-width="0px" label-width="0px"
label-position="top" label-position="top"
ref="addAndEditFormRef"
:model="addAndEditForm" :model="addAndEditForm"
:rules="addAndEditRules" :rules="addAndEditRules"
:disabled="formType === 2" :disabled="formType === 2"
> >
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="分包商名称" prop="proName"> <el-form-item label="分包商名称" prop="subName">
<el-input v-model="addAndEditForm.proName" placeholder="请输入分包商名称" clearable> </el-input> <el-input v-model="addAndEditForm.subName" placeholder="请输入分包商名称" clearable> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="公司地址" prop="level"> <el-form-item label="公司地址" prop="address">
<el-input v-model="addAndEditForm.level" placeholder="请输入公司地址" clearable> </el-input> <el-input v-model="addAndEditForm.address" placeholder="请输入公司地址" clearable> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="负责人" prop="proName"> <el-form-item label="负责人" prop="userName">
<el-input v-model="addAndEditForm.proName" placeholder="请输入负责人" clearable> </el-input> <el-input v-model="addAndEditForm.userName" placeholder="请输入负责人" clearable> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="联系方式" prop="level"> <el-form-item label="联系方式" prop="userPhone">
<el-input v-model="addAndEditForm.level" placeholder="请输入联系方式" clearable> </el-input> <el-input v-model="addAndEditForm.userPhone" placeholder="请输入联系方式" clearable> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -37,27 +37,34 @@
<el-form-item> <el-form-item>
<template #label> <template #label>
<span>公司资质</span> <span>公司资质</span>
<span style="color: #999; font-size: 12px" <span style="color: #999; font-size: 12px">
>(请上传公司营业执照生产许可证以及其他相关资质证书图片最多上传20张仅支持jpgpng格式)</span (请上传公司营业执照生产许可证以及其他相关资质证书图片最多上传20张仅支持jpgpng格式)
> </span>
</template> </template>
<UploadImg <UploadImg
:limit="20" :limit="20"
:file-size="10" :file-size="10"
:file-list="fileList" :multiple="true"
:file-type="['jpg', 'png']" @deleteFile="deleteFile"
:file-type="['jpg', 'png', 'jpeg']"
:upload-file-url="uploadFileUrl" :upload-file-url="uploadFileUrl"
@handleSuccess="handleSuccess" :file-list.sync="addAndEditForm.fileList"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<el-row style="text-align: right; border-top: 1px solid #e5e5e5; padding-top: 10px">
<el-button size="mini" @click="onCancel">取消</el-button>
<el-button type="primary" size="mini" @click="onConfirm" v-if="formType !== 2">确定</el-button>
</el-row>
</div> </div>
</template> </template>
<script> <script>
import UploadImg from '@/components/UploadImg' import UploadImg from '@/components/UploadImg'
import { addSubManageAPI, editSubManageAPI } from '@/api/sub-manage/sub-manage'
import { deleteImgAPI } from '@/api/common'
export default { export default {
components: { components: {
UploadImg, UploadImg,
@ -68,91 +75,149 @@ export default {
type: Number, type: Number,
default: 1, default: 1,
}, },
//
editRow: {
type: Object,
default: () => {},
},
}, },
data() { data() {
return { return {
uploadOuterVisible: false, uploadOuterVisible: false,
uploadFileUrl: process.env.VUE_APP_BASE_API + '/file/upload', uploadFileUrl: process.env.VUE_APP_BASE_API + '/system/file/uploadFiles',
addAndEditForm: { addAndEditForm: {
proName: '', subName: '',
level: '', address: '',
startTime: [], userName: '',
endTime: '', userPhone: '',
num: '', fileList: [],
scale: '', id: '',
fw: '',
unit: '',
unitPhone: '',
}, },
addAndEditRules: { addAndEditRules: {
proName: [ subName: [
{ {
required: true, required: true,
message: '请输入输工程名称', message: '请输入分包商名称',
trigger: 'blur', trigger: 'blur',
}, },
], ],
level: [ userPhone: [
{ {
required: true, pattern: /^1[3-9]\d{9}$/,
message: '请输入电压等级', message: '请输入正确的手机号码',
trigger: 'blur', trigger: 'blur,change',
},
],
startTime: [
{
required: true,
message: '请选择起止时间',
trigger: 'blur',
},
],
endTime: [
{
required: true,
message: '请选择竣工时间',
trigger: 'blur',
},
],
fw: [
{
required: true,
message: '请输入承包范围',
trigger: 'blur',
},
],
unit: [
{
required: true,
message: '请输入业主单位',
trigger: 'blur',
},
],
unitPhone: [
{
required: true,
message: '请输入业主单位联系方式',
trigger: 'blur',
}, },
], ],
}, },
addTableList: [], addTableList: [],
fileList: [], fileList: [],
deleteFileList: [],
} }
}, },
methods: { methods: {
onHandleAdd() { onCancel() {
this.addTableList.push({ this.$emit('closeDialogOuter')
zhiW: '', },
name: '', deleteFile(filePath) {
content: '', this.deleteFileList.push(filePath)
},
deleteFileListFun() {
const { fileList } = this.addAndEditForm
const deleteFileList = []
this.deleteFileList.forEach((item) => {
if (item.isNew) {
deleteFileList.push(item.filepath)
}
})
fileList.forEach((item) => {
if (item.response && item.response.code === 200) {
const { data } = item.response
const { filePath } = data[0]
deleteFileList.push(filePath)
}
})
if (deleteFileList.length > 0) {
deleteImgAPI({ filePaths: deleteFileList.join(',') })
}
},
onConfirm() {
this.$refs.addAndEditFormRef.validate(async (valid) => {
if (valid) {
console.log(this.addAndEditForm, '---')
//
const { subName, address, userName, userPhone, fileList, id } = this.addAndEditForm
const tbFileSourceVoList = []
// fileType 1. 2. 3. 4.
if (fileList.length > 0) {
fileList.forEach((item) => {
if (item.response && item.response.code === 200) {
const { data } = item.response
const { fileSuffix, filePath, fileName } = data[0]
tbFileSourceVoList.push({
fileSuffix,
filePath,
fileName,
fileType: 1,
})
} else {
tbFileSourceVoList.push({
fileSuffix: item.fileSuffix,
filePath: item.filePath,
fileName: item.fileName,
fileType: 1,
})
}
})
}
const params = {
subName,
address,
userName,
userPhone,
tbFileSourceVoList,
}
if (this.formType === 3) {
params.id = id
}
const filePaths = this.deleteFileList.map((item) => item.filepath)
if (filePaths.length > 0) {
deleteImgAPI({ filePaths: filePaths.join(',') })
}
const API = this.formType === 1 ? addSubManageAPI : editSubManageAPI
const res = await API(params)
if (res.code === 200) {
this.$modal.msgSuccess(this.formType === 1 ? '新增成功' : '编辑成功')
this.$emit('closeDialogOuter', true)
}
}
}) })
}, },
onHandleDelete(row) {
this.addTableList.splice(row.$index, 1)
}, },
handleSuccess(res) {
// this.fileList.push(res) watch: {
console.log(res, '---') editRow: {
handler(newVal) {
if (newVal && Object.keys(newVal).length > 0) {
Object.assign(this.addAndEditForm, { ...newVal })
this.addAndEditForm.fileList = this.addAndEditForm.tbFileSourceVoList
.filter((item) => item.fileType == 1)
.map((e) => {
return {
...e,
url: e.filePath,
}
})
}
},
deep: true,
immediate: true,
}, },
}, },
} }

View File

@ -1,20 +1,20 @@
<template> <template>
<!-- 公司业绩管理 --> <!-- 公司业绩管理 -->
<div class="app-container"> <div class="app-container">
<el-form :model="queryParam" ref="login" label-width="0px" class="ms-content"> <el-form :model="queryParams" ref="login" label-width="0px" class="ms-content">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="6"> <el-col :span="6">
<el-form-item> <el-form-item>
<el-input v-model="queryParam.projectName" placeholder="请输入工程名称" clearable> </el-input> <el-input v-model="queryParams.subName" placeholder="请输入分包商名称" clearable> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="18"> <el-col :span="18">
<el-form-item> <el-form-item>
<el-button type="primary">查询</el-button> <el-button type="primary" @click="getSubManageList">查询</el-button>
<el-button>重置</el-button> <el-button @click="resetQueryParam">重置</el-button>
<el-button type="primary" @click="onHandleAddOrEdit(null, 1)">新增分包商</el-button> <el-button type="primary" @click="onHandleAddOrEdit(null, 1)">新增分包商</el-button>
<el-button>导出数据</el-button> <el-button @click="handleExport">导出数据</el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -63,9 +63,16 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getSubManageList"
/>
<DialogModel :dialogConfig="dialogConfig" @closeDialogOuter="closeDialogOuter"> <DialogModel :dialogConfig="dialogConfig" @closeDialogOuter="closeDialogOuter">
<template slot="outerContent"> <template slot="outerContent">
<AddAndEditForm :formType="formType" /> <AddAndEditForm :formType="formType" :editRow="editRow" @closeDialogOuter="closeDialogOuter" />
</template> </template>
</DialogModel> </DialogModel>
</div> </div>
@ -74,6 +81,7 @@
<script> <script>
import DialogModel from '@/components/DialogModel/index' import DialogModel from '@/components/DialogModel/index'
import AddAndEditForm from './components/addAndEditForm.vue' import AddAndEditForm from './components/addAndEditForm.vue'
import { getSubManageListAPI, deleteSubManageAPI } from '@/api/sub-manage/sub-manage'
export default { export default {
components: { components: {
DialogModel, DialogModel,
@ -89,43 +97,44 @@ export default {
outerVisible: false, outerVisible: false,
innerVisible: false, innerVisible: false,
}, },
queryParam: { queryParams: {
projectName: '', subName: '',
startTime: '', pageNum: 1,
endTime: '', pageSize: 10,
}, },
timeValue: [], timeValue: [],
tableList: [ tableList: [], //
{
projectName: '测试工程1',
},
{
projectName: '测试工程2',
},
{
projectName: '测试工程3',
},
],
tableColumn: [ tableColumn: [
{ label: '分包商名称', prop: 'projectName' }, { label: '分包商名称', prop: 'subName' },
{ label: '负责人', prop: '' }, { label: '负责人', prop: 'userName' },
{ label: '联系方式', prop: '' }, { label: '联系方式', prop: 'userPhone' },
{ label: '公司地址', prop: '' }, { label: '公司地址', prop: 'address' },
], ],
editRow: {},
total: 0,
} }
}, },
methods: { methods: {
// //
closeDialogOuter() { closeDialogOuter(isRefresh = false) {
this.dialogConfig.outerVisible = false this.dialogConfig.outerVisible = false
if (isRefresh) {
this.getSubManageList()
} else {
this.$refs.addAndEditFormRef.deleteFileListFun()
}
}, },
// //
onHandleDelete(row) { onHandleDelete(row) {
console.log(row) console.log(row)
this.$modal this.$modal
.confirm('确定删除该业绩吗?') .confirm('确定删除该业绩吗?')
.then(() => { .then(async () => {
console.log('确定') const res = await deleteSubManageAPI({ id: row.id })
if (res.code === 200) {
this.$modal.msgSuccess('删除成功')
this.getSubManageList()
}
}) })
.catch(() => { .catch(() => {
console.log('取消') console.log('取消')
@ -134,19 +143,58 @@ export default {
// //
onHandleAddOrEdit(row, type) { onHandleAddOrEdit(row, type) {
console.log(row, type) console.log(row, type)
this.formType = type
if (type === 1) { if (type === 1) {
this.dialogConfig.outerTitle = '新增分包商' this.dialogConfig.outerTitle = '新增分包商'
this.formType = 1 this.editRow = {}
} else if (type === 3) { } else if (type === 3) {
this.dialogConfig.outerTitle = '编辑分包商' this.dialogConfig.outerTitle = '编辑分包商'
this.formType = 3
} else if (type === 2) { } else if (type === 2) {
this.dialogConfig.outerTitle = '分包商详情' this.dialogConfig.outerTitle = '分包商详情'
this.formType = 2 }
if (type === 2 || type === 3) {
const { subName, address, userName, userPhone, id, tbFileSourceVoList } = row
Object.assign(this.editRow, {
subName,
address,
userName,
userPhone,
id,
tbFileSourceVoList,
})
} }
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
}, },
//
async getSubManageList() {
const res = await getSubManageListAPI(this.queryParams)
console.log(res)
this.tableList = res.rows
this.total = res.total
},
//
resetQueryParam() {
this.queryParams.subName = ''
this.queryParams.pageNum = 1
this.queryParams.pageSize = 10
this.getSubManageList()
},
//
handleExport() {
this.download(
'/tbSub/tbSubExport',
{
...this.queryParams,
},
`公司业绩管理_${new Date().getTime()}.xlsx`,
)
},
},
created() {
this.getSubManageList()
}, },
} }
</script> </script>