sms.vue 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <div class="mod-message__sms">
  3. <el-form :inline="true" :model="state.dataForm" @keyup.enter="state.getDataList()">
  4. <el-form-item>
  5. <el-select v-model="state.dataForm.platform" :placeholder="$t('sms.platform')" clearable>
  6. <el-option :label="$t('sms.platform1')" :value="1"></el-option>
  7. <el-option :label="$t('sms.platform2')" :value="2"></el-option>
  8. <el-option :label="$t('sms.platform3')" :value="3"></el-option>
  9. </el-select>
  10. </el-form-item>
  11. <el-form-item>
  12. <el-button @click="state.getDataList()">{{ $t("query") }}</el-button>
  13. </el-form-item>
  14. <el-form-item>
  15. <el-button type="primary" @click="addOrUpdateHandle()">{{ $t("add") }}</el-button>
  16. </el-form-item>
  17. <el-form-item>
  18. <el-button type="danger" @click="state.deleteHandle()">{{ $t("deleteBatch") }}</el-button>
  19. </el-form-item>
  20. </el-form>
  21. <el-table v-loading="state.dataListLoading" :data="state.dataList" border @selection-change="state.dataListSelectionChangeHandle" @sort-change="state.dataListSortChangeHandle" style="width: 100%">
  22. <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
  23. <el-table-column prop="smsCode" :label="$t('sms.smsCode')" header-align="center" align="center"></el-table-column>
  24. <el-table-column prop="platform" :label="$t('sms.platform')" header-align="center" align="center">
  25. <template v-slot="scope">
  26. <el-tag v-if="scope.row.platform === 1" size="small">{{ $t("sms.platform1") }}</el-tag>
  27. <el-tag v-else-if="scope.row.platform === 2" size="small">{{ $t("sms.platform2") }}</el-tag>
  28. <el-tag v-else-if="scope.row.platform === 3" size="small">{{ $t("sms.platform3") }}</el-tag>
  29. </template>
  30. </el-table-column>
  31. <el-table-column prop="remark" label="备注" header-align="center" align="center"></el-table-column>
  32. <el-table-column prop="createDate" :label="$t('sms.createDate')" sortable="custom" header-align="center" align="center" width="180"></el-table-column>
  33. <el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="180">
  34. <template v-slot="scope">
  35. <el-button type="primary" link @click="sendHandle(scope.row)">{{ $t("sms.send") }}</el-button>
  36. <el-button type="primary" link @click="addOrUpdateHandle(scope.row.id)">{{ $t("update") }}</el-button>
  37. <el-button type="primary" link @click="state.deleteHandle(scope.row.id)">{{ $t("delete") }}</el-button>
  38. </template>
  39. </el-table-column>
  40. </el-table>
  41. <el-pagination :current-page="state.page" :page-sizes="[10, 20, 50, 100]" :page-size="state.limit" :total="state.total" layout="total, sizes, prev, pager, next, jumper" @size-change="state.pageSizeChangeHandle" @current-change="state.pageCurrentChangeHandle"> </el-pagination>
  42. <!-- 弹窗, 新增 / 修改 -->
  43. <add-or-update ref="addOrUpdateRef" @refreshDataList="state.getDataList"></add-or-update>
  44. <!-- 弹窗, 发送短信 -->
  45. <send ref="sendRef" @refreshDataList="state.getDataList"></send>
  46. </div>
  47. </template>
  48. <script lang="ts" setup>
  49. import useView from "@/hooks/useView";
  50. import { reactive, ref, toRefs } from "vue";
  51. import AddOrUpdate from "./sms-add-or-update.vue";
  52. import Send from "./sms-send.vue";
  53. import { IObject } from "@/types/interface";
  54. const sendRef = ref();
  55. const view = reactive({
  56. getDataListURL: "/sys/sms/page",
  57. getDataListIsPage: true,
  58. deleteURL: "/sys/sms",
  59. deleteIsBatch: true,
  60. dataForm: {
  61. mobile: "",
  62. status: null,
  63. platform: ""
  64. }
  65. });
  66. const state = reactive({ ...useView(view), ...toRefs(view) });
  67. // 发送短信
  68. const sendHandle = (row: IObject) => {
  69. sendRef.value.dataForm.smsCode = row.smsCode;
  70. sendRef.value.init();
  71. };
  72. const addOrUpdateRef = ref();
  73. const addOrUpdateHandle = (id?: number) => {
  74. addOrUpdateRef.value.init(id);
  75. };
  76. </script>