edit.vue 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <!--
  2. * @Author: Liugh
  3. * @Date: 2021-05-26 15:09:38
  4. * @LastEditTime: 2021-05-28 16:36:56
  5. * @LastEditors: Do not edit
  6. * @FilePath: \auth-web\src\pages\log-manage\err-auth-earlywarning-manage\edit.vue
  7. * @Description:
  8. -->
  9. <template>
  10. <main class="auth-earlywarning-plan-edit">
  11. <el-form ref="ruleForm" :model="form" label-width="100px" label-suffix=":">
  12. <el-row>
  13. <el-col :span="24">
  14. <el-form-item label="方案名称" >
  15. <el-input clearable placeholder="请输入方案名称" v-model="form.name" disabled></el-input>
  16. </el-form-item>
  17. </el-col>
  18. <el-col :span="24">
  19. <el-form-item label="方案状态">
  20. <dg-select
  21. v-model="form.state"
  22. placeholder="请选择方案状态"
  23. enum="ProgrammeStateEnum"
  24. style="width: 100%"
  25. clearable
  26. >
  27. </dg-select>
  28. </el-form-item>
  29. </el-col>
  30. <el-col :span="24">
  31. <el-form-item label="预警规则">
  32. <!--TODO 内嵌form -->
  33. <!-- <el-input type="textarea" :rows="2" placeholder="请输入预警规则" v-model="form.textarea"></el-input> -->
  34. <el-form-item v-for="(domain, index) in form.ruleContent" :key="index">
  35. <div class="time-picker-layer">
  36. 用户在
  37. <dg-time-picker
  38. v-model="domain.time"
  39. type="timerange2"
  40. :picker-options="pickerOptions"
  41. begin-placeholder="开始时间"
  42. end-placeholder="结束时间"
  43. >
  44. </dg-time-picker>
  45. 进行鉴权
  46. <div class="time-picker-layer_button">
  47. <dg-button circle @click.prevent="addDomain" size="mini">
  48. <i class="el-icon-plus"></i>
  49. </dg-button>
  50. <dg-button circle @click.prevent="removeDomain(domain)" size="mini">
  51. <i class="el-icon-minus"></i>
  52. </dg-button>
  53. </div>
  54. </div>
  55. </el-form-item>
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="24">
  59. <el-form-item label="规则说明" >
  60. <el-input type="textarea" :rows="2" placeholder="请输入规则说明" v-model="form.ruleExplain" disabled>
  61. </el-input>
  62. </el-form-item>
  63. </el-col>
  64. <el-col :span="24">
  65. <el-form-item label="预警信息">
  66. <el-input type="textarea" :rows="2" placeholder="请输入预警信息" v-model="form.contentFormat" disabled>
  67. </el-input>
  68. </el-form-item>
  69. </el-col>
  70. <!-- <el-col :span="item.span" v-for="(item, index) in earlyWarningPlanTableInfo" :key="index"> -->
  71. <!-- <el-form-item :label="item.label">{{ detailInfo[item.value] }} </el-form-item> -->
  72. <!-- </el-col> -->
  73. </el-row>
  74. <el-form-item align="right">
  75. <el-button type="primary" @click="onSubmit">保存</el-button>
  76. <el-button @click="close">取消</el-button>
  77. </el-form-item>
  78. </el-form>
  79. </main>
  80. </template>
  81. <script>
  82. import { earlyWarningPlanTableInfo } from "../DataConfig";
  83. import { riskProgramme, warningProgrammeInfo } from "@/api/log-manage";
  84. import transferBusinessTagMixin from "@/mixins/transfer-business-tag";
  85. export default {
  86. name: "auth-earlywarning-plan-edit", // 组件名称
  87. props: {
  88. // 接收父组件的数据
  89. info: Object
  90. },
  91. mixins: [transferBusinessTagMixin],
  92. data() {
  93. // 组件内部参数
  94. return {
  95. earlyWarningPlanTableInfo,
  96. pickerOptions: {
  97. start: "00:00",
  98. step: "01:00",
  99. end: "23:00"
  100. },
  101. form: {
  102. ruleContent: [
  103. {
  104. time: ""
  105. }
  106. ]
  107. }
  108. };
  109. },
  110. components: {}, // 注册局部组件
  111. computed: {},
  112. methods: {
  113. /**
  114. * @description: 关闭
  115. */
  116. close() {
  117. this.$emit("success");
  118. },
  119. /**
  120. * @description: 提交
  121. */
  122. onSubmit() {
  123. let obj = JSON.parse(JSON.stringify(this.form));
  124. obj.ruleContent.forEach(item => {
  125. item.start = parseInt(item.time[0]);
  126. item.end = parseInt(item.time[1]);
  127. delete item.time;
  128. });
  129. obj.ruleContent = JSON.stringify(obj.ruleContent);
  130. riskProgramme(obj).then(res => {
  131. this.$message.success("操作成功");
  132. this.$emit("success");
  133. });
  134. },
  135. /**
  136. * @description:添加规则
  137. * @param {*}
  138. * @return {*}
  139. */
  140. addDomain() {
  141. this.form.ruleContent.push({
  142. time: ""
  143. });
  144. },
  145. /**
  146. * @description:移除规则
  147. * @param {*} item
  148. * @return {*}
  149. */
  150. removeDomain(item) {
  151. if (this.form.ruleContent.length <= 1) return;
  152. var index = this.form.ruleContent.indexOf(item);
  153. if (index !== -1) {
  154. this.form.ruleContent.splice(index, 1);
  155. }
  156. },
  157. countTime(val) {
  158. return val >= 10 ? val + ":00" : "0" + val + ":00";
  159. },
  160. /**
  161. * @description: 获取详情
  162. */
  163. getDetail() {
  164. return new Promise(resolve => {
  165. warningProgrammeInfo(this.info.id).then(res => {
  166. res.ruleContent = JSON.parse(res.ruleContent);
  167. res.ruleContent.forEach(item => {
  168. item.time = [this.countTime(item.start), this.countTime(item.end)];
  169. delete item.start;
  170. delete item.end;
  171. });
  172. this.form = res;
  173. console.log(this.form);
  174. resolve(res);
  175. });
  176. });
  177. }
  178. }, // 内部方法
  179. async created() {
  180. await this.getDetail();
  181. }
  182. };
  183. </script>
  184. <style lang="scss">
  185. .auth-earlywarning-plan-edit-layer {
  186. .time-picker-layer {
  187. display: flex;
  188. // align-items: center;
  189. margin-bottom: 0.75rem;
  190. &_button {
  191. margin-left: 0.9375rem;
  192. }
  193. }
  194. .dg-range-editor {
  195. margin: 0 0.9375rem;
  196. display: flex;
  197. // align-items: center;
  198. }
  199. }
  200. </style>