CheckAndEditModel.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <template>
  2. <j-modal
  3. :title="title"
  4. :width="700"
  5. :visible="visible"
  6. :mask-closable="false"
  7. cancel-text="关闭"
  8. @close="close"
  9. >
  10. <a-form-model ref="form" :label-col="labelCol" :wrapper-col="wrapperCol" :rules="validatorRules" :model="model">
  11. <a-form-model-item label="车间" prop="deptId">
  12. <a-tree-select
  13. v-model="model.deptId"
  14. :show-search="true"
  15. allow-clear
  16. tree-default-expand-all
  17. style="width: 100%"
  18. :tree-data="treeData"
  19. tree-node-filter-prop="label"
  20. :replace-fields="{children:'children', title:'label', key:'id', value: 'id' }"
  21. @change="deptChange"
  22. />
  23. </a-form-model-item>
  24. <a-form-model-item label="线路" prop="lineId">
  25. <j-list-select-tag
  26. v-if="lineShow"
  27. v-model="model.lineId"
  28. :dept-id="model.deptId"
  29. dict-code="line"
  30. @selectChange="lineChange"
  31. />
  32. </a-form-model-item>
  33. <a-form-model-item label="站场区间" prop="stationId">
  34. <j-list-select-tag
  35. v-if="stationShow"
  36. v-model="model.stationId"
  37. :line-id="model.lineId"
  38. dict-code="station"
  39. />
  40. </a-form-model-item>
  41. <a-form-model-item label="行别" prop="xingbie">
  42. <j-dict-select-tag
  43. v-model="model.xingbie"
  44. type="radioButton"
  45. dict-code="xingbie"
  46. />
  47. </a-form-model-item>
  48. <a-form-model-item label="支柱号" prop="pillarCode">
  49. <a-input v-model="model.pillarCode" />
  50. </a-form-model-item>
  51. <a-form-model-item label="公里标" prop="marker">
  52. <a-input v-model="model.marker" />
  53. </a-form-model-item>
  54. <a-form-model-item label="风险源" prop="riskSource">
  55. <a-input v-model="model.riskSource" />
  56. </a-form-model-item>
  57. <a-form-model-item label="采取措施" prop="measures">
  58. <a-textarea :maxLength="300" :rows="4" v-model="model.measures" />
  59. </a-form-model-item>
  60. </a-form-model>
  61. </j-modal>
  62. </template>
  63. <script>
  64. import { getAction, httpAction } from '@/api/request'
  65. import JModal from '@/components/JModal'
  66. export default {
  67. name: 'CheckAndEditModel',
  68. components: {
  69. JModal
  70. },
  71. data() {
  72. return {
  73. stationShow: false,
  74. lineShow: false,
  75. treeData: [],
  76. labelCol: { span: 4 },
  77. wrapperCol: { span: 19 },
  78. dataSource: [],
  79. title: '',
  80. visible: false,
  81. isCheck: false,
  82. model: {},
  83. validatorRules: {
  84. deptId: [{ required: true, message: '请选择' }],
  85. lineId: [{ required: true, message: '请选择' }],
  86. stationId: [{ required: true, message: '请选择' }],
  87. xingbie: [{ required: true, message: '请选择' }],
  88. pillarCode: [{ required: true, message: '请输入' }],
  89. marker: [{ required: true, message: '请输入' }],
  90. riskSource: [{ required: true, message: '请输入' }],
  91. measures: [{ required: true, message: '请输入' }]
  92. },
  93. url: {
  94. add: '/business/baseinfo/base/prevent/foreign/add',
  95. edit: '/business/baseinfo/base/prevent/foreign/update',
  96. tree: '/system/dept/treeSelect'
  97. }
  98. }
  99. },
  100. created() {
  101. this.loadTree()
  102. },
  103. watch: {
  104. 'model.deptId': {
  105. immediate: true,
  106. handler: function(newV, oldV) {
  107. this.lineShow = false
  108. this.$nextTick(() => {
  109. this.lineShow = true
  110. })
  111. }
  112. },
  113. 'model.lineId': {
  114. immediate: true,
  115. handler: function(newV, oldV) {
  116. this.stationShow = false
  117. this.$nextTick(() => {
  118. this.stationShow = true
  119. })
  120. }
  121. }
  122. },
  123. methods: {
  124. lineChange() {
  125. this.model.stationId = undefined
  126. },
  127. deptChange() {
  128. this.model.lineId = undefined
  129. this.model.stationId = undefined
  130. },
  131. loadTree() {
  132. this.treeData = []
  133. getAction(this.url.tree).then((res) => {
  134. if (res.code === 200) {
  135. this.treeData = res.data
  136. }
  137. })
  138. },
  139. add() {
  140. this.model = { lineId: null, stationId: null }
  141. this.visible = true
  142. },
  143. edit(record) {
  144. this.model = Object.assign({}, record)
  145. this.visible = true
  146. },
  147. close(isSubmit) {
  148. if (isSubmit) {
  149. this.checkData()
  150. } else {
  151. this.visible = false
  152. }
  153. },
  154. checkData() {
  155. this.$refs.form.validate(valid => {
  156. if (valid) {
  157. this.saveData()
  158. } else {
  159. return false
  160. }
  161. })
  162. },
  163. saveData() {
  164. let url, type
  165. if (!this.model.id) {
  166. url = this.url.add
  167. type = 'post'
  168. } else {
  169. url = this.url.edit
  170. type = 'put'
  171. }
  172. httpAction(url, this.model, type).then((res) => {
  173. if (res.code === 200) {
  174. this.$message.success(res.msg)
  175. this.$emit('ok')
  176. this.visible = false
  177. } else {
  178. console.log(res)
  179. }
  180. })
  181. }
  182. }
  183. }
  184. </script>