authorityAppAdd.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <!--
  2. * @Author: your name
  3. * @Date: 2021-11-29 09:18:04
  4. * @LastEditTime: 2022-02-28 10:52:56
  5. * @LastEditors: Please set LastEditors
  6. * @Description: 新增/编辑应用
  7. * @FilePath: \Foshan4A2.0\src\views\authorityManagement\components\addApp.vue
  8. -->
  9. <template>
  10. <div class="addApp flex-wrap">
  11. <!--新增应用-->
  12. <div class="addApp-form r24">
  13. <div class="addApp-form-title flex">
  14. <div class="manageTitle">新增应用</div>
  15. <div class="btn">
  16. <el-button size="small" @click="onSubmit('form')" type="primary">保存</el-button>
  17. </div>
  18. </div>
  19. <div class="addApp-form-content dialog-public-background">
  20. <el-form ref="form" class="form" :rules="rules" :model="form">
  21. <el-form-item prop="name" label="应用名称">
  22. <el-input placeholder="请输入应用名称" maxlength="32" v-model="form.name"></el-input>
  23. </el-form-item>
  24. <el-form-item class="url" prop="url" label="应用地址">
  25. <el-input placeholder="请输入应用地址" maxlength="200" v-model="form.url"></el-input>
  26. </el-form-item>
  27. <el-form-item class="content" prop="content" label="描述">
  28. <el-input type="textarea" maxlength="200" rows="3" placeholder="请输入描述" v-model="form.content"></el-input>
  29. </el-form-item>
  30. </el-form>
  31. </div>
  32. </div>
  33. <!--上传logo-->
  34. <div class="addApp-upload">
  35. <div class="flex">
  36. <div class="upload">
  37. <div class="title">上传Logo</div>
  38. <el-upload action="https://jsonplaceholder.typicode.com/posts/" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove">
  39. <i class="el-icon-plus"></i>
  40. </el-upload>
  41. </div>
  42. <div class="preview">
  43. <div class="title">预览</div>
  44. <div class="box"></div>
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. </template>
  50. <script>
  51. import { SaveApp } from "@/api/apiAuthority";
  52. export default {
  53. name: "Addapp",
  54. data () {
  55. return {
  56. form: {
  57. //应用表单
  58. name: "",
  59. id: "",
  60. app: "",
  61. url: "",
  62. content: "",
  63. },
  64. rules: {
  65. //表单验证
  66. name: [{ required: true, message: "请输入应用名称", trigger: "blur" }],
  67. content: [{ required: true, message: "请输入描述", trigger: "blur" }],
  68. },
  69. radio: "1",
  70. type: null, //参数类型
  71. dialogImageUrl: "",
  72. dialogVisible: false,
  73. };
  74. },
  75. methods: {
  76. handleRemove (file, fileList) {
  77. //
  78. },
  79. handlePictureCardPreview (file) {
  80. this.dialogImageUrl = file.url;
  81. this.dialogVisible = true;
  82. },
  83. // 新增应用
  84. async saveApp () {
  85. try {
  86. const res = await SaveApp({
  87. AppName: this.form.name,
  88. AppDesc: this.form.content,
  89. AppUrl: this.form.url,
  90. });
  91. if (res.code === 0) {
  92. this.$message.success(res.message);
  93. this.$store.dispatch("tagsView/delView", this.$route);
  94. this.$router.push("/authority");
  95. } else {
  96. this.$message.error(res.message);
  97. }
  98. } catch (error) {
  99. this.$message.error("失败");
  100. }
  101. },
  102. /**
  103. * @description: 提交
  104. * @param {*}
  105. * @return {*}
  106. */
  107. onSubmit (formName) {
  108. this.$refs[formName].validate((valid) => {
  109. if (valid) {
  110. this.saveApp();
  111. } else {
  112. return false;
  113. }
  114. });
  115. },
  116. },
  117. };
  118. </script>
  119. <style lang="scss" scoped>
  120. .addApp {
  121. padding: 24px;
  122. .addApp-form {
  123. flex: 1;
  124. background: #ffffff;
  125. border-radius: 4px;
  126. padding: 30px 68px 32px 24px;
  127. .title {
  128. font-size: 24px;
  129. font-family: Microsoft YaHei;
  130. font-weight: bold;
  131. color: #303133;
  132. .isqy {
  133. span {
  134. font-weight: 400;
  135. font-size: 14px;
  136. margin: 0 28px 0 42px;
  137. }
  138. }
  139. }
  140. .addApp-form-title {
  141. line-height: 32px;
  142. }
  143. .addApp-form-content {
  144. margin-top: 40px;
  145. ::v-deep .form {
  146. .el-form-item {
  147. display: flex;
  148. }
  149. .el-input__inner {
  150. height: 32px;
  151. line-height: 32px;
  152. }
  153. .url {
  154. margin-left: 10px;
  155. .el-form-item__content {
  156. width: calc(100% - 70px);
  157. }
  158. }
  159. .content {
  160. .el-form-item__content {
  161. flex: 1;
  162. }
  163. .el-form-item__label {
  164. margin-left: 10px;
  165. }
  166. }
  167. textarea {
  168. resize: none;
  169. }
  170. }
  171. }
  172. }
  173. .addApp-upload {
  174. width: 425px;
  175. background: #ffffff;
  176. border-radius: 4px;
  177. padding: 32px 32px 40px 32px;
  178. .title {
  179. font-size: 24px;
  180. font-family: Microsoft YaHei;
  181. font-weight: bold;
  182. color: #303133;
  183. margin-bottom: 22px;
  184. }
  185. ::v-deep .el-upload--picture-card {
  186. height: 160px;
  187. line-height: 160px;
  188. width: 160px;
  189. background: #f5f7fa;
  190. border: 1px dashed #2d67e3;
  191. border-radius: 4px;
  192. .el-icon-plus {
  193. font-size: 51px;
  194. color: #2d67e3;
  195. }
  196. }
  197. .preview {
  198. .box {
  199. width: 160px;
  200. height: 160px;
  201. background: #3b3c3d;
  202. border-radius: 4px;
  203. }
  204. }
  205. }
  206. }
  207. </style>