ModifyTpl.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <template>
  2. <el-dialog
  3. class="modify-model"
  4. :visible.sync="modalIsShow"
  5. :title="title"
  6. top="3vh"
  7. width="1000px"
  8. :close-on-click-modal="false"
  9. :close-on-press-escape="false"
  10. append-to-body
  11. @open="visibleChange"
  12. >
  13. <el-form
  14. ref="modalFormComp"
  15. :model="modalForm"
  16. :rules="rules"
  17. label-width="180px"
  18. >
  19. <el-form-item prop="appType" label="应用类型:">
  20. <NormalSelect
  21. v-model="modalForm.appType"
  22. :func="appTypeList"
  23. valueStr="code"
  24. :disabled="true"
  25. ></NormalSelect>
  26. </el-form-item>
  27. <el-form-item prop="remark" label="备注:">
  28. <el-input
  29. v-model.trim="modalForm.remark"
  30. placeholder="请输入备注"
  31. clearable
  32. ></el-input>
  33. </el-form-item>
  34. <el-form-item label="" style="margin-bottom: 5px">
  35. <el-radio-group v-model="radioType" size="mini">
  36. <el-radio-button label="user">user角色</el-radio-button>
  37. <el-radio-button label="system">system角色</el-radio-button>
  38. </el-radio-group>
  39. </el-form-item>
  40. <el-form-item prop="user" v-if="radioType == 'user'" label="模板内容:">
  41. <el-input
  42. type="textarea"
  43. v-model.trim="modalForm.user"
  44. placeholder="请输入user角色提示词模版"
  45. clearable
  46. :rows="25"
  47. ></el-input>
  48. </el-form-item>
  49. <el-form-item
  50. prop="system"
  51. v-if="radioType == 'system'"
  52. label="模板内容:"
  53. >
  54. <el-input
  55. type="textarea"
  56. v-model.trim="modalForm.system"
  57. placeholder="请输入system角色提示词模版"
  58. clearable
  59. :rows="25"
  60. ></el-input>
  61. </el-form-item>
  62. </el-form>
  63. <div slot="footer">
  64. <el-button type="danger" @click="cancel" plain>取消</el-button>
  65. <el-button type="primary" :disabled="isSubmit" @click="submit"
  66. >确认</el-button
  67. >
  68. </div>
  69. </el-dialog>
  70. </template>
  71. <script>
  72. import { cueWrdInsertOrUpdate, appTypeList } from "../../../api";
  73. import NormalSelect from "@/components/NormalSelect.vue";
  74. const initModalForm = {
  75. id: "",
  76. supplierId: "",
  77. appType: "",
  78. system: "",
  79. user: "",
  80. remark: "",
  81. };
  82. export default {
  83. name: "modifyCueWordTpl",
  84. components: { NormalSelect },
  85. props: {
  86. instance: {
  87. type: Object,
  88. default() {
  89. return {};
  90. },
  91. },
  92. appType: {
  93. type: String,
  94. default: "",
  95. },
  96. },
  97. computed: {
  98. isEdit() {
  99. return !!this.instance.id;
  100. },
  101. title() {
  102. return "模型提示词" + (this.isEdit ? "编辑" : "新增");
  103. },
  104. },
  105. data() {
  106. return {
  107. appTypeList,
  108. radioType: "user",
  109. modalIsShow: false,
  110. isSubmit: false,
  111. modalForm: {},
  112. rules: {
  113. appType: [
  114. {
  115. required: true,
  116. message: "请选择应用类型",
  117. },
  118. ],
  119. // system: [
  120. // {
  121. // required: true,
  122. // message: "请输入system角色提示词模版",
  123. // },
  124. // ],
  125. // user: [
  126. // {
  127. // required: true,
  128. // message: "请输入user角色提示词模版",
  129. // },
  130. // ],
  131. remark: [
  132. {
  133. required: true,
  134. message: "请输入备注",
  135. },
  136. ],
  137. },
  138. };
  139. },
  140. methods: {
  141. initData(val) {
  142. this.modalForm = this.$objAssign(initModalForm, val);
  143. this.$nextTick(() => {
  144. this.$refs.modalFormComp.clearValidate();
  145. });
  146. },
  147. visibleChange() {
  148. this.initData(this.instance);
  149. if (!this.isEdit) {
  150. this.modalForm.appType = this.appType;
  151. }
  152. },
  153. cancel() {
  154. this.modalIsShow = false;
  155. },
  156. open() {
  157. this.modalIsShow = true;
  158. },
  159. async submit() {
  160. const valid = await this.$refs.modalFormComp.validate().catch(() => {});
  161. if (!valid) return;
  162. if (this.isSubmit) return;
  163. this.isSubmit = true;
  164. const datas = { ...this.modalForm };
  165. datas.system = datas.system || " ";
  166. datas.user = datas.user || " ";
  167. if (this.isEdit) {
  168. delete datas.appType;
  169. }
  170. const data = await cueWrdInsertOrUpdate(datas).catch(() => {});
  171. this.isSubmit = false;
  172. if (!data) return;
  173. this.$message.success((this.isEdit ? "修改" : "新增") + "成功!");
  174. this.cancel();
  175. this.$emit("modified");
  176. },
  177. },
  178. };
  179. </script>