templateDepartment-edit.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. <template>
  2. <el-dialog
  3. :visible.sync="showModal"
  4. :title="modalTitle"
  5. :modal-append-to-body="true"
  6. style="text-align:left;"
  7. :close-on-click-modal="true"
  8. @close="closeDialog"
  9. :append-to-body="true"
  10. >
  11. <div class="user-panel" v-loading="loading">
  12. <el-form
  13. ref="form"
  14. :model="formModel"
  15. :rules="ruleValidate"
  16. :label-width="'100px'"
  17. :inline="true"
  18. >
  19. <el-form-item label="预算收入" prop="budgetRevenue">
  20. <el-input-number v-model="formModel.budgetRevenue" placeholder="请输入预算收入" style="width: 300px"></el-input-number>
  21. </el-form-item>
  22. <el-form-item label="收入时间区间" prop="incomeTimeRangeArr">
  23. <el-date-picker
  24. style="width: 300px"
  25. v-model="formModel.incomeTimeRangeArr"
  26. type="monthrange"
  27. range-separator="至"
  28. start-placeholder="开始月份"
  29. end-placeholder="结束月份"
  30. value-format='yyyy-MM'
  31. format='yyyy-MM'
  32. >
  33. </el-date-picker>
  34. </el-form-item>
  35. <el-form-item label="收入类型" prop="incomeType">
  36. <el-select v-model="formModel.incomeType" clearable placeholder="请选择" style="width: 300px" >
  37. <el-option
  38. v-for="item in typeList"
  39. :key="item.value"
  40. :label="item.name"
  41. :value="item.value">
  42. </el-option>
  43. </el-select>
  44. </el-form-item>
  45. <el-form-item label="终止日" prop="endDate">
  46. <el-date-picker
  47. style="width: 300px"
  48. v-model="formModel.endDate"
  49. type="date"
  50. placeholder="选择日期"
  51. value-format='yyyy-MM-dd'
  52. format='yyyy-MM-dd'>
  53. </el-date-picker>
  54. </el-form-item>
  55. </el-form>
  56. </div>
  57. <span slot="footer" class="dialog-footer">
  58. <el-button @click="closeDialog">取 消</el-button>
  59. <el-button type="primary" @click="handleSubmit" :loading="submitting"
  60. >保 存</el-button
  61. >
  62. </span>
  63. </el-dialog>
  64. </template>
  65. <script>
  66. import Constant from "@/constant";
  67. import { getToken } from "@/utils/auth"; // get token from cookie
  68. import templateOptionApi from "@/api/base/templateOption";
  69. export default {
  70. props: ["businessKey2", "modalTitle"],
  71. data() {
  72. return {
  73. showPwd: true,
  74. ruleValidate: {
  75. title: [
  76. { required: true, message: "标题不能为空", trigger: "blur" },
  77. ],
  78. },
  79. roleList: [],
  80. formModel: {},
  81. showDialog: true,
  82. loading: false,
  83. submitting: false,
  84. typeList:[
  85. {
  86. "name":"按月",
  87. "value":"1"
  88. },
  89. {
  90. "name":"按年",
  91. "value":"2"
  92. },
  93. {
  94. "name":"按季",
  95. "value":"3"
  96. },
  97. {
  98. "name":"按学期",
  99. "value":"4"
  100. },
  101. ],
  102. };
  103. },
  104. created() {
  105. },
  106. methods: {
  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. return templateOptionApi.updateItem(self.formModel);
  117. })().then(function (response) {
  118. var jsonData = response.data;
  119. if (jsonData.result) {
  120. self.$message({
  121. message: "保存成功!",
  122. type: "success",
  123. });
  124. self.$emit("close", true);
  125. } else {
  126. self.$message({
  127. message: jsonData.message + "",
  128. type: "warning",
  129. });
  130. self.$emit("close", false);
  131. }
  132. });
  133. }
  134. });
  135. },
  136. handleAvatarSuccess(res, file) {
  137. var self = this;
  138. self.formModel.photo = res.data;
  139. self.fileUrl =
  140. res.data + "?x-oss-process=image/resize,m_lfit,h_300,w_300";
  141. },
  142. beforeAvatarUpload(file) {
  143. const isLt2M = file.size / 1024 / 1024 < 2;
  144. if (!isLt2M) {
  145. this.$message.error('上传头像图片大小不能超过 2MB!');
  146. }
  147. return isLt2M;
  148. }
  149. },
  150. async mounted() {
  151. var self = this;
  152. self.loading = true;
  153. (function () {
  154. return templateOptionApi.departmentDetailEdit(self.businessKey2);
  155. })()
  156. .then((response) => {
  157. var jsonData = response.data;
  158. if (jsonData.result) {
  159. self.formModel = jsonData.data;
  160. self.showModal = true;
  161. } else {
  162. self.$message.error(jsonData.message + "");
  163. }
  164. self.loading = false;
  165. })
  166. .catch((error) => {
  167. self.$message.error(error + "");
  168. self.loading = false;
  169. });
  170. },
  171. components: {
  172. },
  173. };
  174. </script>
  175. <style scoped>
  176. .user-panel {
  177. margin: 10px auto;
  178. }
  179. .avatar-uploader .el-upload {
  180. border: 1px dashed #d9d9d9;
  181. border-radius: 6px;
  182. cursor: pointer;
  183. position: relative;
  184. overflow: hidden;
  185. }
  186. .avatar-uploader .el-upload:hover {
  187. border-color: #409EFF;
  188. }
  189. .avatar-uploader-icon {
  190. font-size: 28px;
  191. color: #8c939d;
  192. width: 178px;
  193. height: 178px;
  194. line-height: 178px;
  195. text-align: center;
  196. }
  197. .avatar {
  198. width: 178px;
  199. height: 178px;
  200. display: block;
  201. }
  202. </style>