|
@@ -1,6 +1,6 @@
|
|
|
-import { computed, ref, getCurrentInstance } from 'vue'
|
|
|
-import { useStore } from '@/store'
|
|
|
+import { computed, getCurrentInstance, ref } from 'vue'
|
|
|
import { useMonitorModel, useMonitorTipDialog } from './base'
|
|
|
+import { useStore } from '@/store'
|
|
|
import {
|
|
|
doOpenPushSettingPage,
|
|
|
doOpenWinnerListPage,
|
|
@@ -79,23 +79,48 @@ const DialogDataMap = {
|
|
|
}
|
|
|
]
|
|
|
},
|
|
|
- 'success-toast': '监控成功,您可前往“工作台-商机-企业情报监控”查看'
|
|
|
+ 'success-toast': '监控成功,您可前往“工作台-商机-企业情报监控”查看',
|
|
|
+ 'monitor-group': {
|
|
|
+ title: '选择分组',
|
|
|
+ width: '464px',
|
|
|
+ template: 'group',
|
|
|
+ footerActions: [
|
|
|
+ {
|
|
|
+ label: '确定',
|
|
|
+ class: 'confirm',
|
|
|
+ action: 'confirmChangeGroup'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '取消',
|
|
|
+ class: 'cancel',
|
|
|
+ action: ''
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-function useEntQuickMonitorModel({ type, id }, options) {
|
|
|
+function useEntQuickMonitorModel({ type, id, source }, options) {
|
|
|
const that = getCurrentInstance().proxy
|
|
|
const collectElement = ref(null)
|
|
|
- const { dialogConfig, doOpenDialog, doCloseDialog } =
|
|
|
- useMonitorTipDialog(DialogDataMap)
|
|
|
+ // 当前选择的分组名称id
|
|
|
+ const checkedGroupId = ref('')
|
|
|
+ const { dialogConfig, doOpenDialog, doCloseDialog }
|
|
|
+ = useMonitorTipDialog(DialogDataMap)
|
|
|
const IsFreeUser = computed(() => {
|
|
|
const store = useStore()
|
|
|
return store.getters['user/isFree']
|
|
|
})
|
|
|
+ const IsSVipUser = computed(() => {
|
|
|
+ const store = useStore()
|
|
|
+ return store.getters['user/isSuper']
|
|
|
+ })
|
|
|
const loading = ref(false)
|
|
|
- const { model, doChange, doFetch, getId } = useMonitorModel(
|
|
|
- { type, id },
|
|
|
- options
|
|
|
- )
|
|
|
+ const { model, doChange, doFetch, getId, doFetchGroup, groupList }
|
|
|
+ = useMonitorModel({ type, id }, options)
|
|
|
+ const { limit: limitSource, more: moreSource } = source
|
|
|
+
|
|
|
+ const eleLoading = ref(false)
|
|
|
+
|
|
|
const monitorPopoverConfig = computed(() => {
|
|
|
return {
|
|
|
showTip: !model.value.follow,
|
|
@@ -104,7 +129,8 @@ function useEntQuickMonitorModel({ type, id }, options) {
|
|
|
showCancel: model.value.follow,
|
|
|
alreadyNum: model.value.expands.used,
|
|
|
remainNum: model.value.expands.surplus,
|
|
|
- textType: type
|
|
|
+ textType: type,
|
|
|
+ followedGroup: model.value.followedGroup
|
|
|
}
|
|
|
})
|
|
|
|
|
@@ -118,6 +144,47 @@ function useEntQuickMonitorModel({ type, id }, options) {
|
|
|
that?.contactCustomer(that)
|
|
|
}
|
|
|
|
|
|
+ // 打开监控分组弹框(更改)
|
|
|
+ async function doOpenSelectGroup() {
|
|
|
+ // doOpenDialog('monitor-group')
|
|
|
+ await doFetchGroup({ type: 'get' }).then((res) => {
|
|
|
+ if (res.success) {
|
|
|
+ doOpenDialog('monitor-group', { groupList: res.data })
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (res.data?.limit_count) {
|
|
|
+ if (IsFreeUser.value || IsSVipUser.value) {
|
|
|
+ return doOpenCollectDialog(limitSource || 'pc_article_ent_limit')
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return doOpenDialog('max-monitor', {
|
|
|
+ count: res.data?.limit_count
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ // 选择分组名称change事件
|
|
|
+ function doChangeGroup(groupId) {
|
|
|
+ checkedGroupId.value = groupId
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新增、编辑分组
|
|
|
+ function doUpdateGroup(params) {
|
|
|
+ const { type, name, groupId } = params
|
|
|
+ const toastFn = () => {
|
|
|
+ if (type === 'add') {
|
|
|
+ that.$toast('新增分组成功')
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ that.$toast('分组名称修改成功')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ doFetchGroup({ type, name, groupId, callback: toastFn })
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 监控操作业务流程
|
|
|
* 0. 前置权益判断
|
|
@@ -136,44 +203,41 @@ function useEntQuickMonitorModel({ type, id }, options) {
|
|
|
* @return {Promise<void>}
|
|
|
*/
|
|
|
async function doAddFollow() {
|
|
|
- if (loading.value) return
|
|
|
- loading.value = true
|
|
|
// 业务流程
|
|
|
if (!model.value.follow) {
|
|
|
- await doChange()
|
|
|
+ eleLoading.value = true
|
|
|
+ // 先弹出选择分组弹框
|
|
|
+ await doFetchGroup({ type: 'get' })
|
|
|
.then((res) => {
|
|
|
if (res.success) {
|
|
|
- // 判断是否开启推送提醒
|
|
|
- if (!res.data?.msg_open) {
|
|
|
- doOpenDialog('success-monitor')
|
|
|
- } else {
|
|
|
- that.$toast(DialogDataMap['success-toast'])
|
|
|
- }
|
|
|
- } else {
|
|
|
- // 判断是否超出可监控项目个数
|
|
|
+ doOpenDialog('monitor-group', { groupList: res.data })
|
|
|
+ }
|
|
|
+ else {
|
|
|
if (res.data?.limit_count) {
|
|
|
- if (IsFreeUser.value) {
|
|
|
- return doOpenCollectDialog('pc_article_ent_limit')
|
|
|
- } else {
|
|
|
+ if (IsFreeUser.value || IsSVipUser.value) {
|
|
|
+ return doOpenCollectDialog(
|
|
|
+ limitSource || 'pc_article_ent_limit'
|
|
|
+ )
|
|
|
+ }
|
|
|
+ else {
|
|
|
return doOpenDialog('max-monitor', {
|
|
|
count: res.data?.limit_count
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
- that.$toast(res.msg)
|
|
|
}
|
|
|
})
|
|
|
.finally(() => {
|
|
|
- loading.value = false
|
|
|
+ eleLoading.value = false
|
|
|
})
|
|
|
}
|
|
|
- loading.value = false
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 统一处理 dialog, popover emit 事件
|
|
|
* @param {string} type
|
|
|
* // popover 事务
|
|
|
+ * - group 当前分组
|
|
|
* - more 查看监控动态
|
|
|
* - list 查看监控列表
|
|
|
* - apply 申请监控更多
|
|
@@ -209,9 +273,10 @@ function useEntQuickMonitorModel({ type, id }, options) {
|
|
|
doOpenDialog('cancel-monitor')
|
|
|
break
|
|
|
case 'apply':
|
|
|
- if (IsFreeUser.value) {
|
|
|
- doOpenCollectDialog('pc_article_ent_more')
|
|
|
- } else {
|
|
|
+ if (IsFreeUser.value || IsSVipUser.value) {
|
|
|
+ doOpenCollectDialog(moreSource || 'pc_article_ent_more')
|
|
|
+ }
|
|
|
+ else {
|
|
|
doOpenDialog('apply-monitor')
|
|
|
}
|
|
|
break
|
|
@@ -226,6 +291,46 @@ function useEntQuickMonitorModel({ type, id }, options) {
|
|
|
case 'list':
|
|
|
doOpenWinnerListPage()
|
|
|
break
|
|
|
+ case 'group':
|
|
|
+ doOpenSelectGroup()
|
|
|
+ break
|
|
|
+ case 'confirmChangeGroup':
|
|
|
+ if (loading.value)
|
|
|
+ return
|
|
|
+ loading.value = true
|
|
|
+ doChange(false, { groupId: checkedGroupId.value })
|
|
|
+ .then((res) => {
|
|
|
+ if (res.success) {
|
|
|
+ doCloseDialog()
|
|
|
+ // 关注成功,重新获取监控数据
|
|
|
+ doFetch()
|
|
|
+ // 判断是否开启推送提醒
|
|
|
+ if (!res.data?.msg_open) {
|
|
|
+ doOpenDialog('success-monitor')
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ that.$toast(DialogDataMap['success-toast'])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 判断是否超出可监控项目个数
|
|
|
+ if (res.data?.limit_count) {
|
|
|
+ if (IsFreeUser.value || IsSVipUser.value) {
|
|
|
+ return doOpenCollectDialog('pc_article_ent_limit')
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return doOpenDialog('max-monitor', {
|
|
|
+ count: res.data?.limit_count
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ that.$toast(res.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ loading.value = false
|
|
|
+ })
|
|
|
+ break
|
|
|
default:
|
|
|
break
|
|
|
}
|
|
@@ -243,7 +348,13 @@ function useEntQuickMonitorModel({ type, id }, options) {
|
|
|
// dialog 提示弹窗
|
|
|
dialogConfig,
|
|
|
// 留资
|
|
|
- collectElement
|
|
|
+ collectElement,
|
|
|
+ // 获取(新增、编辑、删除)分组
|
|
|
+ doFetchGroup,
|
|
|
+ groupList,
|
|
|
+ doChangeGroup,
|
|
|
+ doUpdateGroup,
|
|
|
+ eleLoading
|
|
|
}
|
|
|
}
|
|
|
|