Commit f9320e1d by 李宁

1

1 parent 02a85402
...@@ -64,7 +64,7 @@ div{ ...@@ -64,7 +64,7 @@ div{
line-height: 1.2; line-height: 1.2;
} }
.botButt{ .botButtBack{
width: 3.38rem; width: 3.38rem;
height: .88rem; height: .88rem;
display: flex; display: flex;
...@@ -78,3 +78,23 @@ div{ ...@@ -78,3 +78,23 @@ div{
z-index: 9; z-index: 9;
margin: auto; 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 \ No newline at end of file
...@@ -6,12 +6,60 @@ ...@@ -6,12 +6,60 @@
vm = new Vue({ vm = new Vue({
el: '#pageDiv', el: '#pageDiv',
data: { data: {
info: {} info: {},
busiFlag: '--',
areaCode: ''
}, },
created: function() { created: function() {
this.info = JSON.parse(sessionStorage.getItem('huaiAnAppParam')) this.info = JSON.parse(sessionStorage.getItem('huaiAnAppParam'))
// this.info.campaignId = '54321'
// sessionStorage.setItem('huaiAnAppParam',JSON.stringify(this.info))
this.queryOrder()
}, },
methods: { 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(){ goBack(){
history.go(-1) history.go(-1)
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>江苏移动</title> <title>江苏移动</title>
<link rel="stylesheet" href="css/result.css?123123213455"> <link rel="stylesheet" href="css/result.css?12399455">
</head> </head>
<body> <body>
<div id="pageDiv" class="pageDiv"> <div id="pageDiv" class="pageDiv">
...@@ -28,10 +28,14 @@ ...@@ -28,10 +28,14 @@
</div> </div>
</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> </div>
<script src="js/axios.min.js"></script>
<script src="js/vue.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> </body>
</html> </html>
\ No newline at end of file \ No newline at end of file
...@@ -68,8 +68,8 @@ ...@@ -68,8 +68,8 @@
<!-- 表格 --> <!-- 表格 -->
<div class="personnel-table"> <div class="personnel-table">
<el-table :data="tableData" border> <el-table :data="tableData" border>
<el-table-column prop="personnelName" label="姓名" width="100"></el-table-column> <el-table-column prop="personnelName" label="姓名" width="150"></el-table-column>
<el-table-column prop="personnelCode" label="工号" width="100"></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="phone" label="手机号" width="150"></el-table-column>
<el-table-column prop="areaName" label="所属区域" width="250"></el-table-column> <el-table-column prop="areaName" label="所属区域" width="250"></el-table-column>
<el-table-column label="状态" width="120"> <el-table-column label="状态" width="120">
......
...@@ -129,7 +129,7 @@ ...@@ -129,7 +129,7 @@
<span class="info-value">{{ opportunity.textDescription || '--'}}</span> <span class="info-value">{{ opportunity.textDescription || '--'}}</span>
</div> </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-label">语音描述:</div>
<div class="info-value"> <div class="info-value">
<audio class="single-audio" controls v-for="item in opportunity.audioArr"> <audio class="single-audio" controls v-for="item in opportunity.audioArr">
...@@ -382,7 +382,7 @@ ...@@ -382,7 +382,7 @@
<el-option <el-option
v-for="item in yxPersonList" v-for="item in yxPersonList"
:key="item.id" :key="item.id"
:label="item.personnelTypeName" :label="item.personnelName"
:value="item.id" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
......
...@@ -12,11 +12,6 @@ ...@@ -12,11 +12,6 @@
<audio ref="audioObj" playsinline></audio> <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" data-node-id="79:2566">
<div class="section-card" data-node-id="6:249"> <div class="section-card" data-node-id="6:249">
...@@ -136,7 +131,7 @@ ...@@ -136,7 +131,7 @@
<!-- 底部提交区域 --> <!-- 底部提交区域 -->
<div class="bottom-bar" v-if="!isAlone"> <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>
</div> </div>
...@@ -144,7 +139,7 @@ ...@@ -144,7 +139,7 @@
提交商机 提交商机
</div> </div>
<div class="loginOut" @click="loginOut"> <div class="loginOut" @click="loginOut" v-if="isAlone">
<img src="images/loginout.png" alt=""> <img src="images/loginout.png" alt="">
<div>退出</div> <div>退出</div>
</div> </div>
...@@ -216,6 +211,6 @@ ...@@ -216,6 +211,6 @@
<script src="js/vue.min.js"></script> <script src="js/vue.min.js"></script>
<script src="js/util.js"></script> <script src="js/util.js"></script>
<script src="js/addressData.js"></script> <script src="js/addressData.js"></script>
<script src="js/addBusi.js?12323311"></script> <script src="js/addBusi.js?0911"></script>
</body> </body>
</html> </html>
\ No newline at end of file \ No newline at end of file
...@@ -161,6 +161,9 @@ ...@@ -161,6 +161,9 @@
<div class="progress-details" data-node-id="294:2699"> <div class="progress-details" data-node-id="294:2699">
<p class="progress-time">{{ switchTime(item.createTime) }}</p> <p class="progress-time">{{ switchTime(item.createTime) }}</p>
<p class="progress-desc">{{ item.followPersonName }}:{{ item.followContent }}</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> </div>
</div> </div>
......
...@@ -418,12 +418,25 @@ body { ...@@ -418,12 +418,25 @@ body {
color: #666; color: #666;
margin-bottom: 0.08rem; margin-bottom: 0.08rem;
} }
.progress-status{
flex-grow: 1;
}
.progress-desc { .progress-desc {
font-size: 0.28rem; font-size: 0.28rem;
color: #333; color: #333;
line-height: 0.40rem; 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{ .botButt{
display: flex; display: flex;
......
...@@ -98,6 +98,7 @@ div{ ...@@ -98,6 +98,7 @@ div{
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
padding-top: 0;
} }
.input-group { .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({ ...@@ -27,8 +27,6 @@ new Vue({
phone: '', phone: '',
}, },
// 语音录制状态 // 语音录制状态
isRecording: false, isRecording: false,
recordingTimer: null, recordingTimer: null,
...@@ -52,13 +50,18 @@ new Vue({ ...@@ -52,13 +50,18 @@ new Vue({
timeWriteStr: '', timeWriteStr: '',
nIndex: '--', nIndex: '--',
haZjData: {}
}, },
mounted() { mounted() {
this.isAlone = utils.getUrlParam('source')!='zhijian' this.isAlone = utils.getUrlParam('source')!='zhijian'
if(!this.isAlone){
this.initData()
this.queryHaZjLabel()
}else{
this.queryLabel() this.queryLabel()
this.getUserInfo() }
// 添加页面可见性变化监听 // 添加页面可见性变化监听
document.addEventListener('visibilitychange', this.handleVisibilityChange); document.addEventListener('visibilitychange', this.handleVisibilityChange);
...@@ -82,10 +85,101 @@ new Vue({ ...@@ -82,10 +85,101 @@ new Vue({
navigateToList(){ navigateToList(){
location.href = 'myBusi.html' 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(){ queryLabel(){
utils.httpRequest({ utils.httpRequest({
url: '/opportunity/tags', url: '/opportunity/tags',
data: {} data:{
isEnabled: true
}
}).then(res=>{ }).then(res=>{
if(res.code == 200){ if(res.code == 200){
res.data.forEach(item=>{ res.data.forEach(item=>{
...@@ -99,21 +193,16 @@ new Vue({ ...@@ -99,21 +193,16 @@ new Vue({
/** /**
* 获取用户信息 * 初始化质检数据
*/ */
getUserInfo() { initData() {
try { this.haZjData = {
const loginInfo = localStorage.getItem('userInfo'); accNbr: utils.getUrlParam('phone'),
if (loginInfo) { campaignId: utils.getUrlParam('campaignId'),
this.userInfo = JSON.parse(loginInfo); areaCode: utils.getUrlParam('areaCode'),
// 如果有用户手机号,可以脱敏显示
if (this.userInfo && this.userInfo.phone && !this.isAlone) {
this.contactPhone = this.maskPhone(this.userInfo.phone);
}
}
} catch (error) {
console.error('获取用户信息失败:', error);
} }
this.contactPhone = this.haZjData.accNbr
}, },
/** /**
...@@ -488,7 +577,7 @@ new Vue({ ...@@ -488,7 +577,7 @@ new Vue({
fd.append('customerAddress',this.selectedAddressCode?(this.selectedAddressCode+":"+this.selectedAddressText+this.detailAddress):'') fd.append('customerAddress',this.selectedAddressCode?(this.selectedAddressCode+":"+this.selectedAddressText+this.detailAddress):'')
const tagArr = selectedTypes.map(item=>{return item.id}) 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('tagIds',tagArr.join(','))
fd.append('textDescription',this.textDescription) fd.append('textDescription',this.textDescription)
......
...@@ -79,6 +79,13 @@ new Vue({ ...@@ -79,6 +79,13 @@ new Vue({
}, },
methods: { methods: {
followImgArr(value){
if(!value){
return []
}
return value.split(',')
},
getAddressShow(value){ getAddressShow(value){
if(!value){ if(!value){
return '--' return '--'
......
...@@ -20,14 +20,14 @@ new Vue({ ...@@ -20,14 +20,14 @@ new Vue({
localStorage.setItem('platform',type) localStorage.setItem('platform',type)
// if(type == 'gw'){ // if(type == 'gw'){
// this.loginForm.employeeId = '1235456' // this.loginForm.employeeId = '54321'
// this.loginForm.phoneNumber = '13718596969' // this.loginForm.phoneNumber = '15611154004'
// }else if(type == 'yx'){ // }else if(type == 'yx'){
// this.loginForm.employeeId = '23123456' // this.loginForm.employeeId = '12345'
// this.loginForm.phoneNumber = '13718590607' // this.loginForm.phoneNumber = '13718590607'
// }else{ // }else{
// this.loginForm.employeeId = '15862709858' // this.loginForm.employeeId = '54321'
// this.loginForm.phoneNumber = '15862709858' // this.loginForm.phoneNumber = '13212789513'
// } // }
}, },
getVerifyCode() { getVerifyCode() {
......
const util = new window.publicMethod() ;
(function($$) { (function($$) {
"use strict"; "use strict";
let vm let vm
......
...@@ -120,7 +120,7 @@ ...@@ -120,7 +120,7 @@
<!-- 处理人信息 --> <!-- 处理人信息 -->
<div class="processor-info" data-name="Container" data-node-id="355:457"> <div class="processor-info" data-name="Container" data-node-id="355:457">
<span>处理人:{{ business.processorName }}</span> <span>处理人:{{ isWorker?business.marketingStaffName:business.processorName }}</span>
</div> </div>
<!-- 时间信息 --> <!-- 时间信息 -->
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!