Commit 9a3a93f3 authored by 华国豪's avatar 华国豪 🙄

新增合同修改部分样式问,合并css

parent 5e1efea0
......@@ -24,6 +24,7 @@
"vue-chartjs": "^3.5.0",
"vue-echarts-v3": "^1.0.19",
"vue-lazyload": "^1.2.6",
"vue-quill-editor": "^3.0.6",
"vue-router": "^3.0.1",
"vue2.0-zoom": "^2.1.1",
"vuex": "^3.0.1",
......
......@@ -28,7 +28,7 @@ export default {
<style>
@import './assets/global/font.css';
@import '//at.alicdn.com/t/font_1627123_3p2i0yd7sda.css';
@import '//at.alicdn.com/t/font_1627123_p3nwdbzx6c.css';
/* @import './assets/css/common.css'; */
@import './assets/css/init.css';
@import './assets/css/tablevoerride.css';
......
.Record{
height: 100%;
overflow: auto;
background-color: white;
padding: 20px;
box-sizing: border-box;
}
.ha-cont{
display: flex;
align-items: center;
font-size: 12px;
position: relative;
line-height: 20px;
min-height: 40px;
padding-top: 3px;
}
.ha-cont .ha-week{
margin: 0 17px 0 10px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #777;
width: 80px;
}
.ha-cont .ha-circle{
-ms-flex-negative: 0;
flex-shrink: 0;
width: 10px;
height: 10px;
z-index: 2;
border-radius: 9px;
background-color: #fff;
border: 5px solid #a5ecd7;
}
.ha-cont .ha-time{
padding: 0 10px 0 24px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #aaa;
}
.ha-cont .ha-name {
padding: 0 10px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #333;
}
.ha-cont .ha-content{
padding: 0 10px 10px;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
color: #333;
}
.ha-cont .ha-line{
position: absolute;
z-index: 1;
width: 1px;
top: 3px;
bottom: -3px;
left: 9px;
background-color: #e6e6e6;
}
.nodata{
text-align: center;
font-size: 12px;
}
\ No newline at end of file
......@@ -24,7 +24,7 @@ table { border-collapse:collapse; border-spacing:0; }
}
.crm-btn.el-button{
border-radius: 0;
padding: 8px 10px;
padding: 12px 10px;
text-align: center;
margin-right: 20px;
}
......@@ -68,12 +68,15 @@ table { border-collapse:collapse; border-spacing:0; }
color: rgba(255, 164, 117, .8) !important;
}
.crm-btn.crm-btn-more{
padding: 7px 10px;
padding: 11px 15px;
width: auto;
}
.el-input__inner{
border-radius: 0 !important;
}
.el-input-group__append{
border-radius: 0 !important;
}
.MyEditForm .el-form-item .label {
font-size: 10px;
color: #888888;
......@@ -154,7 +157,7 @@ table { border-collapse:collapse; border-spacing:0; }
/* 字体颜色 */
.font-color-link{
color: #2362fb!important;
color: #409eff !important;
}
.font-color-link:hover,.underline:hover{
text-decoration: underline;
......
......@@ -11,7 +11,7 @@
<div class="icon">
<i class="iconfont iconVerifiedcustomername"></i>
</div>
<div class="title">客户</div>
<div class="title">客户</div>
<div class="result">10</div>
<div class="eq">
较上月
......@@ -23,7 +23,7 @@
<div class="icon orange">
<i class="iconfont iconlianxiren"></i>
</div>
<div class="title">联系人</div>
<div class="title">联系人</div>
<div class="result">30</div>
<div class="eq">
较上月
......@@ -35,7 +35,7 @@
<div class="icon green">
<i class="iconfont iconshangji-"></i>
</div>
<div class="title">商机</div>
<div class="title">商机</div>
<div class="result">5</div>
<div class="eq">
较上月
......@@ -47,7 +47,7 @@
<div class="icon blue">
<i class="iconfont icondingdan"></i>
</div>
<div class="title">订单</div>
<div class="title">订单</div>
<div class="result">9</div>
<div class="eq">
较上月
......@@ -71,7 +71,7 @@
<div class="icon zi">
<i class="iconfont iconmoney"></i>
</div>
<div class="title">收款</div>
<div class="title">收款</div>
<div class="result">200,000</div>
<div class="eq">
较上月
......@@ -83,7 +83,7 @@
<div class="icon yellow">
<i class="iconfont iconbaifang"></i>
</div>
<div class="title">拜访</div>
<div class="title">拜访</div>
<div class="result">9</div>
<div class="eq">
较上月
......@@ -95,7 +95,7 @@
<div class="icon grey">
<i class="iconfont icongenjin"></i>
</div>
<div class="title">跟进</div>
<div class="title">跟进</div>
<div class="result">30</div>
<div class="eq">
较上月
......@@ -163,7 +163,7 @@
<div class="icon"></div>
<div class="item-name">客户汇总</div>
<div class="item-hui">
客户
客户
<b>0</b>
</div>
<div class="item-hui">
......@@ -179,7 +179,7 @@
<b>0</b>
</div>
<div class="item-hui">
客户中未跟进
客户中未跟进
<b>0</b>
</div>
</div>
......@@ -187,7 +187,7 @@
<div class="icon blue"></div>
<div class="item-name">商机汇总</div>
<div class="item-hui">
商机
商机
<b>0</b>
</div>
<div class="item-hui">
......@@ -199,7 +199,7 @@
<div class="icon zi"></div>
<div class="item-name">订单汇总</div>
<div class="item-hui">
订单
订单
<b>0</b>
</div>
<div class="item-hui">
......@@ -290,8 +290,8 @@
<el-col :span="12" class="option-item" style="">
<el-select v-model="rankType" size="mini" style="width:120px;" placeholder="请选择">
<el-option label="销售额排名" value="1"></el-option>
<el-option label="新客户排名" value="2"></el-option>
<el-option label="新商机排名" value="3"></el-option>
<el-option label="新客户排名" value="2"></el-option>
<el-option label="新商机排名" value="3"></el-option>
</el-select>
</el-col>
</el-row>
......
......@@ -67,12 +67,12 @@
class="home-menu-item"
v-for="(item, index) in navList"
:key="index"
:class="[index === activeIndex ? 'active' : '', activeIndex === index + 1 ? 'shang' : '']"
:class="[index === activeIndex ? 'active' : '']"
@click="changeMenu(item, index)"
>
<div>
<i :class="item.class"></i>
<span>{{item.name}}</span>
<i :class="[item.MenuStyle ? JSON.parse(item.MenuStyle).icon : '']"></i>
<span>{{item.MenuName}}</span>
</div>
</li>
</ul>
......@@ -135,6 +135,9 @@ export default {
};
},
mounted() {
let userInfo = this.getLocalStorage()
this.userInfo = userInfo
this.navList = userInfo.UserMenu[0].ChildMenu[0].ChildMenu
let $this = this
this.MsgBus.$on('setLeftNav', function (val){
$this.activeIndex = val;
......@@ -144,7 +147,7 @@ export default {
changeMenu: function(item, ind) {
this.activeIndex = ind;
this.$router.push({
path: item.path
path: item.MenuUrl
});
}
}
......
......@@ -77,8 +77,8 @@
<div class="nav-right">
<div class="nav-right-menu">
<ul>
<li :class="{'active':chosenMenuId==item.id}" v-for="(item, index) in menuList" :key="index" @click="chosenFirstLeaveMenu(item)">
<i class="iconfont" :class="[item.icon]"></i>{{item.name}}
<li :class="{'active':chosenMenuId==item.MenuId}" v-for="(item, index) in menuList[0].ChildMenu" :key="index" @click="chosenFirstLeaveMenu(item, index)">
<i class="iconfont" :class="[item.MenuStyle ? JSON.parse(item.MenuStyle).icon : '']"></i>{{item.MenuName}}
</li>
</ul>
</div>
......@@ -104,38 +104,7 @@ export default {
return {
activeIndex: 0,
value: 0,
menuList: [
{
id:1,
name: "客户管理",
path: "/Home",
icon: "iconcompany"
},
{
id:2,
name: "任务/审批",
path: "/home",
icon: "icontask"
},
{
id:3,
name: "日志",
path: "/home",
icon: "iconlog"
},
{
id:4,
name: "通讯录",
path: "/home",
icon: "icontongxunlu"
},
{
id:5,
name: "智能分析",
path: "/home",
icon: "iconareachart"
}
],
menuList: [{ChildMenu: []}],
chosenMenuId: 0,
userInfo: {
EmName: '',
......@@ -146,14 +115,16 @@ export default {
mounted() {
let userInfo = this.getLocalStorage()
this.userInfo = userInfo
this.menuList = userInfo.UserMenu
this.chosenMenuId = userInfo.UserMenu[0].ChildMenu[0].MenuId
},
methods: {
chosenFirstLeaveMenu(item){
chosenFirstLeaveMenu(item, index){
this.chosenMenuId = item.id
this.MsgBus.$emit('setLeftNav', 0)
this.$router.push({
path: item.path
});
// this.$router.push({
// path: item.path
// });
},
errorHandler() {
return true;
......
......@@ -280,19 +280,19 @@ export default {
return {
newCast: [
{
name: '新客户',
name: '新客户',
num: 50
},{
name: '新联系人',
name: '新联系人',
num: 11
},{
name: '新商机',
name: '新商机',
num: 467
},{
name: '阶段变化的商机',
num: 1
},{
name: '新合同',
name: '新合同',
num: 39
}
],
......
......@@ -324,7 +324,7 @@
</el-form>
<div v-if="gjImgList.length" style="margin-bottom: 15px;">
<div class="img-box">
<div v-for="(item, index) in gjImgList" :key="index" class="img-item" :style="{'background-image': `url(${item.url})`}">
<div v-for="(item, index) in gjImgList" :key="index" class="img-item" :style="{'background-image': `url(${item.url})`}" @click="previewFile(item.url)">
<div class="img-item-del" @click="deleteImg(index)">×</div>
</div>
<el-upload
......@@ -413,13 +413,13 @@
<p class="mb-10">{{subItem.LogInfo}}</p>
<p class="xg-lxr"><span class="font-color-info">相关联系人:</span> <span>{{subItem.CustomerFollowUpModel.ContactName}}</span></p>
<div class="img-box mb-10" v-if="subItem.CustomerFollowUpModel.FollowUpImgList">
<div v-for="(img, imgIndex) in subItem.CustomerFollowUpModel.FollowUpImgList" :key="imgIndex" class="img-box-item" :style="`background-image:url(${img.FileUrl})`"></div>
<div v-for="(img, imgIndex) in subItem.CustomerFollowUpModel.FollowUpImgList" :key="imgIndex" class="img-box-item" :style="`background-image:url(${img.FileUrl})`" @click="previewFile(img.FileUrl)"></div>
</div>
<div class="mb-10" v-if="subItem.CustomerFollowUpModel.FollowUpFileList" style="display: flex;">
<div>附件:</div>
<div class="font-color-info">附件:</div>
<div>
<p v-for="(file, fileIndex) in subItem.CustomerFollowUpModel.FollowUpFileList" :key="fileIndex">
<span class="font-color-info">&nbsp;&nbsp;{{file.FileName}} </span>&nbsp;&nbsp;&nbsp;&nbsp;
<span >&nbsp;&nbsp;{{file.FileName}} </span>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="font-color-link cp" @click="previewFile(file.FileUrl)"> 预览</span>
</p>
</div>
......@@ -437,6 +437,7 @@
<div v-if="addContactsShow">
<addContacts :ID="CustomerId" @addContactsOk="addContactsOk"/>
</div>
</div>
</template>
<script>
......@@ -551,7 +552,15 @@ export default {
this.GetLogPageList()
},
methods: {
addBusiness(){
let $this= this
this.MsgBus.$emit('addBusinessBoxOpen', $this.CustomerId, 0)
},
previewFile(file) {
if (file.IsPicture()) {
this.MsgBus.$emit('showImg', file)
return
}
window.open(file, "_blank");
},
GetLogPageList(t){
......@@ -714,6 +723,8 @@ export default {
this.addContactsShow = true
} else if (param.id < 3) {
this.type = param.id
} else if (param.id === 4) {
this.addBusiness()
}
}
}
......
......@@ -41,7 +41,7 @@
show-overflow-tooltip>
<template slot-scope="scope">
<p v-if="scope.row.IsFirstContact === 1" class="font-color-warning">首要联系人</p>
<p v-else class="font-color-link cp" @click="SetFirstContact(scope)">设为首要联系人</p>
<p v-else-if="IsRead === 0 && scope.row.IsFirstContact !== 1" class="font-color-link cp" @click="SetFirstContact(scope)">设为首要联系人</p>
</template>
</el-table-column>
</el-table>
......@@ -60,6 +60,10 @@ export default {
CustomerId: {
type: Number,
default: 0
},
IsRead: {
type: Number,
default: 0
}
},
data() {
......
<style>
.Record{
height: 100%;
overflow: auto;
background-color: white;
padding: 10px;
box-sizing: border-box;
}
.ha-cont{
display: flex;
align-items: center;
font-size: 12px;
position: relative;
line-height: 20px;
min-height: 40px;
padding-top: 3px;
}
.ha-cont .ha-week{
margin: 0 17px 0 10px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #777;
width: 80px;
}
.ha-cont .ha-circle{
-ms-flex-negative: 0;
flex-shrink: 0;
width: 10px;
height: 10px;
z-index: 2;
border-radius: 9px;
background-color: #fff;
border: 5px solid #a5ecd7;
}
.ha-cont .ha-time{
padding: 0 10px 0 24px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #aaa;
}
.ha-cont .ha-name {
padding: 0 10px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #333;
}
.ha-cont .ha-content{
padding: 0 10px 10px;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
color: #333;
}
.ha-cont .ha-line{
position: absolute;
z-index: 1;
width: 1px;
top: 3px;
bottom: -3px;
left: 9px;
background-color: #e6e6e6;
}
.nodata{
text-align: center;
font-size: 12px;
}
@import '../../assets/css/Record.css';
</style>
<template>
<div class="Record" id="Record">
......
......@@ -7,9 +7,9 @@
<template>
<div class="addTeamman">
<div class="addTeamman-ctrl">
<el-button icon="el-icon-plus" class="crm-btn crm-btn-mini query-btn" @click="addTeammanShow=true">团队成员</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="bianji">编辑</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="yichu">移除</el-button>
<el-button icon="el-icon-plus" class="crm-btn crm-btn-mini query-btn" @click="addTeammanShow=true" v-if="IsRead === 0">团队成员</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="bianji" v-if="IsRead === 0">编辑</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="yichu" v-if="IsRead === 0">移除</el-button>
<el-button class="crm-btn query-btn crm-btn-mini org-btn margin-right0" @click="tuichu">退出团队</el-button>
</div>
<el-table
......@@ -72,6 +72,10 @@ export default {
CustomerId: {
type: Number,
default: 0
},
IsRead: {
type: Number,
default: 0
}
},
data() {
......
......@@ -69,9 +69,9 @@
<p>{{detailsData.CustomerName}}</p>
</div>
<div class="right">
<el-button class="crm-btn query-btn" @click="editCust">编辑</el-button>
<el-button class="crm-btn easy-btn iconfont iconwancheng">更改成交状态</el-button>
<el-dropdown @command="handleCommand" style="top: 1px;">
<el-button class="crm-btn query-btn" @click="editCust" v-if="detailsData.IsRead === 0">编辑</el-button>
<el-button class="crm-btn easy-btn iconfont iconwancheng" v-if="detailsData.IsRead === 0">更改成交状态</el-button>
<el-dropdown @command="handleCommand" style="top: 1px;" v-if="detailsData.IsRead === 0">
<el-button class="crm-btn crm-btn-more easy-btn margin-right0">
<i class="iconfont icongengduo"></i>
</el-button>
......@@ -113,10 +113,10 @@
<Details v-if="activeName === '2'" :detailsData="detailsData"/>
</el-tab-pane>
<el-tab-pane label="联系人" name="3">
<Contacts v-if="activeName === '3'" :CustomerId="CustomerId" />
<Contacts v-if="activeName === '3'" :CustomerId="CustomerId" :IsRead="detailsData.IsRead"/>
</el-tab-pane>
<el-tab-pane label="团队成员" name="4">
<TeamMembers v-if="activeName === '4'" :CustomerId="CustomerId"/>
<TeamMembers v-if="activeName === '4'" :CustomerId="CustomerId" :IsRead="detailsData.IsRead"/>
</el-tab-pane>
<el-tab-pane label="商机" name="5">
<Business v-if="activeName === '5'" :ID="CustomerId"/>
......
......@@ -321,7 +321,7 @@
</el-form>
<div v-if="gjImgList.length" style="margin-bottom: 15px;">
<div class="img-box">
<div v-for="(item, index) in gjImgList" :key="index" class="img-item" :style="{'background-image': `url(${item.url})`}">
<div v-for="(item, index) in gjImgList" :key="index" class="img-item" :style="{'background-image': `url(${item.url})`}" @click="previewFile(item.url)">
<div class="img-item-del" @click="deleteImg(index)">×</div>
</div>
<el-upload
......@@ -409,13 +409,13 @@
<div>
<p class="mb-10">{{subItem.LogInfo}}</p>
<div class="img-box mb-10" v-if="subItem.CustomerFollowUpModel.FollowUpImgList">
<div v-for="(img, imgIndex) in subItem.CustomerFollowUpModel.FollowUpImgList" :key="imgIndex" class="img-box-item" :style="`background-image:url(${img.FileUrl})`"></div>
<div v-for="(img, imgIndex) in subItem.CustomerFollowUpModel.FollowUpImgList" :key="imgIndex" class="img-box-item" :style="`background-image:url(${img.FileUrl})`" @click="previewFile(img.FileUrl)"></div>
</div>
<div class="mb-10" v-if="subItem.CustomerFollowUpModel.FollowUpFileList" style="display: flex;">
<div>附件:</div>
<div class="font-color-info">附件:</div>
<div>
<p v-for="(file, fileIndex) in subItem.CustomerFollowUpModel.FollowUpFileList" :key="fileIndex">
<span class="font-color-info">&nbsp;&nbsp;{{file.FileName}} </span>&nbsp;&nbsp;&nbsp;&nbsp;
<span >&nbsp;&nbsp;{{file.FileName}} </span>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="font-color-link cp" @click="previewFile(file.FileUrl)"> 预览</span>
</p>
</div>
......@@ -546,6 +546,10 @@ export default {
},
methods: {
previewFile(file) {
if (file.IsPicture()) {
this.MsgBus.$emit('showImg', file)
return
}
window.open(file, "_blank");
},
GetLogPageList(t){
......@@ -605,6 +609,7 @@ export default {
NextContactDate: '',
ContactContent: ''
}
this.GetLogPageList()
}
})
},
......
......@@ -19,7 +19,7 @@
<div class="Contacts">
<div class="add-contacts">
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="guanlian">关联</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="jiechuguanlian">解除关联</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="jiechuguanlian" v-if="IsRead === 0">解除关联</el-button>
<el-button icon="el-icon-plus" class="crm-btn query-btn crm-btn-mini margin-right0" @click="addContactsShow=true">新建联系人</el-button>
</div>
<el-table
......@@ -53,7 +53,7 @@
show-overflow-tooltip>
<template slot-scope="scope">
<p v-if="scope.row.IsFirstContact === 1" class="font-color-warning">首要联系人</p>
<p v-else class="font-color-link cp" @click="SetFirstContact(scope)">设为首要联系人</p>
<p v-else-if="IsRead === 0 && scope.row.IsFirstContact !== 1" class="font-color-link cp" @click="SetFirstContact(scope)">设为首要联系人</p>
</template>
</el-table-column>
</el-table>
......@@ -105,6 +105,10 @@ export default {
BusinessIdCustomerId: {
type: Number,
default: 0
},
IsRead: {
type: Number,
default: 0
}
},
data() {
......
<style>
.Record{
height: 100%;
overflow: auto;
background-color: white;
padding: 10px;
box-sizing: border-box;
}
.ha-cont{
display: flex;
align-items: center;
font-size: 12px;
position: relative;
line-height: 20px;
min-height: 40px;
padding-top: 3px;
}
.ha-cont .ha-circle{
-ms-flex-negative: 0;
flex-shrink: 0;
width: 10px;
height: 10px;
z-index: 2;
border-radius: 9px;
background-color: #fff;
border: 5px solid #a5ecd7;
}
.ha-cont .ha-time{
padding: 0 10px 0 24px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #aaa;
}
.ha-cont .ha-name {
padding: 0 10px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #333;
}
.ha-cont .ha-content{
padding: 0 10px 10px;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
color: #333;
}
.ha-cont .ha-line{
position: absolute;
z-index: 1;
width: 1px;
top: 3px;
bottom: -3px;
left: 9px;
background-color: #e6e6e6;
}
.nodata{
text-align: center;
font-size: 12px;
}
@import '../../assets/css/Record.css';
</style>
<template>
<div class="Record" id="Record">
......
......@@ -7,9 +7,9 @@
<template>
<div class="addTeamman">
<div class="addTeamman-ctrl">
<el-button icon="el-icon-plus" class="crm-btn crm-btn-mini query-btn" @click="addTeammanShow=true">团队成员</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="bianji">编辑</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="yichu">移除</el-button>
<el-button icon="el-icon-plus" class="crm-btn crm-btn-mini query-btn" @click="addTeammanShow=true" v-if="IsRead === 0">团队成员</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="bianji" v-if="IsRead === 0">编辑</el-button>
<el-button class="crm-btn query-btn crm-btn-mini easy-btn" @click="yichu" v-if="IsRead === 0">移除</el-button>
<el-button class="crm-btn query-btn crm-btn-mini org-btn margin-right0" @click="tuichu">退出团队</el-button>
</div>
<el-table
......@@ -72,6 +72,10 @@ export default {
BusinessId: {
type: Number,
default: 0
},
IsRead: {
type: Number,
default: 0
}
},
data() {
......
......@@ -178,9 +178,9 @@
<p>{{detailsData.BusinessName}}</p>
</div>
<div class="right">
<el-button class="crm-btn query-btn" @click="editCustbusiness">编辑</el-button>
<el-button class="crm-btn easy-btn iconfont iconplus-transfer ">转移</el-button>
<el-dropdown @command="handleCommand" style="top: 1px;">
<el-button class="crm-btn query-btn" @click="editCustbusiness" v-if="detailsData.IsRead === 0">编辑</el-button>
<el-button class="crm-btn easy-btn iconfont iconplus-transfer " v-if="detailsData.IsRead === 0">转移</el-button>
<el-dropdown @command="handleCommand" style="top: 1px;" v-if="detailsData.IsRead === 0">
<el-button class="crm-btn crm-btn-more easy-btn margin-right0">
<i class="iconfont icongengduo"></i>
</el-button>
......@@ -282,10 +282,10 @@
<Details v-if="activeName === '2'" :detailsData="detailsData"/>
</el-tab-pane>
<el-tab-pane label="联系人" name="3">
<Contacts v-if="activeName === '3'" :BusinessId="BusinessId" :BusinessIdCustomerId="detailsData.CustomerId" />
<Contacts v-if="activeName === '3'" :BusinessId="BusinessId" :BusinessIdCustomerId="detailsData.CustomerId" :IsRead="detailsData.IsRead"/>
</el-tab-pane>
<el-tab-pane label="团队成员" name="4">
<TeamMembers v-if="activeName === '4'" :BusinessId="BusinessId"/>
<TeamMembers v-if="activeName === '4'" :BusinessId="BusinessId" :IsRead="detailsData.IsRead"/>
</el-tab-pane>
<el-tab-pane label="合同" name="6">
<Agreement />
......@@ -294,7 +294,7 @@
<MoneyBack />
</el-tab-pane>
<el-tab-pane label="附件" name="8">
<Enclosure v-if="activeName === '8'" :ID='BusinessId' :type='2'/>
<Enclosure v-if="activeName === '8'" :ID='BusinessId' :type='2' :IsRead="detailsData.IsRead"/>
</el-tab-pane>
<el-tab-pane label="操作记录" name="9">
<Record v-if="activeName === '9'" />
......
......@@ -303,7 +303,7 @@ export default {
],
BusinessId: 0,
BusinessIdCustomerId: 0,
dialogTableVisibleName: '新客户',
dialogTableVisibleName: '新客户',
dialogBusinessVisibleName: '新建商机',
CustomerId: 0,
CustomerIdStr: '',
......
......@@ -305,7 +305,7 @@
</el-form>
<div v-if="gjImgList.length" style="margin-bottom: 15px;">
<div class="img-box">
<div v-for="(item, index) in gjImgList" :key="index" class="img-item" :style="{'background-image': `url(${item.url})`}">
<div v-for="(item, index) in gjImgList" :key="index" class="img-item" :style="{'background-image': `url(${item.url})`}" @click="previewFile(item.url)">
<div class="img-item-del" @click="deleteImg(index)">×</div>
</div>
<el-upload
......@@ -385,13 +385,13 @@
<div>
<p class="mb-10">{{subItem.LogInfo}}</p>
<div class="img-box mb-10" v-if="subItem.CustomerFollowUpModel.FollowUpImgList">
<div v-for="(img, imgIndex) in subItem.CustomerFollowUpModel.FollowUpImgList" :key="imgIndex" class="img-box-item" :style="`background-image:url(${img.FileUrl})`"></div>
<div v-for="(img, imgIndex) in subItem.CustomerFollowUpModel.FollowUpImgList" :key="imgIndex" class="img-box-item" :style="`background-image:url(${img.FileUrl})`" @click="previewFile(img.FileUrl)"></div>
</div>
<div class="mb-10" v-if="subItem.CustomerFollowUpModel.FollowUpFileList" style="display: flex;">
<div>附件:</div>
<div class="font-color-info">附件:</div>
<div>
<p v-for="(file, fileIndex) in subItem.CustomerFollowUpModel.FollowUpFileList" :key="fileIndex">
<span class="font-color-info">&nbsp;&nbsp;{{file.FileName}} </span>&nbsp;&nbsp;&nbsp;&nbsp;
<span >&nbsp;&nbsp;{{file.FileName}} </span>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="font-color-link cp" @click="previewFile(file.FileUrl)"> 预览</span>
</p>
</div>
......@@ -491,6 +491,10 @@ export default {
},
methods: {
previewFile(file) {
if (file.IsPicture()) {
this.MsgBus.$emit('showImg', file)
return
}
window.open(file, "_blank");
},
GetLogPageList(t){
......@@ -548,6 +552,7 @@ export default {
NextContactDate: '',
ContactContent: ''
}
this.GetLogPageList()
}
})
},
......
......@@ -47,7 +47,7 @@
show-overflow-tooltip>
<template slot-scope="scope">
<span class="font-color-link cp" style="padding-right: 10px;" @click="previewFile(scope.row.FileURL)">预览</span>
<span class="font-color-warning cp underline" v-if="scope.row.FileUploadType" @click="deleteItem(scope.row.ID)">删除</span>
<span class="font-color-warning cp underline" v-if="scope.row.FileUploadType && IsRead === 0" @click="deleteItem(scope.row.ID)">删除</span>
</template>
</el-table-column>
</el-table>
......@@ -55,7 +55,7 @@
</template>
<script>
export default {
props:['ID', 'type'],
props:['ID', 'type', 'IsRead'],
data() {
return {
loading: false,
......@@ -123,6 +123,10 @@ export default {
});
},
previewFile(file) {
if (file.IsPicture()) {
this.MsgBus.$emit('showImg', file)
return
}
window.open(file, "_blank");
},
// 上传附件
......
<style>
.Record{
height: 100%;
overflow: auto;
background-color: white;
padding: 10px;
box-sizing: border-box;
}
.ha-cont{
display: flex;
align-items: center;
font-size: 12px;
position: relative;
line-height: 20px;
min-height: 40px;
padding-top: 3px;
}
.ha-cont .ha-week{
margin: 0 17px 0 10px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #777;
width: 80px;
}
.ha-cont .ha-circle{
-ms-flex-negative: 0;
flex-shrink: 0;
width: 10px;
height: 10px;
z-index: 2;
border-radius: 9px;
background-color: #fff;
border: 5px solid #a5ecd7;
}
.ha-cont .ha-time{
padding: 0 10px 0 24px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #aaa;
}
.ha-cont .ha-name {
padding: 0 10px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #333;
}
.ha-cont .ha-content{
padding: 0 10px 10px;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
color: #333;
}
.ha-cont .ha-line{
position: absolute;
z-index: 1;
width: 1px;
top: 3px;
bottom: -3px;
left: 9px;
background-color: #e6e6e6;
}
.nodata{
text-align: center;
font-size: 12px;
}
@import '../../assets/css/Record.css';
</style>
<template>
<div class="Record" id="Record">
......
......@@ -11,8 +11,8 @@
</el-input>
</div>
<div class="rightmenu">
<el-button class="crm-btn query-btn" @click="getList">查询</el-button>
<el-button icon="el-icon-plus" class="crm-btn org-btn" @click="CustomerId = 0, dialogTableVisibleName = '新增客户', dialogTableVisible=true">新增</el-button>
<!-- <el-button class="crm-btn query-btn" @click="getList">查询</el-button> -->
<el-button icon="el-icon-plus" class="crm-btn org-btn" @click="CustomerId = 0, dialogTableVisibleName = '新建线索', dialogTableVisible=true">新建线索</el-button>
<el-dropdown>
<el-button class="crm-btn crm-btn-more easy-btn margin-right0">
<i class="iconfont icongengduo"></i>
......@@ -305,7 +305,7 @@ export default {
drawer: false,
loading: true,
dialogTableVisible: false,
dialogTableVisibleName: '新增客户',
dialogTableVisibleName: '新建线索',
tableData: [],
multipleSelection: [],
EmployeeList: [],
......@@ -437,7 +437,7 @@ export default {
changeState(){
console.log('更改状态')
},
// 放入公海
// 转换为客户
waters(type){
let tips = '确定将这些线索转换为客户吗?'
if(type === 1) {
......@@ -521,7 +521,7 @@ export default {
}
},
editCust(){
this.dialogTableVisibleName = '修改客户'
this.dialogTableVisibleName = '修改线索'
this.dialogTableVisible = true
},
openDetails(scope){
......
......@@ -391,7 +391,11 @@ export default {
},
name: {
type: String,
default: '新增客户'
default: '新建客户'
},
type: {
type: String,
default: '1'
}
},
data() {
......@@ -535,7 +539,9 @@ export default {
} else {
this.$message.success('新建线索成功');
}
this.$emit('getList')
if (this.type !== '2') {
this.$emit('getList')
}
this.resetForm("form");
}
})
......
......@@ -308,7 +308,7 @@
</el-form>
<div v-if="gjImgList.length" style="margin-bottom: 15px;">
<div class="img-box">
<div v-for="(item, index) in gjImgList" :key="index" class="img-item" :style="{'background-image': `url(${item.url})`}">
<div v-for="(item, index) in gjImgList" :key="index" class="img-item" :style="{'background-image': `url(${item.url})`}" @click="previewFile(item.url)">
<div class="img-item-del" @click="deleteImg(index)">×</div>
</div>
<el-upload
......@@ -393,13 +393,13 @@
<p class="mb-10">{{subItem.LogInfo}}</p>
<p class="xg-lxr"><span class="font-color-info">相关联系人:</span> <span>{{subItem.CustomerFollowUpModel.ContactName}}</span></p>
<div class="img-box mb-10" v-if="subItem.CustomerFollowUpModel.FollowUpImgList">
<div v-for="(img, imgIndex) in subItem.CustomerFollowUpModel.FollowUpImgList" :key="imgIndex" class="img-box-item" :style="`background-image:url(${img.FileUrl})`"></div>
<div v-for="(img, imgIndex) in subItem.CustomerFollowUpModel.FollowUpImgList" :key="imgIndex" class="img-box-item" :style="`background-image:url(${img.FileUrl})`" @click="previewFile(img.FileUrl)"></div>
</div>
<div class="mb-10" v-if="subItem.CustomerFollowUpModel.FollowUpFileList" style="display: flex;">
<div>附件:</div>
<div class="font-color-info">附件:</div>
<div>
<p v-for="(file, fileIndex) in subItem.CustomerFollowUpModel.FollowUpFileList" :key="fileIndex">
<span class="font-color-info">&nbsp;&nbsp;{{file.FileName}} </span>&nbsp;&nbsp;&nbsp;&nbsp;
<span >&nbsp;&nbsp;{{file.FileName}} </span>&nbsp;&nbsp;&nbsp;&nbsp;
<span class="font-color-link cp" @click="previewFile(file.FileUrl)"> 预览</span>
</p>
</div>
......@@ -519,6 +519,10 @@ export default {
},
methods: {
previewFile(file) {
if (file.IsPicture()) {
this.MsgBus.$emit('showImg', file)
return
}
window.open(file, "_blank");
},
GetLogPageList(t){
......
<style>
.Record{
height: 100%;
overflow: auto;
background-color: white;
padding: 10px;
box-sizing: border-box;
}
.ha-cont{
display: flex;
align-items: center;
font-size: 12px;
position: relative;
line-height: 20px;
min-height: 40px;
padding-top: 3px;
}
.ha-cont .ha-week{
margin: 0 17px 0 10px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #777;
width: 80px;
}
.ha-cont .ha-circle{
-ms-flex-negative: 0;
flex-shrink: 0;
width: 10px;
height: 10px;
z-index: 2;
border-radius: 9px;
background-color: #fff;
border: 5px solid #a5ecd7;
}
.ha-cont .ha-time{
padding: 0 10px 0 24px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #aaa;
}
.ha-cont .ha-name {
padding: 0 10px;
-ms-flex-negative: 0;
flex-shrink: 0;
color: #333;
}
.ha-cont .ha-content{
padding: 0 10px 10px;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
color: #333;
}
.ha-cont .ha-line{
position: absolute;
z-index: 1;
width: 1px;
top: 3px;
bottom: -3px;
left: 9px;
background-color: #e6e6e6;
}
.nodata{
text-align: center;
font-size: 12px;
}
@import '../../assets/css/Record.css';
</style>
<template>
<div class="Record" id="Record">
......
......@@ -69,8 +69,8 @@
<p>{{detailsData.ContactName}}</p>
</div>
<div class="right">
<el-button class="crm-btn query-btn" @click="editCust">编辑</el-button>
<el-dropdown @command="handleCommand" style="top: 1px;">
<el-button class="crm-btn query-btn" @click="editCust" v-if="detailsData.IsRead === 0">编辑</el-button>
<el-dropdown @command="handleCommand" style="top: 1px;" v-if="detailsData.IsRead === 0">
<el-button class="crm-btn crm-btn-more easy-btn margin-right0">
<i class="iconfont icongengduo"></i>
</el-button>
......
......@@ -309,7 +309,7 @@ export default {
],
BusinessId: 0,
BusinessIdCustomerId: 0,
dialogTableVisibleName: '新客户',
dialogTableVisibleName: '新客户',
dialogBusinessVisibleName: '新建联系人',
CustomerId: 0,
CustomerIdStr: '',
......
<style>
.ComTripList .leftDayList {
display: inline-block;
width: 30px;
height: 100%;
vertical-align: top;
}
.ComTripList .dayNum {
font-weight: bold;
font-size: 16px;
margin-left: -42px;
position: relative;
z-index: 2;
margin-bottom: 5px;
display: block;
}
.ComTripList .siteList {
display: inline-block;
position: relative;
border-left: 2px solid #ebebec;
position: relative;
padding: 0 0 50px 50px;
margin-left: 10px;
}
.ComTripList .Trip_Content {
margin-left: 100px;
}
.ComTripList .Trip_Content:first-child {
margin-top: 20px;
}
.ComTripList .Trip_Content:last-child {
margin-bottom: 20px;
}
.ComTripList .TC_circles {
width: 18px;
height: 18px;
background: #fff;
border-radius: 100%;
border: 2px solid rgba(13, 36, 129, .8);
position: absolute;
left: -11px;
top: 0;
}
.ComTripList .TripControl {
display: inline-block;
vertical-align: middle;
position: relative;
top: -170px;
margin-left: 30px;
}
.ComTripList .TripControl i {
display: inline-block;
width: 30px;
height: 30px;
line-height: 30px;
cursor: pointer;
border-radius: 50%;
text-align: center;
}
.ComTripList .TripControl i:hover {
background-color: rgba(13, 36, 129, .8);
color: #fff;
}
.ComTripList .addTrip {
width: 30px;
height: 30px;
color: #fff;
text-align: center;
font-size: 25px;
line-height: 28px;
background-color: #f60;
border-radius: 100%;
cursor: pointer;
margin: -2px 0 20px 130px;
}
</style>
<template>
<div class="ComTripList">
<div v-if="TripType==0">
<quill-editor v-model="TripListArr[0].TravelContent" style="height:400px;"></quill-editor>
</div>
<div v-else class="Trip_Content" v-for="(item,index) in TripListArr" :key="index">
<div class="leftDayList">
<span class="dayNum">{{index+1}}</span>
</div>
<div class="siteList">
<el-form-item label="前往地" label-width='100px' style="display:inline-block;">
<el-input type="text" class="w150" v-model="item.Go"></el-input>
</el-form-item>
<el-form-item label="前往省份/国家地区" label-width='160px' style="display:inline-block;">
<el-input type="text" class="w150" v-model="item.GoProvice"></el-input>
</el-form-item>
<el-form-item label="是否过境" label-width='100px' style="display:inline-block;">
<el-checkbox v-model="item.IsOut" :true-label="CheckedVaule" :false-label="UnCheckedVaule"></el-checkbox>
</el-form-item>
<quill-editor v-model="item.TravelContent" style="height:300px;"></quill-editor>
<div class="TC_circles"></div>
</div>
<div class="TripControl">
<i class="iconfont icon-img_delete_small" style="margin-left:10px;" @click="delTrip(index)"></i>
</div>
<div class="addTrip" @click="addTrip()">+</div>
</div>
</div>
</template>
<script>
export default {
props: ["ContractTripList", "TripType"],
data() {
return {
checked: false,
TripListArr: [],
//选中过境
CheckedVaule: 1,
//不过境
UnCheckedVaule: 0,
};
},
mounted() {
},
created() {
if (this.ContractTripList) {
if (this.ContractTripList.length > 0) {
this.TripListArr = JSON.parse(JSON.stringify(this.ContractTripList));
} else {
var tripObj = {
DayNum: 1, //天数
Go: '', // 前往地
GoProvice: '', //前往国家地区
IsOut: 0, // 是否过境(0-不过,1-过)
TravelContent: '', //行程内容
}
this.TripListArr.push(tripObj);
}
}
},
methods: {
//添加行程
addTrip() {
let obj = {
DayNum: '', //天数
Go: '', // 前往地
GoProvice: '', //前往国家地区
IsOut: 0, // 是否过境(0-不过,1-过)
TravelContent: '', //行程内容
}
this.TripListArr.push(obj);
this.getSavedData();
},
//删除行程
delTrip(index) {
this.TripListArr.splice(index, 1);
this.getSavedData();
},
//遍历已经保存数据
getSavedData() {
this.TripListArr.forEach((x, index) => {
x.DayNum = index + 1;
})
}
},
watch: {
//监听参数
TripListArr: {
handler: function (val, oldVal) {
this.$emit('tripData', this.TripListArr);
},
deep: true
},
}
};
</script>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -11,8 +11,8 @@
</el-input>
</div>
<div class="rightmenu">
<el-button class="crm-btn query-btn" @click="getList">查询</el-button>
<el-button icon="el-icon-plus" class="crm-btn org-btn" @click="CustomerId = 0, dialogTableVisibleName = '新增客户', dialogTableVisible=true">新增</el-button>
<!-- <el-button class="crm-btn query-btn" @click="getList">查询</el-button> -->
<el-button icon="el-icon-plus" class="crm-btn org-btn" @click="CustomerId = 0, dialogTableVisibleName = '新建客户', dialogTableVisible=true">新建客户</el-button>
<el-dropdown>
<el-button class="crm-btn crm-btn-more easy-btn margin-right0">
<i class="iconfont icongengduo"></i>
......@@ -461,7 +461,7 @@ export default {
drawer: false,
loading: true,
dialogTableVisible: false,
dialogTableVisibleName: '新客户',
dialogTableVisibleName: '新客户',
tableData: [],
multipleSelection: [],
EmployeeList: [],
......
......@@ -156,7 +156,7 @@
<div class="rightmenu">
<div class="gaoji">高级查询 <i class="iconfont iconjiantou_xia"></i></div>
<el-button class="crm-btn query-btn" @click="getList">查询</el-button>
<el-button icon="el-icon-plus" class="crm-btn easy-btn" @click="dialogTableVisible=true"></el-button>
<el-button icon="el-icon-plus" class="crm-btn easy-btn" @click="dialogTableVisible=true"></el-button>
<el-button class="crm-btn easy-btn">导入</el-button>
<el-button class="crm-btn org-btn">导出</el-button>
</div>
......
......@@ -391,7 +391,7 @@ export default {
},
name: {
type: String,
default: '新客户'
default: '新客户'
}
},
data() {
......
......@@ -61,6 +61,9 @@
prop="CustomerName"
label="线索名称"
show-overflow-tooltip>
<template slot-scope="scope">
<p @click="openDetails(scope)" class="font-color-link cp">{{scope.row.CustomerName}}</p>
</template>
</el-table-column>
<el-table-column
prop="CustomerName"
......@@ -129,6 +132,10 @@ export default {
this.getList()
},
methods: {
openDetails(scope){
console.log(scope.row)
this.MsgBus.$emit('openClueWin', scope.row)
},
handleSelectionChange(val) {
this.selectID = val.map(x=>
x.ID
......
......@@ -11,8 +11,8 @@
</el-input>
</div>
<div class="rightmenu">
<el-button class="crm-btn query-btn" @click="getList">查询</el-button>
<el-button icon="el-icon-plus" class="crm-btn org-btn" @click="CustomerId = 0, dialogTableVisibleName = '新增客户', dialogTableVisible=true">新增</el-button>
<!-- <el-button class="crm-btn query-btn" @click="getList">查询</el-button> -->
<!-- <el-button icon="el-icon-plus" class="crm-btn org-btn" @click="CustomerId = 0, dialogTableVisibleName = '新建客户', dialogTableVisible=true">新建</el-button> -->
<el-dropdown>
<el-button class="crm-btn crm-btn-more easy-btn margin-right0">
<i class="iconfont icongengduo"></i>
......@@ -456,7 +456,7 @@ export default {
drawer: false,
loading: true,
dialogTableVisible: false,
dialogTableVisibleName: '新客户',
dialogTableVisibleName: '新客户',
tableData: [],
multipleSelection: [],
EmployeeList: [],
......
......@@ -18,6 +18,9 @@ import co from 'co'
import MsgBus from './plugins/event-bus'
import { location } from "./assets/utils/getLocation"
import 'xe-utils'
import vueQuillEditor from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
// import VXETable from 'vxe-table'
// import 'vxe-table/lib/index.css'
// import tinymce from 'tinymce/tinymce'
......@@ -27,7 +30,7 @@ import 'xe-utils'
Vue.use(htmlToPdf)
Vue.use(VueLazyload)
// Vue.use(VXETable)
Vue.use(vueQuillEditor)
// Vue.use(VueLazyload, {
// preLoad: 1.3,
// error: '../src/assets/img/banner@3x.png',
......@@ -43,6 +46,26 @@ Vue.commonUtils = Vue.prototype.$commonUtils=commonUtils
Vue.languageUtils=Vue.prototype.$languageUtils=languageUtils
Vue.prototype.MsgBus = MsgBus
Vue.prototype.$echarts = echarts
String.prototype.IsPicture = function() {
//判断是否是图片 - strFilter必须是小写列举
var strFilter=".jpeg|.gif|.jpg|.png|.bmp|.pic|"
if(this.indexOf(".")>-1)
{
var p = this.lastIndexOf(".");
//alert(p);
//alert(this.length);
var strPostfix=this.substring(p,this.length) + '|';
strPostfix = strPostfix.toLowerCase();
//alert(strPostfix);
if(strFilter.indexOf(strPostfix)>-1)
{
//alert("True");
return true;
}
}
//alert('False');
return false;
}
router.beforeEach((to, from, next) => {
let msg = {
path: from.path,
......
......@@ -10,6 +10,7 @@ import clueManagement from "./components/clueManagement/clueManagement"
import contactsManagement from "./components/contactsManagement/contactsManagement"
import watersManagement from "./components/watersManagement/watersManagement"
import waitMatter from "./components/waitMatter/waitMatter"
import contractManagement from "./components/contractManagement/contractManagement"
Vue.use(Router);
export default new Router({
......@@ -109,6 +110,14 @@ export default new Router({
meta: {
title: "待办事项"
}
},
{
path: "/contractManagement",
name: "contractManagement",
component: contractManagement,
meta: {
title: "合同管理"
}
}
]
},
......
This diff is collapsed.
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