index.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <template>
  2. <com-head :options="[{ name: '案件管理', value: '2' }]">
  3. <el-form label-width="84px" inline>
  4. <el-form-item label="标题:">
  5. <el-input v-model="state.query.caseTitle" placeholder="请输入"></el-input>
  6. </el-form-item>
  7. <el-form-item label="承办单位:">
  8. <com-company v-model="state.query.deptId" />
  9. </el-form-item>
  10. <el-form-item class="searh-btns" style="grid-area: 1 / 4 / 2 / 6">
  11. <el-button type="primary" @click="refresh">查询</el-button>
  12. <el-button type="primary" plain @click="queryReset">重置</el-button>
  13. </el-form-item>
  14. </el-form>
  15. </com-head>
  16. <div class="body-layer">
  17. <div class="body-head">
  18. <h3 style="visibility: hidden">案件列表</h3>
  19. <div class="table-ctrl-right">
  20. <el-button type="primary" @click="addHandler" v-pdpath="['add']">
  21. 新增案件
  22. </el-button>
  23. </div>
  24. </div>
  25. <el-table
  26. :data="state.table.rows"
  27. id="multipleTable"
  28. style="width: 100%"
  29. class="table"
  30. size="large"
  31. >
  32. <el-table-column label="序号" width="70" v-slot:default="{ $index }">
  33. <div style="text-align: center">
  34. {{ state.pag.size * (state.pag.currentPage - 1) + $index + 1 }}
  35. </div>
  36. </el-table-column>
  37. <el-table-column label="标题" prop="caseTitle"></el-table-column>
  38. <el-table-column label="承办单位" prop="deptName"></el-table-column>
  39. <el-table-column label="创建时间" prop="createTime"></el-table-column>
  40. <el-table-column
  41. label="操作"
  42. v-slot:default="{ row }: { row: Example }"
  43. :width="240"
  44. >
  45. <CaseEditMenu
  46. :caseId="row.caseId"
  47. :case="row"
  48. :prevMenu="[
  49. { key: 'info', label: '编辑案件', onClick: () => editHandler(row) },
  50. ]"
  51. v-if="row.caseId"
  52. />
  53. <span class="oper-span" @click="gotoQuery(row.caseId)" v-pdpath="['view']"
  54. >查看</span
  55. >
  56. <span
  57. class="oper-span"
  58. @click="del(row)"
  59. style="color: var(--primaryColor)"
  60. v-pdpath="['del']"
  61. >
  62. 删除
  63. </span>
  64. </el-table-column>
  65. </el-table>
  66. <com-pagination
  67. @size-change="changPageSize"
  68. @current-change="changPageCurrent"
  69. :current-page="state.pag.currentPage"
  70. :page-size="state.pag.size"
  71. :total="state.pag.total"
  72. />
  73. </div>
  74. </template>
  75. <script setup lang="ts">
  76. import comHead from "@/components/head/index.vue";
  77. import comCompany from "@/components/company-select/index.vue";
  78. import comPagination from "@/components/pagination/index.vue";
  79. import { usePagging } from "@/hook/pagging";
  80. import { Example, delExample, getExamplePagging } from "@/app/criminal/store/example";
  81. import CaseEditMenu from "@/view/case/editMenu.vue";
  82. import { gotoQuery } from "@/view/case/help";
  83. import { addExample, editExample } from "./quisk";
  84. const { state, refresh, queryReset, del, changPageSize, changPageCurrent } = usePagging({
  85. get: getExamplePagging,
  86. del: delExample,
  87. mapper: {
  88. delMsg: "删除案件,相关档案也会一并删除,确定要删除吗?",
  89. },
  90. paramsTemlate: { caseTitle: "", deptId: "" },
  91. });
  92. const addHandler = async () => {
  93. if (await addExample({})) {
  94. refresh();
  95. }
  96. };
  97. const editHandler = async (example: Example) => {
  98. if (await editExample({ example })) {
  99. refresh();
  100. }
  101. };
  102. </script>