@@ -68,21 +68,14 @@ | |||||
hm.src = 'https://hm.baidu.com/hm.js?0625618efb027ed02e88da84c121652e' | hm.src = 'https://hm.baidu.com/hm.js?0625618efb027ed02e88da84c121652e' | ||||
var s = document.getElementsByTagName('script')[0] | var s = document.getElementsByTagName('script')[0] | ||||
s.parentNode.insertBefore(hm, s) | s.parentNode.insertBefore(hm, s) | ||||
console.log('我进来执行了~~~~~~~~~~~~~~~~~~~~') | |||||
let url = document.domain | |||||
if (url == 'focus.hfju.com' || url == 'focus.aihxz.com'|| url == 'localhost') { | |||||
document.querySelector('link[rel="icon"]').setAttribute('href', '<%= BASE_URL %>sh.png') | |||||
} else { | |||||
document.querySelector('link[rel="icon"]').setAttribute('href', '<%= BASE_URL %>icon1.png') | |||||
} | |||||
})() | })() | ||||
// fnResize(); | |||||
// window.onresize = function () { | |||||
// fnResize(); | |||||
// } | |||||
// function fnResize() { | |||||
// var deviceWidth = document.documentElement.clientWidth || window.innerWidth; | |||||
// if (deviceWidth >= 1920) { | |||||
// deviceWidth = 1920; | |||||
// } | |||||
// if (deviceWidth <= 1200) { | |||||
// deviceWidth = 1200; | |||||
// } | |||||
// document.documentElement.style.fontSize = (deviceWidth / 19.2) + 'px'; | |||||
// } | |||||
</script> | </script> | ||||
</body> | </body> | ||||
@@ -1332,4 +1332,13 @@ export function findmatchdataByOrgCode(data) { | |||||
method: 'post', | method: 'post', | ||||
data | data | ||||
}) | }) | ||||
} | |||||
// 公司后台用户洞察 | |||||
export function findHouseListByAccount(params) { | |||||
return request({ | |||||
url: 'autoSR/zkhouse/findHouseListByAccount', | |||||
method: 'get', | |||||
params | |||||
}) | |||||
} | } |
@@ -18,6 +18,13 @@ export const tableOption = { | |||||
viewBtn: true, | viewBtn: true, | ||||
size: "small", | size: "small", | ||||
column: [ | column: [ | ||||
{ | |||||
label: "项目名称", | |||||
prop: "houseName", | |||||
type: 'select', | |||||
// search: true, | |||||
dicData: [] | |||||
}, | |||||
{ | { | ||||
label: "操作人", | label: "操作人", | ||||
prop: "name", | prop: "name", | ||||
@@ -28,11 +35,15 @@ export const tableOption = { | |||||
prop: "createBy", | prop: "createBy", | ||||
search: true | search: true | ||||
}, | }, | ||||
// { | |||||
// label: "终端", | |||||
// width: 180, | |||||
// prop: "title" | |||||
// }, | |||||
{ | |||||
label: "终端", | |||||
width: 180, | |||||
prop: "loginSystem", | |||||
formatter: row => { | |||||
if (!row.loginSystem) return '' | |||||
else return row.loginSystem == 0 ? "PC" : "小程序" | |||||
} | |||||
}, | |||||
{ | { | ||||
label: "登录IP", | label: "登录IP", | ||||
prop: "remoteAddr" | prop: "remoteAddr" | ||||
@@ -9,10 +9,15 @@ export default function() { | |||||
} | } | ||||
}, | }, | ||||
created() { | created() { | ||||
this.themeVal = this.theme | |||||
if (document.domain == 'focus.hfju.com' || document.domain == 'focus.aihxz.com' || document.domain == 'localhost') { | |||||
this.themeVal = '#ff4500' | |||||
} else { | |||||
this.themeVal = this.theme | |||||
} | |||||
}, | }, | ||||
watch: { | watch: { | ||||
themeVal(val, oldVal) { | themeVal(val, oldVal) { | ||||
console.log(val, oldVal) | |||||
this.$store.commit('SET_THEME', val) | this.$store.commit('SET_THEME', val) | ||||
this.updateTheme(val, oldVal) | this.updateTheme(val, oldVal) | ||||
} | } | ||||
@@ -10,7 +10,10 @@ | |||||
<div class="content"> | <div class="content"> | ||||
<!-- 质控后台 --> | <!-- 质控后台 --> | ||||
<div class="tab" @click="goindex(0)" v-if="tabFlag1"> | <div class="tab" @click="goindex(0)" v-if="tabFlag1"> | ||||
<div><img src="../../../public/logoPng.png" alt="" style="padding: 8px 0;"/></div> | |||||
<div> | |||||
<img v-if="url == 'focus.hfju.com' || url == 'focus.aihxz.com' || url == 'localhost'" src="/img/sohu.png" alt="" style="padding: 8px 0;"/> | |||||
<img v-else src="/logoPng.png" alt="" style="padding: 8px 0;"/> | |||||
</div> | |||||
<div class="text">AI销讲助手后台</div> | <div class="text">AI销讲助手后台</div> | ||||
</div> | </div> | ||||
<div class="tab" @click="goindex(1)" v-if="tabFlag2"> | <div class="tab" @click="goindex(1)" v-if="tabFlag2"> | ||||
@@ -44,6 +47,7 @@ export default { | |||||
tabFlag4: false, | tabFlag4: false, | ||||
backFlag: false, | backFlag: false, | ||||
info: {}, | info: {}, | ||||
url: document.domain | |||||
}; | }; | ||||
}, | }, | ||||
computed: {}, | computed: {}, | ||||
@@ -3,7 +3,8 @@ | |||||
<transition name="fade"> | <transition name="fade"> | ||||
<span v-if="keyCollapse" key="0" class="avue-logo_subtitle" @click="goIndex"> | <span v-if="keyCollapse" key="0" class="avue-logo_subtitle" @click="goIndex"> | ||||
<div class="logo"> | <div class="logo"> | ||||
<i class="logoIcon" style="width:44px;"></i> | |||||
<i v-if="url == 'focus.hfju.com' || url == 'focus.aihxz.com'|| url == 'localhost'" class="logoIcons" style="width:44px;"></i> | |||||
<i v-else class="logoIcon" style="width:44px;"></i> | |||||
<!-- <span>{{ website.subtitle }}</span> --> | <!-- <span>{{ website.subtitle }}</span> --> | ||||
</div> | </div> | ||||
</span> | </span> | ||||
@@ -11,7 +12,8 @@ | |||||
<transition-group name="fade"> | <transition-group name="fade"> | ||||
<span v-if="!keyCollapse" key="1" class="avue-logo_title" @click="goIndex"> | <span v-if="!keyCollapse" key="1" class="avue-logo_title" @click="goIndex"> | ||||
<div class="logo"> | <div class="logo"> | ||||
<i class="logoIcon"></i> | |||||
<i v-if="url == 'focus.hfju.com' || url == 'focus.aihxz.com'|| url == 'localhost'" class="logoIcons"></i> | |||||
<i v-else class="logoIcon" style="width:44px;"></i> | |||||
<span>{{ website.title }}</span> | <span>{{ website.title }}</span> | ||||
</div> | </div> | ||||
</span> | </span> | ||||
@@ -22,6 +24,11 @@ | |||||
<script> | <script> | ||||
import { mapGetters } from 'vuex' | import { mapGetters } from 'vuex' | ||||
export default { | export default { | ||||
data() { | |||||
return { | |||||
url: document.domain, | |||||
} | |||||
}, | |||||
name: 'Logo', | name: 'Logo', | ||||
computed: { | computed: { | ||||
...mapGetters(['website', 'keyCollapse']) | ...mapGetters(['website', 'keyCollapse']) | ||||
@@ -59,7 +66,14 @@ export default { | |||||
display: block; | display: block; | ||||
width: 50px; | width: 50px; | ||||
height: 38px; | height: 38px; | ||||
background: url('../../../public/logoPng.png') no-repeat; | |||||
background: url('/logoPng.png') no-repeat; | |||||
background-size: 100%; | |||||
} | |||||
.logoIcons { | |||||
display: block; | |||||
width: 50px; | |||||
height: 38px; | |||||
background: url('/img/sohu.png') no-repeat; | |||||
background-size: 100%; | background-size: 100%; | ||||
} | } | ||||
} | } | ||||
@@ -1,11 +1,24 @@ | |||||
<template> | <template> | ||||
<div class="login-container"> | <div class="login-container"> | ||||
<div class="login-weaper animated bounceInDown"> | |||||
<div class="login-weaper animated bounceInDown"> | |||||
<div class="login-logo"> | <div class="login-logo"> | ||||
<img src="/img/loginicon.png" style=" margin: 10px auto;" alt=""> | |||||
<img | |||||
v-if=" | |||||
url == 'focus.hfju.com' || url == 'focus.aihxz.com'|| url == 'localhost' | |||||
" | |||||
src="/img/sohu.png" | |||||
alt="" | |||||
style="margin: 10px auto" | |||||
/> | |||||
<img | |||||
v-else | |||||
src="/logoPng.png" | |||||
alt="" | |||||
style="margin: 10px auto" | |||||
/> | |||||
</div> | </div> | ||||
<p class="login-tip" style="color:#2671E2;">{{ website.title}}</p> | |||||
<div class="login-border" style="padding-top:.6rem"> | |||||
<p class="login-tip" style="color: #2671e2">{{ website.title }}</p> | |||||
<div class="login-border" style="padding-top: 0.6rem"> | |||||
<div class="login-main"> | <div class="login-main"> | ||||
<h4 class="login-title"> | <h4 class="login-title"> | ||||
<!-- <el-select v-model="active" | <!-- <el-select v-model="active" | ||||
@@ -18,24 +31,24 @@ | |||||
:value="tenant.id"></el-option> | :value="tenant.id"></el-option> | ||||
</el-select> --> | </el-select> --> | ||||
</h4> | </h4> | ||||
<userLogin v-if="activeName==='user'" /> | |||||
<codeLogin v-else-if="activeName==='code'" /> | |||||
<thirdLogin v-else-if="activeName==='third'" /> | |||||
<userLogin v-if="activeName === 'user'" /> | |||||
<codeLogin v-else-if="activeName === 'code'" /> | |||||
<thirdLogin v-else-if="activeName === 'third'" /> | |||||
<div class="login-menu"> | <div class="login-menu"> | ||||
<a href="#" | |||||
@click.stop="activeName='user'">账号密码</a> | |||||
<a href="#" | |||||
@click.stop="activeName='code'">手机号登录</a> | |||||
<a href="#" @click.stop="activeName = 'user'">账号密码</a> | |||||
<a href="#" @click.stop="activeName = 'code'">手机号登录</a> | |||||
<!-- <a href="#" | <!-- <a href="#" | ||||
@click.stop="activeName='third'">第三方登录</a> --> | @click.stop="activeName='third'">第三方登录</a> --> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="login-copyright"> | <div class="login-copyright"> | ||||
<span class="lcopyrights" @click="toBeian('https://beian.miit.gov.cn/#/Integrated/index')"> | |||||
<span | |||||
class="lcopyrights" | |||||
@click="toBeian('https://beian.miit.gov.cn/#/Integrated/index')" | |||||
> | |||||
京ICP备19050974号-2 | 京ICP备19050974号-2 | ||||
</span> | </span> | ||||
</div> | </div> | ||||
@@ -43,112 +56,114 @@ | |||||
</div> | </div> | ||||
</template> | </template> | ||||
<script> | <script> | ||||
import {fetchList} from '@/api/admin/tenant' | |||||
import userLogin from './userlogin' | |||||
import codeLogin from './codelogin' | |||||
import thirdLogin from './thirdlogin' | |||||
import { mapGetters } from 'vuex' | |||||
import { getStore, setStore } from '@/util/store' | |||||
import topColor from '@/page/index/top/top-color' | |||||
import { fetchList } from "@/api/admin/tenant"; | |||||
import userLogin from "./userlogin"; | |||||
import codeLogin from "./codelogin"; | |||||
import thirdLogin from "./thirdlogin"; | |||||
import { mapGetters } from "vuex"; | |||||
import { getStore, setStore } from "@/util/store"; | |||||
import topColor from "@/page/index/top/top-color"; | |||||
export default { | export default { | ||||
name: 'Login', | |||||
name: "Login", | |||||
components: { | components: { | ||||
userLogin, | userLogin, | ||||
codeLogin, | codeLogin, | ||||
thirdLogin, | thirdLogin, | ||||
topColor | |||||
topColor, | |||||
}, | }, | ||||
data () { | |||||
data() { | |||||
return { | return { | ||||
tenantList: [], | tenantList: [], | ||||
active: '', | |||||
activeName: 'user', | |||||
socialForm: {} | |||||
} | |||||
active: "", | |||||
activeName: "user", | |||||
socialForm: {}, | |||||
url: document.domain, | |||||
}; | |||||
}, | }, | ||||
watch: { | watch: { | ||||
$route: { | $route: { | ||||
handler () { | |||||
const params = this.$route.query | |||||
if (this.validatenull(params.state) && this.validatenull(params.code)) return | |||||
handler() { | |||||
const params = this.$route.query; | |||||
if (this.validatenull(params.state) && this.validatenull(params.code)) | |||||
return; | |||||
this.socialForm.state = params.state | |||||
this.socialForm.code = params.code | |||||
this.socialForm.state = params.state; | |||||
this.socialForm.code = params.code; | |||||
const loading = this.$loading({ | const loading = this.$loading({ | ||||
lock: true, | lock: true, | ||||
text: `登录中,请稍后。。。`, | text: `登录中,请稍后。。。`, | ||||
spinner: 'el-icon-loading' | |||||
}) | |||||
this.$store.dispatch('LoginBySocial', this.socialForm).then( | |||||
() => { | |||||
loading.close() | |||||
this.$router.push({ path: this.tagWel.value }) | |||||
}).catch(() => { | |||||
loading.close() | |||||
spinner: "el-icon-loading", | |||||
}); | |||||
this.$store | |||||
.dispatch("LoginBySocial", this.socialForm) | |||||
.then(() => { | |||||
loading.close(); | |||||
this.$router.push({ path: this.tagWel.value }); | |||||
}) | }) | ||||
.catch(() => { | |||||
loading.close(); | |||||
}); | |||||
}, | }, | ||||
immediate: true | |||||
} | |||||
}, | |||||
created () { | |||||
this.watermark() | |||||
this.getTenantList() | |||||
this.active = getStore({ name: 'tenantId' }) | |||||
immediate: true, | |||||
}, | |||||
}, | }, | ||||
mounted () { | |||||
created() { | |||||
this.watermark(); | |||||
this.getTenantList(); | |||||
this.active = getStore({ name: "tenantId" }); | |||||
}, | }, | ||||
mounted() {}, | |||||
computed: { | computed: { | ||||
...mapGetters(['website', 'tagWel']) | |||||
...mapGetters(["website", "tagWel"]), | |||||
}, | }, | ||||
methods: { | methods: { | ||||
toBeian(path) { | toBeian(path) { | ||||
window.open(path, "_blank") | |||||
window.open(path, "_blank"); | |||||
}, | }, | ||||
handleCommand (command) { | |||||
setStore({ name: 'tenantId', content: command }) | |||||
handleCommand(command) { | |||||
setStore({ name: "tenantId", content: command }); | |||||
}, | }, | ||||
getTenantList () { | |||||
fetchList().then(response => { | |||||
this.tenantList = response.data | |||||
}) | |||||
getTenantList() { | |||||
fetchList().then((response) => { | |||||
this.tenantList = response.data; | |||||
}); | |||||
}, | }, | ||||
watermark () { | |||||
const text = '' | |||||
const canvas = document.createElement('canvas') | |||||
canvas.width = '500' | |||||
canvas.height = '200' | |||||
const ctx = canvas.getContext('2d') | |||||
ctx.clearRect(0, 0, 200, 200) // 绘制之前画布清除 | |||||
ctx.font = '30px 黑体' | |||||
ctx.rotate(-20 * Math.PI / 180) // 为了实现水印倾斜效果,旋转画布坐标系 | |||||
ctx.fillStyle = 'rgba(100,100,100,0.15)' // 画笔颜色 | |||||
ctx.fillText(text, -20, 200) // 书写的内容及位置 | |||||
ctx.rotate('20*Math.PI/180') // 坐标系还原,如果后续没有其他操作,这一步可以省略 | |||||
watermark() { | |||||
const text = ""; | |||||
const canvas = document.createElement("canvas"); | |||||
canvas.width = "500"; | |||||
canvas.height = "200"; | |||||
const ctx = canvas.getContext("2d"); | |||||
ctx.clearRect(0, 0, 200, 200); // 绘制之前画布清除 | |||||
ctx.font = "30px 黑体"; | |||||
ctx.rotate((-20 * Math.PI) / 180); // 为了实现水印倾斜效果,旋转画布坐标系 | |||||
ctx.fillStyle = "rgba(100,100,100,0.15)"; // 画笔颜色 | |||||
ctx.fillText(text, -20, 200); // 书写的内容及位置 | |||||
ctx.rotate("20*Math.PI/180"); // 坐标系还原,如果后续没有其他操作,这一步可以省略 | |||||
// 将canvas的内容转换为base64编码 | // 将canvas的内容转换为base64编码 | ||||
const data = canvas.toDataURL('image/png', 1) // 1表示质量(无损压缩) | |||||
const data = canvas.toDataURL("image/png", 1); // 1表示质量(无损压缩) | |||||
window.onload = () => { | window.onload = () => { | ||||
const background = 'url(' + data + ') repeat' | |||||
var watermark = document.createElement('div') | |||||
watermark.style.width = '100%' | |||||
watermark.style.height = '100%' | |||||
watermark.style.position = 'fixed' | |||||
watermark.style.left = '0' | |||||
watermark.style.top = '0' | |||||
watermark.style.pointerEvents = 'none' | |||||
watermark.style.background = background | |||||
watermark.style.zIndex = '9999' | |||||
document.body.append(watermark) | |||||
} | |||||
} | |||||
} | |||||
} | |||||
const background = "url(" + data + ") repeat"; | |||||
var watermark = document.createElement("div"); | |||||
watermark.style.width = "100%"; | |||||
watermark.style.height = "100%"; | |||||
watermark.style.position = "fixed"; | |||||
watermark.style.left = "0"; | |||||
watermark.style.top = "0"; | |||||
watermark.style.pointerEvents = "none"; | |||||
watermark.style.background = background; | |||||
watermark.style.zIndex = "9999"; | |||||
document.body.append(watermark); | |||||
}; | |||||
}, | |||||
}, | |||||
}; | |||||
</script> | </script> | ||||
<style lang="scss"> | <style lang="scss"> | ||||
@import "@/styles/login.scss"; | |||||
@import "@/styles/login.scss"; | |||||
</style> | </style> |
@@ -256,37 +256,66 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div | <div | ||||
class="pagechen projectCardItem" | |||||
class="pagechen" | |||||
@click=" | @click=" | ||||
toDetail( | |||||
'/Statistics/ConsultantBrand', | |||||
nowSelectTime(3), | |||||
'顾问排名' | |||||
) | |||||
toDetail('/ReceivingRecords/index', nowSelectTime(2), '接待记录') | |||||
" | " | ||||
> | > | ||||
<div> | |||||
<div class="pageboxtitle1">顾问(人)</div> | |||||
<div style="width: 100%"> | |||||
<div class="pageboxtitle1 projectCardItem"> | |||||
<div class="sum"> | |||||
<div class="sum-top"> | |||||
<div>平均执行率</div> | |||||
<el-tooltip | |||||
effect="light" | |||||
content="筛选时间内,有效接待(不包含待接单)的平均执行率;" | |||||
placement="bottom-end" | |||||
> | |||||
<i class="pop"></i> | |||||
</el-tooltip> | |||||
</div> | |||||
<div class="span1">{{ cardlist.datalist.fraction || 0 }}%</div> | |||||
</div> | |||||
<div class="cardicon"> | |||||
<img | |||||
src="../../public/img/indexIcon/indexCardIcon11.png" | |||||
alt="" | |||||
srcset="" | |||||
/> | |||||
</div> | |||||
</div> | |||||
<div class="pageboxtitle2 projectColumn"> | <div class="pageboxtitle2 projectColumn"> | ||||
<div class="span1">{{ cardlist.datalist.accountNum || 0 }}</div> | |||||
<!-- <div class="span2"> | |||||
<div class="span2"> | |||||
<span class="span2-1"> | <span class="span2-1"> | ||||
环比:{{ cardlist.sequential.accountNum || 0 }}</span> | |||||
<span class="span2-2" v-if="cardlist.liftlist.accountNum > 0"> | |||||
<i class="el-icon-top" style="color: red"></i> | |||||
{{ cardlist.liftlist.accountNum || 0 }} | |||||
环比:{{ cardlist.sequential.fraction || 0 }}</span | |||||
> | |||||
<span class="span2-2" v-if="cardlist.liftlist.fraction > 0"> | |||||
+{{ cardlist.liftlist.fraction || 0 }}% | |||||
<i class="up"></i> | |||||
</span> | </span> | ||||
<span class="span2-3" v-if="cardlist.liftlist.accountNum < 0"> | |||||
<i class="el-icon-bottom" style="color: #25ceba"></i> | |||||
{{ cardlist.liftlist.accountNum || 0 }} | |||||
<span class="span2-3" v-if="cardlist.liftlist.fraction < 0"> | |||||
{{ cardlist.liftlist.fraction || 0 }}% | |||||
<i class="down"></i> | |||||
</span> | </span> | ||||
</div> --> | |||||
<span | |||||
style="margin-left: 15px" | |||||
v-if="cardlist.liftlist.fraction > 0" | |||||
>数据有所增长</span | |||||
> | |||||
<span | |||||
style="margin-left: 15px" | |||||
v-if="cardlist.liftlist.fraction < 0" | |||||
>数据有所下降</span | |||||
> | |||||
</div> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="cardicon"> | |||||
<img src="../../public/img/indexIcon/indexCardIcon21.png" alt="" /> | |||||
</div> | |||||
</div> | </div> | ||||
<div | <div | ||||
class="pagechen" | class="pagechen" | ||||
@click=" | @click=" | ||||
@@ -297,16 +326,16 @@ | |||||
<div class="pageboxtitle1 projectCardItem"> | <div class="pageboxtitle1 projectCardItem"> | ||||
<div class="sum"> | <div class="sum"> | ||||
<div class="sum-top"> | <div class="sum-top"> | ||||
<div>平均执行率</div> | |||||
<div>平均客户意向度</div> | |||||
<el-tooltip | <el-tooltip | ||||
effect="light" | effect="light" | ||||
content="筛选时间内,有效接待(不包含待接单)的平均执行率;" | |||||
content="筛选时间内,新增的客户平均意向度,标记接待顾问、画像校准和给客户打标签有助于提升客户意向度;" | |||||
placement="bottom-end" | placement="bottom-end" | ||||
> | > | ||||
<i class="pop"></i> | <i class="pop"></i> | ||||
</el-tooltip> | </el-tooltip> | ||||
</div> | </div> | ||||
<div class="span1">{{ cardlist.datalist.fraction || 0 }}%</div> | |||||
<div class="span1">{{ cardlist.datalist.sumLevelFraction || 0 }}%</div> | |||||
</div> | </div> | ||||
<div class="cardicon"> | <div class="cardicon"> | ||||
@@ -320,32 +349,33 @@ | |||||
<div class="pageboxtitle2 projectColumn"> | <div class="pageboxtitle2 projectColumn"> | ||||
<div class="span2"> | <div class="span2"> | ||||
<span class="span2-1"> | <span class="span2-1"> | ||||
环比:{{ cardlist.sequential.fraction || 0 }}</span | |||||
环比:{{ cardlist.sequential.sumLevelFraction || 0 }}</span | |||||
> | > | ||||
<span class="span2-2" v-if="cardlist.liftlist.fraction > 0"> | |||||
+{{ cardlist.liftlist.fraction || 0 }}% | |||||
<span class="span2-2" v-if="cardlist.liftlist.sumLevelFraction > 0"> | |||||
+{{ cardlist.liftlist.sumLevelFraction || 0 }}% | |||||
<i class="up"></i> | <i class="up"></i> | ||||
</span> | </span> | ||||
<span class="span2-3" v-if="cardlist.liftlist.fraction < 0"> | |||||
{{ cardlist.liftlist.fraction || 0 }}% | |||||
<span class="span2-3" v-if="cardlist.liftlist.sumLevelFraction < 0"> | |||||
{{ cardlist.liftlist.sumLevelFraction || 0 }}% | |||||
<i class="down"></i> | <i class="down"></i> | ||||
</span> | </span> | ||||
<span | <span | ||||
style="margin-left: 15px" | style="margin-left: 15px" | ||||
v-if="cardlist.liftlist.fraction > 0" | |||||
v-if="cardlist.liftlist.sumLevelFraction > 0" | |||||
>数据有所增长</span | >数据有所增长</span | ||||
> | > | ||||
<span | <span | ||||
style="margin-left: 15px" | style="margin-left: 15px" | ||||
v-if="cardlist.liftlist.fraction < 0" | |||||
v-if="cardlist.liftlist.sumLevelFraction < 0" | |||||
>数据有所下降</span | >数据有所下降</span | ||||
> | > | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div | <div | ||||
class="pagechen" | class="pagechen" | ||||
@click=" | @click=" | ||||
@@ -2275,7 +2305,16 @@ | |||||
<!-- 用户洞察 --> | <!-- 用户洞察 --> | ||||
<section class="userInsights"> | <section class="userInsights"> | ||||
<div class="u-title">用户洞察</div> | |||||
<div class="u-title"> | |||||
用户洞察 | |||||
<el-tooltip | |||||
effect="light" | |||||
content="筛选时间内,画像标签命中的新增客户数分布图;接待标记顾问、画像校准和给客户打标签有助于提升画像精准度;" | |||||
placement="bottom-end" | |||||
> | |||||
<i class="pop"></i> | |||||
</el-tooltip> | |||||
</div> | |||||
<div id="userInsight" class="treeMapBox"></div> | <div id="userInsight" class="treeMapBox"></div> | ||||
</section> | </section> | ||||
</template> | </template> | ||||
@@ -2689,7 +2728,7 @@ export default { | |||||
{ | { | ||||
name: "平均客户意向度", | name: "平均客户意向度", | ||||
unit: '%', | unit: '%', | ||||
tooltip: "", // 描述name文字的 | |||||
tooltip: "筛选时间内,新增的客户平均意向度,标记接待顾问、画像校准和给客户打标签有助于提升客户意向度;", // 描述name文字的 | |||||
path: "/building/Count", | path: "/building/Count", | ||||
pathName: "项目统计", | pathName: "项目统计", | ||||
paramsName: "sumLevelFraction", // 接待量变量名称 | paramsName: "sumLevelFraction", // 接待量变量名称 | ||||
@@ -3017,13 +3056,13 @@ export default { | |||||
res.data.tendencyData.forEach((item) => { | res.data.tendencyData.forEach((item) => { | ||||
// 销讲趋势 | // 销讲趋势 | ||||
lineBox1.xAxis.push(item.statDate); | |||||
lineBox1.xAxis.push(item.statDate.split(' ')[0]); | |||||
lineBox1.receptionCount.push(item.receptionCount || 0); | lineBox1.receptionCount.push(item.receptionCount || 0); | ||||
lineBox1.activeCustomer.push(item.activeCustomer || 0); | lineBox1.activeCustomer.push(item.activeCustomer || 0); | ||||
lineBox1.prohibitedCustomer.push(item.prohibitedCustomer || 0); | lineBox1.prohibitedCustomer.push(item.prohibitedCustomer || 0); | ||||
// 接待趋势 | // 接待趋势 | ||||
lineBox2.xAxis.push(item.statDate); | |||||
lineBox2.xAxis.push(item.statDate.split(' ')[0]); | |||||
lineBox2.fraction.push(item.fraction || 0); | lineBox2.fraction.push(item.fraction || 0); | ||||
lineBox2.wordFraction.push(item.wordFraction || 0); | lineBox2.wordFraction.push(item.wordFraction || 0); | ||||
lineBox2.wordFinishFraction.push(item.wordFinishFraction || 0); | lineBox2.wordFinishFraction.push(item.wordFinishFraction || 0); | ||||
@@ -4170,6 +4209,8 @@ export default { | |||||
color: #111111; | color: #111111; | ||||
font-weight: 500; | font-weight: 500; | ||||
line-height: 24px; | line-height: 24px; | ||||
display: flex; | |||||
align-items: center; | |||||
} | } | ||||
.treeMapBox { | .treeMapBox { | ||||
@@ -274,12 +274,12 @@ export default { | |||||
label: "客户阶段", | label: "客户阶段", | ||||
prop: "clientStageName", | prop: "clientStageName", | ||||
}, | }, | ||||
{ | |||||
label: "客户标签命中数", | |||||
prop: "pickCount", | |||||
width: '150px', | |||||
sortable: true, | |||||
}, | |||||
// { | |||||
// label: "客户标签命中数", | |||||
// prop: "pickCount", | |||||
// width: '150px', | |||||
// sortable: true, | |||||
// }, | |||||
{ | { | ||||
sortable: true, | sortable: true, | ||||
label: "到访次数", | label: "到访次数", | ||||
@@ -33,7 +33,7 @@ | |||||
>切换销讲业务</span> | >切换销讲业务</span> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div v-if="rec_index_addJ" @click="Addtodigest()"> | |||||
<div v-if="rec_index_addJ && mg == 0" @click="Addtodigest()"> | |||||
<div | <div | ||||
v-if="arr[aplayerId].status == 0" | v-if="arr[aplayerId].status == 0" | ||||
style="display: flex; align-items: center" | style="display: flex; align-items: center" | ||||
@@ -958,15 +958,15 @@ | |||||
> | > | ||||
<div style="width: 80%; margin: 0 auto; font-size: 30px"> | <div style="width: 80%; margin: 0 auto; font-size: 30px"> | ||||
<div> | <div> | ||||
<el-radio v-model="effectiveindex" label="1">没电指派无录音</el-radio> | |||||
<el-radio v-model="effectiveindex" label="2">离线指派无录音</el-radio> | |||||
<el-radio v-model="effectiveindex" :label="1">没电指派无录音</el-radio> | |||||
<el-radio v-model="effectiveindex" :label="2">离线指派无录音</el-radio> | |||||
</div> | </div> | ||||
<div> | <div> | ||||
<el-radio v-model="effectiveindex" label="3">系统测试误操作</el-radio> | |||||
<el-radio v-model="effectiveindex" label="4">非接访场景录音</el-radio> | |||||
<el-radio v-model="effectiveindex" :label="3">系统测试误操作</el-radio> | |||||
<el-radio v-model="effectiveindex" :label="4">非接访场景录音</el-radio> | |||||
</div> | </div> | ||||
<div> | <div> | ||||
<el-radio v-model="effectiveindex" label="5">其他</el-radio> | |||||
<el-radio v-model="effectiveindex" :label="5">其他</el-radio> | |||||
</div> | </div> | ||||
<div v-if="effectiveindex == 5"> | <div v-if="effectiveindex == 5"> | ||||
<textarea | <textarea | ||||
@@ -1038,7 +1038,7 @@ export default { | |||||
} | } | ||||
console.log(this.tableData); | console.log(this.tableData); | ||||
let index = this.tableData.findIndex((item) => { | let index = this.tableData.findIndex((item) => { | ||||
return item.accountName == null; | |||||
return item.accountName == null || item.accountName == ''; | |||||
}); | }); | ||||
if (index != -1) { | if (index != -1) { | ||||
let obj = this.tableData.splice(index, 1); | let obj = this.tableData.splice(index, 1); | ||||
@@ -281,7 +281,7 @@ | |||||
<div class="block-boxs" v-for="(data, dataIndex) in ites.children" :key="data.name"> | <div class="block-boxs" v-for="(data, dataIndex) in ites.children" :key="data.name"> | ||||
<template v-if="data.name == '项目排名'"> | <template v-if="data.name == '项目排名'"> | ||||
<!-- 项目排名柱状图 --> | <!-- 项目排名柱状图 --> | ||||
<div class="box-card" v-for="(chil, chilIndex) in data.children" | |||||
<div class="box-card" v-for="(chil, chilIndex) in data.children" :key="chilIndex" | |||||
v-if="chil.data && chil.data.length > 0"> | v-if="chil.data && chil.data.length > 0"> | ||||
<div class="title">二、{{ ites.name }}-{{ chil.name }}排名 | <div class="title">二、{{ ites.name }}-{{ chil.name }}排名 | ||||
<image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> | <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> | ||||
@@ -467,7 +467,7 @@ | |||||
</span> | </span> | ||||
<span>{{ chil.name }} {{ data.name | showWhat }}</span> | <span>{{ chil.name }} {{ data.name | showWhat }}</span> | ||||
<span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> | <span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> | ||||
{{ chil.data.count }}% | |||||
{{ Math.abs(chil.data.count || 0) }}% | |||||
</span> | </span> | ||||
</div> | </div> | ||||
<div :id="chil.echartsId" style="margin-top: 20px;width:100%;height: 380px"></div> | <div :id="chil.echartsId" style="margin-top: 20px;width:100%;height: 380px"></div> | ||||
@@ -486,7 +486,7 @@ | |||||
</span> | </span> | ||||
<span>{{ chil.name }} {{ data.name | showWhat }}</span> | <span>{{ chil.name }} {{ data.name | showWhat }}</span> | ||||
<span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> | <span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> | ||||
{{ chil.data.count }}% | |||||
{{ Math.abs(chil.data.count || 0) }}% | |||||
</span> | </span> | ||||
</div> | </div> | ||||
<div class="tab"> | <div class="tab"> | ||||
@@ -541,7 +541,7 @@ | |||||
</span> | </span> | ||||
<span>{{ chil.name }} {{ data.name | showWhat }}</span> | <span>{{ chil.name }} {{ data.name | showWhat }}</span> | ||||
<span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> | <span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> | ||||
{{ chil.data.count }}% | |||||
{{ Math.abs(chil.data.count || 0) }}% | |||||
</span> | </span> | ||||
</div> | </div> | ||||
<!-- 循环的box --> | <!-- 循环的box --> | ||||
@@ -642,7 +642,7 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
<template v-else-if="chil.name == '违禁接待次数' || chil.name == '平均接待时长' || chil.name == '敏感词触发次数' || chil.name == '有效接待率'"> | |||||
<template v-else-if="chil.name == '违禁接待次数' || chil.name == '平均接待时长' || chil.name == '敏感词触发次数' || chil.name == '有效接待率' || '平均挖掘执行率'"> | |||||
<div class="box-card" :key="chilIndex"> | <div class="box-card" :key="chilIndex"> | ||||
<div class="title">二、{{ ites.name }}-{{ chil.name }}{{ data.name | strGet}} | <div class="title">二、{{ ites.name }}-{{ chil.name }}{{ data.name | strGet}} | ||||
<image class="logo" | <image class="logo" | ||||
@@ -797,7 +797,7 @@ | |||||
</span> | </span> | ||||
<span>{{ chil.name }} {{ data.name | showWhat }}</span> | <span>{{ chil.name }} {{ data.name | showWhat }}</span> | ||||
<span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> | <span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> | ||||
{{ chil.data.count }}% | |||||
{{ Math.abs(chil.data.count || 0) }}% | |||||
</span> | </span> | ||||
</div> | </div> | ||||
<div :id="chil.echartsId" style="margin-top: 20px;width:100%;height: 380px"></div> | <div :id="chil.echartsId" style="margin-top: 20px;width:100%;height: 380px"></div> | ||||
@@ -814,7 +814,7 @@ | |||||
</span> | </span> | ||||
<span>{{ chil.name }} {{ data.name | showWhat }}</span> | <span>{{ chil.name }} {{ data.name | showWhat }}</span> | ||||
<span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> | <span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> | ||||
{{ chil.data.count }}% | |||||
{{ Math.abs(chil.data.count || 0) }}% | |||||
</span> | </span> | ||||
</div> | </div> | ||||
<div class="tab"> | <div class="tab"> | ||||
@@ -868,7 +868,7 @@ | |||||
</span> | </span> | ||||
<span>{{ chil.name }} {{ data.name | showWhat }}</span> | <span>{{ chil.name }} {{ data.name | showWhat }}</span> | ||||
<span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> | <span :class="{up: chil.data.count > 0, down: chil.data.count < 0}"> | ||||
{{ chil.data.count }}% | |||||
{{ Math.abs(chil.data.count || 0) }}% | |||||
</span> | </span> | ||||
</div> | </div> | ||||
<!-- 循环的box --> | <!-- 循环的box --> | ||||
@@ -996,8 +996,8 @@ | |||||
<div class="title">三、{{ ites.name }}-{{ chil.name }}{{ data.name }} | <div class="title">三、{{ ites.name }}-{{ chil.name }}{{ data.name }} | ||||
<image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> | <image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image> | ||||
</div> | </div> | ||||
<div class="chart-title">{{ chil.data.name }}的{{ chil.data.agentName }}{{chil.name}}<span | |||||
style="color: #3E50E8">{{ chil.data.differ || 0 | |||||
<div class="chart-title">{{ chil.data.name }}的{{ chil.data.agentName }}{{chil.name}}{{ data.name | showWhat }}<span | |||||
style="color: #3E50E8">{{ Math.abs(chil.data.differ || 0) | |||||
}}</span>{{ formatTimes('', chil.name) }} | }}</span>{{ formatTimes('', chil.name) }} | ||||
</div> | </div> | ||||
<div class="pieRemark"> | <div class="pieRemark"> | ||||
@@ -1455,9 +1455,9 @@ export default { | |||||
html2canvas(document.getElementById("pdfHtml"), { | html2canvas(document.getElementById("pdfHtml"), { | ||||
allowTaint: true, | allowTaint: true, | ||||
scale: 1, | scale: 1, | ||||
dpi: 100, | |||||
dpi: 300, | |||||
//加上白色背景 | //加上白色背景 | ||||
backgroundColor: "white", | |||||
backgroundColor: "#FFF", | |||||
}).then((canvas) => { | }).then((canvas) => { | ||||
let contentWidth = canvas.width; | let contentWidth = canvas.width; | ||||
let contentHeight = canvas.height; | let contentHeight = canvas.height; | ||||
@@ -2325,6 +2325,8 @@ export default { | |||||
return "最高"; | return "最高"; | ||||
} else if (name.indexOf("最低项目") != -1) { | } else if (name.indexOf("最低项目") != -1) { | ||||
return "最低"; | return "最低"; | ||||
} else if (name.indexOf("明显下跌") != -1) { | |||||
return "下降"; | |||||
} else { | } else { | ||||
return ""; | return ""; | ||||
} | } | ||||
@@ -2358,9 +2360,10 @@ export default { | |||||
// 排名 | // 排名 | ||||
upDownText(str) { | upDownText(str) { | ||||
if (str == "提升最大") { | if (str == "提升最大") { | ||||
return "提升最高"; | |||||
return "提升"; | |||||
} | } | ||||
if ((str = "明显下跌")) { | if ((str = "明显下跌")) { | ||||
return "下跌" | |||||
} | } | ||||
}, | }, | ||||
}, | }, | ||||
@@ -2384,7 +2387,7 @@ export default { | |||||
display: flex; | display: flex; | ||||
flex-wrap: wrap; | flex-wrap: wrap; | ||||
column-gap: 20px; | column-gap: 20px; | ||||
background-color: #f8f9fb !important; | |||||
background-color: #ffffff !important; | |||||
} | } | ||||
.box-card { | .box-card { | ||||
@@ -2402,13 +2405,12 @@ export default { | |||||
z-index: 10; | z-index: 10; | ||||
} | } | ||||
.block-box, | |||||
.block-box .block-boxs, | |||||
.block-box .block-boxs .box-card { | |||||
div { | |||||
background-color: #ffffff !important; | background-color: #ffffff !important; | ||||
} | } | ||||
.box-card .title { | .box-card .title { | ||||
width: 100%; | |||||
height: 32px; | height: 32px; | ||||
display: flex; | display: flex; | ||||
justify-content: space-between; | justify-content: space-between; | ||||
@@ -2421,6 +2423,7 @@ export default { | |||||
} | } | ||||
.box-card .titles { | .box-card .titles { | ||||
width: 100%; | |||||
padding: 12px 0; | padding: 12px 0; | ||||
font-size: 16px; | font-size: 16px; | ||||
font-family: PingFangSC-Semibold, PingFang SC; | font-family: PingFangSC-Semibold, PingFang SC; | ||||
@@ -2553,7 +2556,7 @@ export default { | |||||
} | } | ||||
.cont-box .cont-item { | .cont-box .cont-item { | ||||
background: #f8f9fb; | |||||
background: #ffffff; | |||||
border-radius: 8px; | border-radius: 8px; | ||||
padding: 20px; | padding: 20px; | ||||
max-width: 230px; | max-width: 230px; | ||||
@@ -2977,4 +2980,8 @@ export default { | |||||
display: flex; | display: flex; | ||||
flex-direction: column; | flex-direction: column; | ||||
} | } | ||||
#pdfHtml { | |||||
background: #fff; | |||||
} | |||||
</style> | </style> |
@@ -62,6 +62,17 @@ export default { | |||||
}, | }, | ||||
}, | }, | ||||
created() { | created() { | ||||
// 0 系统后台 | |||||
if (localStorage.getItem('orgType') == 0) { | |||||
this.findHouseListByAccount() | |||||
let index = this.tableOption.column.findIndex(item => item.prop == 'houseName') | |||||
this.tableOption.column[index].hide = false | |||||
this.tableOption.column[index].search = true | |||||
} else { | |||||
let index = this.tableOption.column.findIndex(item => item.prop == 'houseName') | |||||
this.tableOption.column[index].hide = true | |||||
this.tableOption.column[index].search = false | |||||
} | |||||
this.findOperationType() | this.findOperationType() | ||||
this.addOperatingLog() | this.addOperatingLog() | ||||
this.admin_log_downLoad = this.permissions["admin_log_downLoad"]; | this.admin_log_downLoad = this.permissions["admin_log_downLoad"]; | ||||
@@ -70,9 +81,25 @@ export default { | |||||
findOperationType() { | findOperationType() { | ||||
this.$api.http.findOperationType().then(res => { | this.$api.http.findOperationType().then(res => { | ||||
console.log(res) | console.log(res) | ||||
this.tableOption.column[4].dicData = res.data | |||||
let index = this.tableOption.column.findIndex(item => item.prop == 'operationType') | |||||
this.tableOption.column[index].dicData = res.data | |||||
}) | |||||
}, | |||||
findHouseListByAccount() { | |||||
this.$api.http.findHouseListByAccount().then(res => { | |||||
let arr = [] | |||||
res.data.forEach(item => { | |||||
arr.push({ | |||||
label: item.propertyName, | |||||
value: item.id | |||||
}) | |||||
}) | |||||
let index = this.tableOption.column.findIndex(item => item.prop == 'houseName') | |||||
this.tableOption.column[index].dicData = arr | |||||
console.log(this.tableOption.column) | |||||
}) | }) | ||||
}, | }, | ||||
// 添加日志 | // 添加日志 | ||||
addOperatingLog() { | addOperatingLog() { | ||||
this.$api.http.addOperatingLog({logType: 3}) | this.$api.http.addOperatingLog({logType: 3}) | ||||
@@ -141,22 +168,21 @@ export default { | |||||
this.searchForm.startDate = e[0]; | this.searchForm.startDate = e[0]; | ||||
this.searchForm.endDate = e[1]; | this.searchForm.endDate = e[1]; | ||||
}, | }, | ||||
getList(page, params) { | |||||
getList(page, params = {}) { | |||||
this.tableLoading = true; | this.tableLoading = true; | ||||
fetchList1( | fetchList1( | ||||
Object.assign( | Object.assign( | ||||
params, | |||||
this.searchForm, | |||||
{ | { | ||||
descs: "create_time", | descs: "create_time", | ||||
current: page.currentPage, | current: page.currentPage, | ||||
size: page.pageSize, | size: page.pageSize, | ||||
operationType: page.operationType, | |||||
orgType: localStorage.getItem("orgType"), | orgType: localStorage.getItem("orgType"), | ||||
orgCode: localStorage.getItem("orgCode"), | orgCode: localStorage.getItem("orgCode"), | ||||
agentId: localStorage.getItem("agentId"), | agentId: localStorage.getItem("agentId"), | ||||
houseId: localStorage.getItem("houseId"), | |||||
houseId: localStorage.getItem("houseId") || params.houseId, | |||||
}, | }, | ||||
params, | |||||
this.searchForm | |||||
) | ) | ||||
).then((response) => { | ).then((response) => { | ||||
this.tableData = response.data.records; | this.tableData = response.data.records; | ||||
@@ -180,6 +206,7 @@ export default { | |||||
}, | }, | ||||
searchChange(form, done) { | searchChange(form, done) { | ||||
this.searchForm = form; | this.searchForm = form; | ||||
this.searchForm.houseId = form.houseName | |||||
this.page.currentPage = 1; | this.page.currentPage = 1; | ||||
this.getList(this.page, form); | this.getList(this.page, form); | ||||
done(); | done(); | ||||
@@ -257,6 +257,7 @@ | |||||
</el-dropdown-item> | </el-dropdown-item> | ||||
<el-dropdown-item> | <el-dropdown-item> | ||||
<el-button | <el-button | ||||
v-if="permissions['cus_build_index_zxcz']" | |||||
type="text" | type="text" | ||||
size="small" | size="small" | ||||
@click="reloadTranscription(row)" | @click="reloadTranscription(row)" | ||||
@@ -309,7 +310,7 @@ | |||||
</el-radio-group> | </el-radio-group> | ||||
</el-form-item> | </el-form-item> | ||||
<el-form-item label="付费方式" prop="wayOfPaying"> | <el-form-item label="付费方式" prop="wayOfPaying"> | ||||
<el-radio-group v-model="ruleForm.wayOfPaying"> | |||||
<el-radio-group v-model="ruleForm.wayOfPaying"> | |||||
<el-radio :label="0">包段付费</el-radio> | <el-radio :label="0">包段付费</el-radio> | ||||
<el-radio :label="1">转写付费</el-radio> | <el-radio :label="1">转写付费</el-radio> | ||||
</el-radio-group> | </el-radio-group> | ||||
@@ -665,19 +666,19 @@ | |||||
ref="rewriteRecharge" | ref="rewriteRecharge" | ||||
:rules="rewriteRechargeRules" | :rules="rewriteRechargeRules" | ||||
> | > | ||||
<el-form-item label="项目名称:" prop="houseName"> | |||||
{{ rewriteRecharge.houseName }} | |||||
<el-form-item label="项目名称:" prop="houseName"> | |||||
{{ rewriteRecharge.houseName }} | |||||
</el-form-item> | </el-form-item> | ||||
<el-form-item label="剩余时长:" prop="surplusSum"> | <el-form-item label="剩余时长:" prop="surplusSum"> | ||||
{{ rewriteRecharge.surplusSum || 0 }}小时 | |||||
{{ rewriteRecharge.surplusSum || 0 }}小时 | |||||
</el-form-item> | </el-form-item> | ||||
<el-form-item label="续费方式:" prop="operateType"> | <el-form-item label="续费方式:" prop="operateType"> | ||||
<el-radio-group v-model="rewriteRecharge.operateType"> | <el-radio-group v-model="rewriteRecharge.operateType"> | ||||
<el-radio :label="0">购买</el-radio> | |||||
<el-radio :label="1">赠送</el-radio> | |||||
<el-radio :label="2">扣购买</el-radio> | |||||
<el-radio :label="3">扣赠送</el-radio> | |||||
</el-radio-group> | |||||
<el-radio :label="0">购买</el-radio> | |||||
<el-radio :label="1">赠送</el-radio> | |||||
<el-radio :label="2">扣购买</el-radio> | |||||
<el-radio :label="3">扣赠送</el-radio> | |||||
</el-radio-group> | |||||
</el-form-item> | </el-form-item> | ||||
<el-form-item label="充值数量:" prop="rechargeCount"> | <el-form-item label="充值数量:" prop="rechargeCount"> | ||||
<el-input | <el-input | ||||
@@ -685,11 +686,23 @@ | |||||
placeholder="充值数量" | placeholder="充值数量" | ||||
v-model="rewriteRecharge.rechargeCount" | v-model="rewriteRecharge.rechargeCount" | ||||
> | > | ||||
</el-input>小时 | |||||
</el-input | |||||
>小时 | |||||
</el-form-item> | </el-form-item> | ||||
<el-form-item v-if="rewriteRecharge.operateType == 2 || rewriteRecharge.operateType == 3" label="" prop="rechargeCount"> | |||||
最大可输入{{ rewriteRecharge.surplusSum || 0}}小时 | |||||
<el-form-item | |||||
v-if="rewriteRecharge.operateType == 2" | |||||
label="" | |||||
prop="rechargeCount" | |||||
> | |||||
最大可输入{{ rewriteRecharge.rechargeSurplus || 0 }}小时 | |||||
</el-form-item> | |||||
<el-form-item | |||||
v-if="rewriteRecharge.operateType == 3" | |||||
label="" | |||||
prop="rechargeCount" | |||||
> | |||||
最大可输入{{ rewriteRecharge.presenterSurplus || 0 }}小时 | |||||
</el-form-item> | </el-form-item> | ||||
</el-form> | </el-form> | ||||
<div | <div | ||||
@@ -701,7 +714,10 @@ | |||||
" | " | ||||
> | > | ||||
<el-button @click="rewriteRechargeShowTips = false">取 消</el-button> | <el-button @click="rewriteRechargeShowTips = false">取 消</el-button> | ||||
<el-button type="primary" @click="addRechargeHouse" :loading="loadingFlag" | |||||
<el-button | |||||
type="primary" | |||||
@click="addRechargeHouse" | |||||
:loading="loadingFlag" | |||||
>确 定</el-button | >确 定</el-button | ||||
> | > | ||||
</div> | </div> | ||||
@@ -793,12 +809,12 @@ export default { | |||||
return { | return { | ||||
rewriteRechargeRules: { | rewriteRechargeRules: { | ||||
operateType: [ | operateType: [ | ||||
{ required: true, message: '请选择充值类型', trigger: 'blur' }, | |||||
{ required: true, message: "请选择充值类型", trigger: "blur" }, | |||||
], | ], | ||||
rechargeCount: [ | rechargeCount: [ | ||||
{ required: true, message: '请输入充值数量', trigger: 'blur' }, | |||||
{ required: true, message: "请输入充值数量", trigger: "blur" }, | |||||
], | ], | ||||
}, // | |||||
}, // | |||||
rewriteRechargeShowTips: false, // 转写充值弹窗 | rewriteRechargeShowTips: false, // 转写充值弹窗 | ||||
rewriteRecharge: { | rewriteRecharge: { | ||||
houseId: "", // 项目ID | houseId: "", // 项目ID | ||||
@@ -1077,7 +1093,7 @@ export default { | |||||
}, | }, | ||||
created() { | created() { | ||||
// 添加日志 | // 添加日志 | ||||
this.addOperatingLog() | |||||
this.addOperatingLog(); | |||||
// 获取显隐的列表 | // 获取显隐的列表 | ||||
this.setTableOption(); | this.setTableOption(); | ||||
this.cus_build_index_add = this.permissions["cus_build_index_add"]; | this.cus_build_index_add = this.permissions["cus_build_index_add"]; | ||||
@@ -1141,28 +1157,40 @@ export default { | |||||
.findByHouseIdForRecharge({ houseId: data.id }) | .findByHouseIdForRecharge({ houseId: data.id }) | ||||
.then((res) => { | .then((res) => { | ||||
console.log(res); | console.log(res); | ||||
this.rewriteRecharge.houseId = data.id | |||||
this.rewriteRecharge.houseName = res.data.houseName // 项目名称 | |||||
this.rewriteRecharge.surplusSum = res.data.surplusSum // 项目剩余时长 | |||||
this.rewriteRecharge.rechargeSurplus = res.data.rechargeSurplus | |||||
this.rewriteRecharge.presenterSurplus = res.data.presenterSurplus | |||||
this.rewriteRechargeShowTips = true | |||||
this.rewriteRecharge.houseId = data.id; | |||||
this.rewriteRecharge.houseName = res.data.houseName; // 项目名称 | |||||
this.rewriteRecharge.surplusSum = res.data.surplusSum; // 项目剩余时长 | |||||
this.rewriteRecharge.rechargeSurplus = res.data.rechargeSurplus; | |||||
this.rewriteRecharge.presenterSurplus = res.data.presenterSurplus; | |||||
this.rewriteRechargeShowTips = true; | |||||
}); | }); | ||||
console.log(data); | console.log(data); | ||||
}, | }, | ||||
addRechargeHouse() { | addRechargeHouse() { | ||||
if (this.rewriteRecharge.operateType == 2 && this.rewriteRecharge.rechargeCount > this.rewriteRecharge.rechargeSurplus) { | |||||
this.$message.error(`扣购买的数量不能大于${this.rewriteRecharge.rechargeSurplus}`) | |||||
return | |||||
} | |||||
if (this.rewriteRecharge.operateType == 3 && this.rewriteRecharge.rechargeCount > this.rewriteRecharge.surplusSum) { | |||||
this.$message.error(`扣赠送的数量不能大于${this.rewriteRecharge.surplusSum}`) | |||||
return | |||||
} | |||||
this.$api.http.addRechargeHouse(this.rewriteRecharge).then(res => { | |||||
if ( | |||||
this.rewriteRecharge.operateType == 2 && | |||||
this.rewriteRecharge.rechargeCount > | |||||
this.rewriteRecharge.rechargeSurplus | |||||
) { | |||||
this.$message.error( | |||||
`扣购买的数量不能大于${this.rewriteRecharge.rechargeSurplus}` | |||||
); | |||||
return; | |||||
} | |||||
if ( | |||||
this.rewriteRecharge.operateType == 3 && | |||||
this.rewriteRecharge.rechargeCount > | |||||
this.rewriteRecharge.presenterSurplus | |||||
) { | |||||
this.$message.error( | |||||
`扣赠送的数量不能大于${this.rewriteRecharge.presenterSurplus}` | |||||
); | |||||
return; | |||||
} | |||||
this.$api.http.addRechargeHouse(this.rewriteRecharge).then((res) => { | |||||
this.zkhousePage(); | this.zkhousePage(); | ||||
this.rewriteRechargeShowTips = false | |||||
}) | |||||
this.rewriteRechargeShowTips = false; | |||||
}); | |||||
}, | }, | ||||
changeFun(value) { | changeFun(value) { | ||||
@@ -7,7 +7,6 @@ const url = process.env.VUE_APP_BASE_API // 配置.env文件通过运行命令 | |||||
const CompressionWebpackPlugin = require('compression-webpack-plugin') | const CompressionWebpackPlugin = require('compression-webpack-plugin') | ||||
const productionGzipExtensions = ['js', 'css'] | const productionGzipExtensions = ['js', 'css'] | ||||
module.exports = { | module.exports = { | ||||
lintOnSave: true, | lintOnSave: true, | ||||
productionSourceMap: false, | productionSourceMap: false, | ||||
chainWebpack: config => { | chainWebpack: config => { | ||||
@@ -46,6 +45,7 @@ module.exports = { | |||||
}, | }, | ||||
// 配置转发代理 | // 配置转发代理 | ||||
devServer: { | devServer: { | ||||
open: true, | |||||
disableHostCheck: true, | disableHostCheck: true, | ||||
port: 8080, | port: 8080, | ||||
proxy: { | proxy: { | ||||