Commit 10c340f3 authored by MyName's avatar MyName

项目管理

parent 6306f4e5
......@@ -15,4 +15,59 @@ export function getProjectlist(param) {
params: param
})
}
//删除项目
export function delProject(param) {
return request({
url: '/business/info/remove/'+param,
method: 'DELETE',
})
}
//建设内容
export function getJSNR(param) {
return request({
url: '/business/info/construction/'+param,
method: 'GET',
})
}
//项目速览
export function getXMSL(param) {
return request({
url: '/business/info/browse/'+param,
method: 'GET',
})
}
//项目速览修改
export function editXMSL(param) {
return request({
url: '/business/info/edit',
method: 'POST',
data:param
})
}
//查询项目联系人
export function getLXR(param) {
return request({
url: '/business/contacts/list',
method: 'GET',
params:param
})
}
//修改项目联系人
export function editLXR(param) {
return request({
url: '/business/contacts/edit',
method: 'POST',
data:param
})
}
//新增项目联系人
export function addLXR(param) {
return request({
url: '/business/contacts/add',
method: 'POST',
data:param
})
}
......@@ -124,6 +124,7 @@
border-radius: 2px;
line-height: 28px;
cursor: pointer;
position: relative;
>span{
padding-left: 8px;
}
......@@ -131,6 +132,15 @@
color: rgba(35,35,32,0.4);
margin-left: 4px;
}
.timeinput{
opacity: 0;
position: absolute;
.el-input__inner{
padding: 0;
margin: 0;
border: 0;
}
}
}
}
}
......@@ -570,7 +580,7 @@
.el-input__prefix{
left: 8px;
top: -2px;
top: 3px;
}
.el-input__suffix{
height: 32px;
......@@ -988,7 +998,7 @@
background: rgba(0, 129, 255, 0.16);
font-size: 12px;
line-height: 22px;
top: 149px;
top: 148px;
right: 61px;
cursor: pointer;
.img{
......@@ -1067,3 +1077,5 @@
white-space: nowrap;
padding-right: 10px;
}
.none{display: none}
......@@ -10,7 +10,7 @@
<div class="empty" v-if="tableData.total==0 && isNew == true">
<img src="@/assets/images/project/empty.png">
<div class="p1">添加你的第一位客户吧</div>
<div class="p2">抱歉,你还未添加客户,快去添加吧</div>
<div class="p2">抱歉你还未添加客户,快去添加吧</div>
<div class="btn btn_primary h36 w88" @click="opennew">添加客户</div>
<div class="btn btn_primary btn_shallow h36 w88" @click="pldrs">批量导入</div>
</div>
......@@ -227,56 +227,7 @@
</el-dialog>
</el-card>
</div>
<div class="uploadwin" v-if="pldr">
<div class="upload" v-if="addfile==false">
<div class="up_title">批量导入客户</div>
<div class="up_box">
<el-upload :class="{'none':isUpload == true}"
class="upload-demo"
:action="action"
:multiple="false"
accept=".xls,.xlsx"
drag
ref="upload"
:auto-upload="false"
:file-list="fileList"
:on-change="handleFileListChange"
:headers="headers"
:on-success="onSuccess">
<img class="up_img" src="@/assets/images/project/upload.png">
<div class="up_text">点击选择或将文件(xls,xlsx)拖拽至此上传成员名录</div>
<div class="up_tip">导入的文件内容必须依照下载模板的要求填写</div>
<div class="up_tip">上传文件最大为2M,仅支持Excel表格文件(xls,xlsx)</div>
<div class="up_tip">导入已存在的客户将自动跳过</div>
</el-upload>
<div class="up_success" v-if="isUpload == true">
<img src="@/assets/images/project/success.png">上传成功
</div>
<div class="btn_download" v-if="isUpload == false" @click="downloadClick"><div class="img"></div>点击下载</div>
</div>
<div class="btns">
<div class="btn btn_primary btn_disabled h34" v-if="isUpload==false">确定导入</div>
<div class="btn btn_primary h34" @click="importConfirmClick" v-else>确定导入</div>
<div class="btn btn_default h34">取消</div>
</div>
</div>
<div class="success" v-if="addfile==true">
<div v-if="addsuccess==false">
<img class="img" src="@/assets/images/project/clock.png">
<div class="p1">查询客户中...</div>
<div class="p2">请耐心等待,过程大概30秒</div>
</div>
<div v-if="addsuccess == true">
<div class="p3">
<img src="@/assets/images/project/success.png">查询成功
</div>
<div class="p2">成功导入客户信息</div>
<div class="btns">
<div class="btn btn_primary h32" @click="handleCurrentChange(1)">查看</div>
</div>
</div>
</div>
</div>
<batchimport v-if="pldr" :importtype="types" @cancels="importCancel" @getdatas="handleCurrentChange(1)"></batchimport>
</div>
</template>
......@@ -286,12 +237,15 @@
import {getCustomerList,importData,addCustomer} from '@/api/custom/custom'
import {getEnterprise,getDictType,} from '@/api/main'
import prvinceTree from '@/assets/json/provinceTree'
import batchimport from '../../project/projectList/component/batchImport'
import axios from 'axios'
export default {
name: 'CustomList',
components:{batchimport},
data() {
return{
pldr: false,
types:'custom',
searchParam:{
companyName:'',
pageNum:1,
......@@ -304,9 +258,6 @@ export default {
tipslit:[],//项目标签
tipsvalue:"",//标签填写内容
tableData: [],//列表
isUpload:false,//有上传的文件
addfile:false,//已上传文件
addsuccess:false,//已成功加入数据
companData:[],//联想企业列表
customerLevel:[],//客户等级
......@@ -352,9 +303,9 @@ export default {
},
pldrs(){
this.pldr = true
this.addfile = false
this.isUpload = false
this.addsuccess = false
},
importCancel(){
this.pldr = false
},
//获取客户列表
getCustomerList(){
......@@ -372,6 +323,7 @@ export default {
},
//翻页
handleCurrentChange(val) {
this.pldr=false
this.isNew = false
this.searchParam.pageNum=val
this.getCustomerList()
......@@ -472,35 +424,6 @@ export default {
this.dialogVisible = false
this.showlist = false
},
// 批量导入
importConfirmClick() {
if (this.fileList.length > 0) {
this.$refs["upload"].submit();
this.getCustomerList();
this.addfile = true
} else {
this.$message("请先选择文件");
}
},
downloadClick() {
let a = document.createElement("a");
a.setAttribute("href", "/file/Template.xlsx");
a.setAttribute("download", "批量导入模版.xlsx");
document.body.appendChild(a);
a.click();
},
handleFileListChange(file, fileList) {
if (fileList.length > 0) {
this.fileList = [fileList[fileList.length - 1]];
this.isUpload = true
}
},
onSuccess(res, file, fileList) {
if(res.code == 200 )
this.addsuccess = true
else
this.$message.error({message:res.msg,showClose:true})
},
//地区
async prvinceTree() {
......@@ -617,5 +540,4 @@ export default {
padding-right: 26px;
}
}
.none{display: none}
</style>
......@@ -7,7 +7,7 @@
>
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>添加客户</span>
<span>添加项目</span>
</div>
<el-form class="popform j" :model="queryParam" :rules="rules" ref="ruleForm" label-width="130px">
<el-form-item label="项目名称:" class="row" prop="projectName">
......
<template>
<div class="uploadwin">
<div class="upload" v-if="addfile==false">
<div class="up_title">批量导入{{titletext}}</div>
<div class="up_box">
<el-upload :class="{'none':isUpload == true}"
class="upload-demo"
:action="action"
:multiple="false"
accept=".xls,.xlsx"
drag
ref="upload"
:auto-upload="false"
:file-list="fileList"
:on-change="handleFileListChange"
:headers="headers"
:on-success="onSuccess">
<img class="up_img" src="@/assets/images/project/upload.png">
<div class="up_text">点击选择或将文件(xls,xlsx)拖拽至此上传成员名录</div>
<div class="up_tip">导入的文件内容必须依照下载模板的要求填写</div>
<div class="up_tip">上传文件最大为2M,仅支持Excel表格文件(xls,xlsx)</div>
<div class="up_tip">导入已存在的客户将自动跳过</div>
</el-upload>
<div class="up_success" v-if="isUpload == true">
<img src="@/assets/images/project/success.png">上传成功
</div>
<div class="btn_download" v-if="isUpload == false" @click="downloadClick"><div class="img"></div>点击下载</div>
</div>
<div class="btns">
<div class="btn btn_primary btn_disabled h34" v-if="isUpload==false">确定导入</div>
<div class="btn btn_primary h34" @click="importConfirmClick" v-else>确定导入</div>
<div class="btn btn_default h34" @click="importCancel">取消</div>
</div>
</div>
<div class="success" v-if="addfile==true">
<div v-if="addsuccess==false">
<img class="img" src="@/assets/images/project/clock.png">
<div class="p1">查询客户中...</div>
<div class="p2">请耐心等待,过程大概30秒</div>
</div>
<div v-if="addsuccess == true">
<div class="p3">
<img src="@/assets/images/project/success.png">查询成功
</div>
<div class="p2">成功导入客户信息</div>
<div class="btns">
<div class="btn btn_primary h32" @click="getmsg">查看</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { getToken } from "@/utils/auth";
import "@/assets/styles/project.scss"
import {importData} from '@/api/custom/custom'
export default {
name: 'batchImport',
props:{
importtype:''
},
data(){
return{
isUpload:false,//有上传的文件
addfile:false,//已上传文件
addsuccess:false,//已成功加入数据
//批量导入
action:"",
fileList: [],
headers: {
Authorization: "Bearer " + getToken(),
},
downloadhref:'',//样例地址
titletext:'',
}
},
created(){
console.log(this.importtype )
if(this.importtype == 'project'){//项目管理
this.downloadhref = '/file/projectTemplate.xlsx'
this.titletext = '项目'
this.action = process.env.VUE_APP_BASE_API + '/business/info/upload'
}
if(this.importtype == 'custom'){//客户管理
this.downloadhref = '/file/Template.xlsx'
this.titletext = '客户'
this.action = process.env.VUE_APP_BASE_API + "/customer/importData"
}
},
methods:{
getmsg(){
this.$emit('getdatas')
},
handleFileListChange(file, fileList) {
if (fileList.length > 0) {
this.fileList = [fileList[fileList.length - 1]];
this.isUpload = true
}
},
onSuccess(res, file, fileList) {
if(res.code == 200 )
this.addsuccess = true
else
this.$message.error({message:res.msg,showClose:true})
},
downloadClick() {
let a = document.createElement("a");
a.setAttribute("href", this.downloadhref);
a.setAttribute("download", "批量导入模版.xlsx");
document.body.appendChild(a);
a.click();
},
// 批量导入
importConfirmClick() {
if (this.fileList.length > 0) {
this.$refs["upload"].submit();
this.addfile = true
} else {
this.$message("请先选择文件");
}
},
importCancel(){
this.addfile = false
this.isUpload = false
this.addsuccess = false
this.$emit('cancels')
},
}
}
</script>
<style scoped>
</style>
......@@ -9,26 +9,26 @@
<span>总投资额(万元) :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 1">
<el-input placeholder="待添加" v-model="money" @input="number"></el-input>
<el-input placeholder="待添加" v-model="investmentAmount" @input="number"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" style="width: 56px" @click="changes({'investmentAmount':investmentAmount})">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 1">待添加</span>
<span :class="{'txt':!investmentAmount}" v-else @click="nowedit = 1">{{investmentAmount||'待添加'}}</span>
</div>
</div>
<div class="con i">
<span>资金来源 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 2">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="amountSource"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'amountSource':amountSource})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 2">待添加</span>
<span :class="{'txt':!amountSource}" v-else @click="nowedit = 2">{{amountSource||'待添加'}}</span>
</div>
</div>
</div>
......@@ -37,27 +37,27 @@
<span>建设性质 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 3">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="buildProperty"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'buildProperty':buildProperty})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 3">待添加</span>
<span :class="{'txt':!buildProperty}" v-else @click="nowedit = 3">{{buildProperty||'待添加'}}</span>
</div>
</div>
<div class="con i">
<span>计划招标 :</span>
<div class="inputime">
<div class="flex" style="opacity: 0;height: 0">
<el-date-picker v-if="nowedit == 11" showWordLimit="true"
v-model="value1"
<div class="flex" style="">
<el-date-picker class="timeinput"
v-model="planBidTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="待添加" @change="nowedit = -1">
placeholder="待添加" @change="changes({'planBidTime':planBidTime})">
</el-date-picker>
</div>
<span :class="{'txt':!value1}" @click="nowedit = 11">{{value1||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
<span :class="{'txt':!planBidTime}">{{planBidTime||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
</div>
</div>
</div>
......@@ -66,28 +66,28 @@
<span>计划开工 :</span>
<div class="inputime">
<div class="flex" style="opacity: 0;height: 0">
<el-date-picker v-if="nowedit == 12" showWordLimit="true"
v-model="value1"
<el-date-picker class="timeinput"
v-model="planStartTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="待添加" @change="nowedit = -1">
placeholder="待添加" @change="changes({'planStartTime':planStartTime})">
</el-date-picker>
</div>
<span :class="{'txt':!value1}" @click="nowedit = 12">{{value1||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
<span :class="{'txt':!planStartTime}">{{planStartTime||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
</div>
</div>
<div class="con i">
<span>计划竣工 :</span>
<div class="inputime">
<div class="flex" style="opacity: 0;height: 0">
<el-date-picker v-if="nowedit == 13" showWordLimit="true"
v-model="value1"
<el-date-picker class="timeinput"
v-model="planCompleteTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="待添加" @change="nowedit = -1">
placeholder="待添加" @change="changes({'planCompleteTime':planCompleteTime})">
</el-date-picker>
</div>
<span :class="{'txt':!value1}" @click="nowedit = 13">{{value1||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
<span :class="{'txt':!planCompleteTime}">{{planCompleteTime||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
</div>
</div>
</div>
......@@ -96,10 +96,10 @@
<el-card class="box-card noborder">
<div class="cardtitles">项目概况与建设规模</div>
<div class="baseinfo">
<el-input v-model="textarea" @focus="nowedit = 9" class="textarea" type="textarea" placeholder="请输入项目概况与建设规模详细信息" maxlength="500" show-word-limit="true" ></el-input>
<el-input v-model="projectDetails" @focus="nowedit = 9" class="textarea" type="textarea" placeholder="请输入项目概况与建设规模详细信息" maxlength="500" :show-word-limit="true" ></el-input>
<div class="flex btns" v-if="nowedit == 9">
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'projectDetails':projectDetails})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
......@@ -113,27 +113,27 @@
<span>评标办法 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 4">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="evaluationBidWay"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'evaluationBidWay':evaluationBidWay})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 4">待添加</span>
<span :class="{'txt':!evaluationBidWay}" v-else @click="nowedit = 4">{{evaluationBidWay||'待添加'}}</span>
</div>
</div>
<div class="con i">
<span>开标时间 :</span>
<div class="inputime">
<div class="flex" style="opacity: 0;height: 0">
<el-date-picker v-if="nowedit == 14" showWordLimit="true"
v-model="value1"
<el-date-picker class="timeinput"
v-model="bidOpenTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="待添加" @change="nowedit = -1">
placeholder="待添加" @change="changes({'bidOpenTime':bidOpenTime})">
</el-date-picker>
</div>
<span :class="{'txt':!value1}" @click="nowedit = 14">{{value1||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
<span :class="{'txt':!bidOpenTime}">{{bidOpenTime||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
</div>
</div>
</div>
......@@ -142,26 +142,26 @@
<span>保证金缴纳 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 5">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="earnestMoneyPay"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'earnestMoneyPay':earnestMoneyPay})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 5">待添加</span>
<span :class="{'txt':!earnestMoneyPay}" v-else @click="nowedit = 5">{{earnestMoneyPay||'待添加'}}</span>
</div>
</div>
<div class="con i">
<span>保证金金额(万元) :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 6">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="earnestMoney"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'earnestMoney':earnestMoney})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 6">待添加</span>
<span :class="{'txt':!earnestMoney}" v-else @click="nowedit = 6">{{earnestMoney||'待添加'}}</span>
</div>
</div>
</div>
......@@ -170,26 +170,26 @@
<span>开标地点 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 7">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="bidOpenPlace"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'bidOpenPlace':bidOpenPlace})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 7">待添加</span>
<span :class="{'txt':!bidOpenPlace}" v-else @click="nowedit = 7">{{bidOpenPlace||'待添加'}}</span>
</div>
</div>
<div class="con i">
<span>评标委员会 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 8">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="evaluationBidCouncil"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'evaluationBidCouncil':evaluationBidCouncil})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 8">待添加</span>
<span :class="{'txt':!evaluationBidCouncil}" v-else @click="nowedit = 8">{{evaluationBidCouncil||'待添加'}}</span>
</div>
</div>
</div>
......@@ -200,28 +200,67 @@
<script>
import "@/assets/styles/project.scss"
import {getJSNR,editXMSL} from '@/api/project/project'
export default {
name: 'jsnr',
data(){
return{
textarea:"",
nowedit:-1,//当前正在编辑的文本
value1:'',
money:'',
id:parseInt(this.$route.query.id),
investmentAmount: '',//总投资额
amountSource: '',//资金来源
buildProperty: '',//建设性质
planBidTime: '',//计划招标
planStartTime: '',//计划开工
planCompleteTime: '',//计划竣工
projectDetails: '',//项目概况与建设规模
evaluationBidWay: '',//评标办法
bidOpenTime: '',//开标时间
bidOpenPlace: '',//开标地点
earnestMoney: '',//保证金金额
earnestMoneyPay: '',//保证金缴纳
evaluationBidCouncil: '',//评标委员会
}
},
watch:{
// nowedit(oldvalue,newvalue){
// if (newvalue == 13){
// this.$ref.newvalue13.=true
// }
// }
},
created(){
this.getJSNR()
},
methods:{
getJSNR(){
getJSNR(this.id).then(result=>{
this.investmentAmount = result.data.investmentAmount//总投资额
this.amountSource = result.data.amountSource//资金来源
this.buildProperty = result.data.buildProperty//建设性质
this.planBidTime = result.data.planBidTime//计划招标
this.planStartTime = result.data.planStartTime//计划开工
this.planCompleteTime = result.data.planCompleteTime//计划竣工
this.projectDetails = result.data.projectDetails//项目概况与建设规模
this.evaluationBidWay = result.data.evaluationBidWay//评标办法
this.bidOpenTime = result.data.bidOpenTime//开标时间
this.bidOpenPlace = result.data.bidOpenPlace//开标地点
this.earnestMoney = result.data.earnestMoney//保证金金额
this.earnestMoneyPay = result.data.earnestMoneyPay//保证金缴纳
this.evaluationBidCouncil = result.data.evaluationBidCouncil//评标委员会
})
},
changes(str){
this.nowedit = -1
let param = str
param.id = this.id
editXMSL(param).then(result=>{
if(result.code == 200)
this.$message.success('修改成功')
else{
this.getJSNR()
}
})
},
//输入数字
number(value){
console.log(value)
this.money = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
this.investmentAmount = this.investmentAmount == ""||this.investmentAmount == null? value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1'):null//输入6位小数
},
}
}
......
......@@ -13,12 +13,12 @@
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>
<div class="p2">抱歉你还未添加相关数据,快去添加吧</div>
<div class="btn btn_primary h36 w102" @click="opennew">新增联系人</div>
</div>
</template>
<el-table-column
prop="date"
prop="name"
label="姓名"
width="113">
</el-table-column>
......@@ -27,34 +27,34 @@
label="操作"
width="118">
<template slot-scope="scope">
<div class="edit">
<div class="edit" @click="getDetail(scope.row)">
<img src="@/assets/images/project/edit.png">
<span>编辑</span>
</div>
</template>
</el-table-column>
<el-table-column
prop="name"
prop="role"
label="角色"
sortable
width="146">
</el-table-column>
<el-table-column
prop="address"
prop="office"
label="公司/机关">
</el-table-column>
<el-table-column
prop="name"
prop="position"
label="职位"
width="125">
</el-table-column>
<el-table-column
prop="name"
prop="phone"
label="联系方式"
width="175">
</el-table-column>
<el-table-column
prop="name"
prop="accendant"
label="内部维护人"
width="146">
</el-table-column>
......@@ -63,11 +63,11 @@
<div class="btn btn_primary h28" @click="opennew"><div class="img img1"></div>新增联系人</div>
<el-pagination
background
:page-size="20"
:current-page="1"
:page-size="searchParam.pageSize"
:current-page="searchParam.pageNum"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="1000">
:total="total">
</el-pagination>
</div>
</div>
......@@ -77,33 +77,30 @@
width="464px">
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>重庆市轨道交通3号线二期工程4标段施工总承包</span>
<span>{{projectname}}</span>
</div>
<el-form class="popform" label-width="137px">
<el-form-item label="联系人姓名:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-input type="text" v-model="queryParam.name" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人角色:" class="row">
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
<el-input type="text" v-model="queryParam.role" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人职位:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-input type="text" v-model="queryParam.position" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人公司/机关:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-input type="text" v-model="queryParam.office" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="内部维护人:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-input type="text" v-model="queryParam.accendant" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系方式:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-input type="text" v-model="queryParam.phone" placeholder="请输入"></el-input>
</el-form-item>
<div class="popbot">
<div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">保存</div>
<div class="btn btn_primary h32" @click="save">保存</div>
</div>
</el-form>
</el-dialog>
......@@ -113,40 +110,68 @@
<script>
import "@/assets/styles/project.scss"
import {getLXR,editLXR,addLXR} from '@/api/project/project'
export default {
name: 'lxr',
data(){
return{
dialogVisible:false,
isnew:true,//是否新增
textarea:"",
nowedit:-1,//当前正在编辑的文本
tipslit:[],//项目标签
tipsvalue:"",//标签填写内容
tableData: [
{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}
]
tableData: [],
searchParam:{
pageNum:1,
pageSize:20,
businessId:this.$route.query.id
},
id:this.$route.query.id,
total:0,
projectname:this.$route.query.projectname,
queryParam:[],
}
},
created(){
this.getList()
},
methods:{
getDetail(item){
this.dialogVisible = true
this.queryParam = item
this.isnew = false
},
getList(){
getLXR(this.searchParam).then(result=>{
this.tableData = result.code == 200?result.rows:[]
this.total = result.code == 200?result.total:0
})
},
save(){
if(this.isnew == false){
editLXR(this.queryParam).then(result=>{
if(result.code == 200){
this.$message.success('保存成功!')
this.getList()
this.dialogVisible = false
}
})
}
if(this.isnew == true){
addLXR(this.queryParam).then(result=>{
if(result.code == 200){
this.$message.success('新增成功!')
this.getList()
this.dialogVisible = false
}
})
}
},
//翻页
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.searchParam.pageNum = val
this.getList()
},
cancel(){
this.dialogVisible = false
......@@ -154,6 +179,16 @@
//打开新建窗口
opennew(){
this.dialogVisible = true
this.isnew = true
this.queryParam = {
businessId:this.id,
name:"",
role:"",
office:"",
position:"",
phone:"",
accendant:"",
}
},
}
}
......
......@@ -22,7 +22,7 @@
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>
<div class="p2">抱歉你还未添加相关数据,快去添加吧</div>
<div class="btn btn_primary h36 w102" @click="opennew">新增联系人</div>
</div>
</template>
......
......@@ -169,8 +169,12 @@
<script>
import "@/assets/styles/project.scss"
import {getDictType,} from '@/api/main'
import {} from '@/api/project/project'
export default {
name: 'xmsl',
props:{
datas:'',
},
data(){
return{
nowedit:-1,//当前正在编辑的文本
......@@ -178,10 +182,10 @@
tipsvalue:"",//标签填写内容
xmjd:'待添加',
projectStage:[],//项目阶段
sldata:this.datas,
}
},
created(){
//项目阶段
getDictType('project_stage_type').then(result=>{
this.projectStage = result.code == 200 ? result.data:[]
......
......@@ -49,7 +49,7 @@
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>
<div class="p2">抱歉你还未添加相关数据,快去添加吧</div>
<div class="btn btn_primary h36 w102" @click="opennew">新增联系人</div>
</div>
</template>
......
......@@ -103,7 +103,7 @@
</div>
</el-card>
<!--项目概览-->
<xmsl v-if="thistag == 'xmsl'"></xmsl>
<xmsl v-if="thistag == 'xmsl'" :datas="ProjectData"></xmsl>
<!--建设内容-->
<jsnr v-if="thistag == 'jsnr'"></jsnr>
<!--联系人-->
......@@ -132,6 +132,7 @@
import zlwd from './component/zlwd.vue'
import xgqy from './component/xgqy.vue'
import prvinceTree from '@/assets/json/provinceTree'
import {getXMSL} from '@/api/project/project'
export default {
name: 'detail',
components: {xmsl,jsnr,lxr,gjjl,gzdb,zlwd,xgqy},
......@@ -161,10 +162,13 @@
addressList:[],
domicile:[],
props:{ checkStrictly: true, expandTrigger: 'hover' },
id:'',
ProjectData:null,
}
},
created(){
this.prvinceTree()
this.id = this.$route.query.id
//项目阶段
getDictType('project_stage_type').then(result=>{
this.projectStage = result.code == 200 ? result.data:[]
......@@ -177,6 +181,12 @@
getDictType('project_category').then(result=>{
this.projectCategory = result.code == 200 ? result.data:[]
})
//获取基本信息
getXMSL(this.id).then(result=>{
this.ProjectData = result.code==200?result.data:[]
this.$route.query.projectname = result.data.projectName
})
},
methods: {
//地区
......
......@@ -3,7 +3,7 @@
<el-card class="box-card noborder">
<div class="btns">
<div class="btn btn_default h28" @click="addNew(true)"><div class="img img1"></div>新建项目商机</div>
<div class="btn btn_primary h28"><div class="img img2"></div>批量导入</div>
<div class="btn btn_primary h28" @click="pldrs"><div class="img img2"></div>批量导入</div>
</div>
<el-tabs v-model="activeName" @tab-click="handleClick" class="tabpane w100">
<el-tab-pane label="我参与的项目" name="first"></el-tab-pane>
......@@ -19,8 +19,8 @@
地区团队
</span>
<div class="select-popper">
<span :class="{ color_text:searchParam.province.length ||searchParam.city.length ||searchParam.area.length,}">
项目地区{{searchParam.province.length ||searchParam.city.length ||searchParam.area.length? searchParam.province.length +searchParam.city.length +searchParam.area.length +"项": ""}}
<span :class="{ color_text:searchParam.provinceId.length ||searchParam.cityId.length ||searchParam.districtId.length,}">
项目地区{{searchParam.provinceId.length ||searchParam.cityId.length ||searchParam.districtId.length? searchParam.provinceId.length +searchParam.cityId.length +searchParam.districtId.length +"项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-cascader class="cascader-region select-location"
......@@ -98,14 +98,23 @@
<el-card class="box-card noborder overflows">
<div class="titles">项目明细
<div class="dc">
<div class="total">126</div>
<div class="total">{{total}}</div>
<div class="btn-export"><img src="@/assets/images/EXCEL.png">导出EXCEL</div>
</div>
</div>
<div class="tables" v-if="total == 0">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">添加你的第一个项目吧</div>
<div class="p2">抱歉,你还未添加项目,快去添加吧</div>
<div class="btn btn_primary h36 w88" @click="addNew(true)">新建商机</div>
<div class="btn btn_primary btn_shallow h36 w88" @click="pldrs">批量导入</div>
</div>
</div>
<div class="datalist">
<div class="datali">
<div class="det-title" @click="toDetail()">轨道交通13号线扩能提升工程<span class="people"><i>A</i>四川-李丽 <font color="#FA8A00">正在跟进</font></span></div>
<div class="det-tips"><span class="tips tip1">轨道交通</span><span class="tips tip2">江西省-南昌市</span></div>
<div class="datali" v-for="(item,index) in datalist">
<div class="det-title" @click="toDetail(item.id)">{{item.projectName}}<span v-if="activeName!='first'" class="people"><i>A</i>四川-李丽 <font color="#FA8A00" v-if="activeName!='first'">正在跟进</font></span></div>
<div class="det-tips"><span class="tips tip1" v-if="item.label">{{item.label}}</span><span v-if="item.address" class="tips tip2">{{item.address}}</span></div>
<div class="det-contets">
<div class="det-con">
<span>项目类型:</span>
......@@ -113,35 +122,48 @@
</div>
<div class="det-con">
<span>投资估算(万元):</span>
<span>21</span>
<span>{{item.investmentAmount}}</span>
</div>
<div class="det-con">
<span>最后跟进时间:</span>
<span>2013-02-19</span>
<span>{{item.followTime || '--'}}</span>
</div>
<div class="det-con">
<span>业主单位:</span>
<span class="wordprimary">重庆市交通开发投资(集团)有限公司</span>
<span class="wordprimary">{{item.ownerCompany}}</span>
</div>
</div>
<el-divider></el-divider>
<div class="operates">
<div class="operates" v-if="activeName=='first'">
<div class="i1"><img src="@/assets/images/follow.png">跟进</div>
<div class="i2"><img src="@/assets/images/edit.png">编辑</div>
<div class="i3"><img src="@/assets/images/delete.png">删除</div>
<div class="i3" @click="deldetail(index)"><img src="@/assets/images/delete.png">删除</div>
</div>
<div class="delform">
<div class="delform" v-if="activeName=='first' && ondel == index">
<div class="words">是否将项目删除</div>
<div>
<div class="btnsmall btn_primary h28">确定</div>
<div class="btnsmall btn_cancel h28">取消</div>
<div class="btnsmall btn_primary h28" @click="deleteProject(item.id)">确定</div>
<div class="btnsmall btn_cancel h28" @click="ondel = -1">取消</div>
</div>
</div>
</div>
</div>
<div class="tables">
<div class="bottems" v-if="total>0">
<el-pagination
background
:page-size="searchParam.pageSize"
:current-page="searchParam.pageNum"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
</div>
</el-card>
<addproject v-if="isshow" @addproject="add" @cancel="addNew"></addproject>
<batchimport v-if="pldr" :importtype="types" @cancels="cancelimport" @getdatas="getdatas"></batchimport>
</div>
</template>
......@@ -149,18 +171,21 @@
import "@/assets/styles/project.scss"
import "@/assets/styles/public.css"
import prvinceTree from '@/assets/json/provinceTree'
import {getProjectlist} from '@/api/project/project'
import {getProjectlist,delProject} from '@/api/project/project'
import {getDictType,} from '@/api/main'
import addproject from './component/addProject'
import batchimport from './component/batchImport'
export default {
name: 'ProjectList',
components:{addproject},
components:{addproject,batchimport},
data() {
return {
types:'project',
props:{multiple: true},
activeName:'first',
projectStage:[],//项目阶段
isshow:false,//新增商机
pldr:false,//批量导入
//项目地区
addressList:[],
addressType: [],
......@@ -168,6 +193,7 @@ export default {
minAmount:'',//投资估算最小值
maxAmount:'',//投资估算最大值
searchParam: {
userId:null,//个人项目需传,公司项目不传
projectName:'',//项目名称
ownerCompany:'',//业主单位
projectType:'',//项目类型
......@@ -175,9 +201,9 @@ export default {
minAmount:'',//投资估算最小值
maxAmount:'',//投资估算最大值
Amount:'',//投资估算
province: [],
city: [],
area: [],
provinceId: [],
cityId: [],
districtId: [],
pageNum:1,
pageSize:10,
},
......@@ -204,6 +230,9 @@ export default {
],
contractSignTimeValue: "",
transactionPriceShowPopper: false,
datalist:[],//列表数据
ondel:-1,
total:0,
}
},
created() {
......@@ -223,17 +252,55 @@ export default {
})
},
methods: {
deldetail(index){
this.ondel = index
},
deleteProject(id){
delProject(id).then(result =>{
if(result.code==200){
this.$message.success('删除成功!')
this.getList(1)
this.ondel = -1
}else{
this.$message.error(result.msg)
}
})
},
getdatas(){
this.getList(1)
},
cancelimport(){
this.pldr = false
},
pldrs(){
this.pldr = true
},
//获取商机列表
getList(pageNum){
this.searchParam.pageNum = pageNum
console.log(this.searchParam)
// return false
if(this.activeName == 'first'){
this.searchParam.userId = this.$store.state.user.userId
}else{
this.searchParam.userId = null
}
getProjectlist(this.searchParam).then(result=>{
console.log(result)
if(result.code == 200){
this.datalist = result.rows
this.total = result.total
this.datalist.forEach(item=>{
let str = item.provinceName
if(item.cityName != "" && item.cityName != null)
str += '-' +item.cityName
if(item.districtName != ""&& item.districtName != null)
str += '-' +item.districtName
item.address = str
})
}
})
},
reset(){
this.searchParam ={
userId:null,
projectName:'',//项目名称
ownerCompany:'',//业主单位
projectType:'',//项目类型
......@@ -241,9 +308,9 @@ export default {
minAmount:'',//投资估算最小值
maxAmount:'',//投资估算最大值
Amount:'',//投资估算
province: [],
city: [],
area: [],
provinceId: [],
cityId: [],
districtId: [],
pageNum:1,
pageSize:10,
}
......@@ -287,9 +354,8 @@ export default {
this.isshow = false
this.getList(1)
},
toDetail(){
let Id = '111'
this.$router.push({ path: '/project/projectList/detail', query: Id });
toDetail(id){
this.$router.push({ path: '/project/projectList/detail', query: {id:id} });
},
handleClick(){
......@@ -299,27 +365,27 @@ export default {
// var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels;
let arr = this.$refs.myCascader.getCheckedNodes();
// console.log(arr)
let province = [],
city = [],
area = [];
let provinceId = [],
cityId = [],
districtId = [];
this.domicile = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
arr[i].hasChildren && city.push(arr[i].value);
arr[i].hasChildren && cityId.push(arr[i].value);
arr[i].hasChildren && this.domicile.push(arr[i].label);
!arr[i].hasChildren && area.push(arr[i].value);
!arr[i].hasChildren && districtId.push(arr[i].value);
!arr[i].hasChildren && this.domicile.push(arr[i].label);
}
} else {
province.push(arr[i].value);
provinceId.push(arr[i].value);
this.domicile.push(arr[i].label);
}
}
var obj = JSON.parse(JSON.stringify(this.searchParam));
obj.province = province;
obj.city = city;
obj.area = area;
obj.provinceId = provinceId;
obj.cityId = cityId;
obj.districtId = districtId;
this.searchParam = obj;
},
......@@ -358,6 +424,11 @@ export default {
this.searchParam = obj;
}
},
//翻页
handleCurrentChange(val) {
this.getList(val)
},
}
}
</script>
......@@ -542,4 +613,7 @@ export default {
padding: 0;
}
}
.btn{
padding: 0 12px;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment