Command.vue 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <template>
  2. <lay-layer :title="modelConfig.title" v-model="modelConfig.visible" :area="['500px', '450px']" :btn="operator">
  3. <div style="padding: 20px">
  4. <lay-form :model="modelParams" ref="modelFormRef" required>
  5. <lay-form-item label="执行指令" prop="commandId">
  6. <lay-select v-model="modelParams.commandId">
  7. <lay-select-option v-for="item in commandList" :value="item.instructId" :label="item.title" />
  8. </lay-select>
  9. </lay-form-item>
  10. </lay-form>
  11. </div>
  12. </lay-layer>
  13. </template>
  14. <script lang="ts" setup>
  15. import { ref, reactive, getCurrentInstance } from "vue";
  16. import { run_execut_server, get_instruct_list_all } from "@/api";
  17. const { proxy }: any = getCurrentInstance();
  18. interface ModelConfig {
  19. title: string;
  20. visible: boolean;
  21. isUpdate: boolean;
  22. loading: boolean;
  23. }
  24. interface ModelParams {
  25. commandId?: string;
  26. }
  27. let modelParams = ref<ModelParams>({});
  28. let modelConfig: ModelConfig = reactive({ title: "", visible: false, isUpdate: false, loading: false });
  29. let handleResult = reactive<{ resolve?: any; reject?: any }>({});
  30. let commandList = ref();
  31. let userServerId = ref();
  32. const show = (params?: any) => {
  33. get_instruct_list();
  34. modelConfig.visible = true;
  35. modelConfig.title = "执行指令";
  36. userServerId.value = params;
  37. modelParams.value = {};
  38. return new Promise(async (resolve, reject) => {
  39. handleResult.resolve = resolve;
  40. handleResult.reject = reject;
  41. });
  42. };
  43. const get_instruct_list = () => {
  44. const params = {};
  45. get_instruct_list_all(params, (data: any) => {
  46. if (data.code == 200) {
  47. commandList.value = data.data;
  48. }
  49. });
  50. };
  51. const operator = reactive([
  52. {
  53. text: "执行",
  54. callback: () => {
  55. const params = { serverList: userServerId.value, ...modelParams.value };
  56. modelConfig.loading = true;
  57. run_execut_server(params, (data: any) => {
  58. modelConfig.loading = false;
  59. if (data.code == 200) {
  60. proxy.$message("执行成功!");
  61. modelConfig.visible = false;
  62. handleResult.resolve(true);
  63. }
  64. });
  65. },
  66. },
  67. {
  68. text: "取消",
  69. callback: () => {
  70. modelConfig.visible = false;
  71. handleResult.resolve(false);
  72. },
  73. },
  74. ]);
  75. defineExpose({ show });
  76. </script>