punchLocation-detail.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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 ref="form" :model="formModel" :rules="ruleValidate" :label-width="'100px'">
  17. <el-form-item label="学校" prop="companyId">
  18. <el-select-tree
  19. size="mini"
  20. :props="props"
  21. :options="companyResult"
  22. v-model="formModel.companyId"
  23. height="200"
  24. ></el-select-tree>
  25. </el-form-item>
  26. <el-form-item label="打卡点名称" prop="name">
  27. <el-input v-model="formModel.name" placeholder="请输入打卡点名称" style="width:300px"></el-input>
  28. </el-form-item>
  29. <el-form-item label="备注描述" prop="remark">
  30. <el-input v-model="formModel.remark" placeholder="请输入备注描述" style="width:300px"></el-input>
  31. </el-form-item>
  32. </el-form>
  33. </div>
  34. <span slot="footer" class="dialog-footer">
  35. <el-button @click="closeDialog">取 消</el-button>
  36. <el-button type="primary" @click="handleSubmit" :loading="submitting">确 定</el-button>
  37. </span>
  38. </el-dialog>
  39. </template>
  40. <script>
  41. import Constant from "@/constant";
  42. import punchLocationApi from "@/api/base/punchLocation";
  43. import companyInfoApi from "@/api/base/companyInfo";
  44. import SelectTree from "@/components/SelectTree";
  45. export default {
  46. props: ["businessKey", "title"],
  47. data() {
  48. return {
  49. formModel: {},
  50. ruleValidate: {
  51. companyId: [{ required: true, message: "请选择学校", trigger: "blur" }],
  52. name: [
  53. { required: true, message: "打卡点名称不能为空", trigger: "blur" }
  54. ]
  55. },
  56. showDialog: true,
  57. loading: false,
  58. submitting: false,
  59. companyResult: [],
  60. treeData: [],
  61. props: {
  62. // 配置项(必选)
  63. value: "id",
  64. label: "name",
  65. children: "children"
  66. }
  67. };
  68. },
  69. created() {
  70. var self = this;
  71. companyInfoApi.list().then(function(response) {
  72. var jsonData = response.data;
  73. if (jsonData.result) {
  74. if (jsonData.data != null && jsonData.data != "") {
  75. self.companyResult = jsonData.data;
  76. }
  77. }
  78. });
  79. },
  80. methods: {
  81. getSelectedValue(value) {
  82. this.formModel.companyId = value;
  83. },
  84. loadTree() {
  85. var formData = new FormData();
  86. companyInfoApi.loadChildren(formData).then(resp => {
  87. var jsonData = resp.data;
  88. if (jsonData.result) {
  89. this.treeData = jsonData.data;
  90. } else {
  91. this.$message.error(jsonData.message + "");
  92. }
  93. });
  94. },
  95. loadChildren(tree, treeNode, resolve) {
  96. var formData = new FormData();
  97. formData.append("parentId", tree.id);
  98. companyInfoApi.loadChildren(formData).then(resp => {
  99. var jsonData = resp.data;
  100. if (jsonData.result) {
  101. resolve(jsonData.data);
  102. } else {
  103. this.$message.error(jsonData.message + "");
  104. }
  105. });
  106. },
  107. closeDialog() {
  108. this.$emit("close", false);
  109. },
  110. handleSubmit() {
  111. var self = this;
  112. this.$refs["form"].validate(valid => {
  113. if (valid) {
  114. (function() {
  115. var id = self.formModel.id;
  116. if (id == null || id.length == 0) {
  117. return punchLocationApi.add(self.formModel);
  118. } else {
  119. return punchLocationApi.update(self.formModel);
  120. }
  121. })().then(function(response) {
  122. var jsonData = response.data;
  123. if (jsonData.result) {
  124. self.$message({
  125. message: "保存成功!",
  126. type: "success"
  127. });
  128. self.$emit("close", true);
  129. } else {
  130. self.$message({
  131. message: jsonData.message + "",
  132. type: "warning"
  133. });
  134. self.$emit("close", false);
  135. }
  136. });
  137. }
  138. });
  139. }
  140. },
  141. mounted: function() {
  142. var self = this;
  143. (function() {
  144. if (self.businessKey.length == 0) {
  145. return punchLocationApi.create();
  146. } else {
  147. return punchLocationApi.edit(self.businessKey);
  148. }
  149. })()
  150. .then(response => {
  151. var jsonData = response.data;
  152. self.loading = false;
  153. if (jsonData.result) {
  154. self.formModel = jsonData.data;
  155. var isEnable = self.formModel.isEnable;
  156. if (isEnable != "") {
  157. self.formModel.isEnable = true;
  158. }
  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>