Kaynağa Gözat

搜狐域名判断+排序问题修改

newStyle
风继续吹 1 yıl önce
ebeveyn
işleme
2bc88b0b7d
17 değiştirilmiş dosya ile 372 ekleme ve 218 silme
  1. BIN
      public/img/sohu.png
  2. +7
    -14
      public/index.html
  3. BIN
      public/sh.png
  4. +9
    -0
      src/api/modules/http.js
  5. +16
    -5
      src/const/crud/admin/log.js
  6. +6
    -1
      src/mixins/color.js
  7. +5
    -1
      src/page/check/index.vue
  8. +17
    -3
      src/page/index/logo.vue
  9. +101
    -86
      src/page/login/index.vue
  10. +76
    -35
      src/page/wel.vue
  11. +6
    -6
      src/views/Customer/table.js
  12. +6
    -6
      src/views/Receive/index.vue
  13. +1
    -1
      src/views/Statistics/ConsultantBrand.vue
  14. +25
    -18
      src/views/Statistics/reportDetail.vue
  15. +33
    -6
      src/views/admin/log/log.vue
  16. +63
    -35
      src/views/building/index.vue
  17. +1
    -1
      vue.config.js

BIN
public/img/sohu.png Dosyayı Görüntüle

Önce Sonra
Genişlik: 104  |  Yükseklik: 104  |  Boyut: 6.2 KiB

+ 7
- 14
public/index.html Dosyayı Görüntüle

@@ -68,21 +68,14 @@
hm.src = 'https://hm.baidu.com/hm.js?0625618efb027ed02e88da84c121652e'
var s = document.getElementsByTagName('script')[0]
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>
</body>



BIN
public/sh.png Dosyayı Görüntüle

Önce Sonra
Genişlik: 400  |  Yükseklik: 400  |  Boyut: 45 KiB

+ 9
- 0
src/api/modules/http.js Dosyayı Görüntüle

@@ -1332,4 +1332,13 @@ export function findmatchdataByOrgCode(data) {
method: 'post',
data
})
}

// 公司后台用户洞察
export function findHouseListByAccount(params) {
return request({
url: 'autoSR/zkhouse/findHouseListByAccount',
method: 'get',
params
})
}

+ 16
- 5
src/const/crud/admin/log.js Dosyayı Görüntüle

@@ -18,6 +18,13 @@ export const tableOption = {
viewBtn: true,
size: "small",
column: [
{
label: "项目名称",
prop: "houseName",
type: 'select',
// search: true,
dicData: []
},
{
label: "操作人",
prop: "name",
@@ -28,11 +35,15 @@ export const tableOption = {
prop: "createBy",
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",
prop: "remoteAddr"


+ 6
- 1
src/mixins/color.js Dosyayı Görüntüle

@@ -9,10 +9,15 @@ export default function() {
}
},
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: {
themeVal(val, oldVal) {
console.log(val, oldVal)
this.$store.commit('SET_THEME', val)
this.updateTheme(val, oldVal)
}


+ 5
- 1
src/page/check/index.vue Dosyayı Görüntüle

@@ -10,7 +10,10 @@
<div class="content">
<!-- 质控后台 -->
<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>
<div class="tab" @click="goindex(1)" v-if="tabFlag2">
@@ -44,6 +47,7 @@ export default {
tabFlag4: false,
backFlag: false,
info: {},
url: document.domain
};
},
computed: {},


+ 17
- 3
src/page/index/logo.vue Dosyayı Görüntüle

@@ -3,7 +3,8 @@
<transition name="fade">
<span v-if="keyCollapse" key="0" class="avue-logo_subtitle" @click="goIndex">
<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> -->
</div>
</span>
@@ -11,7 +12,8 @@
<transition-group name="fade">
<span v-if="!keyCollapse" key="1" class="avue-logo_title" @click="goIndex">
<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>
</div>
</span>
@@ -22,6 +24,11 @@
<script>
import { mapGetters } from 'vuex'
export default {
data() {
return {
url: document.domain,
}
},
name: 'Logo',
computed: {
...mapGetters(['website', 'keyCollapse'])
@@ -59,7 +66,14 @@ export default {
display: block;
width: 50px;
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%;
}
}


+ 101
- 86
src/page/login/index.vue Dosyayı Görüntüle

@@ -1,11 +1,24 @@
<template>
<div class="login-container">
<div class="login-weaper animated bounceInDown">
<div class="login-weaper animated bounceInDown">
<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>
<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">
<h4 class="login-title">
<!-- <el-select v-model="active"
@@ -18,24 +31,24 @@
:value="tenant.id"></el-option>
</el-select> -->
</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">
<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="#"
@click.stop="activeName='third'">第三方登录</a> -->
</div>
</div>

</div>
</div>

<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
</span>
</div>
@@ -43,112 +56,114 @@
</div>
</template>
<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 {
name: 'Login',
name: "Login",
components: {
userLogin,
codeLogin,
thirdLogin,
topColor
topColor,
},
data () {
data() {
return {
tenantList: [],
active: '',
activeName: 'user',
socialForm: {}
}
active: "",
activeName: "user",
socialForm: {},
url: document.domain,
};
},
watch: {
$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({
lock: true,
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: {
...mapGetters(['website', 'tagWel'])
...mapGetters(["website", "tagWel"]),
},
methods: {
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编码
const data = canvas.toDataURL('image/png', 1) // 1表示质量(无损压缩)
const data = canvas.toDataURL("image/png", 1); // 1表示质量(无损压缩)

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>

<style lang="scss">
@import "@/styles/login.scss";

@import "@/styles/login.scss";
</style>

+ 76
- 35
src/page/wel.vue Dosyayı Görüntüle

@@ -256,37 +256,66 @@
</div>
</div>
<div
class="pagechen projectCardItem"
class="pagechen"
@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="span1">{{ cardlist.datalist.accountNum || 0 }}</div>
<!-- <div class="span2">
<div class="span2">
<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 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>
</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 class="cardicon">
<img src="../../public/img/indexIcon/indexCardIcon21.png" alt="" />
</div>
</div>

<div
class="pagechen"
@click="
@@ -297,16 +326,16 @@
<div class="pageboxtitle1 projectCardItem">
<div class="sum">
<div class="sum-top">
<div>平均执行率</div>
<div>平均客户意向度</div>
<el-tooltip
effect="light"
content="筛选时间内,有效接待(不包含待接单)的平均执行率;"
content="筛选时间内,新增的客户平均意向度,标记接待顾问、画像校准和给客户打标签有助于提升客户意向度;"
placement="bottom-end"
>
<i class="pop"></i>
</el-tooltip>
</div>
<div class="span1">{{ cardlist.datalist.fraction || 0 }}%</div>
<div class="span1">{{ cardlist.datalist.sumLevelFraction || 0 }}%</div>
</div>

<div class="cardicon">
@@ -320,32 +349,33 @@
<div class="pageboxtitle2 projectColumn">
<div class="span2">
<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>
</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>
</span>

<span
style="margin-left: 15px"
v-if="cardlist.liftlist.fraction > 0"
v-if="cardlist.liftlist.sumLevelFraction > 0"
>数据有所增长</span
>
<span
style="margin-left: 15px"
v-if="cardlist.liftlist.fraction < 0"
v-if="cardlist.liftlist.sumLevelFraction < 0"
>数据有所下降</span
>
</div>
</div>
</div>
</div>

<div
class="pagechen"
@click="
@@ -2275,7 +2305,16 @@

<!-- 用户洞察 -->
<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>
</section>
</template>
@@ -2689,7 +2728,7 @@ export default {
{
name: "平均客户意向度",
unit: '%',
tooltip: "", // 描述name文字的
tooltip: "筛选时间内,新增的客户平均意向度,标记接待顾问、画像校准和给客户打标签有助于提升客户意向度;", // 描述name文字的
path: "/building/Count",
pathName: "项目统计",
paramsName: "sumLevelFraction", // 接待量变量名称
@@ -3017,13 +3056,13 @@ export default {

res.data.tendencyData.forEach((item) => {
// 销讲趋势
lineBox1.xAxis.push(item.statDate);
lineBox1.xAxis.push(item.statDate.split(' ')[0]);
lineBox1.receptionCount.push(item.receptionCount || 0);
lineBox1.activeCustomer.push(item.activeCustomer || 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.wordFraction.push(item.wordFraction || 0);
lineBox2.wordFinishFraction.push(item.wordFinishFraction || 0);
@@ -4170,6 +4209,8 @@ export default {
color: #111111;
font-weight: 500;
line-height: 24px;
display: flex;
align-items: center;
}

.treeMapBox {


+ 6
- 6
src/views/Customer/table.js Dosyayı Görüntüle

@@ -274,12 +274,12 @@ export default {
label: "客户阶段",
prop: "clientStageName",
},
{
label: "客户标签命中数",
prop: "pickCount",
width: '150px',
sortable: true,
},
// {
// label: "客户标签命中数",
// prop: "pickCount",
// width: '150px',
// sortable: true,
// },
{
sortable: true,
label: "到访次数",


+ 6
- 6
src/views/Receive/index.vue Dosyayı Görüntüle

@@ -33,7 +33,7 @@
>切换销讲业务</span>
</div>
</div>
<div v-if="rec_index_addJ" @click="Addtodigest()">
<div v-if="rec_index_addJ && mg == 0" @click="Addtodigest()">
<div
v-if="arr[aplayerId].status == 0"
style="display: flex; align-items: center"
@@ -958,15 +958,15 @@
>
<div style="width: 80%; margin: 0 auto; font-size: 30px">
<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>
<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>
<el-radio v-model="effectiveindex" label="5">其他</el-radio>
<el-radio v-model="effectiveindex" :label="5">其他</el-radio>
</div>
<div v-if="effectiveindex == 5">
<textarea


+ 1
- 1
src/views/Statistics/ConsultantBrand.vue Dosyayı Görüntüle

@@ -1038,7 +1038,7 @@ export default {
}
console.log(this.tableData);
let index = this.tableData.findIndex((item) => {
return item.accountName == null;
return item.accountName == null || item.accountName == '';
});
if (index != -1) {
let obj = this.tableData.splice(index, 1);


+ 25
- 18
src/views/Statistics/reportDetail.vue Dosyayı Görüntüle

@@ -281,7 +281,7 @@
<div class="block-boxs" v-for="(data, dataIndex) in ites.children" :key="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">
<div class="title">二、{{ ites.name }}-{{ chil.name }}排名
<image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image>
@@ -467,7 +467,7 @@
</span>
<span>{{ chil.name }} {{ data.name | showWhat }}</span>
<span :class="{up: chil.data.count > 0, down: chil.data.count < 0}">
{{ chil.data.count }}%
{{ Math.abs(chil.data.count || 0) }}%
</span>
</div>
<div :id="chil.echartsId" style="margin-top: 20px;width:100%;height: 380px"></div>
@@ -486,7 +486,7 @@
</span>
<span>{{ chil.name }} {{ data.name | showWhat }}</span>
<span :class="{up: chil.data.count > 0, down: chil.data.count < 0}">
{{ chil.data.count }}%
{{ Math.abs(chil.data.count || 0) }}%
</span>
</div>
<div class="tab">
@@ -541,7 +541,7 @@
</span>
<span>{{ chil.name }} {{ data.name | showWhat }}</span>
<span :class="{up: chil.data.count > 0, down: chil.data.count < 0}">
{{ chil.data.count }}%
{{ Math.abs(chil.data.count || 0) }}%
</span>
</div>
<!-- 循环的box -->
@@ -642,7 +642,7 @@
</div>
</div>
</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="title">二、{{ ites.name }}-{{ chil.name }}{{ data.name | strGet}}
<image class="logo"
@@ -797,7 +797,7 @@
</span>
<span>{{ chil.name }} {{ data.name | showWhat }}</span>
<span :class="{up: chil.data.count > 0, down: chil.data.count < 0}">
{{ chil.data.count }}%
{{ Math.abs(chil.data.count || 0) }}%
</span>
</div>
<div :id="chil.echartsId" style="margin-top: 20px;width:100%;height: 380px"></div>
@@ -814,7 +814,7 @@
</span>
<span>{{ chil.name }} {{ data.name | showWhat }}</span>
<span :class="{up: chil.data.count > 0, down: chil.data.count < 0}">
{{ chil.data.count }}%
{{ Math.abs(chil.data.count || 0) }}%
</span>
</div>
<div class="tab">
@@ -868,7 +868,7 @@
</span>
<span>{{ chil.name }} {{ data.name | showWhat }}</span>
<span :class="{up: chil.data.count > 0, down: chil.data.count < 0}">
{{ chil.data.count }}%
{{ Math.abs(chil.data.count || 0) }}%
</span>
</div>
<!-- 循环的box -->
@@ -996,8 +996,8 @@
<div class="title">三、{{ ites.name }}-{{ chil.name }}{{ data.name }}
<image class="logo" src="http://images.2weisou.com/20221122140022r9Hgtfqj.png"></image>
</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) }}
</div>
<div class="pieRemark">
@@ -1455,9 +1455,9 @@ export default {
html2canvas(document.getElementById("pdfHtml"), {
allowTaint: true,
scale: 1,
dpi: 100,
dpi: 300,
//加上白色背景
backgroundColor: "white",
backgroundColor: "#FFF",
}).then((canvas) => {
let contentWidth = canvas.width;
let contentHeight = canvas.height;
@@ -2325,6 +2325,8 @@ export default {
return "最高";
} else if (name.indexOf("最低项目") != -1) {
return "最低";
} else if (name.indexOf("明显下跌") != -1) {
return "下降";
} else {
return "";
}
@@ -2358,9 +2360,10 @@ export default {
// 排名
upDownText(str) {
if (str == "提升最大") {
return "提升最高";
return "提升";
}
if ((str = "明显下跌")) {
return "下跌"
}
},
},
@@ -2384,7 +2387,7 @@ export default {
display: flex;
flex-wrap: wrap;
column-gap: 20px;
background-color: #f8f9fb !important;
background-color: #ffffff !important;
}

.box-card {
@@ -2402,13 +2405,12 @@ export default {
z-index: 10;
}

.block-box,
.block-box .block-boxs,
.block-box .block-boxs .box-card {
div {
background-color: #ffffff !important;
}

.box-card .title {
width: 100%;
height: 32px;
display: flex;
justify-content: space-between;
@@ -2421,6 +2423,7 @@ export default {
}

.box-card .titles {
width: 100%;
padding: 12px 0;
font-size: 16px;
font-family: PingFangSC-Semibold, PingFang SC;
@@ -2553,7 +2556,7 @@ export default {
}

.cont-box .cont-item {
background: #f8f9fb;
background: #ffffff;
border-radius: 8px;
padding: 20px;
max-width: 230px;
@@ -2977,4 +2980,8 @@ export default {
display: flex;
flex-direction: column;
}

#pdfHtml {
background: #fff;
}
</style>

+ 33
- 6
src/views/admin/log/log.vue Dosyayı Görüntüle

@@ -62,6 +62,17 @@ export default {
},
},
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.addOperatingLog()
this.admin_log_downLoad = this.permissions["admin_log_downLoad"];
@@ -70,9 +81,25 @@ export default {
findOperationType() {
this.$api.http.findOperationType().then(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() {
this.$api.http.addOperatingLog({logType: 3})
@@ -141,22 +168,21 @@ export default {
this.searchForm.startDate = e[0];
this.searchForm.endDate = e[1];
},
getList(page, params) {
getList(page, params = {}) {
this.tableLoading = true;
fetchList1(
Object.assign(
params,
this.searchForm,
{
descs: "create_time",
current: page.currentPage,
size: page.pageSize,
operationType: page.operationType,
orgType: localStorage.getItem("orgType"),
orgCode: localStorage.getItem("orgCode"),
agentId: localStorage.getItem("agentId"),
houseId: localStorage.getItem("houseId"),
houseId: localStorage.getItem("houseId") || params.houseId,
},
params,
this.searchForm
)
).then((response) => {
this.tableData = response.data.records;
@@ -180,6 +206,7 @@ export default {
},
searchChange(form, done) {
this.searchForm = form;
this.searchForm.houseId = form.houseName
this.page.currentPage = 1;
this.getList(this.page, form);
done();


+ 63
- 35
src/views/building/index.vue Dosyayı Görüntüle

@@ -257,6 +257,7 @@
</el-dropdown-item>
<el-dropdown-item>
<el-button
v-if="permissions['cus_build_index_zxcz']"
type="text"
size="small"
@click="reloadTranscription(row)"
@@ -309,7 +310,7 @@
</el-radio-group>
</el-form-item>
<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="1">转写付费</el-radio>
</el-radio-group>
@@ -665,19 +666,19 @@
ref="rewriteRecharge"
:rules="rewriteRechargeRules"
>
<el-form-item label="项目名称:" prop="houseName">
{{ rewriteRecharge.houseName }}
<el-form-item label="项目名称:" prop="houseName">
{{ rewriteRecharge.houseName }}
</el-form-item>
<el-form-item label="剩余时长:" prop="surplusSum">
{{ rewriteRecharge.surplusSum || 0 }}小时
{{ rewriteRecharge.surplusSum || 0 }}小时
</el-form-item>
<el-form-item label="续费方式:" prop="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 label="充值数量:" prop="rechargeCount">
<el-input
@@ -685,11 +686,23 @@
placeholder="充值数量"
v-model="rewriteRecharge.rechargeCount"
>
</el-input>小时
</el-input
>小时
</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>
<div
@@ -701,7 +714,10 @@
"
>
<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
>
</div>
@@ -793,12 +809,12 @@ export default {
return {
rewriteRechargeRules: {
operateType: [
{ required: true, message: '请选择充值类型', trigger: 'blur' },
{ required: true, message: "请选择充值类型", trigger: "blur" },
],
rechargeCount: [
{ required: true, message: '请输入充值数量', trigger: 'blur' },
{ required: true, message: "请输入充值数量", trigger: "blur" },
],
}, //
}, //
rewriteRechargeShowTips: false, // 转写充值弹窗
rewriteRecharge: {
houseId: "", // 项目ID
@@ -1077,7 +1093,7 @@ export default {
},
created() {
// 添加日志
this.addOperatingLog()
this.addOperatingLog();
// 获取显隐的列表
this.setTableOption();
this.cus_build_index_add = this.permissions["cus_build_index_add"];
@@ -1141,28 +1157,40 @@ export default {
.findByHouseIdForRecharge({ houseId: data.id })
.then((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);
},
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.rewriteRechargeShowTips = false
})
this.rewriteRechargeShowTips = false;
});
},

changeFun(value) {


+ 1
- 1
vue.config.js Dosyayı Görüntüle

@@ -7,7 +7,6 @@ const url = process.env.VUE_APP_BASE_API // 配置.env文件通过运行命令
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css']
module.exports = {

lintOnSave: true,
productionSourceMap: false,
chainWebpack: config => {
@@ -46,6 +45,7 @@ module.exports = {
},
// 配置转发代理
devServer: {
open: true,
disableHostCheck: true,
port: 8080,
proxy: {


Yükleniyor…
İptal
Kaydet