增加工程配置模块
This commit is contained in:
parent
733ae26a22
commit
7eee5563ea
|
|
@ -0,0 +1,37 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
// 新增工程配置
|
||||
export const addProjectSettingAPI = (data) => {
|
||||
return request({
|
||||
url: '/bmw/proConfig/insert',
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 修改工程配置
|
||||
export const editProjectSettingAPI = (data) => {
|
||||
return request({
|
||||
url: '/bmw/proConfig/update',
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 删除工程配置
|
||||
export const deleteProjectSettingAPI = (data) => {
|
||||
return request({
|
||||
url: '/bmw/proConfig/delete',
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取工程配置列表
|
||||
export const getProjectSettingListAPI = (data) => {
|
||||
return request({
|
||||
url: '/bmw/proConfig/getConfigList',
|
||||
method: 'GET',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
export const formLabel = [
|
||||
{
|
||||
isShow: false,
|
||||
f_type: 'ipt',
|
||||
f_label: '分公司名称',
|
||||
f_model: 'subName',
|
||||
},
|
||||
{
|
||||
isShow: false,
|
||||
f_type: 'sel',
|
||||
f_label: '类型',
|
||||
f_model: 'type',
|
||||
f_selList: [
|
||||
{
|
||||
label: '退场证明',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
label: '是否可以多工程入场',
|
||||
value: 1,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
isShow: false,
|
||||
f_type: 'sel',
|
||||
f_label: '所属区域',
|
||||
f_model: 'proArea',
|
||||
f_selList: [],
|
||||
},
|
||||
]
|
||||
|
||||
export const columnsList = [
|
||||
{ t_props: 'subName', t_label: '分公司' },
|
||||
{ t_slot: 'proType', t_label: '工程类型' },
|
||||
{ t_slot: 'proArea', t_label: '所属地区' },
|
||||
{ t_slot: 'type', t_label: '类型' },
|
||||
{ t_slot: 'isNeed', t_label: '是否需要' },
|
||||
]
|
||||
|
||||
export const dialogConfig = {
|
||||
outerTitle: '',
|
||||
minHeight: '',
|
||||
maxHeight: '',
|
||||
outerWidth: '40%',
|
||||
outerVisible: false,
|
||||
}
|
||||
|
|
@ -0,0 +1,414 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<TableModel
|
||||
:formLabel="formLabel"
|
||||
:showOperation="true"
|
||||
:showRightTools="true"
|
||||
ref="projectSettingTableRef"
|
||||
:columnsList="columnsList"
|
||||
:request-api="getProjectSettingListAPI"
|
||||
>
|
||||
<template slot="btn" slot-scope="{ queryParams }">
|
||||
<el-button
|
||||
plain
|
||||
size="mini"
|
||||
type="success"
|
||||
icon="el-icon-download"
|
||||
@click="handleExport(queryParams)"
|
||||
>
|
||||
导出
|
||||
</el-button>
|
||||
<el-button
|
||||
plain
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="handleAddOrEdit(1, null)"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</template>
|
||||
|
||||
<template slot="proType" slot-scope="{ data }">
|
||||
<span v-if="data.proType">
|
||||
{{ formatProjectType(data.proType) }}
|
||||
</span>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
|
||||
<template slot="proArea" slot-scope="{ data }">
|
||||
<el-tag size="mini" type="primary" v-if="data.proArea">
|
||||
{{ formatProjectArea(data.proArea) }}
|
||||
</el-tag>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
|
||||
<template slot="type" slot-scope="{ data }">
|
||||
<el-tag size="mini" :type="data.type == 0 ? 'info' : 'warning'">
|
||||
{{ data.type == 0 ? '退场证明' : '是否可以多工程入场' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
|
||||
<template slot="isNeed" slot-scope="{ data }">
|
||||
<el-tag
|
||||
size="mini"
|
||||
:type="data.isNeed == 1 ? 'success' : 'info'"
|
||||
>
|
||||
{{ data.isNeed == 1 ? '是' : '否' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
|
||||
<template slot="handle" slot-scope="{ data }">
|
||||
<el-button
|
||||
plain
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-edit"
|
||||
@click="handleAddOrEdit(2, data)"
|
||||
>
|
||||
修改
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="danger"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(data)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</TableModel>
|
||||
|
||||
<DialogModel
|
||||
:dialogConfig="dialogConfig"
|
||||
@closeDialogOuter="handleCloseDialog"
|
||||
>
|
||||
<template slot="outerContent">
|
||||
<el-form
|
||||
label-width="auto"
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
>
|
||||
<el-form-item label="分公司" prop="subId">
|
||||
<el-select
|
||||
clearable
|
||||
filterable
|
||||
style="width: 100%"
|
||||
placeholder="请选择分公司"
|
||||
v-model="formData.subId"
|
||||
>
|
||||
<el-option
|
||||
:key="item.value"
|
||||
:value="item.value + ''"
|
||||
:label="item.label"
|
||||
v-for="item in subContractorOptions"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="工程类型" prop="proTypeList">
|
||||
<el-select
|
||||
clearable
|
||||
filterable
|
||||
multiple
|
||||
style="width: 100%"
|
||||
placeholder="请选择工程类型"
|
||||
v-model="formData.proTypeList"
|
||||
>
|
||||
<el-option
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
v-for="item in dict.type.project_type"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="工程所属地区" prop="proAreaList">
|
||||
<el-select
|
||||
clearable
|
||||
filterable
|
||||
multiple
|
||||
style="width: 100%"
|
||||
placeholder="请选择工程所属地区"
|
||||
v-model="formData.proAreaList"
|
||||
>
|
||||
<el-option
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
v-for="item in dict.type.project_action"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="类型" prop="type">
|
||||
<el-radio-group v-model="formData.type">
|
||||
<el-radio-button :label="0"
|
||||
>退场证明</el-radio-button
|
||||
>
|
||||
<el-radio-button :label="1"
|
||||
>是否可以多工程入场</el-radio-button
|
||||
>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否需要" prop="isNeed">
|
||||
<el-radio-group v-model="formData.isNeed">
|
||||
<el-radio-button :label="1">是</el-radio-button>
|
||||
<el-radio-button :label="0">否</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row class="dialog-footer-btn">
|
||||
<el-button size="medium" @click="handleCloseDialog">
|
||||
取消
|
||||
</el-button>
|
||||
<ComButton
|
||||
size="medium"
|
||||
type="primary"
|
||||
@click="handleConfirm"
|
||||
>
|
||||
确定
|
||||
</ComButton>
|
||||
</el-row>
|
||||
</template>
|
||||
</DialogModel>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import TableModel from '@/components/TableModel'
|
||||
import DialogModel from '@/components/DialogModel'
|
||||
import ComButton from '@/components/ComButton'
|
||||
import { formLabel, columnsList, dialogConfig } from './config'
|
||||
import {
|
||||
addProjectSettingAPI,
|
||||
editProjectSettingAPI,
|
||||
deleteProjectSettingAPI,
|
||||
getProjectSettingListAPI,
|
||||
} from '@/api/basic-manage/project-setting/index'
|
||||
import { getSubCompanySelectListCommonFun } from '@/utils/getCommonData'
|
||||
|
||||
export default {
|
||||
name: 'ProjectSetting',
|
||||
dicts: ['project_type', 'project_action'],
|
||||
components: {
|
||||
TableModel,
|
||||
DialogModel,
|
||||
ComButton,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
formLabel,
|
||||
columnsList,
|
||||
dialogConfig,
|
||||
getProjectSettingListAPI,
|
||||
subContractorOptions: [],
|
||||
formData: {
|
||||
subId: '',
|
||||
id: null,
|
||||
proTypeList: [],
|
||||
proAreaList: [],
|
||||
type: 0,
|
||||
isNeed: 1,
|
||||
},
|
||||
formRules: {
|
||||
subId: [
|
||||
{
|
||||
required: true,
|
||||
trigger: 'change',
|
||||
message: '请选择分公司',
|
||||
},
|
||||
],
|
||||
proTypeList: [
|
||||
{
|
||||
type: 'array',
|
||||
required: true,
|
||||
trigger: 'blur',
|
||||
message: '请选择工程类型',
|
||||
},
|
||||
],
|
||||
proAreaList: [
|
||||
{
|
||||
type: 'array',
|
||||
required: true,
|
||||
trigger: 'blur',
|
||||
message: '请选择工程所属地区',
|
||||
},
|
||||
],
|
||||
type: [
|
||||
{
|
||||
required: true,
|
||||
trigger: 'change',
|
||||
message: '请选择类型',
|
||||
},
|
||||
],
|
||||
isNeed: [
|
||||
{
|
||||
required: true,
|
||||
trigger: 'change',
|
||||
message: '请选择是否需要',
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
const subComList = await getSubCompanySelectListCommonFun()
|
||||
this.subContractorOptions = subComList.map((item) => ({
|
||||
value: item.id,
|
||||
label: item.subCompanyName,
|
||||
}))
|
||||
|
||||
formLabel.forEach((item) => {
|
||||
if (item.f_model === 'proArea') {
|
||||
item.f_selList = this.dict.type.project_action
|
||||
}
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
handleExport(queryParams) {
|
||||
// this.download(
|
||||
// '/bmw/proConfig/export',
|
||||
// queryParams,
|
||||
// '工程配置列表.xlsx',
|
||||
// )
|
||||
},
|
||||
handleAddOrEdit(type, data) {
|
||||
this.dialogConfig.outerTitle =
|
||||
type === 1 ? '新增工程配置' : '修改工程配置'
|
||||
this.dialogConfig.outerWidth = '40%'
|
||||
this.dialogConfig.minHeight = ''
|
||||
this.dialogConfig.maxHeight = ''
|
||||
if (type === 2) {
|
||||
const { proArea, isNeed, id, subId, proType, type } = data
|
||||
this.formData = {
|
||||
id,
|
||||
proAreaList: proArea.split(','),
|
||||
isNeed,
|
||||
type,
|
||||
subId: subId + '',
|
||||
proTypeList: proType ? proType.split(',') : [],
|
||||
}
|
||||
} else {
|
||||
this.formData = {
|
||||
subId: '',
|
||||
id: null,
|
||||
proTypeList: [],
|
||||
proAreaList: [],
|
||||
type: 0,
|
||||
isNeed: 1,
|
||||
}
|
||||
}
|
||||
this.dialogConfig.outerVisible = true
|
||||
},
|
||||
handleDelete(data) {
|
||||
this.$confirm('确定删除该工程配置吗?', '温馨提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
})
|
||||
.then(async () => {
|
||||
const res = await deleteProjectSettingAPI({ id: data.id })
|
||||
if (res.code === 200) {
|
||||
this.$modal.msgSuccess('删除成功')
|
||||
this.$refs.projectSettingTableRef.getTableList()
|
||||
}
|
||||
})
|
||||
.catch(() => {})
|
||||
},
|
||||
handleConfirm() {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try {
|
||||
this.$refs.formRef.validate(async (valid) => {
|
||||
if (!valid) {
|
||||
reject(new Error('表单验证失败'))
|
||||
return
|
||||
}
|
||||
try {
|
||||
const {
|
||||
id,
|
||||
subId,
|
||||
proTypeList,
|
||||
proAreaList,
|
||||
type,
|
||||
isNeed,
|
||||
} = this.formData
|
||||
const params = {
|
||||
subId,
|
||||
subName: this.subContractorOptions.find(
|
||||
(item) => item.value == subId,
|
||||
)?.label,
|
||||
proType: proTypeList.join(','),
|
||||
proArea: proAreaList.join(','),
|
||||
type,
|
||||
isNeed,
|
||||
}
|
||||
if (id) {
|
||||
params.id = id
|
||||
}
|
||||
const API = !id
|
||||
? addProjectSettingAPI
|
||||
: editProjectSettingAPI
|
||||
const res = await API(params)
|
||||
if (res.code === 200) {
|
||||
this.$modal.msgSuccess(
|
||||
id ? '修改成功' : '新增成功',
|
||||
)
|
||||
this.handleCloseDialog()
|
||||
this.$refs.projectSettingTableRef.getTableList()
|
||||
resolve()
|
||||
} else {
|
||||
this.$modal.msgError(res.msg || '操作失败')
|
||||
reject(new Error(res.msg || '操作失败'))
|
||||
}
|
||||
} catch (error) {
|
||||
this.$modal.msgError(
|
||||
error.message || '操作失败,请稍后重试',
|
||||
)
|
||||
reject(error)
|
||||
}
|
||||
})
|
||||
} catch (error) {
|
||||
reject(error)
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCloseDialog() {
|
||||
this.$refs.formRef.resetFields()
|
||||
this.formData = {
|
||||
subId: '',
|
||||
id: null,
|
||||
proTypeList: [],
|
||||
proAreaList: [],
|
||||
type: 0,
|
||||
isNeed: 1,
|
||||
}
|
||||
this.dialogConfig.outerVisible = false
|
||||
},
|
||||
formatProjectType(proType) {
|
||||
if (!proType) return '-'
|
||||
const typeList = proType.split(',')
|
||||
return typeList
|
||||
.map((type) => {
|
||||
const item = this.dict.type.project_type.find(
|
||||
(item) => item.value == type,
|
||||
)
|
||||
return item ? item.label : type
|
||||
})
|
||||
.join('、')
|
||||
},
|
||||
formatProjectArea(proArea) {
|
||||
if (!proArea) return '-'
|
||||
const areaList = proArea.split(',')
|
||||
return areaList
|
||||
.map((area) => {
|
||||
const item = this.dict.type.project_action.find(
|
||||
(item) => item.value == area,
|
||||
)
|
||||
return item ? item.label : area
|
||||
})
|
||||
.join('、')
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
Loading…
Reference in New Issue