index.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <script>
  2. import { SUBMIT } from "@/api/business/purchase/apply";
  3. export default {
  4. name: "SubmitDialog",
  5. props: {
  6. selectData: {
  7. type: [Array],
  8. require: true,
  9. },
  10. },
  11. data() {
  12. return {
  13. title: "提交OA",
  14. };
  15. },
  16. computed: {
  17. disabled: {
  18. get() {
  19. const { selectData } = this;
  20. if (selectData.length < 1) {
  21. return true;
  22. }
  23. if (
  24. selectData.length >= 1 &&
  25. selectData.findIndex(({ status }) => status === "1") > -1
  26. ) {
  27. return true;
  28. }
  29. if (
  30. selectData.length >= 1 &&
  31. selectData.findIndex(({ status }) => status === "2") > -1
  32. ) {
  33. return true;
  34. }
  35. },
  36. set() {},
  37. },
  38. },
  39. watch: {},
  40. methods: {
  41. //
  42. open() {
  43. let _this = this;
  44. this.$confirm(`是否提交数据项至OA系统?`, "提示", {
  45. confirmButtonText: "确定",
  46. cancelButtonText: "取消",
  47. type: "info",
  48. })
  49. .then(async () => {
  50. try {
  51. const { selectData } = this.$props;
  52. const ids = selectData.map((item) => item.id);
  53. const { msg, code } = await SUBMIT({
  54. submitIds: ids,
  55. checkAmount: true,
  56. });
  57. if (code === 200) {
  58. this.$emit("success");
  59. this.$notify.success(msg);
  60. }
  61. if (code === 10000) {
  62. _this.$alert(
  63. "<div style='overflow: auto;overflow-x: hidden;max-height: 65vh;padding: 10px 20px 0;'>" +
  64. msg +
  65. "</div>",
  66. "提示",
  67. {
  68. showCancelButton: true,
  69. dangerouslyUseHTMLString: true,
  70. confirmButtonText: "确认",
  71. cancelButtonText: "取消",
  72. beforeClose: async (action, instance, done) => {
  73. if (action === "confirm") {
  74. instance.confirmButtonLoading = true;
  75. instance.confirmButtonText = "执行中...";
  76. try {
  77. let { code, msg } = await SUBMIT({
  78. submitIds: ids,
  79. checkAmount: false,
  80. });
  81. if (code == 200) {
  82. done();
  83. _this.$emit("success");
  84. _this.$notify.success(msg);
  85. }
  86. } catch (error) {
  87. instance.confirmButtonText = "确认";
  88. } finally {
  89. instance.confirmButtonLoading = false;
  90. }
  91. } else {
  92. done();
  93. }
  94. },
  95. }
  96. );
  97. }
  98. } catch (err) {
  99. // catch
  100. console.error(err);
  101. instance.confirmButtonText = "确认";
  102. } finally {
  103. // finally
  104. instance.confirmButtonLoading = false;
  105. }
  106. })
  107. .catch(() => {});
  108. },
  109. },
  110. created() {},
  111. mounted() {},
  112. destroyed() {},
  113. };
  114. </script>
  115. <template>
  116. <el-button
  117. v-bind="$attrs"
  118. v-on="$listeners"
  119. :disabled="disabled"
  120. @click="open"
  121. >
  122. {{ title }}
  123. </el-button>
  124. </template>