index.vue 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. <template>
  2. <div class="__normal-page">
  3. <div class="__normal-content">
  4. <CzrContent
  5. v-model:head="state.query.tableHead"
  6. @handleReset="onReset"
  7. @handleSearch="onSearch"
  8. v-model:full="state.query.isFull"
  9. >
  10. <template #fieldOut>
  11. <CzrForm>
  12. <CzrFormColumn
  13. filterSpan="1"
  14. label="参数"
  15. v-model:param="state.query.form.p1"
  16. />
  17. <CzrFormColumn
  18. filterSpan="1"
  19. label="参数"
  20. v-model:param="state.query.form.p1"
  21. />
  22. <CzrFormColumn
  23. filterSpan="1"
  24. label="参数"
  25. v-model:param="state.query.form.p1"
  26. />
  27. <CzrFormColumn
  28. filterSpan="1"
  29. label="参数"
  30. v-model:param="state.query.form.p1"
  31. />
  32. <CzrFormColumn
  33. filterSpan="1"
  34. label="参数"
  35. v-model:param="state.query.form.p1"
  36. />
  37. <CzrFormColumn
  38. filterSpan="1"
  39. label="参数"
  40. v-model:param="state.query.form.p1"
  41. />
  42. <CzrFormColumn
  43. filterSpan="1"
  44. label="参数"
  45. v-model:param="state.query.form.p1"
  46. />
  47. <CzrFormColumn
  48. filterSpan="2"
  49. label="创建时间"
  50. v-model:param="state.query.form.createTime"
  51. link="datetime"
  52. type="datetimerange"
  53. />
  54. <template v-if="state.query.expandValue">
  55. <CzrFormColumn
  56. filterSpan="1"
  57. label="参数"
  58. v-model:param="state.query.form.p1"
  59. />
  60. <CzrFormColumn
  61. filterSpan="1"
  62. label="参数"
  63. v-model:param="state.query.form.p1"
  64. />
  65. <CzrFormColumn
  66. filterSpan="1"
  67. label="参数"
  68. v-model:param="state.query.form.p1"
  69. />
  70. <CzrFormColumn
  71. filterSpan="1"
  72. label="参数"
  73. v-model:param="state.query.form.p1"
  74. />
  75. <CzrFormColumn
  76. filterSpan="1"
  77. label="参数"
  78. v-model:param="state.query.form.p1"
  79. />
  80. <CzrFormColumn
  81. filterSpan="1"
  82. label="参数"
  83. v-model:param="state.query.form.p1"
  84. />
  85. <CzrFormColumn
  86. filterSpan="1"
  87. label="参数"
  88. v-model:param="state.query.form.p1"
  89. />
  90. <CzrFormColumn
  91. filterSpan="1"
  92. label="参数"
  93. v-model:param="state.query.form.p1"
  94. />
  95. <CzrFormColumn
  96. filterSpan="1"
  97. label="参数"
  98. v-model:param="state.query.form.p1"
  99. />
  100. <CzrFormColumn
  101. filterSpan="1"
  102. label="参数"
  103. v-model:param="state.query.form.p1"
  104. />
  105. </template>
  106. <CzrSearchButtons
  107. v-model:expandValue="state.query.expandValue"
  108. @handleSearch="onSearch"
  109. @handleReset="onReset"
  110. />
  111. </CzrForm>
  112. </template>
  113. <template #buttons>
  114. <CzrButton type="add" @click="onAdd()" />
  115. <CzrButton type="export" @click="onExport" />
  116. <CzrButton type="del" @click="onDel()" />
  117. </template>
  118. <template #table>
  119. <CzrTable
  120. v-loading="state.query.loading"
  121. ref="ref_czrTable"
  122. :data="state.query.result.data"
  123. :head="state.query.tableHead"
  124. :total="state.query.result.total"
  125. :page="state.query.page.pageNum"
  126. :pageSize="state.query.page.pageSize"
  127. @handlePage="onPage"
  128. @handleSort="onSort"
  129. v-model:selected="state.query.selected"
  130. v-model:full="state.query.isFull"
  131. >
  132. <template #importAndExportType-column-value="{ scope }"> </template>
  133. <template #caozuo-column-value="{ scope }">
  134. <div class="__czr-table-operations">
  135. <CzrButton
  136. type="table"
  137. title="修改"
  138. @click="onEdit(scope.row)"
  139. />
  140. <CzrButton type="table-del" @click="onDel(scope.row)" />
  141. </div>
  142. </template>
  143. </CzrTable>
  144. </template>
  145. </CzrContent>
  146. </div>
  147. <detailCom
  148. v-model:show="state.detail.show"
  149. :transfer="state.detail.transfer"
  150. @refresh="onSearch"
  151. />
  152. </div>
  153. </template>
  154. <script setup lang="ts">
  155. import { computed, getCurrentInstance, onMounted, reactive, watch } from 'vue'
  156. import { ElMessage, ElMessageBox } from 'element-plus'
  157. import detailCom from './detail.vue'
  158. const { proxy } = getCurrentInstance()
  159. const state: any = reactive({
  160. query: {
  161. loading: false,
  162. expandValue: false,
  163. page: {
  164. pageNum: 1,
  165. pageSize: 10,
  166. },
  167. tableHead: [
  168. {
  169. value: 'p1',
  170. label: '参数1',
  171. show: true,
  172. width: 120,
  173. fixed: 'left',
  174. popover: false,
  175. },
  176. { value: 'p2', label: '排序', show: true, sort: true },
  177. { value: 'p3', label: '参数3', show: true },
  178. { value: 'p4', label: '参数4', show: true },
  179. { value: 'p5', label: '参数5', show: true },
  180. { value: 'p6', label: '参数6', show: true },
  181. { value: 'p7', label: '参数7', show: true },
  182. { value: 'p8', label: '参数8', show: true },
  183. { value: 'p9', label: '参数9', show: true },
  184. { value: 'p10', label: '参数11', show: true },
  185. {
  186. value: 'caozuo',
  187. label: '操作',
  188. width: 200,
  189. show: true,
  190. fixed: 'right',
  191. },
  192. ],
  193. form: {},
  194. formReal: {},
  195. sort: {},
  196. result: {
  197. total: 0,
  198. data: [
  199. {
  200. p1: '啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊',
  201. p2: '啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊',
  202. },
  203. {},
  204. {},
  205. {},
  206. {},
  207. {},
  208. {},
  209. {},
  210. {},
  211. {},
  212. {},
  213. {},
  214. {},
  215. {},
  216. {},
  217. {},
  218. {},
  219. {},
  220. {},
  221. {},
  222. ],
  223. },
  224. selected: [],
  225. isFull: false,
  226. },
  227. detail: {
  228. show: false,
  229. transfer: {},
  230. },
  231. })
  232. const onSort = ({ key, value }) => {
  233. state.query.sort[key] = value
  234. onSearch()
  235. }
  236. const onPage = (pageNum, pageSize) => {
  237. state.query.page = {
  238. pageNum: pageNum,
  239. pageSize: pageSize,
  240. }
  241. const params = {
  242. pageNum: state.query.page.pageNum,
  243. pageSize: state.query.page.pageSize,
  244. }
  245. // 添加表单参数
  246. for (const [k, v] of Object.entries(state.query.formReal)) {
  247. if (k === 'createTime') {
  248. params['beginCreateTime'] = v[0]
  249. params['endCreateTime'] = v[1]
  250. } else if (proxy.$czrUtil.isValue(v)) {
  251. params[k] = v
  252. }
  253. }
  254. // 添加排序参数
  255. for (const [k, v] of Object.entries(state.query.sort)) {
  256. }
  257. // state.query.loading = true
  258. // api请求(params).then(res => {
  259. // if (res.code == 200) {
  260. // state.query.result.total = res.total
  261. // state.query.result.data = res.rows
  262. // state.query.loading = false
  263. // } else {
  264. // ElMessage.error(res.msg)
  265. // }
  266. // }).catch(() => {
  267. // state.query.loading = false
  268. // })
  269. }
  270. const onSearch = () => {
  271. state.query.selected = []
  272. state.query.formReal = JSON.parse(JSON.stringify(state.query.form))
  273. onPage(1, state.query.page.pageSize)
  274. }
  275. const onReset = () => {
  276. state.query.page = {
  277. pageNum: 1,
  278. pageSize: 10,
  279. }
  280. state.query.sort = {}
  281. state.query.form = {}
  282. onSearch()
  283. }
  284. const onAdd = () => {
  285. state.detail.transfer = {
  286. mode: 'add',
  287. }
  288. state.detail.show = true
  289. }
  290. const onEdit = (row) => {
  291. state.detail.transfer = {
  292. mode: 'edit',
  293. id: row.id,
  294. }
  295. state.detail.show = true
  296. }
  297. const onDel = (row = null) => {
  298. ElMessageBox.confirm(`请确认是否删除${row.name}?`, '提示', {
  299. confirmButtonText: '确定',
  300. cancelButtonText: '取消',
  301. type: 'warning',
  302. } as any)
  303. .then(() => {
  304. state.query.loading = true
  305. if ('成功') {
  306. ElMessage.success('删除成功!')
  307. onSearch()
  308. } else {
  309. ElMessage.error('错误信息')
  310. }
  311. })
  312. .catch(() => {
  313. state.query.loading = false
  314. })
  315. }
  316. const onExport = () => {}
  317. const initDictionary = () => {}
  318. onMounted(() => {
  319. initDictionary()
  320. onReset()
  321. })
  322. </script>
  323. <style lang="scss" scoped></style>