gradingRule.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <template>
  2. <div>
  3. <el-form ref="form" :model="form" :rules="rules" label-width="108px">
  4. <el-form-item label="规则名称:" prop="ruleName">
  5. <el-input
  6. placeholder="请输入"
  7. maxlength="60"
  8. v-autoTrim="{ obj: form, key: 'ruleName' }"
  9. v-model="form.ruleName"
  10. >
  11. </el-input>
  12. </el-form-item>
  13. <el-form-item label="规则描述:" prop="ruleDescription">
  14. <el-input
  15. placeholder="请输入"
  16. maxlength="120"
  17. v-autoTrim="{ obj: form, key: 'ruleDescription' }"
  18. v-model="form.ruleDescription"
  19. >
  20. </el-input>
  21. </el-form-item>
  22. <el-form-item label="规则详情:" prop="ruleDetails">
  23. <el-input
  24. v-autoTrim="{
  25. obj: form,
  26. key: 'ruleDetails',
  27. }"
  28. v-model="form.ruleDetails"
  29. type="textarea"
  30. placeholder="请输入"
  31. :autosize="{ minRows: 8, maxRows: 8 }"
  32. maxlength="500"
  33. ></el-input>
  34. </el-form-item>
  35. <div class="btns">
  36. <!-- 公有列表进,另存为+取消 另存为为新增一天数据 新增数据均为私有 1 -->
  37. <!-- 私有列表进,保存+另存为+取消 0 -->
  38. <!-- 新增进,保存+取消 -1 -->
  39. <el-button
  40. type="primary"
  41. v-if="share === '0' || share === '-1'"
  42. @click="save(false)"
  43. >保存</el-button
  44. >
  45. <el-button
  46. type="primary"
  47. v-if="share === '0' || share === '1'"
  48. @click="save(true)"
  49. >另存为</el-button
  50. >
  51. <el-button type="primary" plain @click="cancel">取消</el-button>
  52. </div>
  53. </el-form>
  54. </div>
  55. </template>
  56. <script>
  57. //import from '';
  58. export default {
  59. name: "gradingRule", // 打分规则
  60. components: {},
  61. data() {
  62. return {
  63. share: "-1", //控制显示按钮
  64. form: {
  65. rulesId: "",
  66. ruleName: "",
  67. share: "-1",
  68. ruleDescription: "",
  69. ruleDetails: "",
  70. },
  71. rules: {
  72. ruleName: [
  73. { required: true, message: "请输入", trigger: "blur" },
  74. ],
  75. ruleDescription: [
  76. { required: true, message: "请输入", trigger: "blur" },
  77. ],
  78. ruleDetails: [
  79. { required: true, message: "请输入", trigger: "blur" },
  80. ],
  81. },
  82. };
  83. },
  84. computed: {},
  85. methods: {
  86. save(isAdd) {
  87. this.$refs.form.validate((valid) => {
  88. if (valid) {
  89. if (isAdd || !this.$route.query.formData) {
  90. // 另存为或新增页面
  91. this.form.rulesId = "";
  92. this.form.share = "0";
  93. }
  94. this.$axios({
  95. method: "post",
  96. url: this.$api.sceneLibrary.saveScoringRules,
  97. data: {
  98. ...this.form,
  99. },
  100. }).then((res) => {
  101. if (res.code == 200) {
  102. this.$message.success("保存成功");
  103. this.cancel();
  104. } else {
  105. this.$message.error(res.message || "保存失败");
  106. }
  107. });
  108. // .catch((error) => {
  109. // this.$message.error(error || "保存失败!");
  110. // });
  111. }
  112. });
  113. },
  114. cancel() {
  115. this.$router.replace({ path: "/gradingRulesList" });
  116. },
  117. },
  118. mounted() {
  119. if (this.$route.query.formData) {
  120. let rulesId = "";
  121. this.form.rulesId = rulesId = this.$route.query.formData.rulesId;
  122. this.form.share = this.share = this.$route.query.formData.share;
  123. if (rulesId) {
  124. this.$axios({
  125. method: "post",
  126. url: this.$api.sceneLibrary.queryScoringRules,
  127. data: {
  128. rulesId,
  129. },
  130. }).then((res) => {
  131. if (res.code == 200 && res.info) {
  132. this.form = res.info;
  133. }
  134. });
  135. }
  136. }
  137. },
  138. };
  139. </script>
  140. <style lang='less' scoped>
  141. .el-form {
  142. width: 60%;
  143. padding-top: 60px;
  144. margin: 0 auto;
  145. .el-input {
  146. width: 100%;
  147. }
  148. }
  149. .btns {
  150. padding-top: 30px;
  151. text-align: center;
  152. }
  153. </style>