You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

485 lines
17 KiB

  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item label="疫苗信息ID" prop="vaccineId">
  5. <el-input
  6. v-model="queryParams.vaccineId"
  7. placeholder="请输入疫苗信息ID"
  8. clearable
  9. @keyup.enter.native="handleQuery"
  10. />
  11. </el-form-item>
  12. <el-form-item label="牧户用户ID" prop="userId">
  13. <el-input
  14. v-model="queryParams.userId"
  15. placeholder="请输入牧户用户ID"
  16. clearable
  17. @keyup.enter.native="handleQuery"
  18. />
  19. </el-form-item>
  20. <el-form-item label="牲畜类型" prop="livestockType">
  21. <el-select v-model="queryParams.livestockType" placeholder="请选择牲畜类型" clearable>
  22. <el-option
  23. v-for="dict in dict.type.livestock_type"
  24. :key="dict.value"
  25. :label="dict.label"
  26. :value="dict.value"
  27. />
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item label="牲畜数量" prop="livestockCount">
  31. <el-input
  32. v-model="queryParams.livestockCount"
  33. placeholder="请输入牲畜数量"
  34. clearable
  35. @keyup.enter.native="handleQuery"
  36. />
  37. </el-form-item>
  38. <el-form-item label="联系人姓名" prop="contactName">
  39. <el-input
  40. v-model="queryParams.contactName"
  41. placeholder="请输入联系人姓名"
  42. clearable
  43. @keyup.enter.native="handleQuery"
  44. />
  45. </el-form-item>
  46. <el-form-item label="联系电话" prop="contactPhone">
  47. <el-input
  48. v-model="queryParams.contactPhone"
  49. placeholder="请输入联系电话"
  50. clearable
  51. @keyup.enter.native="handleQuery"
  52. />
  53. </el-form-item>
  54. <el-form-item label="状态:1-待确认 2-已确认 3-已完成 4-已取消" prop="status">
  55. <el-select v-model="queryParams.status" placeholder="请选择状态:1-待确认 2-已确认 3-已完成 4-已取消" clearable>
  56. <el-option
  57. v-for="dict in dict.type.vaccine_registration_status"
  58. :key="dict.value"
  59. :label="dict.label"
  60. :value="dict.value"
  61. />
  62. </el-select>
  63. </el-form-item>
  64. <el-form-item label="预约时间" prop="registrationTime">
  65. <el-date-picker clearable
  66. v-model="queryParams.registrationTime"
  67. type="date"
  68. value-format="yyyy-MM-dd"
  69. placeholder="请选择预约时间">
  70. </el-date-picker>
  71. </el-form-item>
  72. <el-form-item label="确认时间" prop="confirmedTime">
  73. <el-date-picker clearable
  74. v-model="queryParams.confirmedTime"
  75. type="date"
  76. value-format="yyyy-MM-dd"
  77. placeholder="请选择确认时间">
  78. </el-date-picker>
  79. </el-form-item>
  80. <el-form-item label="完成时间" prop="completedTime">
  81. <el-date-picker clearable
  82. v-model="queryParams.completedTime"
  83. type="date"
  84. value-format="yyyy-MM-dd"
  85. placeholder="请选择完成时间">
  86. </el-date-picker>
  87. </el-form-item>
  88. <el-form-item label="取消时间" prop="cancelTime">
  89. <el-date-picker clearable
  90. v-model="queryParams.cancelTime"
  91. type="date"
  92. value-format="yyyy-MM-dd"
  93. placeholder="请选择取消时间">
  94. </el-date-picker>
  95. </el-form-item>
  96. <el-form-item>
  97. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  98. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  99. </el-form-item>
  100. </el-form>
  101. <el-row :gutter="10" class="mb8">
  102. <el-col :span="1.5">
  103. <el-button
  104. type="primary"
  105. plain
  106. icon="el-icon-plus"
  107. size="mini"
  108. @click="handleAdd"
  109. v-hasPermi="['system:VacRegistration:add']"
  110. >新增</el-button>
  111. </el-col>
  112. <el-col :span="1.5">
  113. <el-button
  114. type="success"
  115. plain
  116. icon="el-icon-edit"
  117. size="mini"
  118. :disabled="single"
  119. @click="handleUpdate"
  120. v-hasPermi="['system:VacRegistration:edit']"
  121. >修改</el-button>
  122. </el-col>
  123. <el-col :span="1.5">
  124. <el-button
  125. type="danger"
  126. plain
  127. icon="el-icon-delete"
  128. size="mini"
  129. :disabled="multiple"
  130. @click="handleDelete"
  131. v-hasPermi="['system:VacRegistration:remove']"
  132. >删除</el-button>
  133. </el-col>
  134. <el-col :span="1.5">
  135. <el-button
  136. type="warning"
  137. plain
  138. icon="el-icon-download"
  139. size="mini"
  140. @click="handleExport"
  141. v-hasPermi="['system:VacRegistration:export']"
  142. >导出</el-button>
  143. </el-col>
  144. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  145. </el-row>
  146. <el-table v-loading="loading" :data="VacRegistrationList" @selection-change="handleSelectionChange">
  147. <el-table-column type="selection" width="55" align="center" />
  148. <el-table-column label="预约记录ID" align="center" prop="id" />
  149. <el-table-column label="疫苗信息ID" align="center" prop="vaccineId" />
  150. <el-table-column label="牧户用户ID" align="center" prop="userId" />
  151. <el-table-column label="牲畜类型" align="center" prop="livestockType">
  152. <template slot-scope="scope">
  153. <dict-tag :options="dict.type.livestock_type" :value="scope.row.livestockType"/>
  154. </template>
  155. </el-table-column>
  156. <el-table-column label="牲畜数量" align="center" prop="livestockCount" />
  157. <el-table-column label="联系人姓名" align="center" prop="contactName" />
  158. <el-table-column label="联系电话" align="center" prop="contactPhone" />
  159. <el-table-column label="状态:1-待确认 2-已确认 3-已完成 4-已取消" align="center" prop="status">
  160. <template slot-scope="scope">
  161. <dict-tag :options="dict.type.vaccine_registration_status" :value="scope.row.status"/>
  162. </template>
  163. </el-table-column>
  164. <el-table-column label="预约时间" align="center" prop="registrationTime" width="180">
  165. <template slot-scope="scope">
  166. <span>{{ parseTime(scope.row.registrationTime, '{y}-{m}-{d}') }}</span>
  167. </template>
  168. </el-table-column>
  169. <el-table-column label="确认时间" align="center" prop="confirmedTime" width="180">
  170. <template slot-scope="scope">
  171. <span>{{ parseTime(scope.row.confirmedTime, '{y}-{m}-{d}') }}</span>
  172. </template>
  173. </el-table-column>
  174. <el-table-column label="完成时间" align="center" prop="completedTime" width="180">
  175. <template slot-scope="scope">
  176. <span>{{ parseTime(scope.row.completedTime, '{y}-{m}-{d}') }}</span>
  177. </template>
  178. </el-table-column>
  179. <el-table-column label="取消时间" align="center" prop="cancelTime" width="180">
  180. <template slot-scope="scope">
  181. <span>{{ parseTime(scope.row.cancelTime, '{y}-{m}-{d}') }}</span>
  182. </template>
  183. </el-table-column>
  184. <el-table-column label="备注" align="center" prop="remark" />
  185. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  186. <template slot-scope="scope">
  187. <el-button
  188. size="mini"
  189. type="text"
  190. icon="el-icon-edit"
  191. @click="handleUpdate(scope.row)"
  192. v-hasPermi="['system:VacRegistration:edit']"
  193. >修改</el-button>
  194. <el-button
  195. size="mini"
  196. type="text"
  197. icon="el-icon-delete"
  198. @click="handleDelete(scope.row)"
  199. v-hasPermi="['system:VacRegistration:remove']"
  200. >删除</el-button>
  201. </template>
  202. </el-table-column>
  203. </el-table>
  204. <pagination
  205. v-show="total>0"
  206. :total="total"
  207. :page.sync="queryParams.pageNum"
  208. :limit.sync="queryParams.pageSize"
  209. @pagination="getList"
  210. />
  211. <!-- 添加或修改疫苗预约对话框 -->
  212. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  213. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  214. <el-form-item label="疫苗信息ID" prop="vaccineId">
  215. <el-input v-model="form.vaccineId" placeholder="请输入疫苗信息ID" />
  216. </el-form-item>
  217. <el-form-item label="牧户用户ID" prop="userId">
  218. <el-input v-model="form.userId" placeholder="请输入牧户用户ID" />
  219. </el-form-item>
  220. <el-form-item label="牲畜类型" prop="livestockType">
  221. <el-select v-model="form.livestockType" placeholder="请选择牲畜类型">
  222. <el-option
  223. v-for="dict in dict.type.livestock_type"
  224. :key="dict.value"
  225. :label="dict.label"
  226. :value="dict.value"
  227. ></el-option>
  228. </el-select>
  229. </el-form-item>
  230. <el-form-item label="牲畜数量" prop="livestockCount">
  231. <el-input v-model="form.livestockCount" placeholder="请输入牲畜数量" />
  232. </el-form-item>
  233. <el-form-item label="联系人姓名" prop="contactName">
  234. <el-input v-model="form.contactName" placeholder="请输入联系人姓名" />
  235. </el-form-item>
  236. <el-form-item label="联系电话" prop="contactPhone">
  237. <el-input v-model="form.contactPhone" placeholder="请输入联系电话" />
  238. </el-form-item>
  239. <el-form-item label="状态:1-待确认 2-已确认 3-已完成 4-已取消" prop="status">
  240. <el-select v-model="form.status" placeholder="请选择状态:1-待确认 2-已确认 3-已完成 4-已取消">
  241. <el-option
  242. v-for="dict in dict.type.vaccine_registration_status"
  243. :key="dict.value"
  244. :label="dict.label"
  245. :value="parseInt(dict.value)"
  246. ></el-option>
  247. </el-select>
  248. </el-form-item>
  249. <el-form-item label="预约时间" prop="registrationTime">
  250. <el-date-picker clearable
  251. v-model="form.registrationTime"
  252. type="date"
  253. value-format="yyyy-MM-dd"
  254. placeholder="请选择预约时间">
  255. </el-date-picker>
  256. </el-form-item>
  257. <el-form-item label="确认时间" prop="confirmedTime">
  258. <el-date-picker clearable
  259. v-model="form.confirmedTime"
  260. type="date"
  261. value-format="yyyy-MM-dd"
  262. placeholder="请选择确认时间">
  263. </el-date-picker>
  264. </el-form-item>
  265. <el-form-item label="完成时间" prop="completedTime">
  266. <el-date-picker clearable
  267. v-model="form.completedTime"
  268. type="date"
  269. value-format="yyyy-MM-dd"
  270. placeholder="请选择完成时间">
  271. </el-date-picker>
  272. </el-form-item>
  273. <el-form-item label="取消时间" prop="cancelTime">
  274. <el-date-picker clearable
  275. v-model="form.cancelTime"
  276. type="date"
  277. value-format="yyyy-MM-dd"
  278. placeholder="请选择取消时间">
  279. </el-date-picker>
  280. </el-form-item>
  281. <el-form-item label="删除标志" prop="delFlag">
  282. <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
  283. </el-form-item>
  284. <el-form-item label="备注" prop="remark">
  285. <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
  286. </el-form-item>
  287. </el-form>
  288. <div slot="footer" class="dialog-footer">
  289. <el-button type="primary" @click="submitForm"> </el-button>
  290. <el-button @click="cancel"> </el-button>
  291. </div>
  292. </el-dialog>
  293. </div>
  294. </template>
  295. <script>
  296. import { listVacRegistration, getVacRegistration, delVacRegistration, addVacRegistration, updateVacRegistration } from "@/api/system/VacRegistration"
  297. export default {
  298. name: "VacRegistration",
  299. dicts: ['livestock_type', 'vaccine_registration_status'],
  300. data() {
  301. return {
  302. // 遮罩层
  303. loading: true,
  304. // 选中数组
  305. ids: [],
  306. // 非单个禁用
  307. single: true,
  308. // 非多个禁用
  309. multiple: true,
  310. // 显示搜索条件
  311. showSearch: true,
  312. // 总条数
  313. total: 0,
  314. // 疫苗预约表格数据
  315. VacRegistrationList: [],
  316. // 弹出层标题
  317. title: "",
  318. // 是否显示弹出层
  319. open: false,
  320. // 查询参数
  321. queryParams: {
  322. pageNum: 1,
  323. pageSize: 10,
  324. vaccineId: null,
  325. userId: null,
  326. livestockType: null,
  327. livestockCount: null,
  328. contactName: null,
  329. contactPhone: null,
  330. status: null,
  331. registrationTime: null,
  332. confirmedTime: null,
  333. completedTime: null,
  334. cancelTime: null,
  335. },
  336. // 表单参数
  337. form: {},
  338. // 表单校验
  339. rules: {
  340. vaccineId: [
  341. { required: true, message: "疫苗信息ID不能为空", trigger: "blur" }
  342. ],
  343. userId: [
  344. { required: true, message: "牧户用户ID不能为空", trigger: "blur" }
  345. ],
  346. livestockType: [
  347. { required: true, message: "牲畜类型不能为空", trigger: "change" }
  348. ],
  349. livestockCount: [
  350. { required: true, message: "牲畜数量不能为空", trigger: "blur" }
  351. ],
  352. contactName: [
  353. { required: true, message: "联系人姓名不能为空", trigger: "blur" }
  354. ],
  355. contactPhone: [
  356. { required: true, message: "联系电话不能为空", trigger: "blur" }
  357. ],
  358. status: [
  359. { required: true, message: "状态:1-待确认 2-已确认 3-已完成 4-已取消不能为空", trigger: "change" }
  360. ],
  361. registrationTime: [
  362. { required: true, message: "预约时间不能为空", trigger: "blur" }
  363. ],
  364. }
  365. }
  366. },
  367. created() {
  368. this.getList()
  369. },
  370. methods: {
  371. /** 查询疫苗预约列表 */
  372. getList() {
  373. this.loading = true
  374. listVacRegistration(this.queryParams).then(response => {
  375. this.VacRegistrationList = response.rows
  376. this.total = response.total
  377. this.loading = false
  378. })
  379. },
  380. // 取消按钮
  381. cancel() {
  382. this.open = false
  383. this.reset()
  384. },
  385. // 表单重置
  386. reset() {
  387. this.form = {
  388. id: null,
  389. vaccineId: null,
  390. userId: null,
  391. livestockType: null,
  392. livestockCount: null,
  393. contactName: null,
  394. contactPhone: null,
  395. status: null,
  396. registrationTime: null,
  397. confirmedTime: null,
  398. completedTime: null,
  399. cancelTime: null,
  400. delFlag: null,
  401. createBy: null,
  402. createTime: null,
  403. updateBy: null,
  404. updateTime: null,
  405. remark: null
  406. }
  407. this.resetForm("form")
  408. },
  409. /** 搜索按钮操作 */
  410. handleQuery() {
  411. this.queryParams.pageNum = 1
  412. this.getList()
  413. },
  414. /** 重置按钮操作 */
  415. resetQuery() {
  416. this.resetForm("queryForm")
  417. this.handleQuery()
  418. },
  419. // 多选框选中数据
  420. handleSelectionChange(selection) {
  421. this.ids = selection.map(item => item.id)
  422. this.single = selection.length!==1
  423. this.multiple = !selection.length
  424. },
  425. /** 新增按钮操作 */
  426. handleAdd() {
  427. this.reset()
  428. this.open = true
  429. this.title = "添加疫苗预约"
  430. },
  431. /** 修改按钮操作 */
  432. handleUpdate(row) {
  433. this.reset()
  434. const id = row.id || this.ids
  435. getVacRegistration(id).then(response => {
  436. this.form = response.data
  437. this.open = true
  438. this.title = "修改疫苗预约"
  439. })
  440. },
  441. /** 提交按钮 */
  442. submitForm() {
  443. this.$refs["form"].validate(valid => {
  444. if (valid) {
  445. if (this.form.id != null) {
  446. updateVacRegistration(this.form).then(response => {
  447. this.$modal.msgSuccess("修改成功")
  448. this.open = false
  449. this.getList()
  450. })
  451. } else {
  452. addVacRegistration(this.form).then(response => {
  453. this.$modal.msgSuccess("新增成功")
  454. this.open = false
  455. this.getList()
  456. })
  457. }
  458. }
  459. })
  460. },
  461. /** 删除按钮操作 */
  462. handleDelete(row) {
  463. const ids = row.id || this.ids
  464. this.$modal.confirm('是否确认删除疫苗预约编号为"' + ids + '"的数据项?').then(function() {
  465. return delVacRegistration(ids)
  466. }).then(() => {
  467. this.getList()
  468. this.$modal.msgSuccess("删除成功")
  469. }).catch(() => {})
  470. },
  471. /** 导出按钮操作 */
  472. handleExport() {
  473. this.download('system/VacRegistration/export', {
  474. ...this.queryParams
  475. }, `VacRegistration_${new Date().getTime()}.xlsx`)
  476. }
  477. }
  478. }
  479. </script>