CheckAndEditModel.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  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="startMarker">
  52. <a-input-number style="width: 100%" v-model="model.startMarker" />
  53. </a-form-model-item>
  54. <a-form-model-item label="结束公里标" prop="endMarker">
  55. <a-input-number style="width: 100%" v-model="model.endMarker" />
  56. </a-form-model-item>
  57. <a-form-model-item label="数量(课)" prop="count">
  58. <a-input v-model="model.count" />
  59. </a-form-model-item>
  60. <a-form-model-item label="距导线水平距离(米)" prop="distanceHorizontal">
  61. <a-input v-model="model.distanceHorizontal" />
  62. </a-form-model-item>
  63. <a-form-model-item label="距导线垂直距离(米)" prop="distanceVertical">
  64. <a-input v-model="model.distanceVertical" />
  65. </a-form-model-item>
  66. <a-form-model-item label="树种" prop="kind">
  67. <a-input v-model="model.kind" />
  68. </a-form-model-item>
  69. <a-form-model-item label="严重程度" prop="severity">
  70. <a-input v-model="model.severity" />
  71. </a-form-model-item>
  72. <a-form-model-item label=" 产权(林场、个人)" prop="propertyRights">
  73. <a-input v-model="model.propertyRights" />
  74. </a-form-model-item>
  75. <a-form-model-item label="调查人" prop="inquirer">
  76. <a-input v-model="model.inquirer" />
  77. </a-form-model-item>
  78. <a-form-model-item label="备注" prop="remark">
  79. <a-textarea :maxLength="300" :rows="4" v-model="model.remark" />
  80. </a-form-model-item>
  81. </a-form-model>
  82. </j-modal>
  83. </template>
  84. <script>
  85. import { getAction, httpAction } from '@/api/request'
  86. import JModal from '@/components/JModal'
  87. export default {
  88. name: 'CheckAndEditModel',
  89. components: {
  90. JModal
  91. },
  92. data() {
  93. return {
  94. stationShow: false,
  95. lineShow: false,
  96. treeData: [],
  97. labelCol: { span: 7 },
  98. wrapperCol: { span: 16 },
  99. dataSource: [],
  100. title: '',
  101. visible: false,
  102. isCheck: false,
  103. model: {},
  104. validatorRules: {
  105. deptId: [{ required: true, message: '请选择' }],
  106. lineId: [{ required: true, message: '请选择' }],
  107. stationId: [{ required: true, message: '请选择' }],
  108. xingbie: [{ required: true, message: '请选择' }],
  109. pillarCode: [{ required: true, message: '请输入' }],
  110. startMarker: [{ required: true, message: '请输入' }],
  111. endMarker: [{ required: true, message: '请输入' }],
  112. count: [{ required: true, message: '请输入' }],
  113. displayNum: [{ required: true, message: '请输入' }],
  114. distanceHorizontal: [{ required: true, message: '请输入' }],
  115. distanceVertical: [{ required: true, message: '请输入' }],
  116. kind: [{ required: true, message: '请输入' }],
  117. severity: [{ required: true, message: '请输入' }],
  118. propertyRights: [{ required: true, message: '请输入' }],
  119. inquirer: [{ required: true, message: '请输入' }],
  120. remark: [{ required: true, message: '请输入' }]
  121. },
  122. url: {
  123. add: '/business/baseinfo/base/prevent/tree/add',
  124. edit: '/business/baseinfo/base/prevent/tree/update',
  125. tree: '/system/dept/treeSelect'
  126. }
  127. }
  128. },
  129. created() {
  130. this.loadTree()
  131. },
  132. watch: {
  133. 'model.deptId': {
  134. immediate: true,
  135. handler: function(newV, oldV) {
  136. this.lineShow = false
  137. this.$nextTick(() => {
  138. this.lineShow = true
  139. })
  140. }
  141. },
  142. 'model.lineId': {
  143. immediate: true,
  144. handler: function(newV, oldV) {
  145. this.stationShow = false
  146. this.$nextTick(() => {
  147. this.stationShow = true
  148. })
  149. }
  150. }
  151. },
  152. methods: {
  153. lineChange() {
  154. this.model.stationId = undefined
  155. },
  156. deptChange() {
  157. this.model.lineId = undefined
  158. this.model.stationId = undefined
  159. },
  160. loadTree() {
  161. this.treeData = []
  162. getAction(this.url.tree).then((res) => {
  163. if (res.code === 200) {
  164. this.treeData = res.data
  165. }
  166. })
  167. },
  168. add() {
  169. this.model = { lineId: null, stationId: null }
  170. this.visible = true
  171. },
  172. edit(record) {
  173. this.model = Object.assign({}, record)
  174. this.visible = true
  175. },
  176. close(isSubmit) {
  177. if (isSubmit) {
  178. this.checkData()
  179. } else {
  180. this.visible = false
  181. }
  182. },
  183. checkData() {
  184. this.$refs.form.validate(valid => {
  185. if (valid) {
  186. this.saveData()
  187. } else {
  188. return false
  189. }
  190. })
  191. },
  192. saveData() {
  193. let url, type
  194. if (!this.model.id) {
  195. url = this.url.add
  196. type = 'post'
  197. } else {
  198. url = this.url.edit
  199. type = 'put'
  200. }
  201. httpAction(url, this.model, type).then((res) => {
  202. if (res.code === 200) {
  203. this.$message.success(res.msg)
  204. this.$emit('ok')
  205. this.visible = false
  206. } else {
  207. console.log(res)
  208. }
  209. })
  210. }
  211. }
  212. }
  213. </script>