add-form.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. <!--
  2. 新增服务资源
  3. @Author: linqian
  4. @Date: 2021-05-17 15:07
  5. -->
  6. <template>
  7. <dg-row>
  8. <el-form ref="form" :model="form" :rules="rules" label-width="180px" v-if="show">
  9. <dg-col :span="12">
  10. <el-form-item label="服务资源标识符:" prop="serviceCode">
  11. <el-input
  12. v-model="form.serviceCode"
  13. placeholder="请输入服务资源标识符"
  14. :disabled="form.id !== null && form.id !== undefined"
  15. v-if="!isDetail"
  16. ></el-input>
  17. <span v-else>{{ form.serviceCode }}</span>
  18. </el-form-item>
  19. <el-form-item label="服务类型:" prop="serviceType">
  20. <dg-select
  21. v-model="form.serviceType"
  22. enum="ServiceResourceTypeEnum"
  23. placeholder="请选择服务类型"
  24. v-if="!isDetail"
  25. ></dg-select>
  26. <div v-else>
  27. <div class="u-detail__text" v-translate="{ enum: 'ServiceResourceTypeEnum' }">
  28. {{ form.serviceType }}
  29. </div>
  30. </div>
  31. </el-form-item>
  32. <el-form-item label="是否自用服务:" prop="mustSelf">
  33. <dg-select
  34. v-model="form.mustSelf"
  35. enum="BooleanEnum"
  36. v-if="!isDetail"
  37. placeholder="请选择是否自用服务"
  38. clearable
  39. ></dg-select>
  40. <div v-else>
  41. <div class="u-detail__text" v-translate="{ enum: 'BooleanEnum' }">{{ form.mustSelf }}</div>
  42. </div>
  43. </el-form-item>
  44. </dg-col>
  45. <dg-col :span="12">
  46. <el-form-item label="服务资源名称:" prop="serviceName">
  47. <el-input v-model="form.serviceName" placeholder="请输入服务资源名称" v-if="!isDetail"></el-input>
  48. <span v-else>{{ form.serviceName }}</span>
  49. </el-form-item>
  50. <el-form-item label="服务提供方式:" prop="serviceProvideWay">
  51. <dg-select
  52. v-model="form.serviceProvideWay"
  53. enum="ServiceProvideWayEnum"
  54. placeholder="请选择服务提供方式"
  55. v-if="!isDetail"
  56. ></dg-select>
  57. <div v-else>
  58. <div class="u-detail__text" v-translate="{ enum: 'ServiceProvideWayEnum' }">
  59. {{ form.serviceProvideWay }}
  60. </div>
  61. </div>
  62. </el-form-item>
  63. </dg-col>
  64. <dg-col :span="24">
  65. <el-form-item label="服务提供应用系统名称:" prop="appCode">
  66. <dg-select
  67. :data="apps"
  68. v-model="form.appCode"
  69. placeholder="服务提供应用系统名称"
  70. value-name="applyCode"
  71. label-name="applyName"
  72. filterable
  73. v-if="!isDetail"
  74. ></dg-select>
  75. <span v-else>{{ form.appName }}</span>
  76. </el-form-item>
  77. </dg-col>
  78. <dg-col :span="24">
  79. <el-form-item label="服务访问地址:" prop="serviceUrl">
  80. <el-input v-model="form.serviceUrl" placeholder="参数为字符串类型的数组对象" v-if="!isDetail"></el-input>
  81. <span v-else>{{ form.serviceUrl }}</span>
  82. </el-form-item>
  83. </dg-col>
  84. <dg-col :span="24">
  85. <el-form-item label="服务资源描述:" prop="remark">
  86. <el-input
  87. v-model="form.remark"
  88. placeholder="请输入服务资源描述"
  89. type="textarea"
  90. :rows="3"
  91. v-if="!isDetail"
  92. ></el-input>
  93. <span v-else>{{ form.remark }}</span>
  94. </el-form-item>
  95. </dg-col>
  96. </el-form>
  97. <div v-footer>
  98. <dg-button @click="handleClose">{{ isDetail ? '关闭' : '取消' }}</dg-button>
  99. <dg-button v-if="!isDetail" type="primary" @click="handleSave">保存</dg-button>
  100. </div>
  101. </dg-row>
  102. </template>
  103. <script>
  104. import * as Api from '@/api/ser-resource-manage';
  105. import { allApps } from '@/api/application';
  106. export default {
  107. props: {
  108. id: String,
  109. isDetail: {
  110. type: Boolean,
  111. default: false
  112. }
  113. },
  114. components: {},
  115. data() {
  116. return {
  117. form: {
  118. appCode: '',
  119. appName: '',
  120. mustSelf: '',
  121. remark: '',
  122. serviceCode: '',
  123. serviceName: '',
  124. serviceProvideWay: '',
  125. serviceType: '',
  126. serviceUrl: ''
  127. },
  128. rules: {
  129. serviceCode: [{ required: true, message: '请输入服务资源标识符', trigger: 'change' }],
  130. serviceName: [{ required: true, message: '请输入服务资源名称', trigger: 'change' }],
  131. serviceType: [{ required: true, message: '请输入服务类型', trigger: 'change' }],
  132. serviceProvideWay: [{ required: true, message: '请选择服务提供方式', trigger: 'change' }],
  133. serviceUrl: [{ required: true, message: '请输入服务访问地址', trigger: 'change' }],
  134. appCode: [{ required: true, message: '请输入服务提供应用系统名称', trigger: 'change' }]
  135. // mustSelf: [{ required: true, message: "请选择是否自动服务", trigger: "change" }]
  136. },
  137. apps: [],
  138. show: false
  139. };
  140. },
  141. computed: {},
  142. methods: {
  143. /**
  144. * 取消、关闭
  145. */
  146. handleClose() {
  147. this.$emit('close');
  148. },
  149. /**
  150. * 保存
  151. */
  152. handleSave() {
  153. this.$refs.form.validate((valid) => {
  154. if (valid) {
  155. const api = this.id ? 'update' : 'save';
  156. Api[api](this.form)
  157. .then((res) => {
  158. const { result, msg } = res.data;
  159. if (result == '200') {
  160. this.$message.success('保存成功!');
  161. this.$emit('success');
  162. } else {
  163. this.$message.warning(msg);
  164. }
  165. })
  166. .catch((error) => {
  167. this.$message.error(error);
  168. });
  169. }
  170. });
  171. },
  172. /**
  173. * 获取详情
  174. */
  175. getDetail() {
  176. Api.detail(this.id).then((res) => {
  177. this.form = res.data.content;
  178. this.show = true;
  179. });
  180. },
  181. /**
  182. * 获取应用列表
  183. */
  184. getAllApps() {
  185. return new Promise((resolve) => {
  186. allApps('').then((res) => {
  187. this.apps = res;
  188. resolve(res);
  189. });
  190. });
  191. }
  192. },
  193. async created() {
  194. await this.getAllApps();
  195. if (this.id) {
  196. if (this.isDetail) {
  197. this.rules = {};
  198. }
  199. this.getDetail();
  200. } else {
  201. this.show = true;
  202. }
  203. },
  204. mounted() {
  205. }
  206. };
  207. </script>
  208. <style lang='scss'>
  209. </style>