email-record.tsx 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. import {defineComponent, onMounted, reactive, ref} from 'vue'
  2. import SaveForm from '@components/save-form'
  3. import {DataTableRowKey, NButton, NDataTable, NDatePicker, NDescriptions, NDescriptionsItem, NFormItem, NInput, NSelect, NSpace, NTag, useDialog, useMessage} from 'naive-ui'
  4. import Pagination from '@components/pagination'
  5. import {getMapValueByKey, getSelectDataFromObj} from '@/utils/objectUtil'
  6. import {appKey, clientType, messageSenderFunctionModule, messageSenderMode, musicSheetSourceType, musicSheetType} from '@/utils/constant'
  7. import {musicSheetApplicationExtendCategoryList, musicSheetApplicationExtendStatus, sysMessageConfigPage, sysMessagePage} from '@views/music-library/api'
  8. import {subjectPage, sysApplicationPage} from '@views/system-manage/api'
  9. import {filterTimes, getTimes} from "@/utils/dateUtil";
  10. import TheTooltip from "@components/TheTooltip";
  11. import {getOwnerName} from "@views/music-library/musicUtil";
  12. export default defineComponent({
  13. name: 'email-record',
  14. props: {
  15. appKey: {
  16. type: String,
  17. required: true
  18. }
  19. },
  20. setup(props) {
  21. const dialog = useDialog()
  22. const message = useMessage()
  23. const state = reactive({
  24. loading: false,
  25. appId: null as any,
  26. pagination: {
  27. page: 1,
  28. rows: 10,
  29. pageTotal: 0
  30. },
  31. searchForm: {
  32. description: null, //消息名称
  33. clientId: null, //客户端
  34. model: null, // 功能模块
  35. status: null // 状态
  36. },
  37. dataList: []
  38. })
  39. onMounted(async () => {
  40. getList()
  41. })
  42. const saveForm = ref()
  43. const onSearch = () => {
  44. saveForm.value?.submit()
  45. }
  46. const onBtnReset = () => {
  47. saveForm.value?.reset()
  48. }
  49. const onSubmit = () => {
  50. state.pagination.page = 1
  51. getList()
  52. }
  53. const checkedRowKeysRef = ref<DataTableRowKey[]>([])
  54. const handleCheck = (rowKeys: DataTableRowKey[]) => {
  55. checkedRowKeysRef.value = rowKeys
  56. }
  57. const getList = async () => {
  58. try {
  59. state.loading = true
  60. const {data} = await sysMessagePage({
  61. ...state.pagination,
  62. ...state.searchForm,
  63. appKey: props.appKey,
  64. sendMode:'EMAIL',
  65. })
  66. state.pagination.pageTotal = Number(data.total)
  67. state.dataList = data.rows || []
  68. } catch {
  69. }
  70. state.loading = false
  71. }
  72. const columns = (): any => {
  73. return [
  74. {
  75. title: '发送时间',
  76. key: 'sendTime'
  77. },
  78. {
  79. title: '发送平台',
  80. key: 'sendTime'
  81. },
  82. {
  83. title: '收件人地址',
  84. key: 'username'
  85. },
  86. {
  87. title: '标题',
  88. key: 'username'
  89. },
  90. {
  91. title: '正文',
  92. key: 'title'
  93. },
  94. {
  95. title: '附件',
  96. key: 'title'
  97. },
  98. {
  99. title: '触发条件',
  100. key: 'triggerCondition'
  101. },
  102. ]
  103. }
  104. return () => {
  105. return (
  106. <div class="system-menu-container">
  107. <SaveForm
  108. ref={saveForm}
  109. model={state.searchForm}
  110. onSubmit={onSubmit}
  111. saveKey="email-record"
  112. onSetModel={(val: any) => (state.searchForm = val)}
  113. >
  114. <NFormItem label="消息名称" path="description">
  115. <NInput
  116. placeholder="请输入消息名称"
  117. v-model:value={state.searchForm.description}
  118. clearable
  119. />
  120. </NFormItem>
  121. <NFormItem label="客户端" path="clientId">
  122. <NSelect
  123. placeholder="全部客户端"
  124. v-model:value={state.searchForm.clientId}
  125. options={getSelectDataFromObj(clientType)}
  126. clearable
  127. />
  128. </NFormItem>
  129. <NFormItem label="功能模块" path="model">
  130. <NSelect
  131. filterable
  132. placeholder="全部功能模块"
  133. v-model:value={state.searchForm.model}
  134. options={getSelectDataFromObj(messageSenderFunctionModule)}
  135. clearable
  136. ></NSelect>
  137. </NFormItem>
  138. <NFormItem label="状态" path="status">
  139. <NSelect
  140. v-model:value={state.searchForm.status}
  141. placeholder="请选择状态"
  142. options={
  143. [
  144. {
  145. label: '启用',
  146. value: true
  147. },
  148. {
  149. label: '停用',
  150. value: false
  151. }
  152. ] as any
  153. }
  154. clearable
  155. />
  156. </NFormItem>
  157. <NFormItem>
  158. <NSpace>
  159. <NButton type="primary" onClick={onSearch}>
  160. 搜索
  161. </NButton>
  162. <NButton type="default" onClick={onBtnReset}>
  163. 重置
  164. </NButton>
  165. </NSpace>
  166. </NFormItem>
  167. </SaveForm>
  168. <div class={['section-container']}>
  169. <NDataTable
  170. loading={state.loading}
  171. columns={columns()}
  172. data={state.dataList}
  173. rowKey={(row: any) => row.id}
  174. scrollX={'1400'}
  175. ></NDataTable>
  176. <Pagination
  177. v-model:page={state.pagination.page}
  178. v-model:pageSize={state.pagination.rows}
  179. v-model:pageTotal={state.pagination.pageTotal}
  180. onList={getList}
  181. sync
  182. saveKey="email-record"
  183. ></Pagination>
  184. </div>
  185. </div>
  186. )
  187. }
  188. }
  189. })