index.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <template>
  2. <com-head :options="[{ name: '相机管理', value: '2' }]">
  3. <el-form label-width="97px" inline>
  4. <el-form-item label="所属架构:">
  5. <com-select v-model="state.query.deptId" />
  6. </el-form-item>
  7. <el-form-item label="S/N码:">
  8. <el-input v-model="state.query.snCode" placeholder="请输入"></el-input>
  9. </el-form-item>
  10. <el-form-item label="绑定管理员:">
  11. <el-input v-model="state.query.searchKey" placeholder="请输入"></el-input>
  12. </el-form-item>
  13. <el-form-item class="searh-btns" style="grid-area: 1 / 4 / 2 / 4">
  14. <el-button type="primary" @click="refresh">查询</el-button>
  15. <el-button type="primary" plain @click="queryReset">重置</el-button>
  16. </el-form-item>
  17. </el-form>
  18. </com-head>
  19. <div class="body-layer">
  20. <div class="body-head">
  21. <h3 style="visibility: hidden">相机列表</h3>
  22. <div class="table-ctrl-right">
  23. <el-button type="primary" @click="changeCameraHandler" v-pdpath="'bind'">
  24. 绑定相机
  25. </el-button>
  26. </div>
  27. </div>
  28. <el-table
  29. ref="multipleTable"
  30. :data="state.table.rows"
  31. size="large"
  32. style="width: 100%"
  33. >
  34. <el-table-column label="序号" width="70" v-slot:default="{ $index }">
  35. <div style="text-align: center">
  36. {{ state.pag.size * (state.pag.currentPage - 1) + $index + 1 }}
  37. </div>
  38. </el-table-column>
  39. <el-table-column label="设备类型" v-slot:default="{ row }">
  40. {{ cameraTypeDesc[row.cameraType] }}
  41. </el-table-column>
  42. <el-table-column label="S/N码" prop="snCode"></el-table-column>
  43. <el-table-column label="所属架构" prop="deptName"></el-table-column>
  44. <!-- <el-table-column label="云容量使用情况" v-slot:default="{ row }">
  45. {{ row.usedSpaceStr }}
  46. </el-table-column> -->
  47. <el-table-column label="绑定管理员" prop="nickName"></el-table-column>
  48. <el-table-column label="操作" v-slot:default="{ row }">
  49. <span class="oper-span" @click="changeCameraHandler(row)" v-pdpath="'edit'">
  50. 编辑
  51. </span>
  52. <span class="oper-span delBtn" @click="del(row)" v-pdpath="'unbind'"> 解绑 </span>
  53. </el-table-column>
  54. </el-table>
  55. <com-pagination
  56. @size-change="changPageSize"
  57. @current-change="changPageCurrent"
  58. :current-page="state.pag.currentPage"
  59. :page-size="state.pag.size"
  60. :total="state.pag.total"
  61. />
  62. </div>
  63. </template>
  64. <script setup lang="ts">
  65. import comSelect from "@/components/company-select/index.vue";
  66. import comPagination from "@/components/pagination/index.vue";
  67. import comHead from "@/components/head/index.vue";
  68. import { usePagging } from "@/hook/pagging";
  69. import { bindCamera, editCamera } from "./quisk";
  70. import { getCameraPagging, delCamera, addCamera, Camera } from "@/store/camera";
  71. import { confirm } from "@/helper/message";
  72. import { ElMessage } from "element-plus";
  73. import { cameraTypeDesc } from "@/constant/camera";
  74. const { state, queryReset, refresh, changPageCurrent, changPageSize, add } = usePagging({
  75. get: getCameraPagging,
  76. add: addCamera,
  77. paramsTemlate: {
  78. deptId: "",
  79. snCode: "",
  80. type: "2",
  81. searchKey: "",
  82. },
  83. });
  84. const changeCameraHandler = async (camera: Camera) => {
  85. (await (camera ? editCamera({ camera }) : bindCamera({}))) && (await refresh());
  86. };
  87. const del = async (camera: Camera) => {
  88. if (
  89. await confirm(
  90. "解绑相机,该相机拍摄的场景也将一并解绑(场景在云端存储,不会删除)确定要解绑吗?"
  91. )
  92. ) {
  93. await delCamera(camera);
  94. refresh();
  95. ElMessage.success("解绑成功");
  96. }
  97. };
  98. </script>