SpaceModal.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <j-modal
  3. :title="title"
  4. :width="width"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. switchFullscreen
  8. @ok="handleOk"
  9. @cancel="handleCancel"
  10. cancelText="关闭">
  11. <a-spin :spinning="confirmLoading">
  12. <a-form-model ref="form" :model="model" :rules="validatorRules">
  13. <a-form-model-item label="区域名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
  14. <a-input v-model="model.name" placeholder="请输入区域名称" ></a-input>
  15. </a-form-model-item>
  16. <a-form-model-item label="选择上级" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="parentid">
  17. <j-tree-select
  18. ref="treeSelect"
  19. placeholder="请选择上级"
  20. v-model="model.parentid"
  21. dict="ems_space,name,id"
  22. pidField="parentid"
  23. pidValue="0"
  24. hasChildField="has_child"
  25. >
  26. </j-tree-select>
  27. </a-form-model-item>
  28. <!-- <a-form-model-item label="编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="serialnum">
  29. <a-input v-model="model.serialnum" placeholder="请输入编号" ></a-input>
  30. </a-form-model-item>
  31. <a-form-model-item label="类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="spacetype">
  32. <a-input v-model="model.spacetype" placeholder="请输入类型" ></a-input>
  33. </a-form-model-item>
  34. <a-form-model-item label="管理单位/部门" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="deptid">
  35. <a-input v-model="model.deptid" placeholder="请输入管理单位/部门" ></a-input>
  36. </a-form-model-item>
  37. <a-form-model-item label="建筑面积(平方米)" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="builtarea">
  38. <a-input-number v-model="model.builtarea" placeholder="请输入建筑面积(平方米)" style="width: 100%" />
  39. </a-form-model-item>
  40. <a-form-model-item label="空调系统" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="aircondsys">
  41. <a-input v-model="model.aircondsys" placeholder="请输入空调系统" ></a-input>
  42. </a-form-model-item>
  43. <a-form-model-item label="采暖系统" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="heatsys">
  44. <a-input v-model="model.heatsys" placeholder="请输入采暖系统" ></a-input>
  45. </a-form-model-item>
  46. <a-form-model-item label="空调面积" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="aircondarea">
  47. <a-input-number v-model="model.aircondarea" placeholder="请输入空调面积" style="width: 100%" />
  48. </a-form-model-item>
  49. <a-form-model-item label="采暖面积" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="heatarea">
  50. <a-input-number v-model="model.heatarea" placeholder="请输入采暖面积" style="width: 100%" />
  51. </a-form-model-item> -->
  52. </a-form-model>
  53. </a-spin>
  54. </j-modal>
  55. </template>
  56. <script>
  57. import { httpAction } from '@/api/manage'
  58. import { validateDuplicateValue } from '@/utils/util'
  59. export default {
  60. name: "BaseSpaceModal",
  61. components: {
  62. },
  63. data () {
  64. return {
  65. title:"操作",
  66. width:800,
  67. visible: false,
  68. model:{
  69. },
  70. labelCol: {
  71. xs: { span: 24 },
  72. sm: { span: 5 },
  73. },
  74. wrapperCol: {
  75. xs: { span: 24 },
  76. sm: { span: 16 },
  77. },
  78. confirmLoading: false,
  79. validatorRules: {
  80. name: [
  81. { required: true, message: '请输入区域名称!'},
  82. ],
  83. },
  84. url: {
  85. add: "/space/space/add",
  86. edit: "/space/space/edit",
  87. },
  88. expandedRowKeys:[],
  89. pidField:"parentid"
  90. }
  91. },
  92. created () {
  93. //备份model原始值
  94. this.modelDefault = JSON.parse(JSON.stringify(this.model));
  95. },
  96. methods: {
  97. add (obj) {
  98. this.modelDefault.parentid=''
  99. this.edit(Object.assign(this.modelDefault , obj));
  100. },
  101. edit (record) {
  102. this.model = Object.assign({}, record);
  103. this.visible = true;
  104. },
  105. close () {
  106. this.$emit('close');
  107. this.visible = false;
  108. this.$refs.form.clearValidate()
  109. },
  110. handleOk () {
  111. const that = this;
  112. // 触发表单验证
  113. this.$refs.form.validate(valid => {
  114. if (valid) {
  115. that.confirmLoading = true;
  116. let httpurl = '';
  117. let method = '';
  118. if(!this.model.id){
  119. httpurl+=this.url.add;
  120. method = 'post';
  121. }else{
  122. httpurl+=this.url.edit;
  123. method = 'put';
  124. }
  125. if(this.model.id && this.model.id === this.model[this.pidField]){
  126. that.$message.warning("父级节点不能选择自己");
  127. that.confirmLoading = false;
  128. return;
  129. }
  130. httpAction(httpurl,this.model,method).then((res)=>{
  131. if(res.success){
  132. that.$message.success(res.message);
  133. this.$emit('ok');
  134. }else{
  135. that.$message.warning(res.message);
  136. }
  137. }).finally(() => {
  138. that.confirmLoading = false;
  139. that.close();
  140. })
  141. }else{
  142. return false
  143. }
  144. })
  145. },
  146. handleCancel () {
  147. this.close()
  148. },
  149. submitSuccess(formData,flag){
  150. if(!formData.id){
  151. let treeData = this.$refs.treeSelect.getCurrTreeData()
  152. this.expandedRowKeys=[]
  153. this.getExpandKeysByPid(formData[this.pidField],treeData,treeData)
  154. this.$emit('ok',formData,this.expandedRowKeys.reverse());
  155. }else{
  156. this.$emit('ok',formData,flag);
  157. }
  158. },
  159. getExpandKeysByPid(pid,arr,all){
  160. if(pid && arr && arr.length>0){
  161. for(let i=0;i<arr.length;i++){
  162. if(arr[i].key==pid){
  163. this.expandedRowKeys.push(arr[i].key)
  164. this.getExpandKeysByPid(arr[i]['parentId'],all,all)
  165. }else{
  166. this.getExpandKeysByPid(pid,arr[i].children,all)
  167. }
  168. }
  169. }
  170. }
  171. }
  172. }
  173. </script>