You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
219 lines
6.0 KiB
219 lines
6.0 KiB
<script>
|
|
import BuSelect from "../select/BuSelect.vue";
|
|
import {queryProjectList, queryProjectListByPage} from "../../../api/project/project";
|
|
import {updateColumnSize} from "../../../api/table";
|
|
|
|
export default {
|
|
name: "projectTable",
|
|
components: {BuSelect},
|
|
model:{
|
|
prop: "visible",
|
|
event: "update"
|
|
},
|
|
props:{
|
|
visible: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
customerNo:{
|
|
type: String,
|
|
default: ""
|
|
},
|
|
height:{
|
|
type: Number,
|
|
default: 300
|
|
},
|
|
isPage:{
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
projectNo:{
|
|
type: String,
|
|
default: ""
|
|
},
|
|
buId:{
|
|
type: Number,
|
|
default: ""
|
|
},
|
|
width:{
|
|
type: Number,
|
|
default: 800
|
|
}
|
|
},
|
|
data(){
|
|
return{
|
|
no:1,
|
|
size:20,
|
|
total:0,
|
|
project:{
|
|
buId:"",
|
|
projectNo:"",
|
|
projectDesc:"",
|
|
customerNo: "",
|
|
customerDesc: ""
|
|
},
|
|
dataList:[],
|
|
queryLoading: false,
|
|
}
|
|
},
|
|
methods:{
|
|
handleColumnResize(newWidth, oldWidth, column, event){
|
|
let inData= this.columnList.filter(item => item.columnProp === column.property)[0]
|
|
inData.columnWidth=newWidth
|
|
updateColumnSize(inData).then(({data}) => {
|
|
if (data.code === 0) {
|
|
console.log("栏位宽度保存成功!")
|
|
}
|
|
})
|
|
},
|
|
handleDblClick(row){
|
|
this.$emit("dblclick",row)
|
|
},
|
|
handleSizeChange(val){
|
|
this.size = val
|
|
this.handleQueryProjectListByPage()
|
|
},
|
|
handlePageChange(val){
|
|
this.no = val
|
|
this.handleQueryProjectListByPage()
|
|
},
|
|
handleQueryProjectListByPage(){
|
|
let params = {
|
|
...this.project,
|
|
createBy: this.$store.state.user.name,
|
|
no:this.no,
|
|
size:this.size
|
|
}
|
|
this.queryLoading = true
|
|
queryProjectListByPage(params).then(({data})=>{
|
|
if (data && data.code === 0){
|
|
this.dataList = data.rows
|
|
this.total = data.total
|
|
}else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
this.queryLoading = false
|
|
}).catch((error)=>{
|
|
this.$message.error(error)
|
|
this.queryLoading = false
|
|
})
|
|
},
|
|
handleQueryProjectList(){
|
|
let params = {
|
|
...this.project,
|
|
createBy: this.$store.state.user.name
|
|
}
|
|
this.queryLoading = true
|
|
queryProjectList(params).then(({data})=>{
|
|
if (data && data.code === 0){
|
|
this.dataList = data.rows
|
|
}else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
this.queryLoading = false
|
|
}).catch((error)=>{
|
|
this.$message.error(error)
|
|
this.queryLoading = false
|
|
})
|
|
},
|
|
},
|
|
created() {
|
|
this.project.buId = this.buId
|
|
this.project.customerNo = this.customerNo
|
|
this.project.projectNo = this.projectNo
|
|
},
|
|
watch:{
|
|
visible(newVal,oldVal){
|
|
if (newVal){
|
|
if (this.isPage){
|
|
this.handleQueryProjectListByPage();
|
|
}else {
|
|
this.handleQueryProjectList();
|
|
}
|
|
}
|
|
},
|
|
customerNo(newVal,oldVal){
|
|
this.project.customerNo = newVal
|
|
},
|
|
projectNo(newVal,oldVal){
|
|
this.project.projectNo = newVal
|
|
},
|
|
buId(newVal,oldVal){
|
|
this.project.buId = newVal
|
|
},
|
|
},
|
|
computed:{
|
|
open:{
|
|
get(){
|
|
return this.visible
|
|
},
|
|
set(val){
|
|
this.$emit("update",val)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<el-dialog :visible.sync="open" v-drag title="项目信息" :close-on-click-modal="false" modal-append-to-body :width="`${width}px`">
|
|
<el-form :model="project" label-position="top" label-width="100px">
|
|
<el-row :gutter="20">
|
|
<el-col :span="6" v-if="!buId">
|
|
<el-form-item label="BU">
|
|
<bu-select v-model="project.buId" clearable></bu-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label="项目编号">
|
|
<el-input v-model="project.projectNo"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label="项目名称">
|
|
<el-input v-model="project.projectDesc"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="24" v-if="!customerNo">
|
|
<el-row :gutter="20" >
|
|
<el-col :span="6" >
|
|
<el-form-item label="客户编码">
|
|
<el-input v-model="project.customerNo"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label="客户名称">
|
|
<el-input v-model="project.customerDesc"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-col>
|
|
<el-col :span="4" >
|
|
<el-form-item label=" ">
|
|
<el-button type="primary" v-if="isPage" @click="handleQueryProjectListByPage">查询</el-button>
|
|
<el-button type="primary" v-else @click="handleQueryProjectList">查询</el-button>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<el-table :data="dataList" border style="width: 100%" :height="height" v-loading="queryLoading" @row-dblclick="handleDblClick" @header-dragend="handleColumnResize">
|
|
<el-table-column label="BU" prop="buDesc"></el-table-column>
|
|
<el-table-column label="项目编号" prop="projectNo"></el-table-column>
|
|
<el-table-column label="项目名称" prop="projectDesc"></el-table-column>
|
|
<el-table-column label="客户编码" prop="customerNo"></el-table-column>
|
|
<el-table-column label="客户描述" prop="customerDesc"></el-table-column>
|
|
</el-table>
|
|
<el-pagination v-if="isPage" @size-change="handleSizeChange"
|
|
@current-change="handlePageChange"
|
|
:current-page="no"
|
|
:page-sizes="[20, 50, 100, 200, 500]"
|
|
:page-size="size"
|
|
:total="total"
|
|
layout="total,sizes, prev, pager, next, jumper">
|
|
</el-pagination>
|
|
</el-dialog>
|
|
</template>
|
|
|
|
<style scoped>
|
|
|
|
</style>
|