queryTemplateEdit.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <template>
  2. <div class="airportInfo scroll-y">
  3. <Minheader
  4. :is-statuser="true"
  5. :is-Preser="true"
  6. :is-Measure="true"
  7. @preserForm="preserForm"
  8. >
  9. <template #header>
  10. <div class="status flex-wrap">
  11. <div class="manageTitle">编辑查询模板</div>
  12. </div>
  13. </template></Minheader
  14. >
  15. <div class="app-container">
  16. <el-form :model="ruleForm" :rules="formRules" ref="queryTemplateEditForm">
  17. <el-row :gutter="24">
  18. <el-col :span="6">
  19. <el-form-item
  20. label="查询模板名称"
  21. size="default"
  22. prop="queryTemplateName"
  23. :rules="formRules.isNotNull"
  24. >
  25. <el-input
  26. v-model="ruleForm.queryTemplateName"
  27. placeholder="请输入查询模板名称"
  28. />
  29. </el-form-item>
  30. </el-col>
  31. <el-col :span="6">
  32. <el-form-item
  33. label="数据源"
  34. prop="dataSourceID"
  35. size="default"
  36. :rules="formRules.isNotNull"
  37. >
  38. <el-select
  39. v-model="ruleForm.dataSourceID"
  40. placeholder="请选择"
  41. clearable
  42. >
  43. <el-option
  44. v-for="item in dataSourceList"
  45. :key="item.dataSourceID"
  46. :label="item.dataSourceName"
  47. :value="item.dataSourceID"
  48. />
  49. </el-select>
  50. </el-form-item>
  51. </el-col>
  52. <el-col :span="6">
  53. <el-form-item
  54. label="服务名称"
  55. prop="serviceID"
  56. size="default"
  57. :rules="formRules.isNotNull"
  58. >
  59. <el-select
  60. v-model="ruleForm.serviceID"
  61. placeholder="请选择"
  62. clearable
  63. >
  64. <el-option
  65. v-for="item in serviceList"
  66. :key="item.serviceID"
  67. :label="item.serviceName"
  68. :value="item.serviceID"
  69. />
  70. </el-select>
  71. </el-form-item>
  72. </el-col>
  73. <el-col :span="6">
  74. <el-form-item
  75. label="每页显示"
  76. prop="pageRows"
  77. size="default"
  78. :rules="formRules.isNotNull"
  79. >
  80. <el-input
  81. v-model="ruleForm.pageRows"
  82. size="medium"
  83. placeholder="请输入每页显示行数"
  84. type="number"
  85. clearable
  86. />
  87. </el-form-item>
  88. </el-col>
  89. <el-col>
  90. <el-form-item label="查询模板描述" size="default">
  91. <el-input
  92. v-model="ruleForm.queryTemplateDescribe"
  93. placeholder="请输入查询模板描述"
  94. />
  95. </el-form-item>
  96. </el-col>
  97. <el-col>
  98. <el-form-item
  99. label="查询语句"
  100. size="default"
  101. prop="queryTemplate"
  102. :rules="formRules.isNotNull"
  103. >
  104. <el-input
  105. :autosize="{ minRows: 24, maxRows: 24 }"
  106. type="textarea"
  107. v-model="ruleForm.queryTemplate"
  108. placeholder="请输入查询语句"
  109. />
  110. </el-form-item>
  111. </el-col>
  112. </el-row>
  113. </el-form>
  114. </div>
  115. </div>
  116. </template>
  117. <script setup lang="ts">
  118. import Minheader from "@/components/minheader/index.vue";
  119. import { Query, myQuery, GeneralDataReception } from "@/api/webApi";
  120. import { ElMessage } from "element-plus";
  121. const formRules = useElement().formRules;
  122. const router = useRouter();
  123. const route = useRoute();
  124. const asShOW = ref<boolean>(false);
  125. const dataSourceList = ref<Array>([]); //下拉
  126. const serviceList = ref<Array>([]); //下拉
  127. const queryTemplateID = ref<String>("");
  128. const ruleForm = reactive({
  129. queryTemplateName: "",
  130. queryTemplateDescribe: "",
  131. serviceName: "",
  132. dataSourceID: "",
  133. submitID: null,
  134. queryTemplate: "",
  135. pageRows: null,
  136. serviceID: "",
  137. event: 2,
  138. }); //内容
  139. queryTemplateID.value = route.query.queryTemplateID;
  140. //确认提交
  141. const queryTemplateEditForm: any = ref(null);
  142. const preserForm = () => {
  143. queryTemplateEditForm.value.validate((valid: any) => {
  144. if (valid) {
  145. preserFormer();
  146. } else {
  147. return false;
  148. }
  149. });
  150. };
  151. //保存
  152. const preserFormer = async () => {
  153. const params = {
  154. ...ruleForm,
  155. submitID: ruleForm.serviceID,
  156. };
  157. delete params.serviceID;
  158. try {
  159. const res = await GeneralDataReception({
  160. serviceId: SERVICE_ID.sysQueryTabId,
  161. dataContent: JSON.stringify(params),
  162. });
  163. if (Number(res.code) === 0) {
  164. ElMessage.success(`成功`);
  165. router.push({ path: "/systemSettings/queryTemplate" });
  166. // this.$message.success(res.message ?? "成功");
  167. // this.$router.push("/systemSettings/queryTemplate");
  168. } else {
  169. ElMessage.error(`失败`);
  170. // this.$message.error(res.message ?? "失败");
  171. }
  172. } catch (error) {
  173. ElMessage.error(`失败`);
  174. }
  175. // router.push({ path: "/systemSettings/queryTemplate" });
  176. };
  177. const getDataSourceList = async () => {
  178. const dataSourceLists = await getSelectOption(13);
  179. dataSourceList.value = dataSourceLists.map((item) => {
  180. item[item.setlabel] = item.k;
  181. item[item.setvalue] = item.v;
  182. return item;
  183. });
  184. };
  185. const getSelectOption = async (ID) => {
  186. try {
  187. const listValues = await myQuery(ID);
  188. return listValues;
  189. } catch (error) {
  190. // this.$message.error(error)
  191. return [];
  192. }
  193. };
  194. const queryServiceList = async (ID) => {
  195. const serviceLists = await getSelectOption(DATACONTENT_ID.sysServiceTable);
  196. serviceList.value = serviceLists.map((item) => {
  197. item[item.setlabel] = item.k;
  198. item[item.setvalue] = item.v;
  199. return item;
  200. });
  201. };
  202. const queryQueryTemplateByID = async (queryTemplateID) => {
  203. try {
  204. const templateInfo = await myQuery(
  205. DATACONTENT_ID.sysQueryEditId,
  206. queryTemplateID.value
  207. );
  208. Object.entries(templateInfo[0]).forEach(([key, value]) => {
  209. ruleForm[key] = value;
  210. });
  211. } catch (error) {
  212. // this.$message.error(error)
  213. }
  214. };
  215. getDataSourceList();
  216. queryServiceList();
  217. queryQueryTemplateByID(queryTemplateID);
  218. </script>
  219. <style lang="scss" scoped>
  220. .airportInfo {
  221. padding: 24px;
  222. height: 100%;
  223. background: #ffffff;
  224. border-radius: 4px;
  225. }
  226. ::v-deep .el-form-item__label {
  227. width: 110px;
  228. }
  229. </style>