index.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <script>
  2. import { REMOVE } from "@/api/business/purchase/contract";
  3. export default {
  4. name: "DeleteDialog",
  5. props: {
  6. selectData: {
  7. type: [Array],
  8. require: true,
  9. },
  10. },
  11. data() {
  12. return {
  13. title: "删 除",
  14. };
  15. },
  16. computed: {
  17. disabled: {
  18. get() {
  19. const {
  20. selectData,
  21. selectData: [{ status } = {}],
  22. } = this;
  23. if (selectData.length !== 1) {
  24. return true;
  25. }
  26. if (selectData.length === 1 && status === "1") {
  27. return true;
  28. }
  29. if (selectData.length === 1 && status === "2") {
  30. return true;
  31. }
  32. },
  33. set() {},
  34. },
  35. },
  36. watch: {},
  37. methods: {
  38. //
  39. open() {
  40. this.$confirm("是否删除数据项?", "提示", {
  41. confirmButtonText: "确定",
  42. cancelButtonText: "取消",
  43. type: "info",
  44. beforeClose: async (action, instance, done) => {
  45. if (action === "confirm") {
  46. instance.confirmButtonLoading = true;
  47. instance.confirmButtonText = "执行中...";
  48. try {
  49. // try
  50. const {
  51. selectData: [{ id }],
  52. } = this.$props;
  53. const { msg, code } = await REMOVE(id);
  54. if (code === 200) {
  55. done();
  56. this.$emit("success");
  57. this.$notify.success(msg);
  58. }
  59. } catch (err) {
  60. // catch
  61. console.error(err);
  62. instance.confirmButtonText = "确认";
  63. } finally {
  64. // finally
  65. instance.confirmButtonLoading = false;
  66. }
  67. } else {
  68. done();
  69. }
  70. },
  71. })
  72. .then(() => {})
  73. .catch(() => {});
  74. },
  75. },
  76. created() {},
  77. mounted() {},
  78. destroyed() {},
  79. };
  80. </script>
  81. <template>
  82. <el-button
  83. v-bind="$attrs"
  84. v-on="$listeners"
  85. :disabled="disabled"
  86. @click="open"
  87. >
  88. {{ title }}
  89. </el-button>
  90. </template>