detection.vue 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. <template>
  2. <section>
  3. <!--工具条-->
  4. <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
  5. <el-form :inline="true" :model="filters">
  6. <el-form-item>
  7. <el-input v-model="filters.name" placeholder="姓名"></el-input>
  8. </el-form-item>
  9. <el-form-item>
  10. <el-button type="primary" v-on:click="getUsers">查询</el-button>
  11. </el-form-item>
  12. <el-form-item>
  13. <el-button type="primary" @click="handleAdd">新增</el-button>
  14. </el-form-item>
  15. </el-form>
  16. </el-col>
  17. <!--列表-->
  18. <el-table :data="users" highlight-current-row v-loading="listLoading" @selection-change="selsChange" style="width: 100%;">
  19. <el-table-column type="selection" width="55">
  20. </el-table-column>
  21. <el-table-column type="index" width="60">
  22. </el-table-column>
  23. <el-table-column prop="name" label="姓名" width="120" sortable>
  24. </el-table-column>
  25. <el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" sortable>
  26. </el-table-column>
  27. <el-table-column prop="age" label="年龄" width="100" sortable>
  28. </el-table-column>
  29. <el-table-column prop="birth" label="生日" width="120" sortable>
  30. </el-table-column>
  31. <el-table-column prop="addr" label="地址" min-width="180" sortable>
  32. </el-table-column>
  33. <el-table-column label="操作" width="150">
  34. <template slot-scope="scope">
  35. <el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
  36. <el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button>
  37. </template>
  38. </el-table-column>
  39. </el-table>
  40. <!--工具条-->
  41. <el-col :span="24" class="toolbar">
  42. <el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button>
  43. <el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="20" :total="total" style="float:right;">
  44. </el-pagination>
  45. </el-col>
  46. <!--编辑界面-->
  47. <el-dialog title="编辑" v-model="editFormVisible" :close-on-click-modal="false">
  48. <el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">
  49. <el-form-item label="姓名" prop="name">
  50. <el-input v-model="editForm.name" autocomplete="off"></el-input>
  51. </el-form-item>
  52. <el-form-item label="性别">
  53. <el-radio-group v-model="editForm.sex">
  54. <el-radio class="radio" :label="1">男</el-radio>
  55. <el-radio class="radio" :label="0">女</el-radio>
  56. </el-radio-group>
  57. </el-form-item>
  58. <el-form-item label="年龄">
  59. <el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number>
  60. </el-form-item>
  61. <el-form-item label="生日">
  62. <el-date-picker type="date" placeholder="选择日期" v-model="editForm.birth"></el-date-picker>
  63. </el-form-item>
  64. <el-form-item label="地址">
  65. <el-input type="textarea" v-model="editForm.addr"></el-input>
  66. </el-form-item>
  67. </el-form>
  68. <div slot="footer" class="dialog-footer">
  69. <el-button @click.native="editFormVisible = false">取消</el-button>
  70. <el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
  71. </div>
  72. </el-dialog>
  73. <!--新增界面-->
  74. <el-dialog title="新增" v-model="addFormVisible" :close-on-click-modal="false">
  75. <el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">
  76. <el-form-item label="姓名" prop="name">
  77. <el-input v-model="addForm.name" autocomplete="off"></el-input>
  78. </el-form-item>
  79. <el-form-item label="性别">
  80. <el-radio-group v-model="addForm.sex">
  81. <el-radio class="radio" :label="1">男</el-radio>
  82. <el-radio class="radio" :label="0">女</el-radio>
  83. </el-radio-group>
  84. </el-form-item>
  85. <el-form-item label="年龄">
  86. <el-input-number v-model="addForm.age" :min="0" :max="200"></el-input-number>
  87. </el-form-item>
  88. <el-form-item label="生日">
  89. <el-date-picker type="date" placeholder="选择日期" v-model="addForm.birth"></el-date-picker>
  90. </el-form-item>
  91. <el-form-item label="地址">
  92. <el-input type="textarea" v-model="addForm.addr"></el-input>
  93. </el-form-item>
  94. </el-form>
  95. <div slot="footer" class="dialog-footer">
  96. <el-button @click.native="addFormVisible = false">取消</el-button>
  97. <el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
  98. </div>
  99. </el-dialog>
  100. </section>
  101. </template>
  102. <script>
  103. import util from '../../common/js/util'
  104. //import NProgress from 'nprogress'
  105. import { getUserListPage, removeUser, batchRemoveUser, editUser, addUser } from '../../api/api';
  106. export default {
  107. data() {
  108. return {
  109. filters: {
  110. name: ''
  111. },
  112. users: [],
  113. total: 0,
  114. page: 1,
  115. listLoading: false,
  116. sels: [],//列表选中列
  117. editFormVisible: false,//编辑界面是否显示
  118. editLoading: false,
  119. editFormRules: {
  120. name: [
  121. { required: true, message: '请输入姓名', trigger: 'blur' }
  122. ]
  123. },
  124. //编辑界面数据
  125. editForm: {
  126. id: 0,
  127. name: '',
  128. sex: -1,
  129. age: 0,
  130. birth: '',
  131. addr: ''
  132. },
  133. addFormVisible: false,//新增界面是否显示
  134. addLoading: false,
  135. addFormRules: {
  136. name: [
  137. { required: true, message: '请输入姓名', trigger: 'blur' }
  138. ]
  139. },
  140. //新增界面数据
  141. addForm: {
  142. name: '',
  143. sex: -1,
  144. age: 0,
  145. birth: '',
  146. addr: ''
  147. }
  148. }
  149. },
  150. methods: {
  151. //性别显示转换
  152. formatSex: function (row, column) {
  153. return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
  154. },
  155. handleCurrentChange(val) {
  156. this.page = val;
  157. this.getUsers();
  158. },
  159. //获取用户列表
  160. getUsers() {
  161. let para = {
  162. page: this.page,
  163. name: this.filters.name
  164. };
  165. this.listLoading = true;
  166. //NProgress.start();
  167. getUserListPage(para).then((res) => {
  168. this.total = res.data.total;
  169. this.users = res.data.users;
  170. this.listLoading = false;
  171. //NProgress.done();
  172. });
  173. },
  174. //删除
  175. handleDel: function (index, row) {
  176. this.$confirm('确认删除该记录吗?', '提示', {
  177. type: 'warning'
  178. }).then(() => {
  179. this.listLoading = true;
  180. //NProgress.start();
  181. let para = { id: row.id };
  182. removeUser(para).then((res) => {
  183. this.listLoading = false;
  184. //NProgress.done();
  185. this.$message({
  186. message: '删除成功',
  187. type: 'success'
  188. });
  189. this.getUsers();
  190. });
  191. }).catch(() => {
  192. });
  193. },
  194. //显示编辑界面
  195. handleEdit: function (index, row) {
  196. this.editFormVisible = true;
  197. this.editForm = Object.assign({}, row);
  198. },
  199. //显示新增界面
  200. handleAdd: function () {
  201. this.addFormVisible = true;
  202. this.addForm = {
  203. name: '',
  204. sex: -1,
  205. age: 0,
  206. birth: '',
  207. addr: ''
  208. };
  209. },
  210. //编辑
  211. editSubmit: function () {
  212. this.$refs.editForm.validate((valid) => {
  213. if (valid) {
  214. this.$confirm('确认提交吗?', '提示', {}).then(() => {
  215. this.editLoading = true;
  216. //NProgress.start();
  217. let para = Object.assign({}, this.editForm);
  218. para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
  219. editUser(para).then((res) => {
  220. this.editLoading = false;
  221. //NProgress.done();
  222. this.$message({
  223. message: '提交成功',
  224. type: 'success'
  225. });
  226. this.$refs['editForm'].resetFields();
  227. this.editFormVisible = false;
  228. this.getUsers();
  229. });
  230. });
  231. }
  232. });
  233. },
  234. //新增
  235. addSubmit: function () {
  236. this.$refs.addForm.validate((valid) => {
  237. if (valid) {
  238. this.$confirm('确认提交吗?', '提示', {}).then(() => {
  239. this.addLoading = true;
  240. //NProgress.start();
  241. let para = Object.assign({}, this.addForm);
  242. para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
  243. addUser(para).then((res) => {
  244. this.addLoading = false;
  245. //NProgress.done();
  246. this.$message({
  247. message: '提交成功',
  248. type: 'success'
  249. });
  250. this.$refs['addForm'].resetFields();
  251. this.addFormVisible = false;
  252. this.getUsers();
  253. });
  254. });
  255. }
  256. });
  257. },
  258. selsChange: function (sels) {
  259. this.sels = sels;
  260. },
  261. //批量删除
  262. batchRemove: function () {
  263. var ids = this.sels.map(item => item.id).toString();
  264. this.$confirm('确认删除选中记录吗?', '提示', {
  265. type: 'warning'
  266. }).then(() => {
  267. this.listLoading = true;
  268. //NProgress.start();
  269. let para = { ids: ids };
  270. batchRemoveUser(para).then((res) => {
  271. this.listLoading = false;
  272. //NProgress.done();
  273. this.$message({
  274. message: '删除成功',
  275. type: 'success'
  276. });
  277. this.getUsers();
  278. });
  279. }).catch(() => {
  280. });
  281. }
  282. },
  283. mounted() {
  284. this.getUsers();
  285. }
  286. }
  287. </script>
  288. <style scoped>
  289. </style>