清单问题下修改-各模块完善
This commit is contained in:
parent
406517cdf0
commit
8f6c3da42d
|
|
@ -27,3 +27,10 @@ export const queryContactUnitsSelApi = (data) => {
|
|||
params: data
|
||||
})
|
||||
}
|
||||
/** 获取所属分公司树 */
|
||||
export const queryCompanyTreeApi = (data) => {
|
||||
return request.get('/base/customer/deptTree', {
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,22 +5,22 @@ import request from '@/utils/request'
|
|||
|
||||
/** 物资仓库查询 */
|
||||
export const queryStorageListApi = (data) => {
|
||||
return request.get('/material/maHouse/list', {
|
||||
return request.get('/base/maHouse/list', {
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 物资仓库新增 */
|
||||
export const addStorageListApi = (data) => {
|
||||
return request.post('/material/maHouse/add', data)
|
||||
return request.post('/base/maHouse/add', data)
|
||||
}
|
||||
|
||||
/** 物资仓库修改 */
|
||||
export const updateStorageListApi = (data) => {
|
||||
return request.post('/material/maHouse/update', data)
|
||||
return request.post('/base/maHouse/update', data)
|
||||
}
|
||||
|
||||
/** 物资仓库删除 */
|
||||
export const delStorageListApi = (id) => {
|
||||
return request.delete(`/material/maHouse/${id}`)
|
||||
return request.delete(`/base/maHouse/${id}`)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,18 +5,18 @@ import request from '@/utils/request'
|
|||
|
||||
/** 物资仓库配置查询 */
|
||||
export const queryStorageConfigListApi = (data) => {
|
||||
return request.get('/material/ma_house_set/list', {
|
||||
return request.get('/base/ma_house_set/list', {
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 物资仓库配置新增 */
|
||||
export const addStorageConfigListApi = (data) => {
|
||||
return request.post('/material/ma_house_set/add', data)
|
||||
return request.post('/base/ma_house_set/add', data)
|
||||
}
|
||||
|
||||
/** 物资仓库配置修改 */
|
||||
export const updateStorageConfigListApi = (data) => {
|
||||
return request.post('/material/ma_house_set/update', data)
|
||||
return request.post('/base/ma_house_set/update', data)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,32 +5,32 @@ import request from '@/utils/request'
|
|||
|
||||
/** 物资类型树查询 */
|
||||
export const queryMaTypeTreeListApi = (data) => {
|
||||
return request.get('/material/maType/getMaTypeList', {
|
||||
return request.get('/base/maType/getMaTypeList', {
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 树形下物资查询 */
|
||||
export const queryMaListApi = (data) => {
|
||||
return request.get('/material/maType/getListByMaType', {
|
||||
return request.get('/base/maType/getListByMaType', {
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 新增时查询id */
|
||||
export const queryIdWhenAddMa = (data) => {
|
||||
return request.get('/material/maType/addMaType', {
|
||||
return request.get('/base/maType/addMaType', {
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 提交物资添加表单 */
|
||||
export const submitAddForm = (data) => {
|
||||
return request.post('/material/maType/add', data)
|
||||
return request.post('/base/maType/add', data)
|
||||
}
|
||||
|
||||
/** 删除单个物资 */
|
||||
export const delSingleMa = (id) => {
|
||||
return request.delete(`/material/maType/${id}` )
|
||||
return request.delete(`/base/maType/${id}` )
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@
|
|||
<!-- 按钮集群 -->
|
||||
<el-row class="btn-container">
|
||||
<div class="btn-handler">
|
||||
<slot name="btn" :pageParams="queryParams"></slot>
|
||||
<slot name="btn" :queryParams="queryParams"></slot>
|
||||
</div>
|
||||
<ToolbarModel
|
||||
:showSearch.sync="showSearch"
|
||||
|
|
@ -95,6 +95,7 @@
|
|||
select-on-indeterminate
|
||||
style="width: 100%"
|
||||
v-loading="loading"
|
||||
@selection-change="handleSelectionChange">
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
|
|
@ -209,6 +210,8 @@ export default {
|
|||
},
|
||||
// 列表数据源
|
||||
tableList: [],
|
||||
// 导出传递数据
|
||||
idList: undefined,
|
||||
// 列表数据条数
|
||||
total: 0,
|
||||
// 搜索区域是否隐藏
|
||||
|
|
@ -301,7 +304,14 @@ export default {
|
|||
queryTableList(params) {
|
||||
Object.assign(this.queryParams, params)
|
||||
this.getTableList()
|
||||
},
|
||||
|
||||
handleSelectionChange(e) {
|
||||
this.idList = e.map(item => item.id)
|
||||
console.log(this.idList)
|
||||
this.$emit('transIdList', this.idList)
|
||||
}
|
||||
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
<template>
|
||||
<!-- 页头提示 -->
|
||||
<el-page-header @back="goBack" :content="pageContent"> </el-page-header>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
pageContent: {
|
||||
type: String,
|
||||
default: '详情',
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
goBack() {
|
||||
this.$emit('goBack')
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.el-page-header {
|
||||
padding-bottom: 5px;
|
||||
margin-bottom: 10px;
|
||||
box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
</style>
|
||||
|
|
@ -36,11 +36,13 @@ export const commonMixin = {
|
|||
console.log('导入--')
|
||||
},
|
||||
/** 导出数据 */
|
||||
handleExportData(data, url, fileName) {
|
||||
handleExportData(data, url, fileName, queryParams) {
|
||||
console.log(data, queryParams, '111111')
|
||||
this.download(
|
||||
url,
|
||||
{
|
||||
...data
|
||||
// ...queryParams,
|
||||
dataCondition: data
|
||||
},
|
||||
`${fileName}_${new Date().getTime()}.xlsx`,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -81,20 +81,22 @@
|
|||
<el-col :span="12">
|
||||
<el-form-item label="合同附件" prop="url">
|
||||
<el-upload
|
||||
:http-request="(obj) => imgUpLoad(obj)"
|
||||
:http-request="(obj) => uploadData(obj)"
|
||||
action="#"
|
||||
:file-list="fileList"
|
||||
:show-file-list="false"
|
||||
list-type="picture-card"
|
||||
accept=".png,.jpg,.jpeg"
|
||||
:on-exceed="fileExceed"
|
||||
:on-remove="handleRemove"
|
||||
drag
|
||||
:limit="3"
|
||||
>
|
||||
<img
|
||||
<!-- <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>
|
||||
/>-->
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
|
@ -157,15 +159,20 @@ export default {
|
|||
return {
|
||||
subSort: '', // 提交类型:新增 1 / 修改 2
|
||||
protocolParams: {
|
||||
customer: '', // 租赁单位
|
||||
authorizingPerson: '', // 授权人
|
||||
project: '', // 租赁工程
|
||||
authorizingPhone: '', // 联系电话
|
||||
contractNumber: '', // 合同编号
|
||||
startTime: '', // 开始日期
|
||||
remark: '', // 备注
|
||||
url: '', // 合同附件
|
||||
customer: undefined, // 租赁单位
|
||||
authorizingPerson: undefined, // 授权人
|
||||
project: undefined, // 租赁工程
|
||||
authorizingPhone: undefined, // 联系电话
|
||||
contractNumber: undefined, // 合同编号
|
||||
startTime: undefined, // 开始日期
|
||||
remark: undefined, // 备注
|
||||
url: undefined, // 合同附件
|
||||
},
|
||||
// 图片集合
|
||||
picList: [],
|
||||
// 图片名称集合
|
||||
picNameList: [],
|
||||
//
|
||||
fileList: [],
|
||||
// 租赁单位下拉框
|
||||
unitSelRange: [],
|
||||
|
|
@ -229,17 +236,34 @@ export default {
|
|||
})
|
||||
}).catch(err => {})
|
||||
},
|
||||
/** 上传图片 */
|
||||
imgUpLoad(param) {
|
||||
/** 上传图片/文件 */
|
||||
uploadData(param) {
|
||||
console.log(param)
|
||||
imgUpLoad(param).then(res => {
|
||||
console.log(res, process.env.VUE_APP_BASE_API)
|
||||
this.protocolParams.url = res.data.url
|
||||
console.log(res)
|
||||
this.picList.push(res.data.url)
|
||||
this.picNameList.push(res.data.name.split('_')[0])
|
||||
}).catch(err => {})
|
||||
},
|
||||
/** 文件变化 */
|
||||
dataChange(e) {
|
||||
console.log(e)
|
||||
this.fileList.push(e.raw)
|
||||
},
|
||||
/** 移除文件 */
|
||||
handleRemove(file) {
|
||||
console.log(file)
|
||||
console.log(this.picNameList)
|
||||
// this.fileList = this.fileList.filter(item => item.uid !== e.uid)
|
||||
},
|
||||
/** 文件超出3个 */
|
||||
fileExceed() {
|
||||
this.$modal.msgError('最多上传3个图片或文件!')
|
||||
},
|
||||
/** 确认按钮 */
|
||||
onSubmit() {
|
||||
this.$refs.protocolParamsRef.validate((valid) => {
|
||||
console.log(this.picList)
|
||||
/* this.$refs.protocolParamsRef.validate((valid) => {
|
||||
if (valid) {
|
||||
console.log('校验通过', this.protocolParams, this.subSort)
|
||||
// 1. 表单校验通过后调后台 Api
|
||||
|
|
@ -259,7 +283,7 @@ export default {
|
|||
// 2. 成功之后通知父组件关闭弹框
|
||||
this.$emit('closeDialog', true)
|
||||
}
|
||||
})
|
||||
}) */
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,10 +12,24 @@
|
|||
<el-input v-model="contactUnitsParams.name" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单位类型" prop="typeId">
|
||||
<el-select v-model="contactUnitsParams.typeId"></el-select>
|
||||
<el-select v-model="contactUnitsParams.typeId">
|
||||
<el-option
|
||||
v-for="item in customerRange"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属分公司" prop="companyId">
|
||||
<el-select v-model="contactUnitsParams.companyId"></el-select>
|
||||
<treeselect
|
||||
v-model="contactUnitsParams.companyId"
|
||||
:options="companyRange"
|
||||
noChildrenText="没有数据了"
|
||||
noOptionsText="没有数据"
|
||||
noResultsText="没有搜索结果"
|
||||
placeholder="请选择所属上级"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="材料员" prop="materialClerk">
|
||||
<el-input v-model="contactUnitsParams.materialClerk" />
|
||||
|
|
@ -50,8 +64,14 @@
|
|||
<script>
|
||||
import {
|
||||
addContactUnitsApi,
|
||||
editContactUnitsApi
|
||||
editContactUnitsApi,
|
||||
queryCompanyTreeApi
|
||||
} from '@/api/base/customer'
|
||||
import {
|
||||
queryUnitTypeListApi
|
||||
} from '@/api/base/unitType'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
export default {
|
||||
name: 'FormContactUnits',
|
||||
props: {
|
||||
|
|
@ -60,6 +80,10 @@ export default {
|
|||
default: () => null,
|
||||
},
|
||||
},
|
||||
components: { Treeselect },
|
||||
created() {
|
||||
this.getRanges()
|
||||
},
|
||||
mounted() {
|
||||
if (this.editParams) {
|
||||
Object.assign(this.contactUnitsParams, this.editParams)
|
||||
|
|
@ -79,6 +103,10 @@ export default {
|
|||
phone: undefined, // 联系电话
|
||||
isActive: '1', // 启用状态
|
||||
},
|
||||
// 往来单位下拉选
|
||||
customerRange: [],
|
||||
// 所属分公司树下拉选
|
||||
companyRange: [],
|
||||
// 校验规则
|
||||
contactUnitsParamsRules: {
|
||||
name: [
|
||||
|
|
@ -106,6 +134,20 @@ export default {
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
/** 获取各类下拉选 */
|
||||
async getRanges() {
|
||||
// 获取单位下拉选
|
||||
let unitRes = await queryUnitTypeListApi()
|
||||
this.customerRange = unitRes.rows.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id
|
||||
}
|
||||
})
|
||||
// 获取所属分公司树
|
||||
let companyRes = await queryCompanyTreeApi()
|
||||
this.companyRange = companyRes.data
|
||||
},
|
||||
/** 确认按钮 */
|
||||
onSubmit() {
|
||||
this.$refs.contactUnitsParamsRef.validate((valid) => {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,180 @@
|
|||
<template>
|
||||
<!-- 往来单位 人员配置 表单组件 -->
|
||||
<div class="app-container">
|
||||
<el-col :span="4" :xs="24" style="margin-right: 15px">
|
||||
<div class="head-container">
|
||||
<el-input
|
||||
v-model="typeName"
|
||||
placeholder="请输入人员名称"
|
||||
clearable
|
||||
maxlength="50"
|
||||
size="small"
|
||||
prefix-icon="el-icon-search"
|
||||
style="margin-bottom: 20px"
|
||||
/>
|
||||
</div>
|
||||
<div class="head-container">
|
||||
<el-tree
|
||||
style="height: 700px; overflow: scroll"
|
||||
:data="treeOptions"
|
||||
:props="defaultProps"
|
||||
:expand-on-click-node="false"
|
||||
:filter-node-method="filterNode"
|
||||
ref="tree"
|
||||
node-key="id"
|
||||
default-expand-all
|
||||
highlight-current
|
||||
@node-click="handleNodeClick"
|
||||
>
|
||||
<span class="custom-tree-node" slot-scope="{ node, data }" style="font-size: 14px">
|
||||
<i v-if="node.level <= 3" class="el-icon-folder" style="color: #fabd16" />
|
||||
<i v-else-if="node.level > 3" class="el-icon-document" style="color: #C0C0C0" />
|
||||
{{ data.label }}
|
||||
</span>
|
||||
</el-tree>
|
||||
</div>
|
||||
</el-col>
|
||||
<!-- 表格 -->
|
||||
<TableModel
|
||||
:formLabel="formLabel"
|
||||
:columnsList="columnsList"
|
||||
:request-api="queryContactUnitsListApi"
|
||||
:show-sel="false"
|
||||
ref="tableRef"
|
||||
style="display: flex; flex-direction: column"
|
||||
>
|
||||
<template slot="btn" slot-scope="{ queryParams }">
|
||||
<el-button type="primary"
|
||||
>绑定</el-button>
|
||||
<!-- <el-button @click="handleExportData(queryParams, 'base/agreement/export', '物资清单')"
|
||||
>导出</el-button>-->
|
||||
</template>
|
||||
<template slot="handle" slot-scope="{ data }">
|
||||
<el-button
|
||||
type="info"
|
||||
size="mini"
|
||||
v-if="data.level === '4'"
|
||||
>查看</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleEditData(data)"
|
||||
>编辑</el-button
|
||||
>
|
||||
<!-- <el-button
|
||||
type="danger"
|
||||
size="mini"
|
||||
@click="handleDeleteMaType(data.id, delSingleMa)"
|
||||
>删除</el-button
|
||||
>-->
|
||||
</template>
|
||||
<!-- <template slot="url" slot-scope="{ data }">
|
||||
<img :src="data.url" style="width: 50px; height: 50px">
|
||||
</template>-->
|
||||
</TableModel>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { formLabel, columnsList, dialogConfig } from '../config'
|
||||
import { commonMixin } from '../../mixins/common'
|
||||
import {
|
||||
queryMaTypeTreeListApi,
|
||||
queryMaListApi,
|
||||
delSingleMa
|
||||
} from '@/api/material/type'
|
||||
import {
|
||||
deleteContactUnitsApi,
|
||||
queryContactUnitsListApi
|
||||
} from '@/api/base/customer'
|
||||
export default {
|
||||
name: 'PersonConfig',
|
||||
mixins: [commonMixin], // 混入公共方法和数据
|
||||
props: {
|
||||
|
||||
},
|
||||
created() {
|
||||
this.getTreeData()
|
||||
},
|
||||
watch: {
|
||||
// 根据名称筛选部门树
|
||||
typeName(val) {
|
||||
this.$refs.tree.filter(val)
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
formLabel,
|
||||
columnsList,
|
||||
dialogConfig,
|
||||
// 类型名称
|
||||
typeName: undefined,
|
||||
// 树选项
|
||||
treeOptions: undefined,
|
||||
// 根级
|
||||
rootOpt: [
|
||||
{
|
||||
companyId: null,
|
||||
id: 0,
|
||||
label: '人员列表',
|
||||
level: 0,
|
||||
parentId: null,
|
||||
children: []
|
||||
}
|
||||
],
|
||||
// 默认属性
|
||||
defaultProps: {
|
||||
children: 'children',
|
||||
label: 'label',
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
queryContactUnitsListApi,
|
||||
// 获取树形数据
|
||||
getTreeData() {
|
||||
queryMaTypeTreeListApi().then(res => {
|
||||
this.rootOpt[0].children = []
|
||||
res.data.forEach(item => {
|
||||
this.rootOpt[0].children.push(item)
|
||||
})
|
||||
this.treeOptions = this.rootOpt
|
||||
// this.treeOptions = res.data
|
||||
}).catch(err => {})
|
||||
},
|
||||
// 筛选节点 - 左侧树
|
||||
filterNode(value, data) {
|
||||
if (!value) return true
|
||||
return data.label.indexOf(value) !== -1
|
||||
},
|
||||
// 节点单击事件 - 左侧树
|
||||
handleNodeClick(data) {
|
||||
console.log(data)
|
||||
/* queryMaListApi({
|
||||
typeId: data.id
|
||||
}).then(res => {
|
||||
this.transInfo = res.data.rows
|
||||
console.log(this.transInfo)
|
||||
}) */
|
||||
this.transLevel = data.level
|
||||
this.transData = data
|
||||
this.$refs.tableRef.queryTableList({
|
||||
code: data.code
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
::v-deep .el-select {
|
||||
width: 100%;
|
||||
}
|
||||
::v-deep .el-form-item__label{
|
||||
font-weight: normal;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -4,8 +4,8 @@ export const formLabel = [
|
|||
]
|
||||
export const columnsList = [
|
||||
{ t_props: 'name', t_label: '单位名称', },
|
||||
{ t_props: 'typeId', t_label: '单位类型' },
|
||||
{ t_props: 'companyId', t_label: '所属分公司' },
|
||||
{ t_props: 'typeName', t_label: '单位类型' },
|
||||
{ t_props: 'companyName', t_label: '所属分公司' },
|
||||
{ t_props: 'materialClerk', t_label: '材料员', },
|
||||
{ t_props: 'phone', t_label: '联系电话', t_slot: 'phone' },
|
||||
{ t_props: 'isActive', t_label: '状态', t_slot: 'isActive' },
|
||||
|
|
|
|||
|
|
@ -1,18 +1,26 @@
|
|||
<template>
|
||||
<!-- 往来单位管理页面 -->
|
||||
<div class="app-container">
|
||||
<PageHeader
|
||||
v-if="isShowComponent !== 'Index'"
|
||||
:pageContent="pageContent"
|
||||
@goBack="goBack"
|
||||
/>
|
||||
<!-- 列表 -->
|
||||
<TableModel
|
||||
:formLabel="formLabel"
|
||||
:columnsList="columnsList"
|
||||
:request-api="queryContactUnitsListApi"
|
||||
ref="tableRef"
|
||||
|
||||
v-if="isShowComponent === 'Index'"
|
||||
>
|
||||
<template slot="btn" slot-scope="{ queryParams }">
|
||||
<el-button type="primary" @click="handleAddData()"
|
||||
>新建</el-button
|
||||
>
|
||||
<el-button type="success" @click="isShowComponent = 'person-config'"
|
||||
>人员配置</el-button
|
||||
>
|
||||
<el-button @click="handleExportData(queryParams, 'base/customer/export', '往来单位清单')"
|
||||
>导出</el-button
|
||||
>
|
||||
|
|
@ -53,19 +61,27 @@
|
|||
/>
|
||||
</template>
|
||||
</DialogModel>
|
||||
|
||||
<person-config
|
||||
v-if="isShowComponent === 'person-config'"
|
||||
>
|
||||
|
||||
</person-config>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import PageHeader from '@/components/pageHeader'
|
||||
import { columnsList, dialogConfig, formLabel } from './config'
|
||||
import { commonMixin } from '../mixins/common'
|
||||
import FormContactUnits from './components/form-contact-units.vue'
|
||||
import PersonConfig from './components/person-config.vue'
|
||||
import { deleteContactUnitsApi, queryContactUnitsListApi } from '@/api/base/customer'
|
||||
|
||||
export default {
|
||||
name: 'ContactUnits',
|
||||
mixins: [commonMixin], // 混入公共方法和数据
|
||||
components: { FormContactUnits },
|
||||
components: { FormContactUnits, PersonConfig, PageHeader },
|
||||
methods: {
|
||||
queryContactUnitsListApi,
|
||||
deleteContactUnitsApi,
|
||||
|
|
@ -78,9 +94,14 @@ export default {
|
|||
}
|
||||
return phoneNumber
|
||||
} */
|
||||
goBack() {
|
||||
this.isShowComponent = 'Index'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isShowComponent: 'Index',
|
||||
pageContent: '往来人员配置',
|
||||
formLabel,
|
||||
columnsList,
|
||||
dialogConfig,
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
<template>
|
||||
<!-- 机具供应商管理 -->
|
||||
<div> 机具供应商 </div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {}
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
|
|
@ -24,16 +24,14 @@
|
|||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="实施单位" prop="impUnit">
|
||||
<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>
|
||||
<treeselect
|
||||
v-model="projectParams.impUnit"
|
||||
:options="proSelRanges.pro_unit_range"
|
||||
noChildrenText="没有数据了"
|
||||
noOptionsText="没有数据"
|
||||
noResultsText="没有搜索结果"
|
||||
placeholder="请选择所属上级"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
|
|
@ -115,7 +113,7 @@
|
|||
<el-form-item label="关联i8工程" prop="isMatch">
|
||||
<span
|
||||
style="box-sizing: border-box; padding: 5px 10px; background-color: #00afff; color: #fff; border-radius: 10px"
|
||||
>{{ projectParams.proId === null || projectParams.proId === '' ? '未关联' : '已关联' }}</span>
|
||||
>{{ projectParams.proId === null || projectParams.proId === undefined || projectParams.proId === '' ? '未 关 联' : '已 关 联' }}</span>
|
||||
<!-- <el-switch
|
||||
v-model="projectParams.isMatch"
|
||||
active-color="#13ce66"
|
||||
|
|
@ -160,8 +158,10 @@ import {
|
|||
queryProjectNatureApi
|
||||
} from '@/api/base/project.js'
|
||||
import {
|
||||
queryContactUnitsSelApi
|
||||
queryCompanyTreeApi
|
||||
} from '@/api/base/customer'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
export default {
|
||||
name: 'FormProject',
|
||||
props: {
|
||||
|
|
@ -170,11 +170,9 @@ export default {
|
|||
default: () => null,
|
||||
},
|
||||
},
|
||||
components: { Treeselect },
|
||||
created() {
|
||||
this.getUnitRange()
|
||||
this.getProjTypeRange()
|
||||
this.getProjStatusRange()
|
||||
this.getProjNatureRange()
|
||||
this.getRanges()
|
||||
},
|
||||
mounted() {
|
||||
console.log(this.editParams)
|
||||
|
|
@ -252,51 +250,34 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
/** 获取各类下拉框 */
|
||||
|
||||
/** 获取往来单位下拉框 */
|
||||
getUnitRange() {
|
||||
queryContactUnitsSelApi().then(res => {
|
||||
console.log(res)
|
||||
this.proSelRanges.pro_unit_range = res.data.map(item => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.id
|
||||
}
|
||||
})
|
||||
}).catch(err => {})
|
||||
},
|
||||
/** 获取工程类型下拉框 */
|
||||
getProjTypeRange() {
|
||||
queryProjectTypeApi().then(res => {
|
||||
this.proSelRanges.pro_type_range = res.data.data.map(item => {
|
||||
return {
|
||||
label: item.dictLabel,
|
||||
value: item.dictCode
|
||||
}
|
||||
})
|
||||
}).catch(err => {})
|
||||
},
|
||||
/** 获取工程状态下拉框 */
|
||||
getProjStatusRange() {
|
||||
queryProjectStatusApi().then(res => {
|
||||
this.proSelRanges.pro_stats_range = res.data.data.map(item => {
|
||||
return {
|
||||
label: item.dictLabel,
|
||||
value: item.dictCode
|
||||
}
|
||||
})
|
||||
}).catch(err => {})
|
||||
},
|
||||
/** 获取工程性质下拉框 */
|
||||
getProjNatureRange() {
|
||||
queryProjectNatureApi().then(res => {
|
||||
this.proSelRanges.pro_nature_range = res.data.data.map(item => {
|
||||
return {
|
||||
label: item.dictLabel,
|
||||
value: item.dictCode
|
||||
}
|
||||
})
|
||||
}).catch(err => {})
|
||||
async getRanges() {
|
||||
// 获取实施单位树下拉框
|
||||
let unitRes = await queryCompanyTreeApi()
|
||||
this.proSelRanges.pro_unit_range = unitRes.data
|
||||
// 获取工程类型下拉框
|
||||
let typeRes = await queryProjectTypeApi()
|
||||
this.proSelRanges.pro_type_range = typeRes.data.data.map(item => {
|
||||
return {
|
||||
label: item.dictLabel,
|
||||
value: item.dictCode
|
||||
}
|
||||
})
|
||||
// 获取工程状态下拉框
|
||||
let statRes = await queryProjectStatusApi()
|
||||
this.proSelRanges.pro_stats_range = statRes.data.data.map(item => {
|
||||
return {
|
||||
label: item.dictLabel,
|
||||
value: item.dictCode
|
||||
}
|
||||
})
|
||||
// 获取工程性质下拉框
|
||||
let natureRes = await queryProjectNatureApi()
|
||||
this.proSelRanges.pro_nature_range = natureRes.data.data.map(item => {
|
||||
return {
|
||||
label: item.dictLabel,
|
||||
value: item.dictCode
|
||||
}
|
||||
})
|
||||
},
|
||||
/** 确认按钮 */
|
||||
onSubmit() {
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@ export const formLabel = [
|
|||
export const columnsList = [
|
||||
{ t_props: 'name', t_label: '工程项目名称', },
|
||||
{ t_props: 'impUnit', t_label: '实施单位' },
|
||||
{ t_props: 'projectType', t_label: '工程类型' },
|
||||
{ t_props: 'projectTypeName', t_label: '工程类型' },
|
||||
{ t_props: 'proId', t_label: 'i8工程id', },
|
||||
{ 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_slot: 'phone' },
|
||||
{ t_props: 'stats', t_label: '工程状态', },
|
||||
{ t_props: 'statsName', t_label: '工程状态' },
|
||||
{ t_props: 'remark', t_label: '备注', },
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@
|
|||
:columnsList="columnsList"
|
||||
:request-api="queryProjectListApi"
|
||||
ref="tableRef"
|
||||
|
||||
@transIdList="getIdList"
|
||||
>
|
||||
<template slot="btn" slot-scope="{ queryParams }">
|
||||
<el-button type="primary" @click="handleAddData()"
|
||||
>新建</el-button
|
||||
>
|
||||
<el-button @click="handleExportData(queryParams, 'base/project/export', '工程清单')"
|
||||
<el-button @click="handleExportData(exportList, 'base/project/export', '工程清单', queryParams)"
|
||||
>导出</el-button
|
||||
>
|
||||
</template>
|
||||
|
|
@ -62,7 +62,13 @@ import FormProject from './components/form-project'
|
|||
import { queryProjectListApi, deleteProjectApi } from '@/api/base/project'
|
||||
export default {
|
||||
name: 'ProjectManage',
|
||||
methods: { queryProjectListApi, deleteProjectApi },
|
||||
methods: {
|
||||
queryProjectListApi,
|
||||
deleteProjectApi,
|
||||
getIdList(idList) {
|
||||
this.exportList = idList
|
||||
}
|
||||
},
|
||||
mixins: [commonMixin], // 混入公共方法和数据
|
||||
components: {
|
||||
FormProject,
|
||||
|
|
@ -71,6 +77,8 @@ export default {
|
|||
return {
|
||||
// 搜索区表单配置项
|
||||
formLabel,
|
||||
// 表格导出id列表
|
||||
exportList: undefined,
|
||||
// 列表区配置项
|
||||
columnsList,
|
||||
// 弹框区配置项
|
||||
|
|
|
|||
|
|
@ -0,0 +1,183 @@
|
|||
<template>
|
||||
<!-- 往来单位 新增、编辑 表单组件 -->
|
||||
<div>
|
||||
<el-form
|
||||
label-width="100px"
|
||||
size="medium"
|
||||
ref="contactUnitsParamsRef"
|
||||
:model="storageConfigParams"
|
||||
:rules="storageConfigParamsRules"
|
||||
>
|
||||
<el-form-item label="仓库名称" prop="name">
|
||||
<el-select v-model="storageConfigParams.houseId">
|
||||
<el-option
|
||||
v-for="item in storageConfigRange"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="物资名称" prop="typeId">
|
||||
<treeselect
|
||||
v-model="storageConfigParams.typeId"
|
||||
:options="typeRange"
|
||||
noChildrenText="没有数据了"
|
||||
noOptionsText="没有数据"
|
||||
noResultsText="没有搜索结果"
|
||||
placeholder="请选择所属上级"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="success" @click="onSubmit">确定</el-button>
|
||||
<el-button
|
||||
@click="
|
||||
() => {
|
||||
this.$emit('closeDialog')
|
||||
}
|
||||
"
|
||||
>取消</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
addStorageConfigListApi,
|
||||
updateStorageConfigListApi
|
||||
} from '@/api/material/storageConfig'
|
||||
import {
|
||||
queryStorageListApi
|
||||
} from '@/api/material/storage'
|
||||
import {
|
||||
queryMaTypeTreeListApi
|
||||
} from '@/api/material/type'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
export default {
|
||||
name: 'FormStorage',
|
||||
props: {
|
||||
editParams: {
|
||||
type: Object,
|
||||
default: () => null,
|
||||
},
|
||||
},
|
||||
components: { Treeselect },
|
||||
created() {
|
||||
this.getHouseRange()
|
||||
this.getTypeRange()
|
||||
},
|
||||
mounted() {
|
||||
if (this.editParams) {
|
||||
Object.assign(this.storageConfigParams, this.editParams)
|
||||
this.subSort = 2
|
||||
} else {
|
||||
this.subSort = 1
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
subSort: '', // 提交类型:新增 1 / 修改 2
|
||||
storageConfigParams: {
|
||||
houseId: undefined, // 仓库名称
|
||||
typeId: undefined, // 物资名称
|
||||
},
|
||||
// 仓库下拉选项
|
||||
storageConfigRange: [],
|
||||
// 类型下拉选项
|
||||
typeRange: [],
|
||||
// 校验规则
|
||||
storageConfigParamsRules: {
|
||||
/* pro_name: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入工程名称',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
pro_unit: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择施工单位',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
pro_type_of: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择工程类型',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
pro_type: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择工程状态',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
pro_nature: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择工程性质',
|
||||
trigger: 'blur',
|
||||
},
|
||||
], */
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/** 初始化获取仓库下拉 */
|
||||
getHouseRange() {
|
||||
queryStorageListApi().then(res => {
|
||||
console.log(res)
|
||||
this.storageConfigRange = res.rows.map(item => {
|
||||
return {
|
||||
value: item.id,
|
||||
label: item.name,
|
||||
}
|
||||
})
|
||||
}).catch(err => {})
|
||||
},
|
||||
/** 初始化获取类型下拉 */
|
||||
getTypeRange() {
|
||||
queryMaTypeTreeListApi().then(res => {
|
||||
this.typeRange = res.data
|
||||
}).catch(err => {})
|
||||
},
|
||||
/** 确认按钮 */
|
||||
onSubmit() {
|
||||
this.$refs.contactUnitsParamsRef.validate((valid) => {
|
||||
if (valid) {
|
||||
console.log('校验通过', this.storageConfigParams, this.subSort)
|
||||
// 1. 表单校验通过后调后台 Api
|
||||
if(this.subSort === 1) {
|
||||
addStorageConfigListApi(this.storageConfigParams).then(res => {
|
||||
console.log(res)
|
||||
this.$modal.msgSuccess('新增成功')
|
||||
}).catch(err => {})
|
||||
} else if(this.subSort === 2) {
|
||||
updateStorageConfigListApi(this.storageConfigParams).then(res => {
|
||||
console.log(res)
|
||||
this.$modal.msgSuccess('修改成功')
|
||||
}).catch(err => {})
|
||||
}
|
||||
// 2. 成功之后通知父组件关闭弹框
|
||||
this.$emit('closeDialog', true)
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
::v-deep .el-select {
|
||||
width: 100%;
|
||||
}
|
||||
::v-deep .el-form-item__label{
|
||||
font-weight: normal;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
|
||||
export const formLabel = [
|
||||
{ f_label: '关键字', f_model: 'houseId', f_type: 'ipt' },
|
||||
]
|
||||
export const columnsList = [
|
||||
{ t_props: 'houseId', t_label: 'a', },
|
||||
{ t_props: 'typeId', t_label: 'b' },
|
||||
// { t_props: 'companyId', t_label: '地理位置' },
|
||||
// { t_props: 'remark', t_label: '备注' },
|
||||
]
|
||||
export const dialogConfig = {
|
||||
outerWidth: '40%',
|
||||
outerTitle: '',
|
||||
outerVisible: false,
|
||||
}
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
<template>
|
||||
<!-- 往来单位管理页面 -->
|
||||
<div class="app-container">
|
||||
<!-- 列表 -->
|
||||
<TableModel
|
||||
:formLabel="formLabel"
|
||||
:columnsList="columnsList"
|
||||
:request-api="queryStorageConfigListApi"
|
||||
ref="tableRef"
|
||||
>
|
||||
<template slot="btn" slot-scope="{ queryParams }">
|
||||
<el-button type="primary" @click="handleAddData()"
|
||||
>新建</el-button
|
||||
>
|
||||
<el-button @click="handleExportData(queryParams, 'base/customer/export', '往来单位清单')"
|
||||
>导出</el-button
|
||||
>
|
||||
</template>
|
||||
|
||||
<template slot="handle" slot-scope="{ data }">
|
||||
<el-button
|
||||
type="warning"
|
||||
size="mini"
|
||||
>解绑</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleEditData(data)"
|
||||
>编辑</el-button
|
||||
>
|
||||
<el-button
|
||||
type="danger"
|
||||
size="mini"
|
||||
@click="handleDeleteData(data.id, delStorageListApi)"
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
<!-- <template slot="isActive" slot-scope="{ data }">
|
||||
{{ data.isActive == '1' ? '启用' : '不启用' }}
|
||||
</template>
|
||||
<template slot="phone" slot-scope="{ data }">
|
||||
{{ phoneCrypto(data.phone) }}
|
||||
</template>-->
|
||||
</TableModel>
|
||||
|
||||
<!-- 新增以及修改时的弹框 -->
|
||||
<DialogModel
|
||||
:dialogConfig="dialogConfig"
|
||||
@closeDialogOuter="closeDialogOuter"
|
||||
>
|
||||
<template slot="outerContent">
|
||||
<!-- 新增以及修改数据的表单组件 -->
|
||||
<FormMasupplier
|
||||
@closeDialog="closeDialog"
|
||||
:editParams="editParams"
|
||||
/>
|
||||
</template>
|
||||
</DialogModel>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { columnsList, dialogConfig, formLabel } from './config'
|
||||
import { commonMixin } from '../mixins/common'
|
||||
import FormMasupplier from './components/form-masupplier.vue'
|
||||
import {
|
||||
queryStorageConfigListApi
|
||||
} from '@/api/material/storageConfig'
|
||||
|
||||
export default {
|
||||
name: 'storageConfigManage',
|
||||
mixins: [commonMixin], // 混入公共方法和数据
|
||||
components: { FormMasupplier },
|
||||
methods: {
|
||||
queryStorageConfigListApi
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
formLabel,
|
||||
columnsList,
|
||||
dialogConfig,
|
||||
addDialogTitle: '新建仓库', // 新建时弹框标题
|
||||
editDialogTitle: '修改仓库', // 修改时弹框标题
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
@ -76,11 +76,11 @@
|
|||
<el-form-item label="类型编码" prop="code">
|
||||
<el-input v-model="typeEditParamsLv1.code" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="检验方式" prop="materialName">
|
||||
<el-input v-model="typeEditParamsLv1.materialName" />
|
||||
<el-form-item label="检验方式" prop="testType">
|
||||
<el-input v-model="typeEditParamsLv1.testType" />
|
||||
</el-form-item>
|
||||
<el-form-item label="检验结果" prop="materialType">
|
||||
<el-input v-model="typeEditParamsLv1.materialType" />
|
||||
<el-form-item label="检验结果" prop="testResult">
|
||||
<el-input v-model="typeEditParamsLv1.testResult" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!-- form-修改 level2 -->
|
||||
|
|
@ -98,6 +98,12 @@
|
|||
<el-form-item label="类型编码" prop="code">
|
||||
<el-input v-model="typeEditParamsLv2.code" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="检验方式" prop="testType">
|
||||
<el-input v-model="typeEditParamsLv2.testType" />
|
||||
</el-form-item>
|
||||
<el-form-item label="检验结果" prop="testResult">
|
||||
<el-input v-model="typeEditParamsLv2.testResult" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!-- form-修改 level3 -->
|
||||
<el-form
|
||||
|
|
@ -114,6 +120,12 @@
|
|||
<el-form-item label="类型编码" prop="code">
|
||||
<el-input v-model="typeEditParamsLv3.code" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="检验方式" prop="testType">
|
||||
<el-input v-model="typeEditParamsLv3.testType" />
|
||||
</el-form-item>
|
||||
<el-form-item label="检验结果" prop="testResult">
|
||||
<el-input v-model="typeEditParamsLv3.testResult" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!-- form-修改 level4 -->
|
||||
<el-form
|
||||
|
|
@ -175,12 +187,28 @@
|
|||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否需要试验" prop="ifExam">
|
||||
<el-select v-model="typeEditParamsLv4.ifExam"></el-select>
|
||||
<el-select v-model="typeEditParamsLv4.ifExam">
|
||||
<el-option
|
||||
v-for="item in ifTestRange"
|
||||
: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="manageType">
|
||||
<el-select v-model="typeEditParamsLv4.manageType"></el-select>
|
||||
<el-select v-model="typeEditParamsLv4.manageType">
|
||||
<el-option
|
||||
v-for="item in manageTypeRange"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
|
@ -337,18 +365,22 @@ export default {
|
|||
typeEditParamsLv1: {
|
||||
constructionType: undefined, // 类型名称
|
||||
code: undefined, // 类型编码
|
||||
materialName: undefined, // 检验方式
|
||||
materialType: undefined, // 检验结果
|
||||
testType: undefined, // 检验方式
|
||||
testResult: undefined, // 检验结果
|
||||
},
|
||||
// 物资修改表单 Lv2
|
||||
typeEditParamsLv2: {
|
||||
constructionType: undefined, // 类型名称
|
||||
code: undefined, // 类型编码
|
||||
testType: undefined, // 检验方式
|
||||
testResult: undefined, // 检验结果
|
||||
},
|
||||
// 物资修改表单 Lv3
|
||||
typeEditParamsLv3: {
|
||||
constructionType: undefined, // 类型名称
|
||||
code: undefined, // 类型编码
|
||||
testType: undefined, // 检验方式
|
||||
testResult: undefined, // 检验结果
|
||||
},
|
||||
// 物资修改表单 Lv4
|
||||
typeEditParamsLv4: {
|
||||
|
|
@ -404,7 +436,17 @@ export default {
|
|||
},
|
||||
typeEditParamsLv2Rules: {},
|
||||
typeEditParamsLv3Rules: {},
|
||||
typeEditParamsLv4Rules: {}
|
||||
typeEditParamsLv4Rules: {},
|
||||
// 下拉选
|
||||
ifTestRange: [
|
||||
{ label: '是', value: 1 },
|
||||
{ label: '否', value: 0 },
|
||||
],
|
||||
manageTypeRange: [
|
||||
{ label: '编码追溯', value: 0 },
|
||||
{ label: '数量+编码', value: 1 },
|
||||
{ label: '数量', value: 2 },
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ export const columnsList = [
|
|||
{ t_props: 'specificationCode', t_label: '规格型号' },
|
||||
]
|
||||
export const dialogConfig = {
|
||||
outerWidth: '40%',
|
||||
outerWidth: '60%',
|
||||
outerTitle: '',
|
||||
outerVisible: false,
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue