development
飘泊客 5 months ago
parent cbfd5bbbcd
commit 5a3461b7ba

@ -9,11 +9,11 @@ ENV = 'development'
# 接口地址 http://8.130.96.163:8899
# 线上
VUE_APP_BASE_API = 'http://39.100.77.21:8899'
# VUE_APP_BASE_API = 'http://39.100.77.21:8899'
# VUE_APP_BASE_API = 'https://baiyee.vip'
# ts
# VUE_APP_BASE_API = 'http://172.18.0.228:8899'
VUE_APP_BASE_IMG = 'https://baiyee.vip'
VUE_APP_BASE_API = 'http://172.18.0.228:8899'
# VUE_APP_BASE_IMG = 'https://baiyee.vip'
# 测试
# VUE_APP_BASE_IMG = 'http://39.100.77.21:8899'
VUE_APP_WS_API = 'wss://baiyee.vip'

@ -76,7 +76,8 @@
"vuedraggable": "2.20.0",
"vuex": "3.1.0",
"wangeditor": "^3.1.1",
"xlsx": "^0.17.3"
"xlsx": "^0.18.5",
"xlsx-style": "^0.8.13"
},
"devDependencies": {
"@babel/core": "7.0.0",

@ -33,6 +33,14 @@ export function fileUploads(data) {
data
})
}
// 导入文件-ai
export function trafficUpload(data) {
return request({
url: 'api-management/api/telephone/traffic/upload',
method: 'post',
data
})
}
// 上传记录
export function queryRecordList(userId) {
const param = {
@ -329,7 +337,7 @@ export function taskDel(params) {
params
})
}
// 编辑备注
// 编辑任务
export function taskUpdate(data) {
return request({
url: baseObj.url + 'api/task/update',
@ -1178,9 +1186,17 @@ export function modeUploadFiles(data) {
})
}
// 广告模型-建模
export function recordBuild(params) {
export function recordBuild(data) {
return request({
url: baseObj.url + 'api/mode/record/build',
method: 'post',
data
})
}
// ai任务开光
export function trafficUpdate(params) {
return request({
url: baseObj.url + 'api/telephone/traffic/update',
method: 'get',
params
})

@ -273,7 +273,7 @@ export default {
watch: {
'crud.data': {
handler(newVal, oldV) {
this.topScript = newVal.top.answer
this.topScript = newVal.top && newVal.top.answer ? newVal.top.answer : ''
},
deep: true
}
@ -284,6 +284,7 @@ export default {
window.onresize = function temp() {
that.height = document.documentElement.clientHeight - 180 + 'px;'
}
console.log('=crud.data', crud.data)
},
methods: {
changevisible(v) {

@ -83,7 +83,7 @@
</div>
</div>
</el-tab-pane>
<el-tab-pane v-if="user.isTokerAdmin" label="拓客上传" name="toker">
<el-tab-pane v-if="user.isTokerAdmin || true" label="拓客上传" name="toker">
<div class="margin-auto">
<el-upload
ref="updaatefilesTo"

@ -1,6 +1,6 @@
<template>
<div>
<div class="u-flex" style="align-items: normal">
<div v-if="user.roles[0].level == 5" class="u-flex" style="align-items: normal">
<div class="app-container flex-1" style="margin-bottom: 0;margin-right: 10px;">
<div class="margin-auto">
<el-upload
@ -22,6 +22,7 @@
</div>
<div slot="tip" class="el-upload__tip">
只能上传.xls.xlsx文件且不超过100M
<a href="https://baiyee.vip/file/exchange.xlsx" class="link-type pl-5">模板下载</a><br>
</div>
</el-upload>
<div class="line-text">
@ -33,7 +34,7 @@
</div>
<div class="mb-10 u-flex">
<label>方式类型</label>
<el-select v-model="uploadType" size="small" class="filter-item" clearable placeholder="请选择状态">
<el-select v-model="uploadType" size="small" class="filter-item" clearable placeholder="请选择类型">
<el-option v-for="(item, index) in uploadTypeList" :key="index" :label="item.key" :value="item.value" />
</el-select>
</div>
@ -73,9 +74,9 @@
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
<el-select v-model="query.recordStatus" size="small" class="filter-item" style="width: 130px" clearable placeholder="请选择状态" @change="crud.toQuery">
<!-- <el-select v-if="user.roles[0].level == 5" v-model="query.recordStatus" size="small" class="filter-item" style="width: 130px" clearable placeholder="请选择状态" @change="crud.toQuery">
<el-option v-for="(item, index) in statusList" :key="index" :label="item.key" :value="item.value" />
</el-select>
</el-select> -->
<rrOperation />
</div>
<!--表格渲染-->
@ -86,6 +87,52 @@
:header-cell-style="{ 'text-align': 'left' }"
style="width: 100%;"
>
<el-table-column type="expand">
<template slot-scope="props">
<el-table :data="props.row.treeList" :header-cell-style="{'text-align':'center'}" :cell-style="{'text-align':'center'}" style="width: 100%;">
<el-table-column
:show-overflow-tooltip="true"
prop="tagStr"
label="tag值"
/>
<el-table-column
:show-overflow-tooltip="true"
prop="uploadNum"
label="上传数量"
/>
<el-table-column
:show-overflow-tooltip="true"
prop="analysisNum"
label="解析数量"
/>
<el-table-column
:show-overflow-tooltip="true"
prop="recordStatus"
width="110"
label="状态"
>
<template slot-scope="scope">
<span>{{ statecCmparison('statusList', scope.row.recordStatus) }}</span>
</template>
</el-table-column>
<el-table-column
v-if="user.roles[0].level == 1"
width="75"
label="操作"
>
<template slot-scope="scope">
<el-button
slot="reference"
size="mini"
type="text"
:disabled="scope.row.recordStatus !== 1"
@click="openModeling(scope.row, 'single')"
>建模</el-button>
</template>
</el-table-column>
</el-table>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="id" label="ID" width="35" />
<el-table-column
:show-overflow-tooltip="true"
@ -122,7 +169,7 @@
<span>{{ statecCmparison('uploadTypeList', scope.row.recordType) }}</span>
</template>
</el-table-column>
<el-table-column
<!-- <el-table-column
:show-overflow-tooltip="true"
prop="recordStatus"
width="110"
@ -131,6 +178,28 @@
<template slot-scope="scope">
<span>{{ statecCmparison('statusList', scope.row.recordStatus) }}</span>
</template>
</el-table-column> -->
<el-table-column
v-if="user.roles[0].level == 1"
width="120"
label="操作"
>
<template slot-scope="scope">
<el-button
slot="reference"
size="mini"
type="text"
:disabled="scope.row.treeList == null || scope.row.treeList.filter(item => item.recordStatus == 1).length == 0"
@click="openModeling(scope.row, 'multiple')"
>多选建模</el-button>
<el-button
slot="reference"
size="mini"
type="text"
:disabled="!scope.row.downUrl"
@click="downFile(scope.row)"
>下载</el-button>
</template>
</el-table-column>
<template #empty>
<div style="width: 100%; height: 450px;display: flex; flex-direction: column; justify-content: center;align-items: center">
@ -143,6 +212,33 @@
<pagination />
</el-row>
</div>
<el-dialog title="建模创建" :visible.sync="dialogFormVisible" width="520px" @close="closeDialog">
<el-form ref="refForm" :model="modelingForm" label-width="80px">
<el-form-item v-if="selectModel == 'multiple'" label="tag" prop="ids" :rules="[{ required: true, message: '请选择tag'}]">
<el-select v-model="modelingForm.ids" multiple placeholder="请选择" style="width: 370px;">
<el-option
v-for="item in selectTagList"
:key="item.id"
:label="item.tagStr"
:value="item.id"
>
<span style="float: left">{{ item.tagStr }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.analysisNum }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="活动ID" prop="actId" :rules="[{ required: true, message: '请输入活动id'}]">
<el-input v-model="modelingForm.actId" autocomplete="off" style="width: 370px;" />
</el-form-item>
<el-form-item label="活动名称" prop="actName" :rules="[{ required: true, message: '请输入活动名称'}]">
<el-input v-model="modelingForm.actName" autocomplete="off" style="width: 370px;" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="dialogFormVisible = false"> </el-button>
<el-button type="primary" @click="recordBuildFun"> </el-button>
</div>
</el-dialog>
</div>
</template>
@ -154,7 +250,8 @@ import DateRangePicker from '@/components/DateRangePicker'
import { getAdvertisingQualityScore } from '@/api/login.js'
import advertisingQualityscore from '@/components/Echarts/Radar'
import {
modeUploadFiles
modeUploadFiles,
recordBuild
} from '@/api/index'
import { mapGetters } from 'vuex'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
@ -183,6 +280,12 @@ export default {
taskValue: '',
uploadType: '',
uploading: false,
dialogFormVisible: false,
modelingForm: {
ids: [],
actId: '',
actName: ''
},
uploadTypeList: [
{
key: '方式一',
@ -219,6 +322,8 @@ export default {
value: '3'
}
],
selectModel: 'single',
selectTagList: [],
advertisingQualityScoreData: {} //
}
},
@ -226,7 +331,9 @@ export default {
...mapGetters(['user', 'fileUpload'])
},
created() {
this.getAdvertisingQualityScoreData()
if (this.user.roles[0].level !== 1) {
this.getAdvertisingQualityScoreData()
}
},
mounted: function() {
const that = this
@ -235,6 +342,30 @@ export default {
}
},
methods: {
openModeling(row, type) {
this.selectModel = type
if (type === 'single') {
this.modelingForm.ids = [row.id]
} else if (type === 'multiple') {
this.selectTagList = row.treeList.filter(item => item.recordStatus === 1).sort((a, b) => a.analysisNum - b.analysisNum)
}
this.dialogFormVisible = true
},
closeDialog() {
this.modelingForm.ids = []
this.$refs.refForm.resetFields()
},
recordBuildFun() {
this.$refs.refForm.validate((valid) => {
if (valid) {
recordBuild(this.modelingForm).then(res => {
this.$message.success('操作成功')
this.dialogFormVisible = false
this.crud.resetQuery()
})
}
})
},
// 广
async getAdvertisingQualityScoreData() {
const res = await getAdvertisingQualityScore()
@ -244,6 +375,10 @@ export default {
this.$message.error(res.msg)
}
},
//
downFile(params) {
window.open(params.downUrl)
},
//
updtaFils(file) {
this.fileData.append('file', file.file)

@ -30,6 +30,51 @@
:header-cell-style="{ 'text-align': 'left' }"
style="width: 100%;"
>
<el-table-column type="expand">
<template slot-scope="props">
<el-table :data="props.row.treeList" :header-cell-style="{'text-align':'center'}" :cell-style="{'text-align':'center'}" style="width: 100%;">
<el-table-column
:show-overflow-tooltip="true"
prop="tagStr"
label="tag值"
/>
<el-table-column
:show-overflow-tooltip="true"
prop="uploadNum"
label="上传数量"
/>
<el-table-column
:show-overflow-tooltip="true"
prop="analysisNum"
label="解析数量"
/>
<el-table-column
:show-overflow-tooltip="true"
prop="recordStatus"
width="110"
label="状态"
>
<template slot-scope="scope">
<span>{{ statecCmparison('statusList', scope.row.recordStatus) }}</span>
</template>
</el-table-column>
<el-table-column
width="75"
label="操作"
>
<template slot-scope="scope">
<el-button
slot="reference"
size="mini"
type="text"
:disabled="scope.row.recordStatus !== 1"
@click="openModeling(scope.row.id)"
>建模</el-button>
</template>
</el-table-column>
</el-table>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="id" label="ID" width="35" />
<el-table-column
:show-overflow-tooltip="true"
@ -66,7 +111,7 @@
<span>{{ statecCmparison('uploadTypeList', scope.row.recordType) }}</span>
</template>
</el-table-column>
<el-table-column
<!-- <el-table-column
:show-overflow-tooltip="true"
prop="recordStatus"
width="110"
@ -75,8 +120,8 @@
<template slot-scope="scope">
<span>{{ statecCmparison('statusList', scope.row.recordStatus) }}</span>
</template>
</el-table-column>
<el-table-column
</el-table-column> -->
<!-- <el-table-column
width="75"
label="操作"
>
@ -89,7 +134,7 @@
@click="openModeling(scope.row.id)"
>建模</el-button>
</template>
</el-table-column>
</el-table-column> -->
<template #empty>
<div style="width: 100%; height: 450px;display: flex; flex-direction: column; justify-content: center;align-items: center">
<img src="@/assets/images/zanwu.png" alt="">

@ -462,6 +462,29 @@
>提交</el-button>
</div>
</el-dialog>
<el-dialog
append-to-body
:close-on-click-modal="false"
:visible.sync="detailVisible"
title="详情"
width="570px"
>
<el-descriptions title="">
<el-descriptions-item label="名称">{{ detailData.channelName }}</el-descriptions-item>
<el-descriptions-item label="禁用前剩余总量"><el-tag size="small">{{ detailData.preDisabledNum || 0 }}</el-tag></el-descriptions-item>
<el-descriptions-item label="禁用前话费余量"><el-tag size="small">{{ detailData.preSurplusPhoneNum || 0 }}</el-tag></el-descriptions-item>
<el-descriptions-item label="账号状态"><span
:style="{ color:
detailData.status == 1
? '#82b538'
: detailData.status == 2
? '#e79e41'
: '#c82a2a'
}"
>{{ detailData.status === 1 ? '正常': detailData.status === 2 ? '待开通' : '禁用' }}</span>
</el-descriptions-item>
</el-descriptions>
</el-dialog>
<!-- 表格 -->
<el-table
ref="tables"
@ -570,10 +593,16 @@
label="dmp投量"
/>
<el-table-column label="操作" width="140" fixed="right">
<el-table-column label="操作" width="160" fixed="right">
<template slot-scope="scope">
<div style="display: flex; align-items: center">
<!-- <span style="color: #246fdc; margin-right: 5px">|</span> -->
<el-button
slot="reference"
class="popover-item"
type="text"
@click="openDetail(scope.row)"
>详情</el-button>
<el-button
slot="reference"
class="popover-item"
@ -687,6 +716,9 @@ export default {
addCountDialogSubmitLoading: false,
//
addCountDialogVisible: false,
//
detailVisible: false,
detailData: ' ',
//
channelCustom: {
channelName: '',
@ -707,7 +739,6 @@ export default {
],
phone: [{ required: true, trigger: 'blur', validator: validPhone }]
},
// Loading
generateLinkDialogSubmitLoading: false,
//
@ -859,6 +890,11 @@ export default {
}
},
methods: {
//
openDetail(option) {
this.detailData = option
this.detailVisible = true
},
//
async getStatisticsData() {
const res = await statistics()

@ -9,7 +9,7 @@
<div>
<!-- v-if="user.roles.length != 1 && user.roles[0].id != 11" -->
<!-- 相关功能开发中 -->
<div v-if="user.roles.length === 1 && user.roles[0].id === 11" class="box">
<div v-if="user.roles.length === 1 && (user.roles[0].level === 6 || user.roles[0].level === 5)" class="box">
<div class="underDevelopment">
<!-- <img
class="pic-404__parent"
@ -1448,9 +1448,9 @@ export default {
},
mounted() {
if (this.user.roles.length === 1 && this.user.roles[0].id === 11) {
console.log('1111')
// console.log('1111')
} else {
if (this.user.isManager) {
if (this.user.roles[0].level === 2) {
this.getAdvertisingQualityScoreData()
this.reportAllget()
this.taskQueryAll()
@ -1508,7 +1508,7 @@ export default {
// )
// localStorage.setItem('isRemind', 1)
// }
} else if (!this.user.isManager && !this.user.isAdmin) {
} else if (this.user.roles[0].level === 3 || this.user.roles[0].level === 4) {
this.Statistics.usrNum = 0
this.Statistics.turnOnNum = 0
this.Statistics.turnOnRate = 0
@ -1587,7 +1587,7 @@ export default {
const res = await getAdvertisingQualityScore()
if (res.status === 0) {
this.advertisingQualityScoreData = res.data
console.log(this.advertisingQualityScoreData, 'this.advertisingQualityScoreData')
// console.log(this.advertisingQualityScoreData, 'this.advertisingQualityScoreData')
} else {
this.$message.error(res.msg)
}

@ -457,8 +457,9 @@ export default {
},
//
getRoles() {
// level !== 1 && item.level <= level
getAll().then(res => {
this.roles = res
this.roles = res.filter(item => item.level === 3 || item.level === 4)
}).catch(() => { })
},
//

@ -85,6 +85,7 @@
v-model="roleDatas"
style="width: 437px"
placeholder="请选择"
:multiple-limit="1"
multiple
@remove-tag="deleteTag"
@change="changeRole"

File diff suppressed because it is too large Load Diff

@ -165,7 +165,7 @@
</el-popover>
</div>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" :header-cell-style="{'text-align':'left'}" @selection-change="handleSelectionChange">
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" :header-cell-style="{'text-align':'left'}" @selection-change="() => {handleSelectionChange('ct')}">
<el-table-column type="selection" width="55" />
<el-table-column :show-overflow-tooltip="true" prop="taskName" label="任务名" width="120" />
<el-table-column :show-overflow-tooltip="true" prop="nid" width="100" label="手机" />
@ -647,7 +647,9 @@ export default {
}
})
},
handleSelectionChange(val) {
handleSelectionChange(type, val) {
console.log('type,---', type)
console.log('val,---', val)
this.multipleSelection = val
},
handleUserSelectionChange(val) {

Loading…
Cancel
Save