master_merge v11.0.2
yang 4 years ago
parent 5673b48cb0
commit c8ae1f21b3

@ -36,7 +36,7 @@
"nprogress": "0.2.0", "nprogress": "0.2.0",
"numeral": "^2.0.6", "numeral": "^2.0.6",
"nzh": "^1.0.4", "nzh": "^1.0.4",
"pinyin-match": "^1.0.9", "pinyin-match": "1.0.9",
"qrcodejs2": "0.0.2", "qrcodejs2": "0.0.2",
"throttle-debounce": "^2.1.0", "throttle-debounce": "^2.1.0",
"vue": "2.5.17", "vue": "2.5.17",

@ -18,6 +18,7 @@
:cache-done="cacheDone" :cache-done="cacheDone"
@status="crmImportChange" @status="crmImportChange"
@close="crmImportClose"/> @close="crmImportClose"/>
<xr-upgrade-dialog v-if="upgradeDialogShow" :visible.sync="upgradeDialogShow" />
</div> </div>
</template> </template>
@ -26,6 +27,7 @@
import VuePictureViewer from '@/components/VuePictureViewer/index' import VuePictureViewer from '@/components/VuePictureViewer/index'
import XrImport from '@/components/XrImport' import XrImport from '@/components/XrImport'
import XrImportMixins from '@/components/XrImport/XrImportMixins' import XrImportMixins from '@/components/XrImport/XrImportMixins'
import XrUpgradeDialog from '@/components/XrUpgradeDialog'
import CRMImport from '@/components/CRMImport' import CRMImport from '@/components/CRMImport'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import cache from '@/utils/cache' import cache from '@/utils/cache'
@ -36,22 +38,31 @@ export default {
components: { components: {
VuePictureViewer, VuePictureViewer,
XrImport, XrImport,
CRMImport CRMImport,
XrUpgradeDialog
}, },
mixins: [XrImportMixins], mixins: [XrImportMixins],
data() { data() {
return { return {
showPreviewImg: false, showPreviewImg: false,
previewIndex: 0, previewIndex: 0,
previewImgs: [] previewImgs: [],
upgradeDialogShow: false
} }
}, },
computed: { computed: {
...mapGetters(['activeIndex', 'userInfo']) ...mapGetters(['activeIndex', 'addRouters', 'userInfo'])
}, },
watch: { watch: {
$route(to, from) { $route(to, from) {
this.showPreviewImg = false // this.showPreviewImg = false //
},
addRouters() {
if (this.userInfo && this.userInfo.is_read_notice != 1) {
setTimeout(() => {
this.upgradeDialogShow = true
}, 5000)
}
} }
}, },
mounted() { mounted() {

@ -33,7 +33,20 @@ export function biBusinessTrendListAPI(data) {
} }
}) })
} }
/**
* 新增商机数与金额趋势分析 详情列表
* @param {*} data
*/
export function biBusinessConversionRateListAPI(data) {
return request({
url: 'bi/business/winList',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
/** /**
* 赢单机会转化率趋势分析 * 赢单机会转化率趋势分析
* @param {*} data * @param {*} data

@ -27,7 +27,7 @@ export function biCustomerTotalListAPI(data) {
export function biCustomerTotalListExportAPI(data) { export function biCustomerTotalListExportAPI(data) {
return request({ return request({
url: 'bi/contract/excelExport', url: 'bi/customer/excelExport',
method: 'post', method: 'post',
data: data, data: data,
responseType: 'blob', responseType: 'blob',
@ -69,7 +69,7 @@ export function biCustomerRecordListAPI(data) {
export function biCustomerRecordListExportAPI(data) { export function biCustomerRecordListExportAPI(data) {
return request({ return request({
url: 'bi/contract/excelExport', url: 'bi/customer/excelExport',
method: 'post', method: 'post',
data: data, data: data,
responseType: 'blob', responseType: 'blob',
@ -96,7 +96,7 @@ export function biCustomerRecordModeAPI(data) {
export function biCustomerRecordModeExportAPI(data) { export function biCustomerRecordModeExportAPI(data) {
return request({ return request({
url: 'bi/contract/excelExport', url: 'bi/customer/excelExport',
method: 'post', method: 'post',
data: data, data: data,
responseType: 'blob', responseType: 'blob',
@ -169,7 +169,7 @@ export function biCustomerPoolListAPI(data) {
export function biCustomerPoolListExportAPI(data) { export function biCustomerPoolListExportAPI(data) {
return request({ return request({
url: 'bi/contract/excelExport', url: 'bi/customer/excelExport',
method: 'post', method: 'post',
data: data, data: data,
responseType: 'blob', responseType: 'blob',
@ -196,7 +196,7 @@ export function biCustomerUserCycleAPI(data) {
export function biCustomerUserCycleExportAPI(data) { export function biCustomerUserCycleExportAPI(data) {
return request({ return request({
url: 'bi/contract/excelExport', url: 'bi/customer/excelExport',
method: 'post', method: 'post',
data: data, data: data,
responseType: 'blob', responseType: 'blob',
@ -234,7 +234,7 @@ export function biCustomerAddressCycleAPI(data) {
export function biCustomerAddressCycleExportAPI(data) { export function biCustomerAddressCycleExportAPI(data) {
return request({ return request({
url: 'bi/contract/excelExport', url: 'bi/customer/excelExport',
method: 'post', method: 'post',
data: data, data: data,
responseType: 'blob', responseType: 'blob',
@ -261,7 +261,7 @@ export function biCustomerProductCycleAPI(data) {
export function biCustomerProductCycleExportAPI(data) { export function biCustomerProductCycleExportAPI(data) {
return request({ return request({
url: 'bi/contract/excelExport', url: 'bi/customer/excelExport',
method: 'post', method: 'post',
data: data, data: data,
responseType: 'blob', responseType: 'blob',
@ -288,7 +288,7 @@ export function biCustomerSatisfactionTableAPI(data) {
export function biCustomerSatisfactionTableExportAPI(data) { export function biCustomerSatisfactionTableExportAPI(data) {
return request({ return request({
url: 'bi/contract/excelExport', url: 'bi/customer/excelExport',
method: 'post', method: 'post',
data: data, data: data,
responseType: 'blob', responseType: 'blob',
@ -315,7 +315,7 @@ export function biCustomerProductSatisfactionTableAPI(data) {
export function biCustomerProductSatisfactionExportAPI(data) { export function biCustomerProductSatisfactionExportAPI(data) {
return request({ return request({
url: 'bi/contract/excelExport', url: 'bi/customer/excelExport',
method: 'post', method: 'post',
data: data, data: data,
responseType: 'blob', responseType: 'blob',

@ -354,7 +354,7 @@ export function downloadFileImageAPI(data) {
*/ */
export function readUpdateNoticeAPI(data) { export function readUpdateNoticeAPI(data) {
return request({ return request({
url: 'adminUser/readNotice', url: 'admin/adminUser/readNotice',
method: 'post', method: 'post',
data: data data: data
}) })

@ -363,7 +363,7 @@ export function workExcelImportAPI(data) {
*/ */
export function workDownloadErrorExcelAPI(data) { export function workDownloadErrorExcelAPI(data) {
return request({ return request({
url: 'work/work/downloadErrorExcel', url: 'admin/file/download',
method: 'post', method: 'post',
data: data, data: data,
responseType: 'blob' responseType: 'blob'

@ -137,7 +137,7 @@ export function workTaskRecoverAPI(data) {
*/ */
export function taskWorkbenchExportAPI(data) { export function taskWorkbenchExportAPI(data) {
return request({ return request({
url: 'oa/task/excelExport', url: 'work/task/excelExport',
method: 'post', method: 'post',
data: data, data: data,
responseType: 'blob' responseType: 'blob'

@ -134,7 +134,7 @@ export function taskDeleteLabelAPI(data) {
*/ */
export function taskOaExportAPI(data) { export function taskOaExportAPI(data) {
return request({ return request({
url: 'work/task/excelExport', url: 'oa/task/excelExport',
method: 'post', method: 'post',
data: data, data: data,
responseType: 'blob', responseType: 'blob',

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

@ -76,7 +76,7 @@ export default {
// //
showFoot: { showFoot: {
type: Boolean, type: Boolean,
default: false default: true
}, },
showAdd: { showAdd: {
type: Boolean, type: Boolean,

@ -0,0 +1,139 @@
<template>
<el-dialog
:visible="visible"
:close-on-click-modal="false"
class="xr-upgrade-dialog"
title=""
width="700px"
append-to-body
@close="closeView">
<el-button class="close-button" icon="el-icon-close" @click="closeView"/>
<flexbox class="upgrade-header" justify="center" align="center" orient="vertical">
<span class="upgrade-header__title">升级通知</span>
<span class="upgrade-header__version">版本{{ WKConfig.version }}</span>
</flexbox>
<div class="content">
<div class="content__title">升级内容</div>
<div class="content__content">{{ message }}</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="closeView"></el-button>
</span>
</el-dialog>
</template>
<script>
import { readUpdateNoticeAPI } from '@/api/common'
export default {
name: 'XrUpgradeDialog',
components: {},
props: {
visible: Boolean
},
data() {
return {
message: `修复:
1修复自定义字段设置隐藏生效问题
2修复线索自定义字段转化字段设置生效问题
3修复导入数据超过100条部分的数据无法导入问题
4修复新建场景保存报错问题
5修复客户新建后显示为公海客户无法操作问题
6修复多选字段高级筛选不生效问题
7修复产品编辑报错问题
8修复部门人员字段列表展示问题
9修复手机邮箱字段详情编辑校验问题
10修复活动记录展示其他客户信息的问题
11修复系统提示账号在其他地方登录问题
12修复待办事项今日需联系客户标记完成不生效问题
13修复仪表盘数据统计错误问题
14修复仪表盘遗忘提醒数据查询统计错误问题
15修复仪表盘自定义时间部门筛选数据统计错误问题
16修复商业智能自定义时间筛选数据统计错误问题
17修复商业智能部门人员默认筛选数据统计错误问题
18修复 72crm-11.0-webPHP版部署后部门成员不展示问题;
19修复其他已知bug
20新增商业智能导出功能`
}
},
computed: {},
watch: {},
mounted() {},
beforeDestroy() {},
methods: {
closeView() {
readUpdateNoticeAPI().then(res => {
}).catch(() => {})
this.$emit('update:visible', false)
}
}
}
</script>
<style lang="scss">
.xr-upgrade-dialog {
.el-dialog__header {
display: none;
}
.el-dialog__body {
position: relative;
padding: 0 0 20px;
height: 500px;
}
.upgrade-header {
background-image: url('~@/assets/img/upgrade_bar.png');
background-repeat: no-repeat;
background-size: cover;
height: 131px;
color: white;
&__title {
display: inline-block;
font-size: 25px;
font-weight: bold;
}
&__version {
display: inline-block;
margin-top: 15px;
}
}
.content {
padding: 20px 30px;
font-size: 14px;
position: relative;
height: 370px;
overflow-y: auto;
&__title {
font-weight: bold;
}
&__content {
margin-top: 15px;
white-space: pre-wrap;
word-wrap: break-word;
word-break: break-all;
line-height: 1.5;
}
}
.close-button {
position: absolute;
top: 5px;
right: 0;
border: none;
outline: none;
background: transparent;
font-size: 19px;
font-weight: bold;
.el-icon-close {
color: white;
}
}
}
</style>

@ -3,8 +3,8 @@ const getLocationOrigin = () => {
} }
const companyName = '悟空CRM' const companyName = '悟空CRM'
const version = 'V11.0.1' const version = 'V11.0.2'
const baiduKey = '百度key' const baiduKey = 'lcuOQ71SCZhqpxsr1vL2mXoplWEoVctL'
export default { export default {
version, version,

@ -72,9 +72,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
v-if="showTable" v-if="showTable"

@ -15,9 +15,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
:data="list" :data="list"

@ -15,9 +15,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
:data="list" :data="list"

@ -9,10 +9,10 @@
module-type="invoice" module-type="invoice"
@load="loading=true" @load="loading=true"
@change="getDataList"> @change="getDataList">
<!-- <el-button <el-button
class="export-button" class="export-button"
type="primary" type="primary"
@click.native="exportClick">导出</el-button> --> @click.native="exportClick">导出</el-button>
</filtrate-handle-view> </filtrate-handle-view>
<div class="content"> <div class="content">
<div class="content-title"> <div class="content-title">

@ -15,9 +15,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
:data="list" :data="list"

@ -9,10 +9,10 @@
module-type="contract" module-type="contract"
@load="loading=true" @load="loading=true"
@change="getDataList"> @change="getDataList">
<!-- <el-button <el-button
class="export-button" class="export-button"
type="primary" type="primary"
@click.native="exportClick">导出</el-button> --> @click.native="exportClick">导出</el-button>
</filtrate-handle-view> </filtrate-handle-view>
<div class="content"> <div class="content">
<div class="content-title"> <div class="content-title">

@ -47,7 +47,8 @@
<script> <script>
import { import {
biBusinessWinAPI, biBusinessWinAPI,
biBusinessTrendListAPI // biBusinessTrendListAPI
biBusinessConversionRateListAPI
} from '@/api/bi/business' } from '@/api/bi/business'
import ReportList from '@/views/crm/workbench/components/ReportList' import ReportList from '@/views/crm/workbench/components/ReportList'
@ -176,7 +177,7 @@ export default {
handleRowClick(row, column, event) { handleRowClick(row, column, event) {
if (column.property != 'name' && row[column.property].replace('%', '') > 0) { if (column.property != 'name' && row[column.property].replace('%', '') > 0) {
this.reportData.title = `${column.label}详情` this.reportData.title = `${column.label}详情`
this.reportData.request = biBusinessTrendListAPI this.reportData.request = biBusinessConversionRateListAPI
const params = { ...this.postParams } const params = { ...this.postParams }
params.type = column.label params.type = column.label
this.reportData.params = params this.reportData.params = params

@ -120,7 +120,7 @@ import XhUserCell from '@/components/CreateCom/XhUserCell'
import TimeTypeSelect from '@/components/TimeTypeSelect' import TimeTypeSelect from '@/components/TimeTypeSelect'
import moment from 'moment' import moment from 'moment'
import { mapGetters } from 'vuex'
export default { export default {
name: 'FiltrateHandleView', // name: 'FiltrateHandleView', //
components: { components: {
@ -214,9 +214,11 @@ export default {
} }
}, },
computed: { computed: {
...mapGetters(['userInfo']),
showUserStrucSelect() { showUserStrucSelect() {
return this.showUserSelect return this.showUserSelect
} }
}, },
watch: {}, watch: {},
mounted() { mounted() {
@ -321,7 +323,7 @@ export default {
const params = {} const params = {}
if (this.showUserStrucSelect) { if (this.showUserStrucSelect) {
if (this.dataSelect == 1) { if (this.dataSelect == 1) {
params.structure_id = this.structuresSelectValue.length > 0 ? this.structuresSelectValue[0].id : '1' params.structure_id = this.structuresSelectValue.length > 0 ? this.structuresSelectValue[0].id : this.userInfo.structure_id
} }
} else { } else {
params.structure_id = this.structuresSelectValue.length > 0 ? this.structuresSelectValue[0].id : '1' params.structure_id = this.structuresSelectValue.length > 0 ? this.structuresSelectValue[0].id : '1'

@ -14,9 +14,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
v-if="showTable" v-if="showTable"

@ -18,9 +18,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
v-if="showTable" v-if="showTable"

@ -14,9 +14,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
v-if="showTable" v-if="showTable"

@ -8,10 +8,10 @@
module-type="contract" module-type="contract"
@load="loading=true" @load="loading=true"
@change="getDataList"> @change="getDataList">
<!-- <el-button <el-button
class="export-button" class="export-button"
type="primary" type="primary"
@click.native="exportClick">导出</el-button> --> @click.native="exportClick">导出</el-button>
</filtrate-handle-view> </filtrate-handle-view>
<div class="content"> <div class="content">
<div class="table-content"> <div class="table-content">

@ -15,9 +15,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
v-if="showTable" v-if="showTable"

@ -8,10 +8,10 @@
module-type="contract" module-type="contract"
@load="loading=true" @load="loading=true"
@change="getDataList"> @change="getDataList">
<!-- <el-button <el-button
class="export-button" class="export-button"
type="primary" type="primary"
@click.native="exportClick">导出</el-button> --> @click.native="exportClick">导出</el-button>
</filtrate-handle-view> </filtrate-handle-view>
<div class="content"> <div class="content">
<div class="table-content"> <div class="table-content">

@ -18,9 +18,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
v-if="showTable" v-if="showTable"

@ -8,10 +8,10 @@
module-type="oa" module-type="oa"
@load="loading=true" @load="loading=true"
@change="getDataList"> @change="getDataList">
<!-- <el-button <el-button
class="export-button" class="export-button"
type="primary" type="primary"
@click.native="exportExcel">导出</el-button> --> @click.native="exportExcel">导出</el-button>
</filtrate-handle-view> </filtrate-handle-view>
<div class="content"> <div class="content">
<div class="table-content"> <div class="table-content">

@ -8,10 +8,10 @@
module-type="oa" module-type="oa"
@load="loading=true" @load="loading=true"
@change="getDataList"> @change="getDataList">
<!-- <el-button <el-button
class="export-button" class="export-button"
type="primary" type="primary"
@click.native="exportExcel">导出</el-button> --> @click.native="exportExcel">导出</el-button>
</filtrate-handle-view> </filtrate-handle-view>
<div class="content"> <div class="content">
<div class="table-content"> <div class="table-content">

@ -8,10 +8,10 @@
module-type="product" module-type="product"
@load="loading=true" @load="loading=true"
@change="getProductDatalist"> @change="getProductDatalist">
<!-- <el-button <el-button
class="export-button" class="export-button"
type="primary" type="primary"
@click.native="exportClick">导出</el-button> --> @click.native="exportClick">导出</el-button>
</filtrate-handle-view> </filtrate-handle-view>
<div class="content"> <div class="content">
<el-table <el-table

@ -19,9 +19,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
:data="list" :data="list"

@ -19,9 +19,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
:data="list" :data="list"

@ -19,9 +19,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
:data="list" :data="list"

@ -19,9 +19,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
:data="list" :data="list"

@ -19,9 +19,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
:data="list" :data="list"

@ -19,9 +19,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
:data="list" :data="list"

@ -19,9 +19,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
:data="list" :data="list"

@ -19,9 +19,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
:data="list" :data="list"

@ -19,9 +19,9 @@
</div> </div>
<div class="table-content"> <div class="table-content">
<div class="handle-bar"> <div class="handle-bar">
<!-- <el-button <el-button
class="export-btn" class="export-btn"
@click="exportClick">导出</el-button> --> @click="exportClick">导出</el-button>
</div> </div>
<el-table <el-table
:data="list" :data="list"

@ -398,6 +398,8 @@ export default {
.then(res => { .then(res => {
this.loading = false this.loading = false
this.detailData = res.data this.detailData = res.data
if (this.detailData.dataAuth === 0) return
this.firstContactsId = this.detailData.contacts_id this.firstContactsId = this.detailData.contacts_id
this.headDetails[0].value = res.data.customer_id_info.name this.headDetails[0].value = res.data.customer_id_info.name

@ -424,6 +424,8 @@ export default {
this.$wkUploadFile.upload({ this.$wkUploadFile.upload({
file: file, file: file,
params: { params: {
module_id: this.id,
module: 'crm_' + this.crmType,
type: type, type: type,
batchId: this.batchId batchId: this.batchId
} }

@ -513,7 +513,7 @@ export default {
if (this.isSeas) { if (this.isSeas) {
return false return false
} }
if (this.crmType == 'business' && ['statusName', 'typeName'].includes(item.form_type)) { if (this.crmType == 'business' && ['business_type', 'business_status'].includes(item.form_type)) {
return false return false
} else if (this.crmType == 'contract' && ['business', 'contacts', 'customer'].includes(item.form_type)) { } else if (this.crmType == 'contract' && ['business', 'contacts', 'customer'].includes(item.form_type)) {
return false return false
@ -578,7 +578,7 @@ export default {
}, },
editConfirm() { editConfirm() {
// customerId fieldId fieldType field formType value // customerId fieldId fieldType field form_type value
// this.editCancel() // this.editCancel()
this.$refs.editForm0[0].validate(valid => { this.$refs.editForm0[0].validate(valid => {
if (valid) { if (valid) {
@ -640,38 +640,38 @@ export default {
getRealValue(element, value) { getRealValue(element, value) {
if ( if (
element.formType == 'customer' || element.form_type == 'customer' ||
element.formType == 'contacts' || element.form_type == 'contacts' ||
element.formType == 'business' || element.form_type == 'business' ||
element.formType == 'leads' || element.form_type == 'leads' ||
element.formType == 'contract' element.form_type == 'contract'
) { ) {
if (value && value.length) { if (value && value.length) {
return value[0][`${element.formType}Id`] return value[0][`${element.form_type}_id`]
} else { } else {
return '' return ''
} }
} else if ( } else if (
element.formType == 'user' || element.form_type == 'user' ||
element.formType == 'single_user' || element.form_type == 'single_user' ||
element.formType == 'structure' element.form_type == 'structure'
) { ) {
return value return value
.map(item => { .map(item => {
return (element.formType == 'user' || element.formType == 'single_user') ? item.userId : item.id return (element.form_type == 'user' || element.form_type == 'single_user') ? item.id : item.id
}) })
.join(',') // .join(',')
} else if (element.formType == 'file') { } else if (element.form_type == 'file') {
if (value && value.length > 0) { if (value && value.length > 0) {
return value[0].batchId return value.map(item => item.file_id)
} }
return '' return []
} else if (element.formType == 'category') { } else if (element.form_type == 'category') {
if (value && value.length > 0) { if (value && value.length > 0) {
return value[value.length - 1] return value[value.length - 1]
} }
return '' return ''
} else if (element.formType == 'checkbox') { } else if (element.form_type == 'checkbox') {
if (value && value.length > 0) { if (value && value.length > 0) {
return value.join(',') return value.join(',')
} }
@ -766,12 +766,15 @@ export default {
} }
// //
if (item.isUnique == 1) { if (item.is_unique == 1) {
var validateUnique = (rule, value, callback) => { var validateUnique = (rule, value, callback) => {
if ((isArray(value) && value.length == 0) || !value) { if ((isArray(value) && value.length == 0) || !value) {
callback() callback()
} else { } else {
var validatesParams = {} var validatesParams = {
field: item.field,
types: 'crm_' + this.crmType
}
validatesParams.fieldId = item.fieldId validatesParams.fieldId = item.fieldId
if (isArray(value)) { if (isArray(value)) {
let postValue = '' let postValue = ''
@ -798,15 +801,15 @@ export default {
postValue = value.join(',') postValue = value.join(',')
} }
} }
validatesParams.value = postValue validatesParams.val = postValue
} else { } else {
validatesParams.value = value validatesParams.val = value
} }
validatesParams.batchId = this.detail.batchId validatesParams.batchId = this.detail.batchId
filedValidatesAPI(validatesParams) filedValidatesAPI(validatesParams)
.then(res => { .then(res => {
// status 1 0 // code 200
if (res.data.status === 1) { if (res.code == 200) {
callback() callback()
} else { } else {
callback(new Error(item.name + '已存在')) callback(new Error(item.name + '已存在'))
@ -874,7 +877,7 @@ export default {
tempList.push({ tempList.push({
validator: validateCRMMobile, validator: validateCRMMobile,
item: item, item: item,
trigger: [] trigger: ['blur', 'change']
}) })
} else if (item.form_type == 'email') { } else if (item.form_type == 'email') {
var validateCRMEmail = (rule, value, callback) => { var validateCRMEmail = (rule, value, callback) => {
@ -890,7 +893,7 @@ export default {
tempList.push({ tempList.push({
validator: validateCRMEmail, validator: validateCRMEmail,
item: item, item: item,
trigger: [] trigger: ['blur', 'change']
}) })
} }
return tempList return tempList

@ -288,7 +288,7 @@ export default {
}) })
.then(() => { .then(() => {
crmCustomerReceiveAPI({ crmCustomerReceiveAPI({
ids: [data.id], customer_id: [data.id],
poolId: data.poolAuthList.poolId poolId: data.poolAuthList.poolId
}) })
.then(res => { .then(res => {
@ -299,7 +299,7 @@ export default {
}) })
.catch(() => {}) .catch(() => {})
} else { } else {
data['customerId'] = data.id data['customer_id'] = data.id
this.relationData = data this.relationData = data
this.allocDialogShow = true this.allocDialogShow = true
} }

@ -497,7 +497,8 @@ export default {
o.form_type == 'single_user' || o.form_type == 'single_user' ||
o.form_type == 'structure' || o.form_type == 'structure' ||
o.form_type == 'category' || o.form_type == 'category' ||
o.form_type == 'checkbox' o.form_type == 'checkbox' ||
o.form_type == 'select'
) { ) {
if (!o.value || o.value.length === 0) { if (!o.value || o.value.length === 0) {
if (o.condition != 'isNull' && o.condition != 'isNotNull') { if (o.condition != 'isNull' && o.condition != 'isNotNull') {

@ -109,7 +109,7 @@ export default {
}) })
this.fieldList.push({ prop: 'unit', width: '200', label: '单位' }) this.fieldList.push({ prop: 'unit', width: '200', label: '单位' })
this.fieldList.push({ prop: 'price', width: '200', label: '标准价格' }) this.fieldList.push({ prop: 'price', width: '200', label: '标准价格' })
this.fieldList.push({ prop: 'salesPrice', width: '200', label: '售价' }) this.fieldList.push({ prop: 'sales_price', width: '200', label: '售价' })
this.fieldList.push({ prop: 'num', width: '200', label: '数量' }) this.fieldList.push({ prop: 'num', width: '200', label: '数量' })
this.fieldList.push({ this.fieldList.push({
prop: 'discount', prop: 'discount',
@ -120,7 +120,7 @@ export default {
}, },
fieldFormatter(row, column) { fieldFormatter(row, column) {
if (column.property == 'price' || column.property == 'salesPrice') { if (column.property == 'price' || column.property == 'sales_price') {
return separator(row[column.property] || 0) return separator(row[column.property] || 0)
} }
return row[column.property] return row[column.property]

@ -257,6 +257,8 @@ export default {
.then(res => { .then(res => {
this.loading = false this.loading = false
this.detailData = res.data this.detailData = res.data
if (this.detailData.dataAuth === 0) return
// //
this.headDetails[0].value = res.data.customer_name this.headDetails[0].value = res.data.customer_name
this.headDetails[1].value = res.data.post this.headDetails[1].value = res.data.post

@ -277,6 +277,7 @@ export default {
// 使 // 使
const resData = res.data || {} const resData = res.data || {}
this.detailData = resData this.detailData = resData
if (this.detailData.dataAuth === 0) return
this.headDetails[0].value = resData.num this.headDetails[0].value = resData.num
this.headDetails[1].value = resData.customer_id_info.name this.headDetails[1].value = resData.customer_id_info.name

@ -378,6 +378,7 @@ export default {
const resData = res.data || {} const resData = res.data || {}
this.detailData = resData this.detailData = resData
if (resData.dataAuth === 0) return if (resData.dataAuth === 0) return
this.firstContactsId = this.detailData.contacts_id this.firstContactsId = this.detailData.contacts_id
// //
// this.poolAuth = resData.poolAuthList || {} // this.poolAuth = resData.poolAuthList || {}

@ -170,6 +170,7 @@ export default {
this.name = res.data.invoice_number this.name = res.data.invoice_number
this.detailData = res.data this.detailData = res.data
this.getBaseList(res.data) this.getBaseList(res.data)
if (this.detailData.dataAuth === 0) return
// // // //
this.headDetails[0].value = res.data.customer_name this.headDetails[0].value = res.data.customer_name

@ -123,7 +123,7 @@ export default {
// temp.value = item.value // temp.value = item.value
const canEdit = this.getItemIsCanEdit(item, this.action.type) const canEdit = this.getItemIsCanEdit(item, this.action.type)
// //
if (this.action.type !== 'update') { if (canEdit) {
fieldRules[temp.field] = this.getRules(item) fieldRules[temp.field] = this.getRules(item)
} }

@ -194,6 +194,7 @@ export default {
crmLeadsReadAPI({ id: this.id }) crmLeadsReadAPI({ id: this.id })
.then(res => { .then(res => {
this.detailData = res.data this.detailData = res.data
if (this.detailData.dataAuth === 0) return
this.headDetails[0].value = res.data.name this.headDetails[0].value = res.data.name
this.headDetails[1].value = res.data.source this.headDetails[1].value = res.data.source

@ -438,7 +438,7 @@ export default {
params.type_id = this.selectionList params.type_id = this.selectionList
.map(item => { .map(item => {
let temp = [] let temp = []
const fieldKey = this.crmType === 'receivables_plan' ? 'planId' : `${this.crmType}_id` const fieldKey = this.crmType === 'receivables_plan' ? 'plan_id' : `${this.crmType}_id`
// temp.typeId = item[fieldKey] // temp.typeId = item[fieldKey]
temp = item[fieldKey] temp = item[fieldKey]
// id // id

@ -434,7 +434,7 @@ export default {
this.rowID = row.customer_id this.rowID = row.customer_id
this.rowType = 'customer' this.rowType = 'customer'
this.showDview = true this.showDview = true
} else if (column.property === 'contract_number') { } else if (column.property === 'contract_num') {
this.rowID = row.contract_id this.rowID = row.contract_id
this.rowType = 'contract' this.rowType = 'contract'
this.showDview = true this.showDview = true

@ -201,6 +201,7 @@ export default {
.then(res => { .then(res => {
this.loading = false this.loading = false
this.detailData = res.data this.detailData = res.data
if (this.detailData.dataAuth === 0) return
this.headDetails[0].value = res.data.category_id_info this.headDetails[0].value = res.data.category_id_info
this.headDetails[1].value = res.data.unit this.headDetails[1].value = res.data.unit

@ -169,6 +169,8 @@ export default {
this.loading = false this.loading = false
this.name = res.data.number this.name = res.data.number
this.detailData = res.data this.detailData = res.data
if (this.detailData.dataAuth === 0) return
// // // //
this.headDetails[0].value = res.data.customer_id_info.name this.headDetails[0].value = res.data.customer_id_info.name
this.headDetails[1].value = separator(res.data.contract_id_info.money || 0) this.headDetails[1].value = separator(res.data.contract_id_info.money || 0)

@ -142,6 +142,7 @@ export default {
.then(res => { .then(res => {
this.loading = false this.loading = false
this.detailData = res.data this.detailData = res.data
if (this.detailData.dataAuth === 0) return
this.headDetails[0].value = res.data.customer_name this.headDetails[0].value = res.data.customer_name
this.headDetails[1].value = res.data.visit_time this.headDetails[1].value = res.data.visit_time

@ -27,7 +27,7 @@
跟进汇总 跟进汇总
</div> </div>
<div class="info"> <div class="info">
跟进客户<span class="bold">{{ data.activityNum }}</span>新增客户中未跟进<span class="bold">{{ data.allCustomer - data.activityRealNum }}</span> 跟进客户<span class="bold">{{ data.activityNum }}</span>新增客户中未跟进<span class="bold">{{ data.allCustomer - data.activityNum }}</span>
</div> </div>
</div> </div>
<div class="list-item"> <div class="list-item">

@ -46,17 +46,17 @@ export default {
} else { } else {
if (this.filterValue.strucs.length) { if (this.filterValue.strucs.length) {
params.isUser = 0 params.isUser = 0
params.deptId = this.filterValue.strucs[0].id params.structure_id = [this.filterValue.strucs[0].id]
} else { } else {
params.isUser = 1 params.isUser = 1
params.userId = this.filterValue.users.length ? this.filterValue.users[0].id : '' params.user_id = this.filterValue.users.length ? this.filterValue.users[0].id : ''
} }
} }
if (this.filterValue.timeLine.type) { if (this.filterValue.timeLine.type) {
if (this.filterValue.timeLine.type === 'custom') { if (this.filterValue.timeLine.type === 'custom') {
params.startTime = this.filterValue.timeLine.startTime.replace(/\./g, '-') params.start_time = this.filterValue.timeLine.startTime.replace(/\./g, '-')
params.endTime = this.filterValue.timeLine.endTime.replace(/\./g, '-') params.end_time = this.filterValue.timeLine.endTime.replace(/\./g, '-')
} else { } else {
params.type = this.filterValue.timeLine.value || '' params.type = this.filterValue.timeLine.value || ''
} }

@ -231,7 +231,7 @@ export default {
// //
sortLeft: [ sortLeft: [
// { 'id': null, 'userId': null, 'modelId': 7, 'list': 1, 'sort': null, 'isHidden': 0, 'companyId': null, 'component': 'RankingStatistics' }, { 'id': null, 'userId': null, 'modelId': 5, 'list': 1, 'sort': null, 'isHidden': 0, 'companyId': null, 'component': 'SalesFunnel' }, { 'id': null, 'userId': null, 'modelId': 4, 'list': 1, 'sort': null, 'isHidden': 0, 'companyId': null, 'component': 'PerformanceChart' }, { 'id': null, 'userId': null, 'modelId': 2, 'list': 1, 'sort': null, 'isHidden': 0, 'companyId': null, 'component': 'DataStatistics' }, { 'id': null, 'userId': null, 'modelId': 6, 'list': 1, 'sort': null, 'isHidden': 0, 'companyId': null, 'component': 'ForgetRemind' }, { 'id': null, 'userId': null, 'modelId': 1, 'list': 1, 'sort': null, 'isHidden': 0, 'companyId': null, 'component': 'SaleStatistics' } // { 'id': null, 'user_id': null, 'modelId': 7, 'list': 1, 'sort': null, 'isHidden': 0, 'companyId': null, 'component': 'RankingStatistics' }, { 'id': null, 'user_id': null, 'modelId': 5, 'list': 1, 'sort': null, 'isHidden': 0, 'companyId': null, 'component': 'SalesFunnel' }, { 'id': null, 'user_id': null, 'modelId': 4, 'list': 1, 'sort': null, 'isHidden': 0, 'companyId': null, 'component': 'PerformanceChart' }, { 'id': null, 'user_id': null, 'modelId': 2, 'list': 1, 'sort': null, 'isHidden': 0, 'companyId': null, 'component': 'DataStatistics' }, { 'id': null, 'user_id': null, 'modelId': 6, 'list': 1, 'sort': null, 'isHidden': 0, 'companyId': null, 'component': 'ForgetRemind' }, { 'id': null, 'user_id': null, 'modelId': 1, 'list': 1, 'sort': null, 'isHidden': 0, 'companyId': null, 'component': 'SaleStatistics' }
], ],
sortRight: [], sortRight: [],
setSortShow: false setSortShow: false

@ -115,7 +115,7 @@ export default {
if (this.data.label && this.data.label <= 5) { if (this.data.label && this.data.label <= 5) {
key = ['task', 'log', 'examine', 'announcement', 'schedule'][this.data.label - 1] key = ['task', 'log', 'examine', 'announcement', 'schedule'][this.data.label - 1]
} else { } else {
if ([1, 2, 3].includes(this.data.type)) { if ([1, 2, 3, 27].includes(this.data.type)) {
key = 'task' key = 'task'
} else if ([4, 5, 34].includes(this.data.type)) { } else if ([4, 5, 34].includes(this.data.type)) {
key = 'log' key = 'log'
@ -166,14 +166,14 @@ export default {
14: `${this.data.user_name}提交 `, 14: `${this.data.user_name}提交 `,
15: `${this.data.user_name}拒绝您的`, 15: `${this.data.user_name}拒绝您的`,
16: `${this.data.user_name}已经审核通过您的`, 16: `${this.data.user_name}已经审核通过您的`,
17: `${this.data.user_name}导入客户数据${this.data.title}${this.getImportContent(this.data)}`, 17: `${this.data.user_name}导入客户数据${this.getImportContent(this.data)}`,
1500: `${this.data.user_name}取消导入客户数据,已导入${this.data.title}${this.getImportContent(this.data)}`, 1500: `${this.data.user_name}取消导入客户数据,已导入${this.getImportContent(this.data)}`,
18: `${this.data.user_name}导入联系人数据${this.data.title}${this.getImportContent(this.data)}`, 18: `${this.data.user_name}导入联系人数据${this.getImportContent(this.data)}`,
1700: `${this.data.user_name}取消导入联系人数据,已导入${this.data.title}条,${this.getImportContent(this.data)}`, 1700: `${this.data.user_name}取消导入联系人数据,已导入${this.data.title}条,${this.getImportContent(this.data)}`,
19: `${this.data.user_name}导入线索数据${this.data.title}${this.getImportContent(this.data)}`, 19: `${this.data.user_name}导入线索数据${this.getImportContent(this.data)}`,
1900: `${this.data.user_name}取消导入线索数据,已导入${this.data.title}${this.getImportContent(this.data)}`, 1900: `${this.data.user_name}取消导入线索数据,已导入${this.getImportContent(this.data)}`,
20: `${this.data.user_name}导入产品数据${this.data.title}${this.getImportContent(this.data)}`, 20: `${this.data.user_name}导入产品数据${this.getImportContent(this.data)}`,
2100: `${this.data.user_name}取消导入产品数据,已导入${this.data.title}${this.getImportContent(this.data)}`, 2100: `${this.data.user_name}取消导入产品数据,已导入${this.getImportContent(this.data)}`,
22: `${this.data.user_name}将您添加为商机`, 22: `${this.data.user_name}将您添加为商机`,
21: `${this.data.user_name}将您添加为客户`, 21: `${this.data.user_name}将您添加为客户`,
23: `${this.data.user_name}将您添加为合同`, 23: `${this.data.user_name}将您添加为合同`,
@ -190,7 +190,7 @@ export default {
25: `${this.data.user_name}拒绝您的`, 25: `${this.data.user_name}拒绝您的`,
26: `${this.data.user_name}已经审核通过您的`, 26: `${this.data.user_name}已经审核通过您的`,
24: `${this.data.user_name}提交了`, 24: `${this.data.user_name}提交了`,
27: `${this.data.user_name}项目任务导入` 27: `${this.data.user_name}项目任务导入数据,${this.getImportContent(this.data)}`
}[this.data.type] }[this.data.type]
}, },
@ -222,7 +222,7 @@ export default {
* 是导入type * 是导入type
*/ */
isImportType() { isImportType() {
return this.data.type >= 17 && this.data.type <= 20 || this.data.type == 27 return (this.data.type >= 17 && this.data.type <= 20) || this.data.type == 27
}, },
rightContent() { rightContent() {
@ -263,7 +263,7 @@ export default {
32: `的团队`, 32: `的团队`,
33: `的团队`, 33: `的团队`,
34: `:“${this.data.content}”,请及时查看`, 34: `:“${this.data.content}”,请及时查看`,
25: `,拒绝理由:“${this.data.content}”,请及时处理`, 25: `发票审批,拒绝理由:“${this.data.content}”,请及时处理`,
26: `发票,请及时查看`, 26: `发票,请及时查看`,
24: `发票审批,请及时处理`, 24: `发票审批,请及时处理`,
27: `` 27: ``
@ -325,7 +325,7 @@ export default {
}, },
getImportContent({ title, content }) { getImportContent({ title, content }) {
const countList = [17, 1500, 18, 1700, 19, 1900, 20, 2100, 50] const countList = [17, 1500, 18, 1700, 19, 1900, 20, 2100, 50, 27]
if (!countList.includes(this.data.type)) { if (!countList.includes(this.data.type)) {
return return
} }

@ -56,7 +56,7 @@
class="sidebar-bottom"> class="sidebar-bottom">
<div class="sidebar-bottom-content"> <div class="sidebar-bottom-content">
<div v-if="!collapse" class="copyright"> <div v-if="!collapse" class="copyright">
<img src="/favicon.ico" width="20px" > <img src="@/assets/img/favicon.png" width="20px" >
<span>Power by 悟空</span> <span>Power by 悟空</span>
</div> </div>
<img <img

@ -125,6 +125,7 @@
<related-business <related-business
:margin-left="'0'" :margin-left="'0'"
:all-data="allData" :all-data="allData"
@unbind="unbindRelatedInfo"
@checkInfos="checkInfos" /> @checkInfos="checkInfos" />
</div> </div>
</div> </div>
@ -310,6 +311,31 @@ export default {
} }
}, },
methods: { methods: {
/**
* 解绑详情信息
*/
unbindRelatedInfo(field, item, index) {
this.$confirm('确认取消关联?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
customClass: 'is-particulars'
})
.then(() => {
const tempRelatedListData = JSON.parse(JSON.stringify(this.allData))
tempRelatedListData[field].splice(index, 1)
this.allData = tempRelatedListData
var relevanceAll = {}
relevanceAll.business_ids = this.allData.business.map(item => item.business_id)
relevanceAll.contacts_ids = this.allData.contacts.map(item => item.contacts_id)
relevanceAll.contract_ids = this.allData.contract.map(item => item.contract_id)
relevanceAll.customer_ids = this.allData.customer.map(item => item.customer_id)
this.relevanceAll = relevanceAll
})
.catch(() => {
this.$message.info('已取消操作')
})
},
/** /**
* 获取图片内容 * 获取图片内容
*/ */

@ -54,9 +54,9 @@
<div class="result-info"> <div class="result-info">
<i class="wk wk-success result-info__icon" /> <i class="wk wk-success result-info__icon" />
<p class="result-info__des">数据导入完成</p> <p class="result-info__des">数据导入完成</p>
<p v-if="resultData" class="result-info__detail">导入总数据<span class="result-info__detail--all">{{ resultData.totalSize }}</span>条,导入成功<span class="result-info__detail--suc">{{ resultData.totalSize - resultData.errSize }}</span>条,导入失败<span class="result-info__detail--err">{{ resultData.errSize }}</span></p> <p v-if="resultData" class="result-info__detail">导入总数据<span class="result-info__detail--all">{{ resultData.total }}</span>条,导入成功<span class="result-info__detail--suc">{{ resultData.total - resultData.error }}</span>条,导入失败<span class="result-info__detail--err">{{ resultData.error }}</span></p>
<el-button <el-button
v-if="resultData && resultData.errSize > 0" v-if="resultData && resultData.error > 0"
class="result-info__btn--err" class="result-info__btn--err"
type="text" type="text"
@click="downloadErrData">下载错误数据</el-button> @click="downloadErrData">下载错误数据</el-button>
@ -88,7 +88,10 @@ import {
workExcelImportAPI, workExcelImportAPI,
workDownloadErrorExcelAPI workDownloadErrorExcelAPI
} from '@/api/pm/project' } from '@/api/pm/project'
import {
crmQueryImportNumAPI,
crmQueryImportInfoAPI
} from '@/api/crm/common'
import { downloadExcelWithResData, verifyFileTypeWithFileName } from '@/utils/index' import { downloadExcelWithResData, verifyFileTypeWithFileName } from '@/utils/index'
@ -128,7 +131,16 @@ export default {
status: 'wait' status: 'wait'
} }
], ],
resultData: null resultData: null,
processData: {
count: 0,
status: ''
},
messageId: null,
intervalTimer: null,
historyPopoverShow: false
} }
}, },
computed: { computed: {
@ -172,16 +184,18 @@ export default {
this.stepList[1].status = 'process' this.stepList[1].status = 'process'
this.stepsActive = 2 this.stepsActive = 2
this.firstUpdateFile(res => { this.firstUpdateFile(res => {
this.stepList[1].status = 'finish' this.messageId = res.data
this.stepsActive = 3 // this.stepList[1].status = 'finish'
if (res.data) { // this.stepsActive = 3
this.resultData = res.data // if (res.data) {
if (this.resultData.errSize > 0) { // this.resultData = res.data
this.stepList[2].status = 'error' // if (this.resultData.errSize > 0) {
} else { // this.stepList[2].status = 'error'
this.stepList[2].status = 'finish' // } else {
} // this.stepList[2].status = 'finish'
} // }
// }
this.loopSecondQueryNum()
}) })
} else { } else {
if (!this.file.name) { if (!this.file.name) {
@ -207,8 +221,8 @@ export default {
if (result) { if (result) {
result(res) result(res)
} }
this.loading = false // this.loading = false
this.$emit('success') // this.$emit('success')
}) })
.catch(() => { .catch(() => {
if (result) { if (result) {
@ -217,13 +231,64 @@ export default {
this.loading = false this.loading = false
}) })
}, },
/**
* 第二步查询数量
*/
loopSecondQueryNum() {
this.secondQueryNum()
this.intervalTimer = setInterval(() => {
if (this.processData.status == 'end') {
clearInterval(this.intervalTimer)
this.intervalTimer = null
this.thirdQueryResult()
} else {
this.secondQueryNum()
}
}, 2000)
},
secondQueryNum() {
crmQueryImportNumAPI({ messageId: this.messageId })
.then(res => {
if (res.data === '') {
this.processData.status = 'end'
} else {
this.processData.status = ''
this.processData.count = res.data
}
})
.catch(() => {
// this.processData.status = 'err'
})
},
/**
* 第三部 查询结果
*/
thirdQueryResult() {
crmQueryImportInfoAPI({ messageId: this.messageId })
.then(res => {
this.loading = false
this.stepList[1].status = 'finish'
this.stepsActive = 3
this.$emit('status', 'finish')
if (res) {
this.resultData = res.data
if (res.data.error > 0) {
this.stepList[2].status = 'error'
} else {
this.stepList[2].status = 'finish'
}
}
})
.catch(() => {})
},
/** /**
* 下载错误模板 * 下载错误模板
*/ */
downloadErrData() { downloadErrData() {
this.loading = true this.loading = true
workDownloadErrorExcelAPI({ token: this.resultData.token }) workDownloadErrorExcelAPI({ name: '导入错误数据', path: this.resultData.error_file_path })
.then(res => { .then(res => {
downloadExcelWithResData(res) downloadExcelWithResData(res)
this.loading = false this.loading = false

@ -162,7 +162,7 @@ export default {
tabShowType: 'board', tabShowType: 'board',
search: '', search: '',
filterObj: {}, filterObj: {},
filterValue: 1, filterValue: 4,
filterList: [{ filterList: [{
label: '按最早创建', label: '按最早创建',
value: 1 value: 1
@ -172,6 +172,9 @@ export default {
}, { }, {
label: '按最近更新', label: '按最近更新',
value: 3 value: 3
}, {
label: '按手动拖动',
value: 4
}], }],
isCreate: false, isCreate: false,
list: [], list: [],

@ -37,8 +37,8 @@
@submite="setSubmite" @submite="setSubmite"
@handle="projectSettingsHandle" @handle="projectSettingsHandle"
@click="projectHandleShow = false"/> @click="projectHandleShow = false"/>
<!-- <p v-if="permission.excelImport" @click="taskImportShow = true"></p> <p v-if="permission.excelImport" @click="taskImportShow = true"></p>
<p v-if="permission.excelExport" @click="exportClick"></p> --> <p v-if="permission.excelExport" @click="exportClick"></p>
<p <p
v-if="permission.archiveTask && permission.setWork" v-if="permission.archiveTask && permission.setWork"
@click="archiveProject">归档项目</p> @click="archiveProject">归档项目</p>
@ -447,7 +447,11 @@ export default {
this.projectHandleShow = false this.projectHandleShow = false
this.loading = true this.loading = true
workTaskExportAPI({ workTaskExportAPI({
work_id: this.work_id work_id: this.work_id,
search: this.taskConditionObj.search,
owner_user_id: this.taskConditionObj.userIds,
time_type: this.taskConditionObj.timeId,
label_id: this.taskConditionObj.tagIds
}) })
.then(res => { .then(res => {
downloadExcelWithResData(res) downloadExcelWithResData(res)

@ -8,7 +8,7 @@
ft-top="0" ft-top="0"
@search="searchClick"> @search="searchClick">
<span slot="label">我的任务</span> <span slot="label">我的任务</span>
<!-- <el-popover <el-popover
slot="label" slot="label"
v-model="taskHandleShow" v-model="taskHandleShow"
placement="bottom-start" placement="bottom-start"
@ -19,7 +19,7 @@
<i <i
slot="reference" slot="reference"
class="wk wk-manage set-img" /> class="wk wk-manage set-img" />
</el-popover> --> </el-popover>
<template slot="ft"> <template slot="ft">
<el-dropdown <el-dropdown
trigger="click" trigger="click"
@ -523,6 +523,7 @@ export default {
this.taskHandleShow = false this.taskHandleShow = false
this.loading = true this.loading = true
taskWorkbenchExportAPI({ taskWorkbenchExportAPI({
is_top: 5,
search: this.search, search: this.search,
sort_field: this.filterValue.sort, sort_field: this.filterValue.sort,
completed_task: this.filterValue.completed_task, completed_task: this.filterValue.completed_task,

@ -252,7 +252,7 @@ export default {
filterForm: { filterForm: {
category_id: 0, category_id: 0,
send_user_id: '' create_user_id: ''
}, },
userSelects: [], userSelects: [],
@ -364,7 +364,7 @@ export default {
} }
this.filterForm = { this.filterForm = {
category_id: 0, category_id: 0,
send_user_id: '' create_user_id: ''
} }
this.userSelects = [] this.userSelects = []
@ -518,8 +518,8 @@ export default {
}[this.logType] }[this.logType]
} }
if (this.logType == 'send' && params.hasOwnProperty('send_user_id')) { if (this.logType == 'send' && params.hasOwnProperty('create_user_id')) {
delete params.send_user_id delete params.create_user_id
} }
if (params.hasOwnProperty('category_id') && params.category_id === 0) { if (params.hasOwnProperty('category_id') && params.category_id === 0) {
@ -649,11 +649,11 @@ export default {
userChange(data) { userChange(data) {
this.userSelects = data.value || [] this.userSelects = data.value || []
if (data.value.length > 0) { if (data.value.length > 0) {
this.filterForm.send_user_id = data.value.map(item => { this.filterForm.create_user_id = data.value.map(item => {
return item.id return item.id
}) })
} else { } else {
this.filterForm.send_user_id = '' this.filterForm.create_user_id = ''
} }
}, },
@ -663,9 +663,9 @@ export default {
checkUserHistory(user) { checkUserHistory(user) {
this.userSelects = user ? [user] : [] this.userSelects = user ? [user] : []
if (user) { if (user) {
this.filterForm.send_user_id = user.id this.filterForm.create_user_id = user.id
} else { } else {
this.filterForm.send_user_id = '' this.filterForm.create_user_id = ''
} }
}, },

@ -54,6 +54,46 @@
} }
} }
window.onload = function() {
var n = document.createElement('div')
n.style.position = 'fixed'
n.style.bottom = '2px'
n.style.left = '0'
n.style.right = '0'
n.style.textAlign = 'center'
n.style.fontSize = '12px'
n.style.color = '#999'
n.style.zIndex = 1
var i = document.createElement('img')
i.style.width = '14px'
i.style.verticalAlign = 'bottom'
i.style.marginRight = '5px'
var img = new Image()
img.onload = function() {
var canvas = document.createElement('canvas')
var ctx = canvas.getContext('2d')
canvas.height = img.naturalHeight
canvas.width = img.naturalWidth
ctx.drawImage(img, 0, 0)
var uri = canvas.toDataURL('image/png')
i.src = uri
n.appendChild(i)
var ti = ''
var tis = [80, 111, 119, 101, 114, 32, 98, 121, 32]
tis.forEach(c => {
ti = ti + String.fromCharCode(c)
})
var t = document.createTextNode(ti + decodeURI('%E6%82%9F%E7%A9%BA'))
n.appendChild(t)
document.body.appendChild(n)
}
img.src = 'static/img/logo.png'
}
if (Sys.appName === 'IE' && Number(Sys.version) < 10) { if (Sys.appName === 'IE' && Number(Sys.version) < 10) {
window.location.href = './static/index.html' window.location.href = './static/index.html'
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Loading…
Cancel
Save