猎羽广告

index.vue 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <template>
  2. <Dialog
  3. :dialogVisible="dialogShow"
  4. @confirm="confirmEvent"
  5. @close="dialogShow = false"
  6. width="1000px"
  7. height="680px"
  8. dialog-title="媒体定向包">
  9. <template v-slot:content>
  10. <div class="dialogBox" v-loading="loading">
  11. <RadioGroup :radioList="pageInfo.wayList" :haveNotes="true" @returnEvent="val=>wayChange(val)" title="使用方式" :echoValue="propInfo.type"></RadioGroup>
  12. <keep-alive>
  13. <component :is='acIdx' ref="comRef" :echoValue="propInfo&&propInfo.chooseList"></component>
  14. </keep-alive>
  15. </div>
  16. </template>
  17. </Dialog>
  18. </template>
  19. <script setup lang="ts">
  20. import {getCurrentInstance, markRaw, nextTick, onMounted, reactive, ref, shallowRef} from "vue";
  21. import {reactiveTableAndAny} from "@/api/ApiModel";
  22. import Dialog from '@/components/capsulationMoudle/_dialog.vue'
  23. import UseDirect from '@/components/businessMoudle/batchGdt/configArea/directPacket/useDirect.vue'
  24. import useDirectCon from '@/components/businessMoudle/batchGdt/configArea/directPacket/useDirectCon.vue'
  25. import RadioGroup from '@/components/businessMoudle/batchGdt/configArea/radioGroup.vue'
  26. import {ElMessage} from "element-plus";
  27. import {Api} from "@/api/api";
  28. import {deepCopy} from "@/common/common";
  29. import _ from "lodash";
  30. const { proxy } = getCurrentInstance() as any;
  31. // 全局方法定义
  32. const NumberHandle = proxy.$NumberHandle
  33. const emit = defineEmits<{
  34. (event: "getShowValue", val: any): void;
  35. }>();
  36. const props = withDefaults(defineProps<{
  37. propInfo?: any,
  38. }>(), {
  39. propInfo: {},
  40. })
  41. //页面数据
  42. const acIdx = shallowRef(UseDirect)
  43. const pageInfo = reactive<reactiveTableAndAny>({
  44. wayList:[
  45. {name:'使用定向包',value:'1',notes:'分账户选择定向包, 当定向包内容被修改后全部广告会批量生效,提高投放效率'},
  46. {name:'使用定向包内容',value:'2',notes: '多个账户统一使用选定的定向包内容搭建广告,定向包将无法与广告关联'},
  47. ],
  48. exposeObj:{},
  49. })
  50. const wayChange = (val:any) => {
  51. pageInfo.exposeObj.type = val.value
  52. if(val.value=='1'){
  53. acIdx.value = markRaw(UseDirect)
  54. }else if(val.value=='2'){
  55. acIdx.value = markRaw(useDirectCon)
  56. }
  57. }
  58. const loading = ref<boolean>(false)
  59. const comRef = ref<{ExposeChooseList:()=>void,echoInit:()=>void,init:()=>void}>()
  60. //
  61. const confirmEvent = async () => {
  62. pageInfo.exposeObj.chooseList = comRef.value!.ExposeChooseList()
  63. emit('getShowValue',pageInfo.exposeObj)
  64. dialogShow.value = false
  65. // if(memberRef.value!.value==''){
  66. // ElMessage.error('名称为必填项')
  67. // return
  68. // }
  69. // loading.value = true
  70. // const paramsModel = reactive<{username:string}>({
  71. // username:memberRef.value!.value,
  72. // })
  73. // let res:any = await proxy.$http.post(Api.creater_add,paramsModel)
  74. // loading.value = false
  75. // if(res&&res.errNo=='0'){
  76. // let resNew:any = res.rst
  77. // dialogShow.value = false
  78. // emit('init')
  79. // }else{
  80. // ElMessage.error(res.errMsg)
  81. // }
  82. }
  83. // 切换显隐
  84. const dialogShow = ref<boolean>(false)
  85. const switchShow = (val:boolean)=>{
  86. dialogShow.value = val
  87. if(val){
  88. nextTick(()=>{
  89. if(props.propInfo.chooseList&&props.propInfo.chooseList.length>0){
  90. comRef.value!.echoInit()
  91. }else{
  92. comRef.value!.init()
  93. }
  94. })
  95. }
  96. }
  97. // 父组件共享值
  98. defineExpose({
  99. switchShow,
  100. });
  101. onMounted(()=>{
  102. nextTick(()=>{
  103. })
  104. })
  105. </script>
  106. <style lang="scss" scoped>
  107. @import "src/assets/style/batchGdt.scss";
  108. </style>