对接供应商基础功能

This commit is contained in:
wangchengming 2025-08-18 18:48:08 +08:00
parent 02da74edb3
commit 59b49fe634
5 changed files with 398 additions and 260 deletions

53
src/api/supplier.js Normal file
View File

@ -0,0 +1,53 @@
import request from '@/utils/request'
// 获取供应商分页列表
export function busSupplierPage(query) {
return request({
url: '/admin/busSupplier/getBusSupplierPage',
method: 'post',
data: query
})
}
// 获取供应商列表
export function listBusSupplier(query) {
return request({
url: '/admin/busSupplier/listBusSupplier',
method: 'post',
data: query
})
}
// 新增供应商
export function addBusSupplier(data) {
return request({
url: '/admin/busSupplier/addBusSupplier',
method: 'post',
data: data
})
}
// 修改供应商
export function updateBusSupplier(data) {
return request({
url: '/admin/busSupplier/updateBusSupplier',
method: 'post',
data: data
})
}
// 获取供应商详情
export function getBusSupplier(supplierId) {
return request({
url: '/admin/busSupplier/getBusSupplier/' + supplierId,
method: 'post'
})
}
// 删除供应商
export function deleteBusSupplier(supplierId) {
return request({
url: '/admin/busSupplier/deleteBusSupplier/' + supplierId,
method: 'post'
})
}

View File

@ -4,51 +4,51 @@
<div class="searchPanel">
<div class="more-search-pane">
<div class="search-where-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" class="searchPanelForm">
<el-form :inline="true" class="searchPanelForm">
<el-form-item label="发票类型:">
<el-select v-model="queryParams.invoice_type" placeholder="请选择" style="min-width: 30px;"
<el-select v-model="queryParams.invoiceType" placeholder="请选择" style="min-width: 30px;"
clearable>
<el-option v-for="dict in invoice_type" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="媒体归属:">
<el-select v-model="queryParams.media_ownership" placeholder="请选择"
style="min-width: 30px;" clearable>
<el-select v-model="queryParams.meitiGuishu" placeholder="请选择" style="min-width: 30px;"
clearable>
<el-option v-for="dict in media_ownership" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="人员规模:">
<el-select v-model="queryParams.personnel_size" placeholder="请选择"
style="min-width: 30px;" clearable>
<el-select v-model="queryParams.renyuanSize" placeholder="请选择" style="min-width: 30px;"
clearable>
<el-option v-for="dict in personnel_size" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="主营媒体类型:">
<el-select v-model="queryParams.main_media_types" placeholder="请选择"
<el-select v-model="queryParams.zhuyingMeitiType" placeholder="请选择"
style="min-width: 30px;" clearable>
<el-option v-for="dict in main_media_types" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="媒体质量:">
<el-select v-model="queryParams.media_quality" placeholder="请选择"
<el-select v-model="queryParams.meitiZhiliang" placeholder="请选择"
style="min-width: 30px;" clearable>
<el-option v-for="dict in media_quality" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="有无合作历史:">
<el-select v-model="queryParams.history_cooperation" placeholder="请选择"
<el-select v-model="queryParams.isCooperation" placeholder="请选择"
style="min-width: 30px;" clearable>
<el-option v-for="dict in history_cooperation" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="供应商级别:">
<el-select v-model="queryParams.supplier_level" placeholder="请选择"
<el-select v-model="queryParams.supplierLevel" placeholder="请选择"
style="min-width: 30px;" clearable>
<el-option v-for="dict in supplier_level" :key="dict.value" :label="dict.label"
:value="dict.value" />
@ -67,7 +67,7 @@
</div>
</div>
<div class="searchSmallPanel" v-show="unfoldFlag">
<el-form :model="queryParams" ref="queryRef" :inline="true" class="searchSmallPanelForm">
<el-form :inline="true" class="searchSmallPanelForm">
<el-form-item label="供应商配合度:">
<el-select v-model="queryParams.supplier_cooperation_degree" placeholder="请选择"
style="min-width: 30px;" clearable>
@ -102,8 +102,7 @@
</el-select>
</el-form-item>
<el-form-item label="">
<el-select v-model="queryParams.countyId" placeholder="请选择" clearable
style="min-width: 30px">
<el-select v-model="queryParams.countyId" placeholder="请选择" clearable style="min-width: 30px">
<el-option v-for="item in county" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
@ -112,9 +111,9 @@
<el-card class="mt20">
<el-row :gutter="10" class="my_row"><el-col :span="12">
<el-form :model="queryParams" ref="queryRef" :inline="true" class="searchInputForm">
<el-form :inline="true" class="searchInputForm">
<el-form-item label="">
<el-input v-model="form.postCode" placeholder="请输入供应商名称/集团公司名称/联系人/联系人电话"
<el-input v-model="queryParams.keyword" placeholder="请输入供应商名称/集团公司名称/联系人/联系人电话"
:prefix-icon="Search" style="width: 500px;" />
</el-form-item>
</el-form>
@ -136,26 +135,42 @@
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column label="供应商名称" align="center" prop="supplierName" width="230">
<el-table-column label="供应商名称" align="left" prop="supplierName" width="230"
:show-overflow-tooltip="true">
<template #default="scope">
<span class="supplierNameLabel" @click="handleOpenDetail">{{ scope.row.supplierName
<span class="supplierNameLabel" @click="handleOpenDetail(scope.row.supplierId)">{{
scope.row.supplierName
}}</span>
</template>
</el-table-column>
<el-table-column label="城市" align="center" prop="postCode" width="150" />
<el-table-column label="主营业务" align="center" prop="postCode" width="150" />
<el-table-column label="主营媒体类型" align="center" prop="postCode" width="150" />
<el-table-column label="媒体质量" align="center" prop="postCode" width="150" />
<el-table-column label="供应商配合度" align="center" prop="postCode" width="150" />
<el-table-column label="人员规模" align="center" prop="postCode" width="150" />
<el-table-column label="公司类型" align="center" prop="postCode" width="150" />
<el-table-column label="年营收金额" align="center" prop="postCode" width="150" />
<el-table-column label="媒体归属" align="center" prop="postCode" width="150" />
<el-table-column label="媒体年限" align="center" prop="postCode" width="150" />
<el-table-column label="有无合作历史" align="center" prop="postCode" width="150" />
<el-table-column label="合作折扣力度" align="center" prop="postCode" width="150" />
<el-table-column label="供应商联系人" align="center" prop="postCode" width="150" />
<el-table-column label="供应商联系电话" align="center" prop="postCode" width="150" />
<el-table-column label="城市" align="left" prop="supplierCity" width="180"
:show-overflow-tooltip="true" />
<el-table-column label="主营业务" align="center" prop="zhuyingYewu" width="150"
:show-overflow-tooltip="true" />
<el-table-column label="主营媒体类型" align="center" prop="zhuyingMeitiType" width="150"
:show-overflow-tooltip="true" />
<el-table-column label="媒体质量" align="center" prop="meitiZhiliang" width="150"
:show-overflow-tooltip="true" />
<el-table-column label="供应商配合度" align="center" prop="supplierPeihe" width="150"
:show-overflow-tooltip="true" />
<el-table-column label="人员规模" align="center" prop="renyuanGuimo" width="150"
:show-overflow-tooltip="true" />
<el-table-column label="公司类型" align="center" prop="companyType" width="150"
:show-overflow-tooltip="true" />
<el-table-column label="年营收金额" align="center" prop="yearRevenueAmount" width="150"
:show-overflow-tooltip="true" />
<el-table-column label="媒体归属" align="center" prop="meitiGuishu" width="150"
:show-overflow-tooltip="true" />
<el-table-column label="媒体年限" align="center" prop="meitiNianxian" width="150"
:show-overflow-tooltip="true" />
<el-table-column label="有无合作历史" align="center" prop="isCooperation" width="150"
:show-overflow-tooltip="true" />
<el-table-column label="合作折扣力度" align="center" prop="hzZkLd" width="150"
:show-overflow-tooltip="true" />
<el-table-column label="供应商联系人" align="center" prop="contactName" width="150"
:show-overflow-tooltip="true" />
<el-table-column label="供应商联系电话" align="center" prop="phone" width="150"
:show-overflow-tooltip="true" />
<!-- <el-table-column label="反馈时间" align="center" prop="createTime" width="210">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
@ -180,12 +195,12 @@
</el-table-column>
</el-table>
<pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
@pagination="getList" />
<pagination :total="total" v-model:page="queryParams.pageIndex" v-model:limit="queryParams.pageSize"
@pagination="getSupplierPageList" />
</el-card>
</div>
<supplier-form ref="supplierFormRef" v-if="showForm" @handleShowList="handleShowList" />
<supplier-detail ref="supplierDetailRef" v-if="showDetail" @handleShowList="handleShowList" />
<supplier-detail ref="supplierDetailRef" v-if="showDetail" @handleShowList="handleCloseDetail" />
<!-- 导入对话框 -->
<el-dialog :title="upload.title" v-model="upload.open" width="650px" class="my_dialog" align-center
:destroy-on-close="true" :close-on-click-modal="false">
@ -224,6 +239,7 @@ import optionIconHover from '@/assets/images/optionIconHover.png'
import { useBackgroundStore } from '@/store/modules/background'
import otherbg from '@/assets/images/otherbg.png'
import { sysRegionListByPid } from "@/api/system/administrativeRegion"
import { busSupplierPage, deleteBusSupplier } from "@/api/supplier"
import supplierForm from "./supplierForm.vue";
import supplierDetail from "./supplierDetail.vue";
@ -259,25 +275,25 @@ const upload = reactive({
url: import.meta.env.VITE_APP_BASE_API + "/system/user/importData"
})
const supplierList = ref([
{ supplierName: 'xxxx供应商', currentImageSrc: defaultImageSrc.value }
])
const supplierList = ref([])
const loading = ref(true)
const total = ref(0)
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageIndex: 1,
pageSize: 10,
},
rules: {
postName: [{ required: true, message: "岗位名称不能为空", trigger: "blur" }],
postCode: [{ required: true, message: "岗位编码不能为空", trigger: "blur" }],
postSort: [{ required: true, message: "岗位顺序不能为空", trigger: "blur" }],
keyword: undefined,
invoiceType: undefined,
meitiGuishu: undefined,
renyuanSize: undefined,
zhuyingMeitiType: undefined,
isCooperation: undefined,
meitiZhiliang: undefined,
supplierLevel: undefined,
}
})
const { queryParams, form, rules } = toRefs(data)
const { queryParams } = toRefs(data)
//
const unfoldFlag = ref(false)
@ -308,34 +324,46 @@ const getCountyList = (value) => {
})
}
/** 查询岗位列表 */
const getList = () => {
/** 查询供应商分页列表 */
const getSupplierPageList = () => {
loading.value = false
// listPost(proxy.addDateRange(queryParams.value, dateRange.value)).then(response => {
// postList.value = response.rows
// total.value = response.total
// loading.value = false
// })
busSupplierPage(queryParams.value).then(res => {
res.data.list.forEach(element => {
element.currentImageSrc = defaultImageSrc.value
});
supplierList.value = res.data.list
total.value = res.data.total
loading.value = false
})
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1
getList()
queryParams.value.pageIndex = 1
getSupplierPageList()
}
/** 重置按钮操作 */
const resetQuery = () => {
proxy.resetForm("queryRef")
queryParams.value = {
pageIndex: 1,
pageSize: 10,
keyword: undefined,
invoiceType: undefined,
meitiGuishu: undefined,
renyuanSize: undefined,
zhuyingMeitiType: undefined,
isCooperation: undefined,
meitiZhiliang: undefined,
supplierLevel: undefined,
}
handleQuery()
}
/** 删除按钮操作 */
const handleDelete = (row) => {
const postIds = row.postId
const supplierName = row.supplierName
proxy.$modal.confirm('是否确认删除名称为"' + supplierName + '"的供应商数据?').then(function () {
return delPost(postIds)
proxy.$modal.confirm('是否确认删除名称为"' + row.supplierName + '"的供应商数据?').then(function () {
return deleteBusSupplier(row.supplierId)
}).then(() => {
getList()
getSupplierPageList()
proxy.$modal.msgSuccess("删除成功")
}).catch(() => { })
}
@ -368,33 +396,35 @@ const handleExport = () => {
const handleOpenAddForm = () => {
showForm.value = true
nextTick(() => {
supplierFormRef.value.formTitle = '新建供应商'
supplierFormRef.value.initForm('新建供应商', { supplierId: null })
})
}
//
const handleUpdate = () => {
const handleUpdate = (row) => {
showForm.value = true
nextTick(() => {
supplierFormRef.value.formTitle = '编辑供应商'
supplierFormRef.value.initForm('编辑供应商', row)
})
}
//
const handleOpenDetail = () => {
const handleOpenDetail = (_supplierId) => {
showDetail.value = true
nextTick(() => {
// supplierFormRef.value.formTitle = ''
supplierDetailRef.value.getSupplierInfo(_supplierId)
})
}
const handleShowList = () => {
console.log('触发')
showForm.value = false
getSupplierPageList()
}
const handleCloseDetail = () => {
showDetail.value = false
}
//
onMounted(() => {
bgStore.setBgImage(otherbg)
getProvinceList()
getList()
getSupplierPageList()
});
</script>
<style lang="scss">

View File

@ -12,14 +12,14 @@
<el-form ref="ruleFormRef" :model="detailForm" label-width="200px" class="myDetailForm">
<div class="supplierTitleContainer">
<div class="supplierNameIcon" />
<div class="supplierNameTitle">长治互邦传媒科技有限公司</div>
<div class="supplierNameTitle">{{ detailForm.supplierName }}</div>
</div>
<el-collapse class="my-collapse" v-model="activeNames" @change="handleChange">
<el-collapse-item title="媒介部门" name="1">
<el-row :gutter="30" class="my_form_row">
<el-col :span="24">
<el-form-item label="业务部门" prop="business_department">
优势媒体部门
{{ detailForm.yewuDept }}
</el-form-item>
</el-col>
</el-row>
@ -28,22 +28,22 @@
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="主营业务" prop="business_department">
媒体公司
{{ detailForm.zhuyingYewu }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="主营媒体类型" prop="business_department">
公交车身
{{ detailForm.zhuyingMeitiType }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="公司类型" prop="business_department">
有限责任公司
{{ detailForm.companyType }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="存续年限" prop="business_department">
20
{{ detailForm.invisibleQuanxian }}
</el-form-item>
</el-col>
</el-row>
@ -51,7 +51,7 @@
<el-row :gutter="30" class="my_form_row">
<el-col :span="24">
<el-form-item label="年营收额" prop="business_department">
待定
{{ detailForm.yearRevenueAmount }}
</el-form-item>
</el-col>
</el-row>
@ -60,17 +60,18 @@
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="媒体归属" prop="business_department">
有限责任公司
{{ detailForm.meitiGuishu }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="媒体年限" prop="business_department">
长期
{{ detailForm.meitiNianxian }}
</el-form-item>
</el-col>
<el-col :span="12">
<div class="splineBar" />
<el-col :span="24">
<el-form-item label="媒体权属" prop="business_department">
<!-- {{ detailForm.meitiNianxian }} -->
</el-form-item>
</el-col>
</el-row>
@ -79,40 +80,42 @@
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="媒体质量" prop="business_department">
及格
{{ detailForm.meitiZhiliang }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="供应商配合度" prop="business_department">
及格
{{ detailForm.supplierPeihe }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="合作折扣力度" prop="business_department">
建立联系
{{ detailForm.hzZkLd }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="有无合作历史" prop="business_department">
{{ detailForm.isCooperation }}
</el-form-item>
</el-col>
</el-row>
<div class="splineBar" />
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-col :span="24">
<el-form-item label="企业信用信息是否有不良记录" class="my_detailform_label">
{{ detailForm.buliangRecord }}
</el-form-item>
</el-col>
<el-col :span="6">
<div class="splineBar" />
<el-col :span="24">
<el-form-item label="企业信用不良记录" prop="business_department">
{{ detailForm.buliangMessage }}
</el-form-item>
</el-col>
<el-col :span="12">
<div class="splineBar" />
<el-col :span="24">
<el-form-item label="曾服务过的品牌" prop="business_department">
{{ detailForm.fuwuBrand }}
</el-form-item>
</el-col>
</el-row>
@ -121,17 +124,17 @@
<el-row :gutter="30" class="my_form_row">
<el-col :span="12">
<el-form-item label="供应商公司全称">
长治互邦传媒科技有限公司
{{ detailForm.supplierName }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="注册资本" prop="business_department">
50万元
{{ detailForm.zhuceZiben }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="成立日期" prop="business_department">
2008-11-27
{{ detailForm.chengliDate }}
</el-form-item>
</el-col>
</el-row>
@ -139,12 +142,12 @@
<el-row :gutter="30" class="my_form_row">
<el-col :span="12">
<el-form-item label="注册地" prop="business_department">
长治
{{ detailForm.zhucedi }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="办公地址">
山西/长治市八一广场主席台后220米路西长治公交公司圆内
{{ detailForm.bangongDizhi }}
</el-form-item>
</el-col>
</el-row>
@ -152,22 +155,22 @@
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="人员规模" prop="business_department">
待定
{{ detailForm.renyuanGuimo }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="合作采购金额" prop="business_department">
0
{{ detailForm.hzCgAmount }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="集团公司名称" prop="business_department">
{{ detailForm.jituanCompanyName }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="其他业务" prop="business_department">
候车亭
{{ detailForm.otherBusiness }}
</el-form-item>
</el-col>
</el-row>
@ -175,22 +178,22 @@
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="实缴资本" prop="business_department">
50万元
{{ detailForm.shijiaoZiben }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="供应商编号" prop="business_department">
GYS2024072301363
{{ detailForm.supplierCode }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="联系人职位" prop="business_department">
待定
{{ detailForm.contactDuties }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="联系人姓名" prop="business_department">
刘经理
{{ detailForm.contactName }}
</el-form-item>
</el-col>
</el-row>
@ -198,17 +201,17 @@
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="联系人电话" prop="business_department">
15296652450
{{ detailForm.phone }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="联系人微信" prop="business_department">
592996581
{{ detailForm.contactWechat }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="联系人邮箱" prop="business_department">
{{ detailForm.contactEmail }}
</el-form-item>
</el-col>
</el-row>
@ -225,12 +228,12 @@
<el-row :gutter="30" class="my_form_row">
<el-col :span="12">
<el-form-item label="发票类型" prop="business_department">
暂定
{{ detailForm.invoiceType }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="税点" prop="business_department">
待定
{{ detailForm.taxes }}
</el-form-item>
</el-col>
</el-row>
@ -239,7 +242,7 @@
<el-row :gutter="30" class="my_form_row">
<el-col :span="24">
<el-form-item label="其他" prop="business_department">
{{ detailForm.other }}
</el-form-item>
</el-col>
</el-row>
@ -278,37 +281,29 @@
<script setup>
import { onMounted, defineEmits, ref } from 'vue'
import { Close } from '@element-plus/icons-vue'
import { getBusSupplier } from "@/api/supplier"
import { useBackgroundStore } from '@/store/modules/background'
import otherbg from '@/assets/images/otherbg.png'
const bgStore = useBackgroundStore()
const { proxy } = getCurrentInstance()
const emit = defineEmits(['handleShowList']);
const detailForm = ref({
supplierList: [
{ medioName: '银川金凤区新华联广场门口上方LED', medioCode: 'MT2023101100009', medioType: 'LED', medioClass: '电子广告', medioStatus: 1 },
{ medioName: '银川金凤区新华联广场门口上方LED', medioCode: 'MT2023101100009', medioType: 'LED', medioClass: '电子广告', medioStatus: 1 }
]
})
const detailForm = ref({})
const activeNames = ref(['1', '2', '3', '4'])
const handleClose = () => {
emit('handleShowList')
}
const handleChange = (val) => {
console.log(val)
activeNames.value = val
}
const handleOpenMedio = () => {
}
//
onMounted(() => {
bgStore.setBgImage(otherbg)
});
//
const getSupplierInfo = (_supplierId) => {
getBusSupplier(_supplierId).then(res => {
detailForm.value = res.data
})
}
// \
defineExpose({
getSupplierInfo
});
</script>
<style lang='scss'>

View File

@ -8,37 +8,34 @@
</el-icon>
</div>
</template>
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="130px" class="myInsertForm">
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="150px" class="myInsertForm">
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="业务部门" prop="business_department">
<el-select v-model="ruleForm.business_department" placeholder="请选择" clearable
style="min-width: 30px;">
<el-form-item label="业务部门" prop="yewuDept">
<el-select v-model="ruleForm.yewuDept" placeholder="请选择" clearable style="min-width: 30px;">
<el-option v-for="dict in business_department" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6" v-if="ruleForm.supplierId">
<el-form-item label="供应商编号">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-input v-model="ruleForm.supplierCode" placeholder="请输入" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="供应商公司全称">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="供应商公司全称" prop="supplierName">
<el-input v-model="ruleForm.supplierName" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="注册资本">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="注册资本" prop="zhuceZiben">
<el-input v-model="ruleForm.zhuceZiben" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="供应商级别">
<el-select v-model="ruleForm.supplier_level" placeholder="请选择" style="min-width: 30px;"
<el-form-item label="供应商级别" prop="supplierLevel">
<el-select v-model="ruleForm.supplierLevel" placeholder="请选择" style="min-width: 30px;"
clearable>
<el-option v-for="dict in supplier_level" :key="dict.value" :label="dict.label"
:value="dict.value" />
@ -46,74 +43,67 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="媒体归属">
<el-select v-model="ruleForm.media_ownership" placeholder="请选择" style="min-width: 30px;"
clearable>
<el-form-item label="媒体归属" prop="meitiGuishu">
<el-select v-model="ruleForm.meitiGuishu" placeholder="请选择" style="min-width: 30px;" clearable>
<el-option v-for="dict in media_ownership" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="年营收金额">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="年营收金额" prop="yearRevenueAmount">
<el-input v-model="ruleForm.yearRevenueAmount" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="成立日期" prop="expireDate">
<el-date-picker v-model="ruleForm.expireDate" type="date" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" placeholder="请选择成立日期" style="width: 100%;" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="注册地">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="成立日期" prop="chengliDate">
<el-date-picker v-model="ruleForm.chengliDate" type="date" format="YYYY-MM-DD"
value-format="YYYY-MM-DD" placeholder="请选择成立日期" style="width: 100%;" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="实缴资本">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="注册地" prop="zhucedi">
<el-input v-model="ruleForm.zhucedi" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="主营业务">
<el-select v-model="ruleForm.main_business" placeholder="请选择" clearable
style="min-width: 30px;">
<el-form-item label="实缴资本" prop="shijiaoZiben">
<el-input v-model="ruleForm.shijiaoZiben" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="主营业务" prop="zhuyingYewu">
<el-select v-model="ruleForm.zhuyingYewu" placeholder="请选择" clearable style="min-width: 30px;">
<el-option v-for="dict in main_business" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="主营媒体类型">
<el-select v-model="ruleForm.main_media_types" placeholder="请选择" style="min-width: 30px;"
<el-form-item label="主营媒体类型" prop="zhuyingMeitiType">
<el-select v-model="ruleForm.zhuyingMeitiType" placeholder="请选择" style="min-width: 30px;"
clearable>
<el-option v-for="dict in main_media_types" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="其他业务">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="其他业务" prop="otherBusiness">
<el-input v-model="ruleForm.otherBusiness" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="公司类型">
<el-select v-model="ruleForm.company_type" placeholder="请选择" style="min-width: 30px;" clearable>
<el-form-item label="公司类型" prop="companyType">
<el-select v-model="ruleForm.companyType" placeholder="请选择" style="min-width: 30px;" clearable>
<el-option v-for="dict in company_type" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="人员规模">
<el-select v-model="ruleForm.personnel_size" placeholder="请选择" style="min-width: 30px;"
clearable>
<el-form-item label="人员规模" prop="renyuanSize">
<el-select v-model="ruleForm.renyuanSize" placeholder="请选择" style="min-width: 30px;" clearable>
<el-option v-for="dict in personnel_size" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
@ -121,19 +111,17 @@
</el-col>
<el-col :span="6">
<el-form-item label="集团公司名称">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="存续年限">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-input v-model="ruleForm.jituanCompanyName" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="媒体质量">
<el-select v-model="ruleForm.media_quality" placeholder="请选择" style="min-width: 30px;"
<el-form-item label="存续年限" prop="invisibleQuanxian">
<el-input v-model="ruleForm.invisibleQuanxian" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="媒体质量" prop="meitiZhiliang">
<el-select v-model="ruleForm.meitiZhiliang" placeholder="请选择" style="min-width: 30px;"
clearable>
<el-option v-for="dict in media_quality" :key="dict.value" :label="dict.label"
:value="dict.value" />
@ -141,14 +129,14 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="媒体年限">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="媒体年限" prop="meitiNianxian">
<el-input v-model="ruleForm.meitiNianxian" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30" class="my_form_row">
<el-col :span="12">
<el-form-item label="供应商所在城市" style="margin-bottom: 0;">
<el-form-item label="供应商所在城市" prop="supplierCity" style="margin-bottom: 0;">
<el-row :gutter="20" class="my_form_row">
<el-col :span="8">
<el-select v-model="ruleForm.provinceId" placeholder="请选择" @change="getCityList"
@ -165,7 +153,7 @@
</el-select>
</el-col>
<el-col :span="8">
<el-select v-model="ruleForm.countyId" placeholder="请选择" clearable
<el-select v-model="ruleForm.countyId" placeholder="请选择" clearable @change="setCounty"
style="min-width: 30px">
<el-option v-for="item in county" :key="item.id" :label="item.name"
:value="item.id" />
@ -175,61 +163,59 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="办公地址">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="办公地址" prop="bangongDizhi">
<el-input v-model="ruleForm.bangongDizhi" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="联系人职务">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="联系人职务" prop="contactDuties">
<el-input v-model="ruleForm.contactDuties" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="联系人姓名">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="联系人姓名" prop="contactName">
<el-input v-model="ruleForm.contactName" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="联系人电话">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="联系人电话" prop="phone">
<el-input v-model="ruleForm.phone" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="联系人微信">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-input v-model="ruleForm.contactWechat" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="联系人邮箱">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-input v-model="ruleForm.contactEmail" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="合作采购金额">
<el-select v-model="ruleForm.cooperative_procurement_amount" placeholder="请选择"
style="min-width: 30px;" clearable>
<el-form-item label="合作采购金额" prop="hzCgAmount">
<el-select v-model="ruleForm.hzCgAmount" placeholder="请选择" style="min-width: 30px;" clearable>
<el-option v-for="dict in cooperative_procurement_amount" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="供应商配合度">
<el-select v-model="ruleForm.supplier_cooperation_degree" placeholder="请选择"
style="min-width: 30px;" clearable>
<el-form-item label="供应商配合度" prop="supplierPeihe">
<el-select v-model="ruleForm.supplierPeihe" placeholder="请选择" style="min-width: 30px;"
clearable>
<el-option v-for="dict in supplier_cooperation_degree" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="合作折扣力度">
<el-select v-model="ruleForm.cooperation_discount_intensity" placeholder="请选择"
style="min-width: 30px;" clearable>
<el-form-item label="合作折扣力度" prop="hzZkLd">
<el-select v-model="ruleForm.hzZkLd" placeholder="请选择" style="min-width: 30px;" clearable>
<el-option v-for="dict in cooperation_discount_intensity" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
@ -238,13 +224,13 @@
</el-row>
<el-row :gutter="30" class="my_form_row">
<el-col :span="6">
<el-form-item label="税点(%">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="税点(%" prop="taxes">
<el-input v-model="ruleForm.taxes" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="有无合作历史">
<el-select v-model="ruleForm.history_cooperation" placeholder="请选择" style="min-width: 30px;"
<el-form-item label="有无合作历史" prop="isCooperation">
<el-select v-model="ruleForm.isCooperation" placeholder="请选择" style="min-width: 30px;"
clearable>
<el-option v-for="dict in history_cooperation" :key="dict.value" :label="dict.label"
:value="dict.value" />
@ -252,16 +238,16 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="发票类型">
<el-select v-model="ruleForm.invoice_type" placeholder="请选择" style="min-width: 30px;" clearable>
<el-form-item label="发票类型" prop="invoiceType">
<el-select v-model="ruleForm.invoiceType" placeholder="请选择" style="min-width: 30px;" clearable>
<el-option v-for="dict in invoice_type" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="企业信用信息是否有不良记录" class="my_form_label">
<el-select v-model="ruleForm.enterprise_bad_records" placeholder="请选择" style="min-width: 30px;"
<el-form-item label="企业信用信息是否有不良记录" prop="buliangRecord" class="my_form_label">
<el-select v-model="ruleForm.buliangRecord" placeholder="请选择" style="min-width: 30px;"
clearable>
<el-option v-for="dict in enterprise_bad_records" :key="dict.value" :label="dict.label"
:value="dict.value" />
@ -269,17 +255,25 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30" class="my_form_row" v-if="ruleForm.buliangRecord == '有'">
<el-col :span="24">
<el-form-item label="企业信用信息不良记录" class="my_form_label">
<el-input v-model="ruleForm.buliangMessage" :rows="5" type="textarea" placeholder="请输入"
clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30" class="my_form_row">
<el-col :span="24">
<el-form-item label="曾服务过的品牌">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="曾服务过的品牌" prop="fuwuBrand">
<el-input v-model="ruleForm.fuwuBrand" :rows="5" type="textarea" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30" class="my_form_row">
<el-col :span="24">
<el-form-item label="其他">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-input v-model="ruleForm.other" :rows="5" type="textarea" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
@ -291,13 +285,13 @@
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="供应商对接人" label-width="160px">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="供应商对接人" prop="dockingName" label-width="160px">
<el-input v-model="ruleForm.dockingName" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="供应商对接人电话" label-width="160px">
<el-input v-model="ruleForm.postCode" placeholder="请输入" />
<el-form-item label="供应商对接人电话" prop="dockingPhone" label-width="160px">
<el-input v-model="ruleForm.dockingPhone" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
@ -419,6 +413,7 @@
import { onMounted, defineEmits, ref } from 'vue'
import { Close } from '@element-plus/icons-vue'
import { sysRegionListByPid } from "@/api/system/administrativeRegion"
import { addBusSupplier, updateBusSupplier, getBusSupplier } from "@/api/supplier"
import iconDoc from '@/assets/images/iconDoc.png'
import iconOther from '@/assets/images/iconOther.png'
import iconPdf from '@/assets/images/iconPdf.png'
@ -428,22 +423,51 @@ import iconZip from '@/assets/images/iconZip.png'
import iconMove from '@/assets/images/iconMove.png'
import iconTxt from '@/assets/images/iconTxt.png'
import iconPpt from '@/assets/images/iconPpt.png'
import { useBackgroundStore } from '@/store/modules/background'
import otherbg from '@/assets/images/otherbg.png'
const bgStore = useBackgroundStore()
const { proxy } = getCurrentInstance()
const emit = defineEmits(['handleShowList']);
const route = useRoute()
const formTitle = ref('新建')
//
const province = ref([])
const city = ref([])
const county = ref([])
const data = reactive({
ruleForm: {},
rules: {
business_department: [{ required: true, message: "业务部门不能为空", trigger: "change" }]
yewuDept: [{ required: true, message: "业务部门不能为空", trigger: "change" }],
supplierName: [{ required: true, message: "供应商公司全称不能为空", trigger: "blur" }],
zhuceZiben: [{ required: true, message: "注册资本不能为空", trigger: "blur" }],
supplierLevel: [{ required: true, message: "供应商级别不能为空", trigger: "change" }],
meitiGuishu: [{ required: true, message: "媒体归属不能为空", trigger: "change" }],
yearRevenueAmount: [{ required: true, message: "年营收金额不能为空", trigger: "blur" }],
chengliDate: [{ required: true, message: "成立日期不能为空", trigger: "change" }],
zhucedi: [{ required: true, message: "注册地不能为空", trigger: "blur" }],
shijiaoZiben: [{ required: true, message: "实缴资本不能为空", trigger: "blur" }],
zhuyingYewu: [{ required: true, message: "主营业务不能为空", trigger: "change" }],
zhuyingMeitiType: [{ required: true, message: "主营媒体类型不能为空", trigger: "change" }],
otherBusiness: [{ required: true, message: "其他业务不能为空", trigger: "blur" }],
companyType: [{ required: true, message: "公司类型不能为空", trigger: "change" }],
renyuanSize: [{ required: true, message: "人员规模不能为空", trigger: "change" }],
invisibleQuanxian: [{ required: true, message: "存续年限不能为空", trigger: "blur" }],
meitiZhiliang: [{ required: true, message: "媒体质量不能为空", trigger: "change" }],
meitiNianxian: [{ required: true, message: "媒体年限不能为空", trigger: "blur" }],
supplierCity: [{ required: true, message: "供应商所在城市不能为空", trigger: "change" }],
bangongDizhi: [{ required: true, message: "办公地址不能为空", trigger: "blur" }],
contactDuties: [{ required: true, message: "联系人职务不能为空", trigger: "blur" }],
contactName: [{ required: true, message: "联系人姓名不能为空", trigger: "blur" }],
phone: [{ required: true, message: "联系人电话不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的联系人电话(手机号)", trigger: "blur" }],
hzCgAmount: [{ required: true, message: "合作采购金额不能为空", trigger: "change" }],
supplierPeihe: [{ required: true, message: "供应商配合度不能为空", trigger: "change" }],
hzZkLd: [{ required: true, message: "合作折扣力度不能为空", trigger: "change" }],
taxes: [{ required: true, message: "税点(%)不能为空", trigger: "blur" }],
isCooperation: [{ required: true, message: "有无合作历史不能为空", trigger: "change" }],
invoiceType: [{ required: true, message: "发票类型不能为空", trigger: "change" }],
buliangRecord: [{ required: true, message: "是否有不良记录不能为空", trigger: "change" }],
fuwuBrand: [{ required: true, message: "曾服务过的品牌不能为空", trigger: "blur" }],
dockingName: [{ required: true, message: "供应商对接人不能为空", trigger: "blur" }],
dockingPhone: [{ required: true, message: "供应商对接人电话不能为空", trigger: "blur" }],
},
})
const { ruleForm, rules } = toRefs(data)
@ -459,6 +483,8 @@ const getProvinceList = () => {
// /
const getCityList = (value) => {
var choseProvince = province.value.filter(item => item.id == value)[0]
if (choseProvince) ruleForm.value.supplierCity = choseProvince.name
sysRegionListByPid({ parentId: value }).then(res => {
ruleForm.value.cityId = undefined
ruleForm.value.countyId = undefined
@ -466,14 +492,36 @@ const getCityList = (value) => {
})
}
// /
const getCityList2 = (value) => {
sysRegionListByPid({ parentId: value }).then(res => {
city.value = res.data
})
}
// /
const getCountyList = (value) => {
var choseCity = city.value.filter(item => item.id == value)[0]
if (choseCity) ruleForm.value.supplierCity = ruleForm.value.supplierCity + '/' + choseCity.name
sysRegionListByPid({ parentId: value }).then(res => {
ruleForm.value.countyId = undefined
county.value = res.data
})
}
//
const setCounty = (value) => {
var choseCounty = county.value.filter(item => item.id == value)[0]
if (choseCounty) ruleForm.value.supplierCity = ruleForm.value.supplierCity + '/' + choseCounty.name
}
// /
const getCountyList2 = (value) => {
sysRegionListByPid({ parentId: value }).then(res => {
county.value = res.data
})
}
//
const docUploadList = ref([])
@ -511,47 +559,59 @@ const handleRemoveImage = (fileInfo) => {
item => item.name != fileInfo.name
);
}
//
const handleSubmit = () => {
proxy.$refs["ruleFormRef"].validate(valid => {
if (valid) {
if (ruleForm.value.supplierId != undefined) {
updateBusSupplier(ruleForm.value).then(response => {
proxy.$modal.msgSuccess("修改成功")
emit('handleShowList')
// if (form.value.postId != undefined) {
// updatePost(form.value).then(response => {
// proxy.$modal.msgSuccess("")
// open.value = false
// getList()
// })
// } else {
// addPost(form.value).then(response => {
// proxy.$modal.msgSuccess("")
// open.value = false
// getList()
// })
// }
})
} else {
addBusSupplier(ruleForm.value).then(response => {
proxy.$modal.msgSuccess("新增成功")
emit('handleShowList')
})
}
}
})
}
//
const handleClose = () => {
emit('handleShowList')
}
//
const getSupplierInfo = () => {
getBusSupplier(ruleForm.value.supplierId).then(res => {
ruleForm.value = res.data
handleResponse(res)
})
}
//
async function handleResponse(response) {
const promises = [];
//
onMounted(() => {
bgStore.setBgImage(otherbg)
getProvinceList()
const id = route.params && route.params.Id
if (id) {
ruleForm.value.id = id
formTitle.value = '编辑供应商'
} else {
ruleForm.value.id = null
formTitle.value = '新建供应商'
if (response.data.provinceId) {
promises.push(getCityList2(response.data.provinceId));
}
});
if (response.data.cityId) {
promises.push(getCountyList2(response.data.cityId));
}
//
await Promise.all(promises);
}
//
const initForm = (_formTitle, _ruleForm) => {
formTitle.value = _formTitle
ruleForm.value = _ruleForm
getProvinceList()
if (ruleForm.value.supplierId) getSupplierInfo()
}
// \
defineExpose({
formTitle
initForm
});
</script>
<style lang='scss'>

View File

@ -2,7 +2,7 @@ import { defineConfig, loadEnv } from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'
const baseUrl = 'http://43.143.229.145:9001/api' // 后端接口
const baseUrl = 'http://43.143.229.145:9002/prod-api' // 后端接口
// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {