Commit 0d398ef2 authored by anxixi's avatar anxixi

服务记录h5及pc功能开发

parent a4e5d42e
......@@ -827,4 +827,116 @@ export default {
})
})
},
//导出
fetchLoadingPostex(url,params, method = 'POST') {
var langVal = url.indexOf('?') == -1 ? '?lang=' + lang : '&lang=' + lang;
let loadingInstance = Loading.service({
lock: true,
});
if(window.sessionStorage.getItem("userInfo")) {
return new Promise((resolve, reject) => {
axios({
method: method,
responseType:'arraybuffer',
url: base + url + langVal+"&t="+Date.parse(new Date()),
data: params,
headers: {},
},{
// 单独配置
withCredentials: true
}).then((response) => {
loadingInstance.close();
publicFunc.getRefreshRadio(0);
if(response.data.code==90||response.data.code==999){
window.sessionStorage.clear();
this.isToWhich()
}
else if(response.data.code==91||response.data.code==80){
if(isMobile){
Toast(response.data.msg);
location.reload();
}else{
MessageBox.alert(response.data.msg, {
confirmButtonText: i18n.t("commonTips.confirm"),
center:true,
customClass: 'alertDialog',
callback: action => {
location.reload();
}
});
}
}
else if(response.data.code==500){
if(isMobile){
Toast(response.data.code);
}else{
router.replace("/notServer")
}
}
else if(response.data.code==404){
if(isMobile){
Toast(response.data.code);
}else{
router.replace("/notFind")
}
}
else if(response.data.code==998||response.data.code==996){
if(isMobile){
Toast(response.data.msg);
window.sessionStorage.clear();
this.isToWhich()
}else{
MessageBox.alert(response.data.msg, {
confirmButtonText: i18n.t("commonTips.confirm"),
center:true,
customClass: 'alertDialog',
callback: action => {
window.sessionStorage.clear();
this.isToWhich()
}
});
}
// console.log("踢出登录");
}
else if(response.data.code==300||response.data.code==997||response.data.code==995){
if(isMobile){
Toast(response.data.msg);
setTimeout(function(){
router.go(-1);
},2000)
}else{
MessageBox.alert(response.data.msg, {
confirmButtonText: i18n.t("commonTips.confirm"),
center:true,
customClass: 'alertDialog',
callback: action => {
router.go(-1);
}
});
}
}
else {
resolve(response.data)
}
}).catch((error) => {
loadingInstance.close();
reject(error)
})
})
}
},
}
......@@ -517,6 +517,11 @@ export default new Router({
component: resolve => require(['./views/innovatecompany/seeservice/servicevisit.vue'], resolve),
meta: {title: '销售服务记录'}
},
{
path: '/servicedetails',
component: resolve => require(['./views/innovatecompany/seeservice/servicedetails.vue'], resolve),
meta: {title: '销售服务记录详情'}
},
]
},
{
......
import api from '../../../../api/api';
export default {
selectNationList (){
return api.fetchGet('/business/geo/selectNationList');
},
searchServiceRecords (params){
return api.fetchLoadingPost('/business/service/searchRecord',params);
},
selectDictList(params) {
return api.fetchGet( '/business/dict/selectDictList?groupCode='+params );
},
getTree (){
return api.fetchGet('/base/org/getTree');
},
getPhaseRecordDetail(params) {
return api.fetchGet( '/business/service/getRecordPlanDetail?recordId='+params );
},
selectByKeyWord( params ) {
return api.fetchLoadingPost( '/business/businessServiceRecord/selectByKeyWord', params);
},
exportRecord( params ) {
return api.fetchLoadingPostex( '/business/service/exportRecord', params);
},
}
\ No newline at end of file
<template>
<div class="contentPadding">
<el-form :inline="true" label-width="160px" :model="serviceData" style="margin-top: 30px" class="contnetform">
<div class="record_div">
<div>
<span class="titlep">标题</span>
<p>{{serviceData.title}}</p>
</div>
<div>
<span class="titlep">回答</span>
<p>{{serviceData.content}}</p>
</div>
<div>
<span class="titlep">解析</span>
<p>{{serviceData.explication}}</p>
</div>
</div>
<el-form-item style="width: 100%;margin-bottom: 17px;" class="statebottm" ></el-form-item>
<el-form-item label="填报人:" style="width: 100%;">
<span>{{serviceData.createdByName}}</span>
</el-form-item>
<el-form-item label="服务对象:" style="width: 100%;">
<span>{{serviceData.companyName}}</span>
</el-form-item>
<el-form-item label="服务类型:" style="width: 100%;">
<span>{{serviceData.serviceTypeName}}</span>
</el-form-item>
<el-form-item label="记录类型:" style="width: 100%;">
<span>{{serviceData.recordTypeName}}</span>
</el-form-item>
<el-form-item label="填报时间:" style="width: 100%;">
<span>{{serviceData.createdTime}}</span>
</el-form-item>
</el-form>
</div>
</template>
<script>
import api from './api/api'
export default {
props:[
'recordId'
],
name : "serviceSRM03",
data() {
return {
serviceData:{}
}
},
methods: {
},
mounted() {
let params = {
recordId:this.recordId,
pageNum:1,
pageSize:1,
};
api.selectByKeyWord(params).then(response => {
if(response.code == 0) {
this.serviceData = response.result.records[0];
} else {
this.$message.error(response.msg);
}
})
.catch(error => {
console.log("提交出错");
return false;
})
}
}
</script>
<style scoped lang="scss">
.titlep{
color: #FFFFFF;
font-size: 14px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 3px;
}
.record_div{
margin-left: 80px;
>div:nth-child(1){
display: flex;
/*width: 100%;*/
padding-bottom: 20px;
>span{
width: 60px;
background: #5D78FF;
}
>p{
width: 80%;
color: #3F3F53;
font-size: 16px;
margin-left: 20px;
font-weight: bold;
line-height: 25px;
}
}
>div:nth-child(2){
display: flex;
/*width: 100%;*/
>span{
width: 60px;
background: #0ABB87;
}
>p{
width: 80%;
color: #3F3F53;
font-size: 14px;
margin-left: 20px;
line-height: 25px;
}
}
>div:nth-child(3){
display: flex;
/*width: 100%;*/
padding: 20px 0;
>span{
width: 60px;
background: #FF9E29;
}
>p{
width: 80%;
color: #FF9E29;
font-size: 14px;
margin-left: 20px;
line-height: 25px;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="contentPadding">
<el-form :inline="true" label-width="160px" :model="serviceData" style="margin-top: 30px" class="contnetform">
<div class="record_div">
<div>
<span class="titlep">标题</span>
<p>{{serviceData.title}}</p>
</div>
<div>
<span class="titlep">回答</span>
<p>{{serviceData.content}}</p>
</div>
<div>
<span class="titlep">附件</span>
<p><img v-for="item in serviceData.attachments" :src="item" style="width: 210px;height: 110px;margin:0 0 20px 20px"></p>
</div>
</div>
<el-form-item style="width: 100%;margin-bottom: 17px;" class="statebottm" ></el-form-item>
<el-form-item label="填报人:" style="width: 100%;">
<span>{{serviceData.createdByName}}</span>
</el-form-item>
<el-form-item label="服务对象:" style="width: 100%;">
<span>{{serviceData.companyName}}</span>
</el-form-item>
<el-form-item label="服务类型:" style="width: 100%;">
<span>{{serviceData.serviceTypeName}}</span>
</el-form-item>
<el-form-item label="记录类型:" style="width: 100%;">
<span>{{serviceData.recordTypeName}}</span>
</el-form-item>
<el-form-item label="填报时间:" style="width: 100%;">
<span>{{serviceData.createdTime}}</span>
</el-form-item>
</el-form>
</div>
</template>
<script>
import api from './api/api'
export default {
props:[
'recordId'
],
name : "serviceSRM02",
data() {
return {
serviceData:{}
}
},
methods: {
},
mounted() {
let params = {
recordId:this.recordId,
pageNum:1,
pageSize:1,
};
api.selectByKeyWord(params).then(response => {
if(response.code == 0) {
this.serviceData = response.result.records[0];
if(this.serviceData.attachments){
this.serviceData.attachments=this.serviceData.attachments.split(",");
}
} else {
this.$message.error(response.msg);
}
})
.catch(error => {
console.log("提交出错");
return false;
})
}
}
</script>
<style scoped lang="scss">
.titlep{
color: #FFFFFF;
font-size: 14px;
height: 25px;
line-height: 25px;
text-align: center;
border-radius: 3px;
}
.record_div{
margin-left: 80px;
>div:nth-child(1){
display: flex;
/*width: 100%;*/
padding-bottom: 20px;
>span{
width: 60px;
background: #5D78FF;
}
>p{
width: 80%;
color: #3F3F53;
font-size: 16px;
margin-left: 20px;
font-weight: bold;
line-height: 25px;
}
}
>div:nth-child(2){
display: flex;
/*width: 100%;*/
>span{
width: 60px;
background: #0ABB87;
}
>p{
width: 80%;
color: #3F3F53;
font-size: 14px;
margin-left: 20px;
line-height: 25px;
}
}
>div:nth-child(3){
display: flex;
/*width: 100%;*/
padding: 20px 0;
>span{
width: 60px;
background: #FF9E29;
}
>p{
width: 80%;
color: #FF9E29;
font-size: 14px;
margin-left: 20px;
line-height: 25px;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="contentPadding">
<el-table :data="serviceData.fieldList" tooltip-effect="dark" class="projectTable2">
<el-table-column prop="fieldName" label="字段名称" align="center" width="150">
</el-table-column>
<el-table-column prop="serviceType" label="新增&更新" align="center" width="150">
<template slot-scope="scope">
{{scope.row.previousValue ? '更新' :'新增'}}
</template>
</el-table-column>
<el-table-column prop="fieldValue" label="内容" align="center">
<template slot-scope="scope">
<span style="color: #0ABB87" v-if="Array.isArray(scope.row.fieldValue)">
<i v-for=" items in scope.row.fieldValue">
{{items}}
</i>
</span>
<span v-else style="color: #0ABB87">{{scope.row.fieldValue}}</span>
</template>
</el-table-column>
<el-table-column prop="previousValue" label="历史" align="center">
<template slot-scope="scope">
<span style="color: #0ABB87" v-if="Array.isArray(scope.row.previousValue)">
<i v-for=" items in scope.row.previousValue">
{{items}}
</i>
</span>
<span v-else style="color: #0ABB87">{{scope.row.previousValue ? scope.row.previousValue :'-'}}</span>
</template>
</el-table-column>
</el-table>
<el-form :inline="true" label-width="160px" :model="serviceData" style="margin-top: 30px" class="contnetform">
<el-form-item label="备注:" style="width: 100%;">
<span>{{serviceData.explication}}</span>
</el-form-item>
<el-form-item style="width: 100%;margin-bottom: 17px;" class="statebottm" ></el-form-item>
<el-form-item label="填报人:" style="width: 100%;">
<span>{{serviceData.empName}}</span><span style="margin-left: 10px" v-if="serviceData.orgName">( {{serviceData.orgName}} )</span>
</el-form-item>
<el-form-item label="服务对象:" style="width: 100%;">
<span>{{serviceData.companyName}}</span>
</el-form-item>
<el-form-item label="服务类型:" style="width: 100%;">
<span>{{serviceData.serviceType == "SRT01" ? 'FA' : serviceData.serviceType == "SRT02" ? '一般服务' : serviceData.serviceType == "SRT03" ? '市场拓展' :''}}</span>
</el-form-item>
<el-form-item label="记录类型:" style="width: 100%;">
<span>{{serviceData.recordType == "SRM01" ? '需求分析' : serviceData.recordType == "SRM02" ? '工作规划' : serviceData.recordType == "SRM03" ? '计划实施' :''}}</span>
</el-form-item>
<el-form-item label="填报时间:" style="width: 100%;">
<span>{{serviceData.createdTime}}</span>
</el-form-item>
</el-form>
</div>
</template>
<script>
import api from './api/api'
export default {
props:[
'recordId'
],
name : "serviceSRM01",
data() {
return {
serviceData:{
fieldList:[]
},
}
},
methods: {
},
mounted() {
api.getPhaseRecordDetail(this.recordId).then(response => {
if(response.code == 0) {
this.serviceData = response.result;
if(!this.serviceData.fieldList){
this.serviceData.fieldList = [];
}
} else {
this.$message.error(response.msgCode);
}
})
.catch(error => {
console.log("提交出错");
return false;
});
}
}
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="soutform loginedWrapper">
<div class="breadcrumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/projectdynamics' }">{{$t("litemlistjson.wrkbench")}}</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/saleservice' }">销售服务记录</el-breadcrumb-item>
<el-breadcrumb-item>记录详情</el-breadcrumb-item>
</el-breadcrumb>
</div>
<el-row style="margin-top: 15px" class="projectTabadd">
<el-tabs v-model="activeName">
<el-tab-pane label="记录详情" name="first" disabled>
<serviceSRM01 v-if="$route.query.recordType&&$route.query.recordType=='SRM01'" :recordId="$route.query.recordId"></serviceSRM01>
<serviceSRM02 v-if="$route.query.recordType&&$route.query.recordType=='SRM02'" :recordId="$route.query.recordId"></serviceSRM02>
<serviceSRM03 v-if="$route.query.recordType&&$route.query.recordType=='SRM03'" :recordId="$route.query.recordId"></serviceSRM03>
</el-tab-pane>
</el-tabs>
<p @click="$router.go(-1)" style="position: absolute;top: 20px;right: 10px;color: #5D78FF;font-size: 14px;width: 70px;cursor: pointer;">
<i style="color: #5D78FF;font-size: 14px;padding-right: 5px" class="iconfont icon-fanhui1"></i>
返回
</p>
</el-row>
</div>
</template>
<script>
import api from './api/api'
import serviceSRM01 from './serviceSRM01';
import serviceSRM02 from './serviceSRM02';
import serviceSRM03 from './serviceSRM03';
export default {
name : "servicedetails",
data() {
return {
activeName:'first'
}
},
components:{
serviceSRM01,serviceSRM02,serviceSRM03
},
methods: {
},
mounted() {
}
}
</script>
<style scoped>
</style>
\ No newline at end of file
......@@ -538,6 +538,18 @@
this.projectjson.companyAddress.companyCity = this.projectjson.companyCity;
this.projectjson.companyCity = undefined;
}
if(this.projectjson.companyIndustry){
if(this.projectjson.companyIndustry[0].industryId){
let companyIndustryId = [];
for(let s in this.projectjson.companyIndustry){
companyIndustryId.push(this.projectjson.companyIndustry[s].industryId)
}
this.projectjson.companyIndustry = companyIndustryId;
// this.projectjson.companyIndustry = this.projectjson.companyIndustry.join(',');
}else{
// this.projectjson.companyIndustry = this.projectjson.companyIndustry.join(',');
}
}
// if(this.projectjson.customerIndustry){
// this.projectjson.customerIndustry = this.companyIndustryEditList.join(',');
// }
......@@ -608,9 +620,9 @@
companyIndustryId.push(this.projectjson.companyIndustry[s].industryId)
}
this.projectjson.companyIndustry = companyIndustryId;
this.projectjson.companyIndustry = this.projectjson.companyIndustry.join(',');
// this.projectjson.companyIndustry = this.projectjson.companyIndustry.join(',');
}else{
this.projectjson.companyIndustry = this.projectjson.companyIndustry.join(',');
// this.projectjson.companyIndustry = this.projectjson.companyIndustry.join(',');
}
}
// if(this.projectjson.customerIndustry){
......
......@@ -204,6 +204,8 @@
height: calc(100vh - 4.4rem);
overflow: auto;
margin: 0.4rem auto;
word-wrap: break-word;
word-break: normal;
>div:nth-child(1){
display: flex;
/*width: 100%;*/
......@@ -213,7 +215,7 @@
background: #5D78FF;
}
>p{
width: 87%;
width: 80%;
color: #3F3F53;
font-size: 0.32rem;
font-weight: bold;
......@@ -230,7 +232,7 @@
background: #0ABB87;
}
>p{
width: 87%;
width: 80%;
color: #3F3F53;
font-size: 0.28rem;
line-height: 0.45rem;
......@@ -245,7 +247,7 @@
background: #FF9E29;
}
>p{
width: 87%;
width: 80%;
color: #3F3F53;
font-size: 0.28rem;
line-height: 0.45rem;
......
......@@ -286,7 +286,7 @@
background: #5D78FF;
}
>p:nth-child(2){
width: 87%;
width: 80%;
color: #3F3F53;
font-size: 0.28rem;
line-height: 0.45rem;
......@@ -302,7 +302,7 @@
background: #0ABB87;
}
>p:nth-child(2){
width: 87%;
width: 80%;
color: #3F3F53;
font-size: 0.28rem;
line-height: 0.45rem;
......@@ -317,7 +317,7 @@
background: #FF9E29;
}
>p:nth-child(2){
width: 87%;
width: 80%;
}
}
}
......
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