douzhuo преди 2 години
родител
ревизия
4b33609d21
променени са 25 файла, в които са добавени 1009 реда и са изтрити 200 реда
  1. +32
    -0
      src/api/modules/api.js
  2. +22
    -22
      src/const/crud/admin/log.js
  3. +1
    -1
      src/util/indexedDb/table.js
  4. +1
    -1
      src/views/Customer/CompanyRecord.vue
  5. +1
    -1
      src/views/Customer/CustomerDetail.vue
  6. +49
    -5
      src/views/Customer/table.js
  7. +1
    -1
      src/views/Equipment/state.vue
  8. +6
    -4
      src/views/Equipment/table.js
  9. +2
    -1
      src/views/File/table.js
  10. +127
    -117
      src/views/Receive/index.vue
  11. +1
    -1
      src/views/ReceivingRecords/table.js
  12. +2
    -1
      src/views/Scheduling/table.js
  13. +725
    -0
      src/views/Statistics/AnalysisOfMarketingSpeech.vue
  14. +2
    -3
      src/views/Statistics/MentoringAbility.vue
  15. +3
    -4
      src/views/Statistics/ReceptionStatistical.vue
  16. +3
    -3
      src/views/Statistics/index.vue
  17. +1
    -1
      src/views/Statistics/table.js
  18. +3
    -5
      src/views/Template/table.js
  19. +13
    -9
      src/views/admin/app/index.vue
  20. +5
    -0
      src/views/admin/role/index.vue
  21. +2
    -2
      src/views/admin/user/table.js
  22. +2
    -13
      src/views/building/table.js
  23. +1
    -1
      src/views/contentManage/updateRecord/table.js
  24. +1
    -1
      src/views/inspection/table.js
  25. +3
    -3
      vue.config.js

+ 32
- 0
src/api/modules/api.js Целия файл

@@ -500,6 +500,15 @@ export function correctUpdate(query) {
})
}

// 新增小程序权限
export function menuApiSave(data) {
return request({
url: '/admin/menu/apiSave',
method:'post',
data: data
})
}

//
// 客户管理客户裂变
export function customerManagement(query) {
@@ -1263,5 +1272,28 @@ export function findByImeiExport(data) {
method: 'GET',
})
}
// 导出设备日志
export function getAllAccountName(data) {
return request({
url: `/autoSR/api/zkAgentPool/getAllAccountName?itemId=${data}`,
method: 'GET',
})
}
// 导出设备日志
export function getAllDeptName(data) {
return request({
url: `/autoSR/api/zkAgentPool/getAllDeptName?itemId=${data}`,
method: 'GET',
})
}

// 话术关键词执行明细
export function getResultsList(data) {
return request({
url: `/autoSR/marketing/getResultsList`,
method: 'POST',
data: data
})
}



+ 22
- 22
src/const/crud/admin/log.js Целия файл

@@ -7,7 +7,7 @@ export const tableOption = {
menuAlign: "center",
menuWidth: 250,
menu:false,
align: "center",
align: "left",
refreshBtn: false,
showColumnBtn: false,
searchSize: "mini",
@@ -86,7 +86,7 @@ export const tableOption1 = {
menuAlign: "center",
menuWidth: 150,
menu:false,
align: "center",
align: "left",
refreshBtn: true,
showClomnuBtn: false,
searchSize: "mini",
@@ -108,33 +108,33 @@ export const tableOption1 = {
label: "登录手机",
prop: "createBy",
},
{
label: "登录后台",
prop: "title",
},
{
label: "组织名称",
prop: "title",
},
{
label: "登录客户端",
prop: "title",
},
// {
// label: "登录后台",
// prop: "title",
// },
// {
// label: "组织名称",
// prop: "title",
// },
// {
// label: "登录客户端",
// prop: "title",
// },
{
label: "登录IP",
prop: "remoteAddr"
},
{
label: "城市",
prop: "remoteAddr"
},
// {
// label: "城市",
// prop: "remoteAddr"
// },
{
label: "登录时间",
prop: "createTime"
},
{
label: "离线时间",
prop: "createTime"
},
// {
// label: "离线时间",
// prop: "createTime"
// },
]
};

+ 1
- 1
src/util/indexedDb/table.js Целия файл

@@ -9,7 +9,7 @@ const publicOption = {
// menuAlign: "center",
// menuWidth: 250,
// menu: false,
// align: "center",
// align: "left",
// refreshBtn: false,
// showColumnBtn: false,
// searchSize: "mini",


+ 1
- 1
src/views/Customer/CompanyRecord.vue Целия файл

@@ -62,7 +62,7 @@
<div class="app-titel">
<div class="label" style="color: #ffffff">筛选相关:</div>

<div style="margin-left: 20px">
<div>
<el-button @click="Screening()" type="primary">筛选</el-button>
</div>
<div style="margin-left: 20px">


+ 1
- 1
src/views/Customer/CustomerDetail.vue Целия файл

@@ -333,7 +333,7 @@ export default {
menuAlign: "center",
menuWidth: 150,
menu:false,
align: "center",
align: "left",
refreshBtn: true,
showClomnuBtn: false,
searchSize: "mini",


+ 49
- 5
src/views/Customer/table.js Целия файл

@@ -8,7 +8,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
searchMenuSpan: 9,
@@ -97,7 +97,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
searchMenuSpan: 9,
@@ -145,7 +145,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
searchMenuSpan: 9,
@@ -216,7 +216,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
selection:true,
@@ -316,7 +316,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
delBtn: false,
@@ -342,5 +342,49 @@ export default {
prop: "remarks",
},
]
},

StatisticsAnalysisOfMarketingSpeech: {
border: true,
index: false,
height: 480,
indexLabel: "序号",
stripe: true,
menuAlign: "center",
menuWidth: 146,
menu: false,
align: "left",
refreshBtn: false,
searchSize: "mini",
delBtn: false,
addBtn: false,
editBtn: false,
viewBtn: false,
size: "small",
column: [
{
label: "销讲场景",
prop: "firstName",
},
{
label: "销讲指标",
prop: "secondName",
},
{
label: "话术关键词",
prop: "thirdName",
},
{
label: "执行接待数",
prop: "num",
},
{
label: "执行接待占比",
prop: "zxl",
formatter: row => {
return `${row.zxl||0}%`
}
},
]
}
}

+ 1
- 1
src/views/Equipment/state.vue Целия файл

@@ -1405,7 +1405,7 @@ export default {
};
</script>

<style scoped="scoped" lang="scss" >
<style scoped="scoped" lang="scss">
.box-center {
width: 100%;
padding: 5px 15px 40px;


+ 6
- 4
src/views/Equipment/table.js Целия файл

@@ -8,9 +8,10 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
selection: true,
tip: false,
searchSize: "mini",
searchMenuSpan: 9,
delBtn: false,
@@ -114,9 +115,10 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
selection: true,
tip: false,
searchSize: "mini",
searchMenuSpan: 9,
delBtn: false,
@@ -221,7 +223,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
selection: false,
searchSize: "mini",
@@ -278,7 +280,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: false,
align: "center",
align: "left",
refreshBtn: false,
selection: false,
searchSize: "mini",


+ 2
- 1
src/views/File/table.js Целия файл

@@ -8,9 +8,10 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
selection: true,
tip: false,
searchSize: "mini",
searchMenuSpan: 9,
delBtn: false,


+ 127
- 117
src/views/Receive/index.vue Целия файл

@@ -223,8 +223,8 @@
v-for="(item, index) in tablist"
style="height: 32px"
:key="index"
:class="{ 'el-button--primary': roleindex == index }"
@click="tapspagek(index)"
:class="{ 'el-button--primary': item.select }"
@click="tapspagek(item, index)"
>{{ item.name }}
</el-button>
</div>
@@ -244,7 +244,7 @@
>
</div>
</div>
<div style="height: calc(100% - 100px);">
<div style="height: calc(100% - 100px)">
<div class="center2" id="center2">
<div
class="text"
@@ -257,7 +257,7 @@
}"
:key="index"
:data-speaker="item.speaker"
v-if="roleindex == 0 || item.speaker == roleindex"
v-if="isShowRole(item)"
>
<div class="avatar">
<div>
@@ -317,7 +317,16 @@
</div>
</div>
<div class="topzuo-you" style="overflow-y: auto">
<div style="padding: 0 10px; height: 100px;display: flex;flex-direction: column;justify-content: space-between; border-bottom: 1px solid #e0e0e0">
<div
style="
padding: 0 10px;
height: 100px;
display: flex;
flex-direction: column;
justify-content: space-between;
border-bottom: 1px solid #e0e0e0;
"
>
<div
style="
width: 100%;
@@ -448,45 +457,58 @@
</div>
</div>
<div class="topyou">
<div style="padding: 0 10px; height: 100px;display: flex;flex-direction: column;justify-content: space-between; border-bottom: 1px solid #e0e0e0">
<div
style="
width: 100%;
height: 44px;
padding: 0 10px;
height: 100px;
display: flex;
align-items: center;
flex-direction: column;
justify-content: space-between;
border-bottom: 1px solid #e0e0e0;
"
>
<div
style="flex: 1; font-size: 16px; color: #333333; text-indent: 5%"
>
销讲执行
</div>
</div>

<div class="pingfenbox">
<el-button
:class="{ activecllasscet: zhixingcenterindex == 0 }"
type=""
style="height: 32px; border-right: none; border-radius: 5px 0 0 5px"
@click="recordclick(0)"
>销讲总执行率{{ userinformationlist.fraction || 0 }}%</el-button
>
<el-button
:class="{ activecllasscet: zhixingcenterindex == 1 }"
type=""
style="
margin-left: 0px;
height: 32px;
width: 126.5px;
border-left: none;
border-radius: 0 5px 5px 0;
width: 100%;
height: 44px;
display: flex;
align-items: center;
"
@click="recordclick(1)"
>禁忌执行</el-button
>
<div
style="flex: 1; font-size: 16px; color: #333333; text-indent: 5%"
>
销讲执行
</div>
</div>

<div class="pingfenbox">
<el-button
:class="{ activecllasscet: zhixingcenterindex == 0 }"
type=""
style="
height: 32px;
border-right: none;
border-radius: 5px 0 0 5px;
"
@click="recordclick(0)"
>销讲总执行率{{ userinformationlist.fraction || 0 }}%</el-button
>
<el-button
:class="{ activecllasscet: zhixingcenterindex == 1 }"
type=""
style="
margin-left: 0px;
height: 32px;
width: 126.5px;
border-left: none;
border-radius: 0 5px 5px 0;
"
@click="recordclick(1)"
>禁忌执行</el-button
>
</div>
</div>
</div>
<div v-if="zhixingcenterindex == 0">
<div
style="
@@ -1114,15 +1136,7 @@ export default {
arr: [], //录音文件列表
aplayerId: 0,
aplayerLength: 0, //文件个数
tablist: [
{ name: "全部" },
{ name: "A" },
{ name: "b" },
{ name: "c" },
{ name: "c" },
{ name: "c" },
{ name: "c" },
],
tablist: [],
roleindex: 0,
itemIndex: 0, // 0 全部
zhixingcenterindex: 0,
@@ -1166,6 +1180,8 @@ export default {
outSpeechSkillList: [], // 导出话术列表
isNum: false,
searchText: "",

roleSelectArr: [0], // 当前选中的角色标记点
};
},
created() {
@@ -1191,6 +1207,23 @@ export default {
return value.onebest.match(this.searchText);
});
},
// 是否展示改角色
isShowRole() {
return (data) => {
if (this.roleSelectArr.findIndex((item) => item == 0) != -1) {
return true;
} else {
let index = this.roleSelectArr.findIndex(
(item) => item == data.speaker
);
if (index != -1) {
return true;
} else {
return false;
}
}
};
},
},
destroyed() {
this.aplayer.destroy();
@@ -2059,6 +2092,26 @@ export default {
});
}
},

// 生成角色列表
creatTabList(num) {
for (var i = 0; i <= num; i++) {
if (i === 0) {
this.tablist.push({
name: "全部",
select: true,
speaker: i,
});
} else {
this.tablist.push({
name: String.fromCharCode(i + 64),
select: false,
speaker: i,
});
}
}
},

//获取转写内容和播放列表
Getsthetransliteratecontent() {
this.$api.http.findByCusIdcusId({ cusId: this.fileId }).then((res) => {
@@ -2075,77 +2128,7 @@ export default {
if (this.userinformationlist.yon == 0) {
this.isd = audopbj[this.AudioIdx].id;
console.log(audopbj[this.AudioIdx].speakerNum, "speakerNum");
for (var i = 0; i <= audopbj[this.AudioIdx].speakerNum; i++) {
if (i == 0) {
this.tablist.push({
name: "全部",
});
} else if (i == 1) {
this.tablist.push({
name: "A",
});
} else if (i == 2) {
this.tablist.push({
name: "B",
});
} else if (i == 3) {
this.tablist.push({
name: "C",
});
} else if (i == 4) {
this.tablist.push({
name: "D",
});
} else if (i == 5) {
this.tablist.push({
name: "E",
});
} else if (i == 6) {
this.tablist.push({
name: "F",
});
} else if (i == 7) {
this.tablist.push({
name: "G",
});
} else if (i == 8) {
this.tablist.push({
name: "H",
});
} else if (i == 9) {
this.tablist.push({
name: "I",
});
} else if (i == 10) {
this.tablist.push({
name: "J",
});
} else if (i == 11) {
this.tablist.push({
name: "K",
});
} else if (i == 12) {
this.tablist.push({
name: "L",
});
} else if (i == 13) {
this.tablist.push({
name: "M",
});
} else if (i == 14) {
this.tablist.push({
name: "N",
});
} else if (i == 15) {
this.tablist.push({
name: "O",
});
} else {
this.tablist.push({
name: "P",
});
}
}
this.creatTabList(audopbj[this.AudioIdx].speakerNum)
this.roleList = this.tablist.slice(1);
if (audopbj[this.AudioIdx].speaker == null) {
this.yibiaoji = "未标记";
@@ -2168,10 +2151,37 @@ export default {
this.formatAudioList();
});
},
tapspagek(i) {
this.roleindex = i;
this.itemIndex = i;
tapspagek(data, index) {
// this.roleindex = i
if (index == 0) this.resetTabList();
else this.resetAll();
data.select = !data.select;

this.roleSelectArr = [];
if (index != 0) {
this.tablist.forEach((item) => {
if (item.select) {
this.roleSelectArr.push(item.speaker);
}
});
} else {
this.roleSelectArr.push(0);
}
console.log(this.roleSelectArr);
},

// 选中全部时互斥全部选项与角色选项
resetTabList() {
this.tablist.forEach((item) => {
item.select = false;
});
},

// 选中角色时将全部反选
resetAll() {
this.tablist[0].select = false;
},

//播放实例
bofangchushihua() {
var that = this;


+ 1
- 1
src/views/ReceivingRecords/table.js Целия файл

@@ -8,7 +8,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
searchMenuSpan: 9,


+ 2
- 1
src/views/Scheduling/table.js Целия файл

@@ -7,10 +7,11 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
selection: true,
tip: false,
searchMenuSpan: 9,
delBtn: false,
addBtn: false,


+ 725
- 0
src/views/Statistics/AnalysisOfMarketingSpeech.vue Целия файл

@@ -0,0 +1,725 @@
<template>
<div class="box">
<div class="app-titel">
<div
class=""
v-if="orgType != 3"
style="margin-bottom: 10px; display: flex; align-items: center"
>
<div class="">项目选择:</div>
<div style="margin-left: 8px">
<el-select
v-model="pageParams.houseId"
@change="houseChange"
placeholder="请选择"
filterable
>
<el-option
v-for="item in houseList"
:key="item.id"
:label="item.propertyName"
:value="item.id"
>
</el-option>
</el-select>
</div>
</div>
<div class="toptimeqhuan">
<div
:class="{ tophove: pageParams.dateType === 0 }"
@click="tabtimetap(0)"
>
今日
</div>
<div
:class="{ tophove: pageParams.dateType == 1 }"
@click="tabtimetap(1)"
>
昨日
</div>
<div
:class="{ tophove: pageParams.dateType == 2 }"
@click="tabtimetap(2)"
>
近一周
</div>
</div>

<div style="margin-left: 26px">
<el-date-picker
style="height: 32px; line-height: 32px; cursor: pointer"
@change="confirmtime()"
v-model="customtime"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</div>

<div style="width: 100%; display: flex; position: relative">
<div class="items">
团队:
<el-select v-model="pageParams.deptId" clearable placeholder="请选择">
<el-option
v-for="item in deptList"
:key="item.deptId"
:label="item.name"
:value="item.deptId"
>
</el-option>
</el-select>
</div>
<div class="items">
接待顾问:
<el-select
v-model="pageParams.accountId"
clearable
placeholder="请选择"
>
<el-option
v-for="item in accountList"
:key="item.agentId"
:label="item.name"
:value="item.agentId"
>
</el-option>
</el-select>
</div>

<div class="items">
<el-button type="primary" @click="getorgCode">筛选</el-button>
<el-button type="text" @click="clear">清空筛选条件</el-button>
</div>

<p class="export">
<el-button type="primary" @click="exportExcel">导出</el-button>
</p>
</div>
</div>

<div class="tabContainer">
<div>
<avue-crud
ref="crud"
:page.sync="page"
:data="tableData"
:table-loading="tableLoading"
:option="tableOption"
:show-column.sync="showColumn"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
>
<template slot="menuLeft">
<div class="title">
<div class="youxiao">有效接待:{{ effectiveReceptionNum }}条</div>
</div>
</template>
</avue-crud>
</div>
</div>
</div>
</template>

<script>
export default {
data() {
return {
tableIdName: "StatisticsAnalysisOfMarketingSpeech", // 当前页面需要的变量
tableOption: this.$tableOption.StatisticsAnalysisOfMarketingSpeech, // 当前table配置项
tableLoading: false, // 是否显示加载中
showColumn: [], // 监听的显示列的变量
page: {
total: 0, // 总页数
currentPage: 1, // 当前页数
pageSize: 10, // 每页显示多少条
},

customtime: [],
effectiveReceptionNum: 0, // 有效接待条数
pageParams: {
// 获取echarts图标的接口入参
houseId: "", // 楼盘id
deptId: "", // 部门id
accountId: "", // 经纪人id
statDateStart: "", // 开始时间
statDateEnd: "", // 结束时间
dateType: 2, // 时间类型 0 今天 ,1昨天,2近七天
},
deptList: [], // 部门/团队列表
accountList: [], // 顾问列表
objList: [
{
name: "客户来源渠道分布",
title: "接待总数",
matchKeywords: [],
id: "deptName", // echarts渲染的盒子id
total: 0, // 接待总数
},
{
name: "客户等级分布",
title: "客户总数",
matchKeywords: [],
id: "accountName", // echarts渲染的盒子id
total: 0, // 客户总数
},
], // 数据合集包含 客户来源渠道分布 客户等级分布

tableData: [], // 底部表格数据

houseList: [], // 项目列表
orgType: localStorage.getItem("orgType"), // 当前登录角色
};
},
watch: {
showColumn(nowV) {
let params = {
tableIdName: this.tableIdName,
optionData: nowV,
};
this.$db.upDate(params);
},
},

created() {
// 获取显隐的列表
this.setTableOption();
},
mounted() {
this.pageParams.houseId = localStorage.getItem("houseId");
if (this.orgType != 3) {
this.zkhousePage();
} else {
this.initPage();
}
},
methods: {
// 导出excel
exportExcel() {
this.exportMethodPost(
"/autoSR/marketing/getResultsListExpor",
"销讲话术分析",
this.pageParams
);
},
// 导出.Excel公用方法
exportMethodPost(url, name, data = {}) {
axios({
method: "get",
url: url,
params: data,
responseType: "blob",
})
.then((res) => {
if (!res) {
this.$message.error("获取数据失败,请稍候再试");
return;
}
let blob = new Blob([res], { type: "application/vnd.ms-excel" });
let date = new Date();
let time = date.toLocaleDateString();
// console.log(time, "时间");
if ("download" in document.createElement("a")) {
const link = document.createElement("a");
link.style.display = "none";
link.href = URL.createObjectURL(blob);
// link.download = res.headers['content-disposition'] //下载后文件名
link.download = (name || "导出文件") + time + ".xlsx"; //下载的文件名
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
} else {
// console.log("--------------------jingla")
let fileName = (name || "导出文件") + time + ".xlsx"; //下载的文件名
navigator.msSaveBlob(blob, fileName);
}
})
.catch((error) => {
// Message.error({
// message: '网络连接错误'
// })
console.log(error);
});
},

// 获取当前页面的显隐
setTableOption() {
this.$db.getDataByKey(this.tableIdName).then((res) => {
if (res.tableIdName == this.tableIdName) {
this.showColumn = res.optionData;
}
});
},

// 获取项目列表
zkhousePage() {
this.$api.api
.findHouseByUser({
orgType: localStorage.getItem("orgType"),
})
.then((res) => {
this.houseList = res.data;
if (localStorage.getItem("orgType") == 0) {
this.pageParams.houseId = res.data[0].id;
}
this.initPage();
});
},

// 切换项目
houseChange() {
this.resetPageTableDataObj();
this.clear();
this.initPage();
},

initPage() {
this.getAllDeptName();
this.getAllAccountName();
this.getorgCode();
},
// 重置分页条件
resetPageTableDataObj() {
this.page.currentPage = 1;
},

// 清空筛选条件
clear() {
this.pageParams.deptId = "";
this.pageParams.accountId = "";
this.pageParams.statDateStart = "";
this.pageParams.statDateEnd = "";
this.pageParams.dateType = 2;
this.customtime = [];
},
// 部门
getAllDeptName() {
this.$api.api.getAllDeptName(this.pageParams.houseId).then((res) => {
if (res.code == 10000) {
this.deptList = res.data;
}
});
},

// 顾问
getAllAccountName() {
this.$api.api.getAllAccountName(this.pageParams.houseId).then((res) => {
if (res.code == 10000) {
this.accountList = res.data;
}
});
},

tabtimetap(index) {
this.pageParams.dateType = index;
this.pageParams.statDateStart = "";
this.pageParams.statDateEnd = "";
this.customtime = [];
this.resetPageTableDataObj();
this.getorgCode();
},

confirmtime() {
if (this.customtime) {
console.log(this.customtime)
this.pageParams.dateType = "";
const d = new Date(this.customtime[0]);
this.pageParams.statDateStart =
d.getFullYear() +
"-" +
this.Zeropadding(d.getMonth() + 1) +
"-" +
this.Zeropadding(d.getDate());
const c = new Date(this.customtime[1]);
this.pageParams.statDateEnd =
c.getFullYear() +
"-" +
this.Zeropadding(c.getMonth() + 1) +
"-" +
this.Zeropadding(c.getDate()) +
" 23:59:59";
this.getorgCode();
}
},

//时间补0
Zeropadding(s) {
return s < 10 ? "0" + s : s;
},
// 话术关键词执行明细
getorgCode() {
this.tableData = [];
this.$api.api
.getResultsList({
...this.pageParams,
pageNum: this.page.currentPage,
pageSize: this.page.pageSize,
totalPage: this.page.total,
})
.then((res) => {
if (res.code == 0) {
this.tableData = res.data.list.records;
this.page.total = res.data.list.total;
this.effectiveReceptionNum = res.data.total;
}
});
},

// 拼接需要传的参数
getParams() {
return `?houseId=${this.pageParams.houseId}&deptId=${this.pageParams.deptId}&accountId=${this.pageParams.accountId}&statDateStart=${this.pageParams.statDateStart}&statDateEnd=${this.pageParams.statDateEnd}&dateType=${this.pageParams.dateType}`;
},

backTop() {
$("html,body").animate({ scrollTop: 100 }, 800);
},

// 上下页
handleCurrentChange(e) {
console.log(e);
this.page.currentPage = e;
this.getorgCode();
},
// 页面数量修改
handleSizeChange(e) {
this.page.pageSize = e;
this.getorgCode();
},
},
};
</script>

<style scoped lang="scss">
.box {
padding: 0 20px;
}
.app-titel {
padding: 20px 24px;
width: 100%;
/*min-height: 80px;*/
background: #ffffff;
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04);
border-radius: 8px;
display: flex;
flex-wrap: wrap;
}

.export {
position: absolute;
right: 0;
}
.app-titel .items {
margin: 20px 24px 0 0;
}

.toptimeqhuan {
width: 190px;
height: 32px;
background: #ffffff;
border-radius: 4px;
border: 1px solid #e0e0e0;
display: flex;
align-items: center;
overflow: hidden;
margin-left: 30px;
cursor: pointer;
}

.toptimeqhuan div {
flex: 1;
text-align: center;
line-height: 32px;
font-size: 16px;
}

.tophove {
color: #ffffff;
background: #2671e2;
}

.app-box {
width: 100%;
padding-bottom: 20px;
background: #ffffff;
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04);
border-radius: 8px;
padding-top: 20px;
padding-left: 30px;
padding-right: 30px;
margin-top: 30px;
}

.conbox {
height: 18px;
font-size: 18px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #32363d;
line-height: 18px;
}

/*.con-bodeer-box{*/
/* width: 100%;height: 113px;*/
/* border-radius: 4px;border: 1px solid #E0E0E0;margin-top: 20px;*/
/*}*/
/*.con-bodeer-box .con-flex{*/
/* width: 100%;height: 56px;display: flex;align-items: center;*/
/*}*/
/*.con-bodeer-box .con-flex div{*/
/* flex: 1;text-align: center;line-height: 56px;font-size: 16px;*/
/*}*/
.box-forhtml {
width: 100%;
height: 400px;
background: #ffffff;
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04);
border-radius: 8px;
padding-top: 20px;
padding-left: 30px;
padding-right: 30px;
margin-top: 30px;
}

.box-forhtml-flex {
width: 100%;
display: flex;
margin-top: 20px;
}

.box-forhtml-flex .left {
width: 50%;
height: 320px;
}

.box-forhtml-flex .right {
width: 50%;
height: 330px;
display: flex;
justify-content: center;
}

.Templatetable {
width: 88%;
height: 100%;
margin: 0 auto;
overflow-y: auto;
}

.table-tit {
width: 100%;
height: 20px;
line-height: 20px;
display: flex;
}

.table-tit > div:nth-of-type(1) {
width: 10%;
text-align: center;
font-size: 16px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #606775;
}

.table-tit > div:nth-of-type(2) {
width: 40%;
text-align: center;
font-size: 16px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #606775;
}

.table-tit > div:nth-of-type(3) {
width: 20%;
text-align: center;
font-size: 16px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #606775;
}

.table-tit > div:nth-of-type(4) {
width: 20%;
text-align: center;
font-size: 16px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #606775;
}

.table-tit > div:nth-of-type(5) {
width: 10%;
text-align: center;
font-size: 16px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #606775;
}

.table-cent {
width: 100%;
height: 20px;
line-height: 20px;
display: flex;
margin-top: 18px;
}

.table-cent > div:nth-of-type(1) {
width: 10%;
text-align: center;
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
color: #32363d;
}

.table-cent > div:nth-of-type(2) {
width: 40%;
text-align: center;
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
color: #32363d;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}

.table-cent > div:nth-of-type(3) {
width: 20%;
text-align: center;
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
color: #32363d;
}

.table-cent > div:nth-of-type(4) {
width: 20%;
text-align: center;
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
color: #32363d;
}

.table-cent > div:nth-of-type(5) {
width: 10%;
text-align: center;
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
color: #32363d;
}

.indeclass {
width: 20px;
height: 20px;
border-radius: 50%;
background: #ecf1ff;
color: #ffffff;
text-align: center;
line-height: 20px;
font-size: 14px;
}

.el-date-editor .el-range__icon {
line-height: 25px;
}

.el-date-editor .el-range-separator {
line-height: 25px;
}

.el-date-editor .el-range-input,
.el-date-editor .el-range-separator {
margin: 3px;
}

.con-bodeer-box {
width: 100%;
height: 113px;
border-radius: 4px;
border: 1px solid #e0e0e0;
margin-top: 20px;
}

.con-bodeer-box .con-flex {
width: 100%;
height: 56px;
display: flex;
align-items: center;
}

.con-bodeer-box .con-flex div {
flex: 1;
text-align: center;
line-height: 56px;
font-size: 16px;
}

.backTopbox {
width: 40px;
height: 40px;
border-radius: 50%;
background: #d0edff;
position: fixed;
bottom: 40px;
right: 40px;
border: none;
display: flex;
align-items: center;
justify-content: center;
}

.backTop {
display: block;
width: 16px;
height: 20px;
}

.tabContainer {
margin: 20px 0 0 0;
width: 100%;
background: #fff;
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04);
border-radius: 8px;
}

.tabContainer .tables {
padding: 0 20px;
width: 100%;
height: 529px;
}

.tabContainer .title {
// padding: 10px 0;
width: 100%;
}

.p-title {
padding: 0 20px;
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.youxiao {
padding: 10px 20px;
}

.btns {
width: 90px;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
background: #2671e2;
border-radius: 8px;
}
/deep/ .avue-crud__menu {
padding: 10px 0;
.avue-crud__right {
display: flex;
align-items: center;
}
}
</style>

+ 2
- 3
src/views/Statistics/MentoringAbility.vue Целия файл

@@ -56,9 +56,8 @@
>
</el-date-picker>
</div>
</div>
<div class="app-titel">
<div style="margin-left: 26px; margin-top: 12px" class="div-lab">
<div style="margin-left: 26px;" class="div-lab">
<div class="label">顾问:</div>
<el-select
v-model="consultantlistid"


+ 3
- 4
src/views/Statistics/ReceptionStatistical.vue Целия файл

@@ -2,8 +2,8 @@
<div class="box-center">
<div class="app-top">
<div class="app-titel" v-if="role != 3" style="margin-bottom: 10px">
<div class="titel-text">项目选择:</div>
<div style="margin-left: 26px">
<div class="titel-text">项目选择</div>
<div>
<el-select
v-model="houseId"
placeholder="请选择"
@@ -21,7 +21,7 @@
</div>
</div>
<div class="app-titel">
<div class="titel-text">接待时间:</div>
<div class="titel-text">接待时间</div>
<div class="toptimeqhuan">
<div :class="{ tophove: dateType == 4 }" @click="tabtimetap(4)">
近7天
@@ -723,7 +723,6 @@ export default {
background: #ffffff;
display: flex;
align-items: center;
margin-left: 20px;
}
.toptimeqhuan div {
padding-left: 20px;


+ 3
- 3
src/views/Statistics/index.vue Целия файл

@@ -4,7 +4,7 @@
<div class="app-top">
<div v-if="orgType != 3" class="app-titel2" style="margin-bottom: 10px">
<div class="titel-text">项目选择:</div>
<div style="margin-left: 26px">
<div style="">
<el-select
v-model="houseId"
filterable
@@ -23,8 +23,8 @@
</div>

<div class="app-titel2">
<div style="text-indent: 30px;">接待时间:</div>
<div style="margin-left: 20px;">
<div style="text-indent: 30px;">接待时间</div>
<div>
<el-button
:class="{ 'el-button--primary': TimetoAhoose == 0 }"
@click="tabtimetap(0)"


+ 1
- 1
src/views/Statistics/table.js Целия файл

@@ -8,7 +8,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
searchMenuSpan: 9,


+ 3
- 5
src/views/Template/table.js Целия файл

@@ -8,7 +8,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
searchMenuSpan: 9,
@@ -25,7 +25,6 @@ export default {
{
label: "状态",
prop: "status",
width: "150px",
formatter: (data) => {
if(data.status == 0) return '启用'
if(data.status == 1) return '停用'
@@ -34,7 +33,6 @@ export default {
{
label: "大类个数",
prop: "count",
width: "90px"
},
{
@@ -52,7 +50,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
searchMenuSpan: 9,
@@ -85,7 +83,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
searchMenuSpan: 9,


+ 13
- 9
src/views/admin/app/index.vue Целия файл

@@ -15,18 +15,20 @@

<!-- 表格 -->
<div class="cen-tab">
<el-table :header-cell-style="{background:'#F5F7FA',color:'#333333'}" :data="tableData" stripe style="width: 100%" height="390">
<el-table :header-cell-style="{background:'#F5F7FA',color:'#333333'}" :data="tableData" stripe style="width: 100%" height="600">
<el-table-column type="index" label="序号" width="50">
</el-table-column>
<el-table-column prop="name" label="名称" align="center">
</el-table-column>
<el-table-column prop="permission" label="描述" align="center">
</el-table-column>
<el-table-column prop="sort" label="排序" align="center">
</el-table-column>
<!-- scope -->
<el-table-column label="操作" align="center">
<template slot-scope="{ row }">
<el-button v-if="tem_ww_edit" type="text" @click="edit(row)">修改</el-button>
<el-button v-if="tem_ww_del" type="text" @click="del(row)">删除</el-button>
<el-button type="text" @click="edit(row)">修改</el-button>
<el-button type="text" @click="del(row)">删除</el-button>
</template>
</el-table-column>
</el-table>
@@ -49,9 +51,12 @@
<el-form-item label="名称" prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
<el-form-item label="描述:" prop="permission">
<el-form-item label="权限标识" prop="permission">
<el-input type="textarea" v-model="ruleForm.permission"></el-input>
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input-number v-model="ruleForm.sort" controls-position="right" :min="0"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
@@ -77,6 +82,8 @@ export default {
ruleForm: {
name: "",
permission: "",
parentId: -1,
sort: 999,
},
searchForm: {
correctWord: "",
@@ -152,7 +159,7 @@ export default {
// return;
if (this.editFlag) {
console.log("编辑");
this.$api.api.correctUpdate(this.ruleForm).then((res) => {
this.$api.api.menuApiSave(this.ruleForm).then((res) => {
console.log(res);
if (res.code == 0) {
this.dialogVisible = false;
@@ -165,10 +172,7 @@ export default {
console.log("添加");
// return;
this.$api.api
.correctAdd({
houseId: this.searchForm.houseId,
...this.ruleForm,
})
.menuApiSave(this.ruleForm)
.then((res) => {
console.log(res);
if (res.code == 0) {


+ 5
- 0
src/views/admin/role/index.vue Целия файл

@@ -241,6 +241,7 @@
<el-checkbox label="5">周报</el-checkbox>
<el-checkbox label="6">月报</el-checkbox>
<el-checkbox label="7">违禁提醒</el-checkbox>
<el-checkbox label="8">设备集体离线</el-checkbox>
</el-checkbox-group>
</div>

@@ -867,6 +868,10 @@ export default {
</script>

<style lang="scss" scoped>

/deep/ .dialog-main {
width: auto;
}
.el-dialog__wrapper {
.el-dialog {
width: 61% !important;


+ 2
- 2
src/views/admin/user/table.js Целия файл

@@ -8,7 +8,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
selection: true,
searchSize: "mini",
@@ -72,7 +72,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
selection: true,
searchSize: "mini",


+ 2
- 13
src/views/building/table.js Целия файл

@@ -8,7 +8,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
searchMenuSpan: 9,
@@ -25,21 +25,18 @@ export default {
{
label: "代理商",
prop: "agentName",
width: "120px",
hide: true,
showColumn: false,
},
{
label: "公司",
prop: "corporateName",
width: "120px",
hide: true,
showColumn: false,
},
{
label: "项目地区",
prop: "provinceName",
width: "120px",
formatter: (data) => {
return `${data.provinceName || '-'}${data.cityName || ''}`
}
@@ -47,7 +44,6 @@ export default {
{
label: "联系人信息",
prop: "linkman",
width: "110px",
formatter: (data) => {
return `${data.linkman}-${data.linkmanPhone}`
}
@@ -55,7 +51,6 @@ export default {
{
label: "管理员账号",
prop: "managerPhone",
width: "110px",
},
{
label: "运营人员",
@@ -66,7 +61,6 @@ export default {
{
label: "项目类型",
prop: "houseType",
width: "110px",
hide: true,
showColumn: false,
dicData: [{
@@ -86,17 +80,14 @@ export default {
{
label: "合同开始日期",
prop: "startWorking",
width: "100px",
},
{
label: "合同结束日期",
prop: "endWorking",
width: "100px",
},
{
label: "添加日期",
prop: "createTime",
width: "100px",
formatter: (data) => {
return data.createTime.substring(0, 10)
}
@@ -104,7 +95,6 @@ export default {
{
label: "服务状态",
prop: "residueTime",
width: "100px",
formatter: data => {
let str = ''
if (Number(data.residueTime) >= 0) {
@@ -118,7 +108,6 @@ export default {
{
label: "状态",
prop: "lockFlag",
width: "100px",
formatter: data => {
return data.lockFlag == 1 ? "禁用" : "启用"
}
@@ -134,7 +123,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
searchMenuSpan: 9,


+ 1
- 1
src/views/contentManage/updateRecord/table.js Целия файл

@@ -8,7 +8,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
searchMenuSpan: 9,


+ 1
- 1
src/views/inspection/table.js Целия файл

@@ -7,7 +7,7 @@ export default {
menuAlign: "center",
menuWidth: 146,
menu: true,
align: "center",
align: "left",
refreshBtn: false,
searchSize: "mini",
searchMenuSpan: 9,


+ 3
- 3
vue.config.js Целия файл

@@ -3,14 +3,14 @@
* https://cli.vuejs.org/zh/config/
*/
// const url = 'http://192.168.31.161:9999' //长龙
// const url = 'http://192.168.31.149:9999' // 胜浩
const url = 'http://192.168.31.149:9999' // 胜浩
// const url = 'http://127.0.0.1:9999' // 本地

const url = 'http://81.70.55.170:9999' // 测试服务器
// const url = 'http://81.70.55.170:9999' // 测试服务器

// const url = 'http://62.234.122.43:9999' //正式服务器1
// const url = 'http://82.156.35.22:9999' // 正式服务器2
// const url = 'https://zanyong.hfju.com' // 正式域名
// const url = 'https://www.aihxz.com' // 正式域名
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css']
module.exports = {


Зареждане…
Отказ
Запис