RecordList.vue 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  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="解析结果" :formatter="resultFor"/>
  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. import { formatter } from "element-plus/es/components";
  95. let pageNum = ref(1);
  96. let pageSize = ref(10);
  97. let totalSize = ref(0);
  98. let organName = ref("");
  99. let dialogFormVisible = ref(false);
  100. let orginizeList = ref([]);
  101. let orginizeInfo = reactive({
  102. id: "",
  103. organName: "",
  104. contactNumber: "",
  105. contactName: "",
  106. organNumber: "",
  107. type: 1,
  108. password: "",
  109. });
  110. const ruleFormRef = ref();
  111. const typeFunformatter=(val:any)=>{
  112. if(val.TaskType=='class_direc'){
  113. return '车辆分类与方向检测'
  114. }else if(val.TaskType=='car_direction'){
  115. return '车辆方向检测'
  116. }else if(val.TaskType=='car_classification'){
  117. return '车辆分类检测'
  118. }else{
  119. return ''
  120. }
  121. }
  122. const validateTel = (rule, value, callback) => {
  123. if (value === "") {
  124. callback(new Error("请输入联系电话"));
  125. } else {
  126. if (!/^1[3456789]\d{9}$/.test(value)) {
  127. callback(new Error("请输入正确的手机号码"));
  128. return;
  129. }
  130. callback();
  131. }
  132. };
  133. const validatePass = (rule, value, callback) => {
  134. if (value === "") {
  135. callback(new Error("请输入密码"));
  136. } else {
  137. const reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,12}$/;
  138. if (!reg.test(value)) {
  139. callback(new Error("密码需为6~12位的字母数字组合"));
  140. return;
  141. }
  142. callback();
  143. }
  144. };
  145. const rules = reactive({
  146. organName: [{ required: true, message: "请输入机构名称", trigger: "blur" }],
  147. organNumber: [
  148. {
  149. required: true,
  150. message: "请输入机构编号",
  151. trigger: "blur",
  152. },
  153. { type: "number", message: "机构编号需为数字", trigger: "blur" },
  154. ],
  155. contactNumber: [
  156. {
  157. required: true,
  158. validator: validateTel,
  159. trigger: "blur",
  160. },
  161. ],
  162. contactName: [
  163. {
  164. required: true,
  165. message: "请输输入联系人名称",
  166. trigger: "blur",
  167. },
  168. ],
  169. password: [
  170. {
  171. required: true,
  172. validator: validatePass,
  173. trigger: "blur",
  174. },
  175. ],
  176. });
  177. const resultFor =(val:any)=>{
  178. console.log(val)
  179. let a =val.Result
  180. if(a.includes(';')){
  181. return a.replace(";"," ")
  182. }
  183. debugger;
  184. }
  185. onMounted(() => {
  186. getOrginizeList();
  187. });
  188. // 查询机构列表
  189. const getOrginizeList = () => {
  190. // sessionStorage.setItem("userInfo", JSON.stringify({organName:form.userName,type:type.value}));
  191. let name = JSON.parse(sessionStorage.getItem("userInfo")).organName;
  192. let role = JSON.parse(sessionStorage.getItem("userInfo")).type;
  193. axios
  194. .post(`/v1/record/find`, {
  195. pageNum: pageNum.value,
  196. pageSize: pageSize.value,
  197. userName: name,
  198. role: role,
  199. })
  200. .then((res) => {
  201. if (res.code == 200) {
  202. orginizeList.value = res.data.data;
  203. totalSize.value = res.data.total;
  204. dialogFormVisible.value = false;
  205. }
  206. })
  207. .catch((err) => {});
  208. };
  209. // 保存机构信息
  210. const saveOriginize = async (formEl) => {
  211. if (!formEl) return;
  212. await formEl.validate((valid, fields) => {
  213. if (valid) {
  214. orginizeInfo.password = CryptoJS.MD5(orginizeInfo.password).toString();
  215. axios
  216. .post(`/organ/saveInfo`, orginizeInfo)
  217. .then((res) => {
  218. if (res.code == 200) {
  219. ElMessage({
  220. message: "保存成功",
  221. type: "success",
  222. });
  223. orginizeInfo = {
  224. id: "",
  225. organName: "",
  226. contactNumber: "",
  227. contactName: "",
  228. organNumber: "",
  229. type: 1,
  230. password: "",
  231. };
  232. getOrginizeList();
  233. dialogFormVisible.value = false;
  234. }
  235. })
  236. .catch((err) => {
  237. ElMessage({
  238. message: err.msg,
  239. type: "error",
  240. });
  241. });
  242. } else {
  243. ElMessage({
  244. message: "请将信息填写完整",
  245. type: "error",
  246. });
  247. }
  248. });
  249. };
  250. const cancelHandle = () => {
  251. ruleFormRef.value.resetFields();
  252. dialogFormVisible.value = false;
  253. ruleFormRef.value.clearValidate();
  254. };
  255. // 删除
  256. const delHandle = (id) => {
  257. ElMessageBox.alert("确定要删除该条数据", {
  258. confirmButtonText: "确定",
  259. callback: (action) => {
  260. if ("confirm" === action) delOriginize(id);
  261. },
  262. });
  263. };
  264. const editHandle = (info) => {
  265. orginizeInfo = info;
  266. dialogFormVisible.value = true;
  267. };
  268. // 删除机构信息
  269. const delOriginize = (id) => {
  270. axios
  271. .delete(`/organ/delete/${id}`)
  272. .then((res) => {
  273. if (res.code == 200) {
  274. ElMessage({
  275. message: "删除成功",
  276. type: "success",
  277. });
  278. getOrginizeList();
  279. }
  280. })
  281. .catch((err) => {});
  282. };
  283. const handleSizeChange = (val: number) => {
  284. pageSize.value = val;
  285. getOrginizeList();
  286. };
  287. const handleCurrentChange = (val: number) => {
  288. pageNum.value = val;
  289. getOrginizeList();
  290. };
  291. const tableData = [
  292. {
  293. date: "2016-05-03",
  294. name: "Tom",
  295. address: "No. 189, Grove St, Los Angeles",
  296. },
  297. {
  298. date: "2016-05-02",
  299. name: "Tom",
  300. address: "No. 189, Grove St, Los Angeles",
  301. },
  302. {
  303. date: "2016-05-04",
  304. name: "Tom",
  305. address: "No. 189, Grove St, Los Angeles",
  306. },
  307. {
  308. date: "2016-05-01",
  309. name: "Tom",
  310. address: "No. 189, Grove St, Los Angeles",
  311. },
  312. ];
  313. const formInline = reactive({
  314. user: "",
  315. region: "",
  316. });
  317. const onSubmit = () => {
  318. console.log("submit!");
  319. };
  320. </script>
  321. <style></style>