RecordList.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. <template>
  2. <div class="search-form">
  3. <!-- <el-form :inline="true" :model="formInline" class="demo-form-inline">
  4. <el-form-item label="用户姓名">
  5. <el-input v-model="organName" placeholder="请输入用户姓名" />
  6. </el-form-item>
  7. <el-form-item>
  8. <el-button type="primary" @click="getOrginizeList">查询</el-button>
  9. <el-button type="primary" @click="dialogFormVisible = true">新增</el-button>
  10. </el-form-item>
  11. </el-form> -->
  12. </div>
  13. <el-table
  14. :data="orginizeList"
  15. border
  16. style="width: 100%"
  17. :highlight-current-row="true"
  18. :header-cell-style="{ background: '#ecf7f9' }"
  19. >
  20. <el-table-column prop="FileName" label="文件名称" />
  21. <el-table-column prop="FileType" label="文件类型" />
  22. <el-table-column prop="TaskType" label="检测类型" :formatter='typeFunformatter' />
  23. <el-table-column prop="CreateTime" label="创建时间" />
  24. <!-- <el-table-column prop="UserName" label="用户名" /> -->
  25. <el-table-column prop="Result" label="解析结果" />
  26. <!-- <el-table-column fixed="right" label="操作" width="200" align="center">
  27. <template #default="scope">
  28. <el-button type="primary" :icon="Edit" size="small" plain @click="editHandle(scope.row)">编辑</el-button>
  29. <el-button type="danger" :icon="Delete" size="small" @click="delHandle(scope.row.id)">删除</el-button>
  30. </template>
  31. </el-table-column> -->
  32. </el-table>
  33. <div class="pagination-box">
  34. <el-pagination
  35. v-model:currentPage="pageNum"
  36. v-model:page-size="pageSize"
  37. small
  38. background
  39. :page-sizes="[10, 20, 50, 100]"
  40. layout="total, sizes, prev, pager, next, jumper"
  41. :total="totalSize"
  42. @size-change="handleSizeChange"
  43. @current-change="handleCurrentChange"
  44. />
  45. </div>
  46. <el-dialog
  47. v-model="dialogFormVisible"
  48. title="用户信息"
  49. width="480"
  50. @close="cancelHandle"
  51. >
  52. <el-form ref="ruleFormRef" :model="orginizeInfo" :rules="rules">
  53. <el-form-item label="姓名" :label-width="120" prop="organName">
  54. <el-input v-model="orginizeInfo.organName" autocomplete="off" />
  55. </el-form-item>
  56. <el-form-item label="编号" :label-width="120" prop="organNumber">
  57. <el-input
  58. v-model.number="orginizeInfo.organNumber"
  59. autocomplete="off"
  60. />
  61. </el-form-item>
  62. <el-form-item label="联系电话" :label-width="120" prop="contactNumber">
  63. <el-input
  64. v-model="orginizeInfo.contactNumber"
  65. maxlength="11"
  66. type="tel"
  67. autocomplete="off"
  68. />
  69. </el-form-item>
  70. <el-form-item label="登录密码" :label-width="120" prop="password">
  71. <el-input
  72. v-model="orginizeInfo.password"
  73. type="password"
  74. autocomplete="off"
  75. />
  76. </el-form-item>
  77. </el-form>
  78. <template #footer>
  79. <span class="dialog-footer">
  80. <el-button @click="cancelHandle">取消</el-button>
  81. <el-button type="primary" @click="saveOriginize(ruleFormRef)">
  82. 保存
  83. </el-button>
  84. </span>
  85. </template>
  86. </el-dialog>
  87. </template>
  88. <script lang="ts" setup>
  89. import { Delete, Edit } from "@element-plus/icons-vue";
  90. import { reactive, ref, onMounted } from "vue";
  91. import { ElMessage, ElMessageBox } from "element-plus";
  92. import axios from "../utils/http";
  93. import CryptoJS from "crypto-js";
  94. let pageNum = ref(1);
  95. let pageSize = ref(10);
  96. let totalSize = ref(0);
  97. let organName = ref("");
  98. let dialogFormVisible = ref(false);
  99. let orginizeList = ref([]);
  100. let orginizeInfo = reactive({
  101. id: "",
  102. organName: "",
  103. contactNumber: "",
  104. contactName: "",
  105. organNumber: "",
  106. type: 1,
  107. password: "",
  108. });
  109. const ruleFormRef = ref();
  110. const typeFunformatter=(val:any)=>{
  111. if(val.TaskType=='class_direc'){
  112. return '车辆分类与方向检测'
  113. }else if(val.TaskType=='car_direction'){
  114. return '车辆方向检测'
  115. }else if(val.TaskType=='car_classification'){
  116. return '车辆分类检测'
  117. }else{
  118. return ''
  119. }
  120. }
  121. const validateTel = (rule, value, callback) => {
  122. if (value === "") {
  123. callback(new Error("请输入联系电话"));
  124. } else {
  125. if (!/^1[3456789]\d{9}$/.test(value)) {
  126. callback(new Error("请输入正确的手机号码"));
  127. return;
  128. }
  129. callback();
  130. }
  131. };
  132. const validatePass = (rule, value, callback) => {
  133. if (value === "") {
  134. callback(new Error("请输入密码"));
  135. } else {
  136. const reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,12}$/;
  137. if (!reg.test(value)) {
  138. callback(new Error("密码需为6~12位的字母数字组合"));
  139. return;
  140. }
  141. callback();
  142. }
  143. };
  144. const rules = reactive({
  145. organName: [{ required: true, message: "请输入机构名称", trigger: "blur" }],
  146. organNumber: [
  147. {
  148. required: true,
  149. message: "请输入机构编号",
  150. trigger: "blur",
  151. },
  152. { type: "number", message: "机构编号需为数字", trigger: "blur" },
  153. ],
  154. contactNumber: [
  155. {
  156. required: true,
  157. validator: validateTel,
  158. trigger: "blur",
  159. },
  160. ],
  161. contactName: [
  162. {
  163. required: true,
  164. message: "请输输入联系人名称",
  165. trigger: "blur",
  166. },
  167. ],
  168. password: [
  169. {
  170. required: true,
  171. validator: validatePass,
  172. trigger: "blur",
  173. },
  174. ],
  175. });
  176. onMounted(() => {
  177. getOrginizeList();
  178. });
  179. // 查询机构列表
  180. const getOrginizeList = () => {
  181. // sessionStorage.setItem("userInfo", JSON.stringify({organName:form.userName,type:type.value}));
  182. let name = JSON.parse(sessionStorage.getItem("userInfo")).organName;
  183. let role = JSON.parse(sessionStorage.getItem("userInfo")).type;
  184. axios
  185. .post(`/v1/record/find`, {
  186. pageNum: pageNum.value,
  187. pageSize: pageSize.value,
  188. userName: name,
  189. role: role,
  190. })
  191. .then((res) => {
  192. if (res.code == 200) {
  193. orginizeList.value = res.data.data;
  194. totalSize.value = res.data.total;
  195. dialogFormVisible.value = false;
  196. }
  197. })
  198. .catch((err) => {});
  199. };
  200. // 保存机构信息
  201. const saveOriginize = async (formEl) => {
  202. if (!formEl) return;
  203. await formEl.validate((valid, fields) => {
  204. if (valid) {
  205. orginizeInfo.password = CryptoJS.MD5(orginizeInfo.password).toString();
  206. axios
  207. .post(`/organ/saveInfo`, orginizeInfo)
  208. .then((res) => {
  209. if (res.code == 200) {
  210. ElMessage({
  211. message: "保存成功",
  212. type: "success",
  213. });
  214. orginizeInfo = {
  215. id: "",
  216. organName: "",
  217. contactNumber: "",
  218. contactName: "",
  219. organNumber: "",
  220. type: 1,
  221. password: "",
  222. };
  223. getOrginizeList();
  224. dialogFormVisible.value = false;
  225. }
  226. })
  227. .catch((err) => {
  228. ElMessage({
  229. message: err.msg,
  230. type: "error",
  231. });
  232. });
  233. } else {
  234. ElMessage({
  235. message: "请将信息填写完整",
  236. type: "error",
  237. });
  238. }
  239. });
  240. };
  241. const cancelHandle = () => {
  242. ruleFormRef.value.resetFields();
  243. dialogFormVisible.value = false;
  244. ruleFormRef.value.clearValidate();
  245. };
  246. // 删除
  247. const delHandle = (id) => {
  248. ElMessageBox.alert("确定要删除该条数据", {
  249. confirmButtonText: "确定",
  250. callback: (action) => {
  251. if ("confirm" === action) delOriginize(id);
  252. },
  253. });
  254. };
  255. const editHandle = (info) => {
  256. orginizeInfo = info;
  257. dialogFormVisible.value = true;
  258. };
  259. // 删除机构信息
  260. const delOriginize = (id) => {
  261. axios
  262. .delete(`/organ/delete/${id}`)
  263. .then((res) => {
  264. if (res.code == 200) {
  265. ElMessage({
  266. message: "删除成功",
  267. type: "success",
  268. });
  269. getOrginizeList();
  270. }
  271. })
  272. .catch((err) => {});
  273. };
  274. const handleSizeChange = (val: number) => {
  275. pageSize.value = val;
  276. getOrginizeList();
  277. };
  278. const handleCurrentChange = (val: number) => {
  279. pageNum.value = val;
  280. getOrginizeList();
  281. };
  282. const tableData = [
  283. {
  284. date: "2016-05-03",
  285. name: "Tom",
  286. address: "No. 189, Grove St, Los Angeles",
  287. },
  288. {
  289. date: "2016-05-02",
  290. name: "Tom",
  291. address: "No. 189, Grove St, Los Angeles",
  292. },
  293. {
  294. date: "2016-05-04",
  295. name: "Tom",
  296. address: "No. 189, Grove St, Los Angeles",
  297. },
  298. {
  299. date: "2016-05-01",
  300. name: "Tom",
  301. address: "No. 189, Grove St, Los Angeles",
  302. },
  303. ];
  304. const formInline = reactive({
  305. user: "",
  306. region: "",
  307. });
  308. const onSubmit = () => {
  309. console.log("submit!");
  310. };
  311. </script>
  312. <style></style>