Commit f9320e1d by 李宁

1

1 parent 02a85402
......@@ -64,7 +64,7 @@ div{
line-height: 1.2;
}
.botButt{
.botButtBack{
width: 3.38rem;
height: .88rem;
display: flex;
......@@ -77,4 +77,24 @@ div{
font-size: .34rem;
z-index: 9;
margin: auto;
}
.botButt{
width: 3.9rem;
height: .88rem;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
border-radius: .08rem;
background: #0068EE;
font-weight: 500;
font-size: .34rem;
z-index: 9;
margin: auto;
}
.noBusi{
color: #0068EE;
background: #fff;
margin-top: .32rem;
}
\ No newline at end of file
......@@ -6,12 +6,60 @@
vm = new Vue({
el: '#pageDiv',
data: {
info: {}
info: {},
busiFlag: '--',
areaCode: ''
},
created: function() {
this.info = JSON.parse(sessionStorage.getItem('huaiAnAppParam'))
// this.info.campaignId = '54321'
// sessionStorage.setItem('huaiAnAppParam',JSON.stringify(this.info))
this.queryOrder()
},
methods: {
httpRequest:function(param){
let origin = window.location.origin
if(origin.includes('localhost')>0 || origin=='null' || origin.includes('file:')>0){
origin = 'https://testznzl.lgyzpt.com'
}
origin = 'https://testznzl.lgyzpt.com'
return new Promise(function(resolve, reject){
axios ({
method: 'get',
url:origin + param.url,
timeout: param.time||15000,
data:param.data,
headers: {
'Content-Type': 'application/json'
}
}).then((res) => {
resolve(res.data)
}).catch(res => {
reject(res)
})
})
},
queryOrder(){
this.httpRequest({
url: '/compass/api/common/maintenance-personnel/code?personnelCode=' + this.info.campaignId
}).then(res=>{
if(res.code == 200){
if(res.data && res.data.id){
this.areaCode = res.data.areaCode
this.busiFlag = '1'
}else{
this.busiFlag = '2'
}
}
})
},
goAdd(){
window.location.replace("https://testznzl.lgyzpt.com/activity/zjbPhone/addBusi.html?source=zhijian&phone="+this.info.accNbr+"&areaCode="+this.areaCode+"&campaignId="+this.info.campaignId)
},
goBack(){
history.go(-1)
}
......
......@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>江苏移动</title>
<link rel="stylesheet" href="css/result.css?123123213455">
<link rel="stylesheet" href="css/result.css?12399455">
</head>
<body>
<div id="pageDiv" class="pageDiv">
......@@ -28,10 +28,14 @@
</div>
</div>
<div class="botButt" @click="goBack">返回</div>
<div v-if="busiFlag==1" class="botButt" @click="goAdd">发现商机</div>
<div v-if="busiFlag==1" class="botButt noBusi" @click="goBack">暂无商机</div>
<div v-if="busiFlag==2" class="botButtBack" @click="goBack">返回</div>
</div>
<script src="js/axios.min.js"></script>
<script src="js/vue.min.js"></script>
<script src="js/result.js?12312312332"></script>
<script src="js/result.js?1209022312"></script>
</body>
</html>
\ No newline at end of file
......@@ -68,8 +68,8 @@
<!-- 表格 -->
<div class="personnel-table">
<el-table :data="tableData" border>
<el-table-column prop="personnelName" label="姓名" width="100"></el-table-column>
<el-table-column prop="personnelCode" label="工号" width="100"></el-table-column>
<el-table-column prop="personnelName" label="姓名" width="150"></el-table-column>
<el-table-column prop="personnelCode" label="工号" width="150"></el-table-column>
<el-table-column prop="phone" label="手机号" width="150"></el-table-column>
<el-table-column prop="areaName" label="所属区域" width="250"></el-table-column>
<el-table-column label="状态" width="120">
......
......@@ -129,7 +129,7 @@
<span class="info-value">{{ opportunity.textDescription || '--'}}</span>
</div>
<div class="info-item" style="margin-top: 15px;display: block" v-if="opportunity.voiceDescriptionUrl>0">
<div class="info-item" style="margin-top: 15px;display: block" v-if="opportunity.voiceDescriptionUrl">
<div class="info-label">语音描述:</div>
<div class="info-value">
<audio class="single-audio" controls v-for="item in opportunity.audioArr">
......@@ -382,7 +382,7 @@
<el-option
v-for="item in yxPersonList"
:key="item.id"
:label="item.personnelTypeName"
:label="item.personnelName"
:value="item.id"
></el-option>
</el-select>
......
......@@ -12,11 +12,6 @@
<audio ref="audioObj" playsinline></audio>
<!-- <div class="topBut" v-if="isAlone">
<div class="left" @click="goZj">质检模拟</div>
<div class="right" @click="loginOut">退出</div>
</div> -->
<!-- 联系方式 -->
<div class="section" data-node-id="79:2566">
<div class="section-card" data-node-id="6:249">
......@@ -136,7 +131,7 @@
<!-- 底部提交区域 -->
<div class="bottom-bar" v-if="!isAlone">
<div class="submit-button" data-node-id="6:498" @click="submitBusiness">
<div class="submit-button" data-node-id="6:498" @click="addHaZjBusi">
提交商机
</div>
</div>
......@@ -144,7 +139,7 @@
提交商机
</div>
<div class="loginOut" @click="loginOut">
<div class="loginOut" @click="loginOut" v-if="isAlone">
<img src="images/loginout.png" alt="">
<div>退出</div>
</div>
......@@ -216,6 +211,6 @@
<script src="js/vue.min.js"></script>
<script src="js/util.js"></script>
<script src="js/addressData.js"></script>
<script src="js/addBusi.js?12323311"></script>
<script src="js/addBusi.js?0911"></script>
</body>
</html>
\ No newline at end of file
......@@ -161,6 +161,9 @@
<div class="progress-details" data-node-id="294:2699">
<p class="progress-time">{{ switchTime(item.createTime) }}</p>
<p class="progress-desc">{{ item.followPersonName }}:{{ item.followContent }}</p>
<div class="progress-img" v-if="followImgArr(item.followImages).length > 0">
<img v-for="iitem in followImgArr(item.followImages)" :src="iitem">
</div>
</div>
</div>
</div>
......
......@@ -418,12 +418,25 @@ body {
color: #666;
margin-bottom: 0.08rem;
}
.progress-status{
flex-grow: 1;
}
.progress-desc {
font-size: 0.28rem;
color: #333;
line-height: 0.40rem;
}
.progress-img{
display: flex;
flex-wrap: wrap;
}
.progress-img img{
width: 1.4rem;
margin-right: .4rem;
flex-shrink: 0;
height: 1.4rem;
margin-top: .2rem;
}
.botButt{
display: flex;
......
......@@ -98,6 +98,7 @@ div{
display: flex;
flex-direction: column;
justify-content: center;
padding-top: 0;
}
.input-group {
......

653 KB | W: | H:

286 KB | W: | H:

zhiJianBusi/zjbPhone/images/beijingtu.png
zhiJianBusi/zjbPhone/images/beijingtu.png
zhiJianBusi/zjbPhone/images/beijingtu.png
zhiJianBusi/zjbPhone/images/beijingtu.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -27,8 +27,6 @@ new Vue({
phone: '',
},
// 语音录制状态
isRecording: false,
recordingTimer: null,
......@@ -52,13 +50,18 @@ new Vue({
timeWriteStr: '',
nIndex: '--',
haZjData: {}
},
mounted() {
this.isAlone = utils.getUrlParam('source')!='zhijian'
this.queryLabel()
this.getUserInfo()
if(!this.isAlone){
this.initData()
this.queryHaZjLabel()
}else{
this.queryLabel()
}
// 添加页面可见性变化监听
document.addEventListener('visibilitychange', this.handleVisibilityChange);
......@@ -82,10 +85,101 @@ new Vue({
navigateToList(){
location.href = 'myBusi.html'
},
queryHaZjLabel(){
let param = {}
param.middle = 'common'
param.url = '/opportunity-tags/area-code'
param.data = {
areaCode: this.haZjData.areaCode,
isEnabled: true,
pageNum: 1,
pageSize: 10000
}
utils.httpRequest(param).then(res=>{
if(res.code == 200){
res.data.records.forEach(item=>{
item.selected = false,
item.ifCho = true
})
this.businessTypes = res.data.records
}
})
},
async addHaZjBusi(){
// 表单验证
if (this.isAlone && !this.contactPhone) {
utils.toast('请输入手机号');
return;
}
if (!/^1[3-9]\d{9}$/.test(this.contactPhone)) {
utils.toast('请输入正确的手机号');
return;
}
// 检查是否选择了商机类型
const selectedTypes = this.businessTypes.filter(t => t.selected);
if (selectedTypes.length === 0) {
utils.toast('请选择商机类型');
return false;
}
if (this.isSubmitting) {
utils.toast('正在提交,请稍候...');
return;
}
this.isSubmitting = true
try {
const fd = new FormData();
fd.append('personnelCode',this.haZjData.campaignId)
fd.append('customerPhone',this.contactPhone)
fd.append('customerAddress',this.haZjData.address?('--:'+this.haZjData.address):'')
const tagArr = selectedTypes.map(item=>{return item.id})
fd.append('opportunityType',(tagArr.includes(1)||tagArr.includes(2)?'2':'1'))
fd.append('tagIds',tagArr.join(','))
fd.append('textDescription',this.textDescription)
fd.append('audioType',this.getSupportedMimeType())
if(this.recordingUrlArr.length > 0){
this.recordingUrlArr.forEach(item=>{
fd.append('audioFiles',item.blob)
})
}
// 调用API提交
const result = await utils.httpRequest({
url: '/public/opportunity/create',
middle: 'common',
data: fd
})
if (result.code == 200) {
utils.toast('商机提交成功!')
setTimeout(() => {
history.go(-1)
}, 1000);
} else {
utils.toast(result.message || '提交失败,请重试');
}
} catch (error) {
console.error('提交商机失败:', error);
utils.toast('提交失败,请重试');
} finally {
this.isSubmitting = false;
}
},
queryLabel(){
utils.httpRequest({
url: '/opportunity/tags',
data: {}
data:{
isEnabled: true
}
}).then(res=>{
if(res.code == 200){
res.data.forEach(item=>{
......@@ -99,21 +193,16 @@ new Vue({
/**
* 获取用户信息
* 初始化质检数据
*/
getUserInfo() {
try {
const loginInfo = localStorage.getItem('userInfo');
if (loginInfo) {
this.userInfo = JSON.parse(loginInfo);
// 如果有用户手机号,可以脱敏显示
if (this.userInfo && this.userInfo.phone && !this.isAlone) {
this.contactPhone = this.maskPhone(this.userInfo.phone);
}
}
} catch (error) {
console.error('获取用户信息失败:', error);
initData() {
this.haZjData = {
accNbr: utils.getUrlParam('phone'),
campaignId: utils.getUrlParam('campaignId'),
areaCode: utils.getUrlParam('areaCode'),
}
this.contactPhone = this.haZjData.accNbr
},
/**
......@@ -488,7 +577,7 @@ new Vue({
fd.append('customerAddress',this.selectedAddressCode?(this.selectedAddressCode+":"+this.selectedAddressText+this.detailAddress):'')
const tagArr = selectedTypes.map(item=>{return item.id})
fd.append('opportunityType',(tagArr.includes(1)||tagArr.includes(2))?'2':'1')
fd.append('opportunityType',(tagArr.includes(1)||tagArr.includes(2)?'2':'1'))
fd.append('tagIds',tagArr.join(','))
fd.append('textDescription',this.textDescription)
......
......@@ -79,6 +79,13 @@ new Vue({
},
methods: {
followImgArr(value){
if(!value){
return []
}
return value.split(',')
},
getAddressShow(value){
if(!value){
return '--'
......
......@@ -20,14 +20,14 @@ new Vue({
localStorage.setItem('platform',type)
// if(type == 'gw'){
// this.loginForm.employeeId = '1235456'
// this.loginForm.phoneNumber = '13718596969'
// this.loginForm.employeeId = '54321'
// this.loginForm.phoneNumber = '15611154004'
// }else if(type == 'yx'){
// this.loginForm.employeeId = '23123456'
// this.loginForm.employeeId = '12345'
// this.loginForm.phoneNumber = '13718590607'
// }else{
// this.loginForm.employeeId = '15862709858'
// this.loginForm.phoneNumber = '15862709858'
// this.loginForm.employeeId = '54321'
// this.loginForm.phoneNumber = '13212789513'
// }
},
getVerifyCode() {
......
const util = new window.publicMethod() ;
(function($$) {
"use strict";
let vm
......
......@@ -120,7 +120,7 @@
<!-- 处理人信息 -->
<div class="processor-info" data-name="Container" data-node-id="355:457">
<span>处理人:{{ business.processorName }}</span>
<span>处理人:{{ isWorker?business.marketingStaffName:business.processorName }}</span>
</div>
<!-- 时间信息 -->
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!