cutBook.vue 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <el-button size="mini" type="text" @click="handleCutBook">
  3. <span><i class="el-icon-sort"></i>切书切平台</span>
  4. <el-dialog :title="title" :visible.sync="open" width="330px" append-to-body @close="addClose">
  5. <el-form :model="queryPlatform" :rules="rules" ref="platFormCutBook" label-position="right" label-width="80px" :inline="true">
  6. <el-form-item label="开始时间" prop="beginTime">
  7. <el-date-picker v-model="queryPlatform.beginTime" size="small" style="width: 200px" format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date" placeholder="选择开始时间" />
  8. </el-form-item>
  9. <el-form-item label="期数" prop="periodId">
  10. <el-select v-model="queryPlatform.periodId" size="small" placeholder="选择期数" filterable clearable>
  11. <el-option v-for="item in periodList" :key="item.id" :label="item.period" :value="item.id" />
  12. </el-select>
  13. </el-form-item>
  14. <el-form-item label="书城" prop="platformId">
  15. <el-select v-model="queryPlatform.platformId" @change="selectZh" size="small" placeholder="选择书城" filterable clearable>
  16. <el-option v-for="item in bookCity" :key="item.id" :label="item.platformName" :value="item.id" />
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item label="账号" prop="platformAccountId">
  20. <el-select v-model="queryPlatform.platformAccountId" :disabled="!queryPlatform.platformId" size="small" placeholder="选择账号" filterable clearable>
  21. <el-option v-for="item in accList" :key="item.id" :label="item.account" :value="item.id" />
  22. </el-select>
  23. </el-form-item>
  24. <el-form-item label="书" prop="bookId">
  25. <el-select v-model="queryPlatform.bookId" size="small" placeholder="选择书" filterable clearable>
  26. <el-option v-for="item in bookList" :key="item.id" :label="item.bookName" :value="item.id" />
  27. </el-select>
  28. </el-form-item>
  29. <el-form-item label="项目组" prop="businessGroupId">
  30. <el-select v-model="queryPlatform.businessGroupId" size="small" placeholder="选择项目组" filterable clearable>
  31. <el-option v-for="item in teamsList" :key="item.id" :label="item.businessGroupName" :value="item.id" />
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item label="投放状态" prop="putStatus">
  35. <el-select v-model="queryPlatform.putStatus" size="small" placeholder="选择投放状态" filterable clearable>
  36. <el-option label="待投放" value="wait" />
  37. <el-option label="投放中" value="ing" />
  38. <el-option label="停投" value="stop" />
  39. <el-option label="账号已注销" value="destroy" />
  40. </el-select>
  41. </el-form-item>
  42. <el-form-item label="投放渠道" prop="putChannel">
  43. <el-select v-model="queryPlatform.putChannel" size="small" placeholder="选择投放渠道" filterable>
  44. <el-option label="MP" value="MP" />
  45. <el-option label="GDT" value="GDT" />
  46. <el-option label="头条" value="头条" />
  47. <el-option label="企微" value="企微" />
  48. <el-option label="混投" value="混投" />
  49. </el-select>
  50. </el-form-item>
  51. <el-form-item label="充值模板" prop="rechargeTemplate">
  52. <el-input v-model="queryPlatform.rechargeTemplate" size="small" placeholder="输入充值模板" />
  53. </el-form-item>
  54. <el-form-item label="备注" prop="remark">
  55. <el-input v-model="queryPlatform.remark" type="textarea" size="small" placeholder="输入备注" />
  56. </el-form-item>
  57. </el-form>
  58. <span slot="footer" class="dialog-footer">
  59. <el-button @click="open = false">取 消</el-button>
  60. <el-button type="primary" @click="submit('platFormCutBook')">确 定</el-button>
  61. </span>
  62. </el-dialog>
  63. </el-button>
  64. </template>
  65. <script>
  66. import { getBookAcc } from "@/api/system/books";
  67. import { cutBookPlatform, checkTime } from "@/api/accounts/account";
  68. import { formatDateYMD } from "@/utils"
  69. export default {
  70. data () {
  71. return {
  72. title: '',
  73. open: false,
  74. accList: [], // 账号
  75. queryPlatform: {},
  76. rules: {
  77. beginTime: [
  78. { required: true, message: '请选择开始时间', trigger: 'blur' }
  79. ],
  80. periodId: [
  81. { required: true, message: '请选择期数', trigger: 'blur' }
  82. ],
  83. platformId: [
  84. { required: true, message: '请选择书城', trigger: 'blur' }
  85. ],
  86. bookId: [
  87. { required: true, message: '请选择书', trigger: 'blur' }
  88. ],
  89. businessGroupId: [
  90. { required: true, message: '请选择项目组', trigger: 'blur' }
  91. ],
  92. putChannel: [
  93. { required: true, message: '请选择投放渠道', trigger: 'blur' }
  94. ]
  95. }
  96. }
  97. },
  98. props: {
  99. value: {
  100. type: Object,
  101. default: {},
  102. },
  103. periodList: { // 期数
  104. type: Array,
  105. default: [],
  106. },
  107. bookCity: { // 书城
  108. type: Array,
  109. default: []
  110. },
  111. bookList: { // 书
  112. type: Array,
  113. default: []
  114. },
  115. teamsList: { // 项目组
  116. type: Array,
  117. default: []
  118. }
  119. },
  120. methods: {
  121. handleCutBook() {
  122. this.title = this.value.resourceName + '切书切平台'
  123. const { periodId, platformId, platformAccountId, bookId, id, businessGroupId, putStatus, putChannel, rechargeTemplate } = this.value
  124. this.queryPlatform = { periodId, platformId, platformAccountId, bookId, resourceId: id, beginTime: formatDateYMD(new Date()), businessGroupId, putStatus, putChannel, rechargeTemplate }
  125. this.open = true
  126. if(platformId) {
  127. this.selectZh(platformId, platformAccountId)
  128. }
  129. },
  130. /** 关闭弹窗调用 */
  131. addClose() {
  132. this.open = false
  133. this.queryPlatform = {}
  134. },
  135. selectZh(e, id) {
  136. this.queryPlatform.platformAccountId = id || null
  137. getBookAcc(e).then(res => {
  138. this.accList = res.data
  139. })
  140. },
  141. submit(formName) {
  142. this.$refs[formName].validate(async (valid) => {
  143. if (valid) {
  144. let data = await checkTime({ beginTime: this.queryPlatform.beginTime, resourceId: this.queryPlatform.resourceId })
  145. if (data.data) {
  146. this.setCutBook(formName)
  147. } else {
  148. this.$confirm('会覆盖上一条,是否确定?').then(() => {
  149. this.setCutBook(formName)
  150. })
  151. }
  152. }
  153. })
  154. },
  155. setCutBook(formName) {
  156. cutBookPlatform({ ...this.queryPlatform }).then(response => {
  157. this.msgSuccess("切换成功");
  158. this.resetForm(formName);
  159. this.$emit('change')
  160. this.addClose()
  161. })
  162. }
  163. }
  164. }
  165. </script>
  166. <style>
  167. .cutBook{
  168. display: inline;
  169. line-height: normal;
  170. }
  171. .dropdownItem {
  172. cursor: pointer;
  173. color: #409EFF;
  174. font-size: 12px;
  175. padding: 4px 0;
  176. display: inline;
  177. line-height: normal;
  178. }
  179. </style>