detail.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <template>
  2. <div class="sellAfterApplyDetail pagePadding">
  3. <div
  4. style="width: 100%"
  5. v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
  6. >
  7. <p>{{ status }}---{{ powers }}</p>
  8. <span>销售售后申请编号:</span>
  9. <span v-if="sitem">{{ sitem.returnCode }}</span>
  10. <el-button
  11. style="margin: 10px 0 20px 0"
  12. type="primary"
  13. plain
  14. :size="'mini'"
  15. @click="statusConfirm('1', '发起审核流程', '')"
  16. v-if="status === '0' && powers.some((item) => item == '012')"
  17. >发起审核流程
  18. </el-button>
  19. <status-bar
  20. style="margin: 20px 0 0 0"
  21. v-if="newTime !== ''"
  22. :newTime="newTime"
  23. :options="statusOptions"
  24. :status="status"
  25. />
  26. <el-collapse v-model="activeNames">
  27. <el-collapse-item title="售后申请详情" name="1">
  28. <add-edit-form
  29. :sitem="sitem"
  30. :newTime="newTime"
  31. v-if="newTime != ''"
  32. ></add-edit-form>
  33. </el-collapse-item>
  34. <el-collapse-item
  35. title="业务审核"
  36. name="1"
  37. v-if="status === '0' && powers.some((item) => item == '034')"
  38. >
  39. <exam-form
  40. :statusList="statusList"
  41. :newTime="newTime"
  42. :disabled="false"
  43. :isMust="false"
  44. @searchChange="examForm"
  45. />
  46. </el-collapse-item>
  47. <el-collapse-item
  48. title="物流反馈"
  49. name="2"
  50. v-if="
  51. (status == '2' && powers.some((item) => item == '040')) ||
  52. status == '3' ||
  53. status == '4' ||
  54. status == '5'
  55. "
  56. >
  57. <express-feedback
  58. :sitem="sitem"
  59. :newTime="newTime"
  60. v-if="newTime != ''"
  61. @refresh="initData"
  62. ></express-feedback>
  63. </el-collapse-item>
  64. <el-collapse-item
  65. title="退货物流"
  66. name="4"
  67. v-if="status == '3' ||status == '4'"
  68. >
  69. <return-express
  70. @refresh="initData(true)"
  71. :sitem="sitem"
  72. :newTime="newTime"
  73. v-if="newTime != ''"
  74. ></return-express>
  75. </el-collapse-item>
  76. <el-collapse-item title="审批记录" name="10">
  77. <process-time-line
  78. v-if="newTime !== ''"
  79. :newTime="newTime"
  80. :type="'SHD'"
  81. :orderCode="orderCode"
  82. />
  83. </el-collapse-item>
  84. </el-collapse>
  85. </div>
  86. <div v-else>
  87. <no-auth></no-auth>
  88. </div>
  89. </div>
  90. </template>
  91. <script>
  92. import mixinPage from "@/mixins/elPaginationHandle";
  93. import resToken from "@/mixins/resToken";
  94. import asyncRequest from "@/apis/service/sellOut/sellAfterApply";
  95. import addEditForm from "./components/addEditForm";
  96. import ExpressFeedback from "./components/express_feedback";
  97. import PurchaseCheck from "./components/purchase_check";
  98. import ReturnExpress from "./components/returnExpress";
  99. export default {
  100. name: "sellAfterApplyDetail",
  101. mixins: [mixinPage, resToken],
  102. components: {
  103. addEditForm,
  104. ExpressFeedback,
  105. PurchaseCheck,
  106. ReturnExpress,
  107. },
  108. computed: {
  109. powers() {
  110. let tran =
  111. this.$store.getters.btnList.find(
  112. (item) => item.menu_route == "sellAfterApplyDetail"
  113. ) || {};
  114. if (tran && tran.action && tran.action.length > 0) {
  115. return tran.action;
  116. } else {
  117. return [];
  118. }
  119. },
  120. },
  121. data() {
  122. return {
  123. activeNames: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"],
  124. status: "", //存储详情接口状态
  125. statusList: [],
  126. sitem: null,
  127. newTime: "",
  128. loading: false,
  129. statusOptions: [
  130. { value: "0", label: "业务审核" },
  131. { value: "1", label: "物流信息反馈" },
  132. // { value: "2", label: "反馈物流费" },
  133. { value: "3", label: "填写退货信息" },
  134. { value: "4", label: "已退货" },
  135. // { value: "5", label: "已发货" },
  136. ],
  137. orderCode: "",
  138. return_code: "",
  139. code: "",
  140. };
  141. },
  142. mounted() {
  143. this.code = this.$route.query.id;
  144. this.initData();
  145. },
  146. methods: {
  147. getNewTime() {
  148. this.newTime = new Date().valueOf();
  149. },
  150. async statusConfirm(status, message, remark = "") {
  151. this.$confirm(`确定要${message}?`, {
  152. confirmButtonText: "确定",
  153. cancelButtonText: "取消",
  154. type: "warning",
  155. })
  156. .then(async () => {
  157. if (status === "-1") {
  158. await this.deleteById(message);
  159. } else {
  160. await this.setstatus(status, message, remark);
  161. }
  162. })
  163. .catch(() => {
  164. console.log("取消");
  165. });
  166. },
  167. // 点击业务审核的保存按钮
  168. async examForm(e) {
  169. console.log(e);
  170. if (!this.loading) {
  171. let type = e.state === "1" ? "2" : "0";
  172. let message = e.state === "1" ? "提交业务审核" : "驳回业务";
  173. await this.statusConfirm(type, message, e.remark);
  174. }
  175. },
  176. //
  177. async setstatus(type, detail, remark = "") {
  178. const model = {
  179. remark,
  180. returnCode: this.code,
  181. status: type,
  182. };
  183. let res = await asyncRequest.status(model);
  184. if (res && res.code === 0) {
  185. this.$notify.success({
  186. title: "修改成功!",
  187. message: "",
  188. });
  189. await this.initData();
  190. } else if (res && res.code >= 100 && res.code <= 104) {
  191. await this.logout();
  192. } else {
  193. this.$message.warning(res.message);
  194. }
  195. },
  196. async initData(type) {
  197. let model = {
  198. returnCode: this.code,
  199. };
  200. const res = await asyncRequest.detail(model);
  201. if (res && res.code === 0 && res.data) {
  202. this.status = res.data.status;
  203. this.sitem = res.data;
  204. this.orderCode = res.data.returnCode;
  205. this.getNewTime();
  206. if (type) {
  207. this.$confirm("是否要跳转到销售售后退货单界面?", {
  208. confirmButtonText: "确定",
  209. cancelButtonText: "取消",
  210. })
  211. .then(() => {
  212. this.routeGoto("/sellOut/returnOrder");
  213. })
  214. .catch(() => {
  215. console.log("取消");
  216. });
  217. }
  218. } else if (res && res.code >= 100 && res.code <= 104) {
  219. await this.logout();
  220. } else {
  221. this.$message.warning(res.message);
  222. }
  223. },
  224. },
  225. };
  226. </script>