wechat-config.tsx 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. import {NButton, NDataTable, NFormItem, NInput, NModal, NPageHeader, NSelect, NSpace, useDialog, useMessage} from 'naive-ui'
  2. import {defineComponent, onMounted, reactive, ref} from 'vue'
  3. import {useRoute, useRouter} from 'vue-router'
  4. import {useTabsViewStore} from '@/store/modules/tabsView'
  5. import SaveForm from "@components/save-form";
  6. import Pagination from "@components/pagination";
  7. import {appSendConfigPage, smsConfigDetail} from "@views/music-library/api";
  8. import PushConfigEdit from "@views/message/message-config/sms/modal/push-config-edit";
  9. export default defineComponent({
  10. name: 'wechat-config',
  11. setup(props, ctx) {
  12. const route = useRoute()
  13. const router = useRouter()
  14. const dialog = useDialog()
  15. const message = useMessage()
  16. const state = reactive({
  17. loading: false,
  18. appId: null as any,
  19. pagination: {
  20. page: 1,
  21. rows: 10,
  22. pageTotal: 0
  23. },
  24. searchForm: {
  25. keyword: null, //关键字
  26. status: null // 状态
  27. },
  28. name: null as any,
  29. smsConfigId: null as any,
  30. dataList: [],
  31. showEdit: false,
  32. editMode: 'add',
  33. editRowData: {} as any,
  34. })
  35. const tabsViewStore = useTabsViewStore()
  36. const gotoBack = () => {
  37. tabsViewStore.closeCurrentTab(route)
  38. router.push({
  39. path: '/message/messageConfig'
  40. })
  41. }
  42. onMounted(async () => {
  43. state.smsConfigId = route.query.id;
  44. console.log('1111111111', state.smsConfigId)
  45. if (state.smsConfigId) {
  46. const {data} = await smsConfigDetail(state.smsConfigId)
  47. if (data) {
  48. state.name = data.name
  49. }
  50. getList()
  51. }
  52. })
  53. const saveForm = ref()
  54. const onSearch = () => {
  55. saveForm.value?.submit()
  56. }
  57. const onBtnReset = () => {
  58. saveForm.value?.reset()
  59. }
  60. const onSubmit = () => {
  61. state.pagination.page = 1
  62. getList()
  63. }
  64. const getList = async () => {
  65. if (!state.smsConfigId) {
  66. return
  67. }
  68. try {
  69. state.loading = true
  70. const {data} = await appSendConfigPage({
  71. ...state.pagination,
  72. ...state.searchForm,
  73. })
  74. state.pagination.pageTotal = Number(data.total)
  75. state.dataList = data.rows || []
  76. } catch {
  77. }
  78. state.loading = false
  79. }
  80. const columns = (): any => {
  81. return [
  82. {
  83. title: '编号',
  84. key: 'id'
  85. },
  86. {
  87. title: '平台名称',
  88. key: 'name'
  89. },
  90. {
  91. title: '应用',
  92. key: 'name'
  93. },
  94. {
  95. title: '客户端',
  96. key: 'accessUrl'
  97. },
  98. {
  99. title: '接入地址',
  100. key: 'accessUrl'
  101. },
  102. {
  103. title: '离线保留时长',
  104. key: 'accessUrl'
  105. },
  106. {
  107. title: '推送环境',
  108. key: 'accessUrl'
  109. },
  110. {
  111. title: '接入key',
  112. key: 'accessUrl'
  113. },
  114. {
  115. title: '接入秘匙',
  116. key: 'accessUrl'
  117. },
  118. {
  119. title: 'Android拓展参数',
  120. key: 'accessUrl'
  121. },
  122. {
  123. title: '状态',
  124. key: 'status'
  125. },
  126. // {
  127. // title: '操作',
  128. // key: 'operation',
  129. // fixed: 'right',
  130. // render(row: any) {
  131. // return (
  132. // <NSpace>
  133. // <NButton
  134. // type="primary"
  135. // size="small"
  136. // text
  137. // onClick={() => {
  138. //
  139. //
  140. // }}
  141. // >
  142. // {row.status ? '停用' : '启用'}
  143. // </NButton>
  144. // <NButton
  145. // type="primary"
  146. // size="small"
  147. // text
  148. // onClick={() => {
  149. // state.showEdit = true
  150. // state.editRowData = deepClone(row)
  151. // state.editMode = 'edit'
  152. // }}
  153. // >
  154. // 修改
  155. // </NButton>
  156. // <NButton
  157. // type="primary"
  158. // size="small"
  159. // text
  160. // disabled={!!row.status}
  161. // onClick={() => {
  162. //
  163. // }}
  164. // >
  165. // 删除
  166. // </NButton>
  167. // </NSpace>
  168. // )
  169. // }
  170. // }
  171. ]
  172. }
  173. return () => (
  174. <div class="system-menu-container">
  175. <NPageHeader
  176. on-back={() => gotoBack()}
  177. title={state.name}
  178. ></NPageHeader>
  179. <div class={['section-container']}>
  180. <div class="system-menu-container">
  181. <SaveForm
  182. ref={saveForm}
  183. model={state.searchForm}
  184. onSubmit={onSubmit}
  185. saveKey="push-config-app"
  186. onSetModel={(val: any) => (state.searchForm = val)}
  187. >
  188. <NFormItem label="关键字" path="keyword">
  189. <NInput
  190. placeholder="应用编号/名称"
  191. v-model:value={state.searchForm.keyword}
  192. clearable
  193. />
  194. </NFormItem>
  195. <NFormItem label="状态" path="status">
  196. <NSelect
  197. v-model:value={state.searchForm.status}
  198. clearable
  199. options={
  200. [
  201. {
  202. label: '启用',
  203. value: 1
  204. },
  205. {
  206. label: '停用',
  207. value: 0
  208. }
  209. ] as any
  210. }
  211. placeholder="全部状态"
  212. />
  213. </NFormItem>
  214. <NFormItem>
  215. <NSpace>
  216. <NButton type="primary" onClick={onSearch}>
  217. 搜索
  218. </NButton>
  219. <NButton type="default" onClick={onBtnReset}>
  220. 重置
  221. </NButton>
  222. </NSpace>
  223. </NFormItem>
  224. </SaveForm>
  225. <NSpace style={{paddingBottom: '12px'}}>
  226. <NButton
  227. type="primary"
  228. onClick={() => {
  229. state.showEdit = true
  230. state.editMode = 'add'
  231. }}
  232. >
  233. 新增应用
  234. </NButton>
  235. </NSpace>
  236. <div class={['section-container']}>
  237. <NDataTable
  238. loading={state.loading}
  239. columns={columns()}
  240. data={state.dataList}
  241. rowKey={(row: any) => row.id}
  242. scrollX={'1400'}
  243. ></NDataTable>
  244. <Pagination
  245. v-model:page={state.pagination.page}
  246. v-model:pageSize={state.pagination.rows}
  247. v-model:pageTotal={state.pagination.pageTotal}
  248. onList={getList}
  249. sync
  250. saveKey="push-config-app"
  251. ></Pagination>
  252. </div>
  253. <NModal
  254. blockScroll={true}
  255. v-model:show={state.showEdit}
  256. preset="dialog"
  257. showIcon={false}
  258. title={(state.editMode == 'add' ? '新增' : '编辑') + '短信平台'}
  259. style={{width: 'auto'}}
  260. >
  261. <PushConfigEdit
  262. editMode={state.editMode}
  263. rowData={state.editRowData}
  264. style={{width: '450'}}
  265. onClose={() => (state.showEdit = false)}
  266. onGetList={() => {
  267. state.pagination.page = 1
  268. getList()
  269. }}
  270. />
  271. </NModal>
  272. </div>
  273. </div>
  274. </div>
  275. )
  276. }
  277. })