parkingInfo-detail.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <style scoped>
  2. .user-panel {
  3. margin: 10px auto;
  4. }
  5. </style>
  6. <template>
  7. <el-dialog
  8. :visible.sync="showDialog"
  9. :title="title"
  10. :modal-append-to-body="false"
  11. style="text-align: left"
  12. @close="closeDialog"
  13. :close-on-click-modal="false"
  14. >
  15. <div class="user-panel" v-loading="loading">
  16. <el-form
  17. ref="form"
  18. :model="formModel"
  19. :rules="ruleValidate"
  20. :label-width="'100px'"
  21. >
  22. <el-form-item label="名称" prop="parkingName">
  23. <el-input
  24. v-model="formModel.parkingName"
  25. placeholder="请输入名称"
  26. style="width: 300px"
  27. ></el-input>
  28. </el-form-item>
  29. <el-form-item label="停车场编号" prop="parkId">
  30. <el-input
  31. v-model="formModel.parkId"
  32. placeholder="请输入停车场编号"
  33. style="width: 300px"
  34. ></el-input>
  35. </el-form-item>
  36. <el-form-item label="上级" prop="parentId">
  37. <el-select-tree
  38. size="mini"
  39. :props="parentProps"
  40. :options="parentResult"
  41. v-model="formModel.parentId"
  42. height="200"
  43. ></el-select-tree>
  44. </el-form-item>
  45. <el-form-item label="所属公司" prop="companyId">
  46. <el-select-tree
  47. :props="props"
  48. :options="companyResult"
  49. v-model="formModel.companyId"
  50. height="200"
  51. style="width: 230px"
  52. ></el-select-tree>
  53. </el-form-item>
  54. </el-form>
  55. </div>
  56. <span slot="footer" class="dialog-footer">
  57. <el-button @click="closeDialog">取 消</el-button>
  58. <el-button type="primary" @click="handleSubmit" :loading="submitting"
  59. >确 定</el-button
  60. >
  61. </span>
  62. </el-dialog>
  63. </template>
  64. <script>
  65. import Constant from "@/constant";
  66. import parkingInfoApi from "@/api/base/parkingInfo";
  67. import SelectTree from "@/components/SelectTree";
  68. import companyInfoApi from "@/api/base/companyInfo";
  69. export default {
  70. props: ["businessKey", "title"],
  71. data() {
  72. return {
  73. formModel: {},
  74. ruleValidate: {
  75. parkingName: [
  76. { required: true, message: "名称不能为空", trigger: "blur" },
  77. ],
  78. parkId: [
  79. { required: true, message: "停车场编号不能为空", trigger: "blur" },
  80. ],
  81. },
  82. showDialog: true,
  83. loading: false,
  84. submitting: false,
  85. parentResult: [],
  86. parentProps: {
  87. value: "id",
  88. label: "parkingName",
  89. },
  90. companyResult: [],
  91. };
  92. },
  93. created() {
  94. var self = this;
  95. parkingInfoApi.query().then(function (response) {
  96. var jsonData = response.data;
  97. if (jsonData.result) {
  98. self.parentResult = jsonData.data;
  99. }
  100. });
  101. companyInfoApi.treeList().then(function (response) {
  102. var jsonData = response.data;
  103. if (jsonData.result) {
  104. if (jsonData.data != null && jsonData.data != "") {
  105. self.companyResult = jsonData.data;
  106. }
  107. }
  108. });
  109. },
  110. methods: {
  111. closeDialog() {
  112. this.$emit("close", false);
  113. },
  114. handleSubmit() {
  115. var self = this;
  116. this.$refs["form"].validate((valid) => {
  117. if (valid) {
  118. (function () {
  119. var id = self.formModel.id;
  120. if (id == null || id.length == 0) {
  121. return parkingInfoApi.add(self.formModel);
  122. } else {
  123. return parkingInfoApi.update(self.formModel);
  124. }
  125. })().then(function (response) {
  126. var jsonData = response.data;
  127. if (jsonData.result) {
  128. self.$message({
  129. message: "保存成功!",
  130. type: "success",
  131. });
  132. self.$emit("close", true);
  133. } else {
  134. self.$message({
  135. message: jsonData.message + "",
  136. type: "warning",
  137. });
  138. self.$emit("close", false);
  139. }
  140. });
  141. }
  142. });
  143. },
  144. },
  145. mounted: function () {
  146. var self = this;
  147. (function () {
  148. if (self.businessKey.length == 0) {
  149. return parkingInfoApi.create();
  150. } else {
  151. return parkingInfoApi.edit(self.businessKey);
  152. }
  153. })()
  154. .then((response) => {
  155. var jsonData = response.data;
  156. self.loading = false;
  157. if (jsonData.result) {
  158. self.formModel = jsonData.data;
  159. } else {
  160. self.$message.error(jsonData.message + "");
  161. }
  162. })
  163. .catch((error) => {
  164. self.$message.error(error + "");
  165. });
  166. },
  167. components: {
  168. "el-select-tree": SelectTree,
  169. },
  170. };
  171. </script>