detail.vue 6.3 KB

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