detail.vue 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <template>
  2. <div class="sellOutOrderDetail 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="detail-page-title">
  9. <span>销售出库单编号:</span
  10. ><span v-if="sitem">{{ sitem.outCode }}</span>
  11. <el-button
  12. class="fr"
  13. v-if="status === '2' && powers.some((item) => item == '049')"
  14. type="primary"
  15. plain
  16. :size="'mini'"
  17. style="margin: 0 0 0 10px"
  18. @click="showModel = true"
  19. >新建售后申请单
  20. </el-button>
  21. </div>
  22. <status-bar
  23. v-if="newTime !== ''"
  24. :newTime="newTime"
  25. :options="statusOptions"
  26. :status="status"
  27. />
  28. <el-tabs v-model="activeTabs">
  29. <el-tab-pane label="业务详情" name="1">
  30. <el-collapse v-model="activeNames" style="margin: -18px 0 0 0">
  31. <el-collapse-item title="销售出库单详情" name="1">
  32. <show-data-table
  33. :newTime="newTime"
  34. v-if="newTime !== ''"
  35. :sitem="sitem"
  36. :columns="ShowDataTableColumns"
  37. >
  38. <template slot="status">
  39. <el-tag
  40. :size="'mini'"
  41. :type="sitem.status == '0' ? 'warning' : ''"
  42. v-text="
  43. (
  44. statusOptions.find(
  45. (item) => item.value == sitem.status
  46. ) || {}
  47. ).label || '--'
  48. "
  49. ></el-tag>
  50. </template>
  51. <template slot="order_type">
  52. <el-tag :size="'mini'" :type="''">{{
  53. sitem.status === "1" ? "销售出库单" : "咨询出库单"
  54. }}</el-tag>
  55. </template>
  56. </show-data-table>
  57. </el-collapse-item>
  58. <el-collapse-item
  59. title="库管发货"
  60. name="3"
  61. v-if="status === '0' && powers.some((item) => item == '080')"
  62. >
  63. <want-deliver
  64. :newTime="newTime"
  65. v-if="newTime !== ''"
  66. :sitem="sitem"
  67. @refresh="initData"
  68. />
  69. </el-collapse-item>
  70. <!-- <el-collapse-item title="填写售后申请单" name="3" v-if="status === '4'">
  71. <sell-return-apply
  72. :sitem="sitem"
  73. v-if="newTime != '' || true"
  74. :newTime="newTime"
  75. @refresh="updateStatus"
  76. />
  77. </el-collapse-item> -->
  78. </el-collapse>
  79. </el-tab-pane>
  80. <el-tab-pane label="审批记录" name="2">
  81. <process-time-line
  82. v-if="newTime !== ''"
  83. :newTime="newTime"
  84. :type="'CKD'"
  85. :orderCode="code"
  86. />
  87. </el-tab-pane>
  88. </el-tabs>
  89. <div>
  90. <add-Edit-A
  91. :id="'add'"
  92. :sitem="sitem"
  93. :show-model="showModel"
  94. :is-detail="false"
  95. @refresh="initData"
  96. @cancel="showModel = false"
  97. />
  98. </div>
  99. </div>
  100. <div v-else>
  101. <no-auth></no-auth>
  102. </div>
  103. </div>
  104. </template>
  105. <script>
  106. import mixinPage from "@/mixins/elPaginationHandle";
  107. import resToken from "@/mixins/resToken";
  108. import asyncRequest from "@/apis/service/sellOut/sellOutOrder";
  109. import addEditForm from "./components/addEditForm.vue"; //出库单详情
  110. import addEditA from "./components/addEditA";
  111. import ShowDataTableColumns from "./ShowDataTableColumns";
  112. import wantDeliver from "./components/want-deliver.vue";
  113. export default {
  114. name: "sellOutOrderDetail",
  115. mixins: [mixinPage, resToken],
  116. components: {
  117. addEditForm,
  118. addEditA,
  119. wantDeliver,
  120. },
  121. computed: {
  122. powers() {
  123. let tran =
  124. this.$store.getters.btnList.find(
  125. (item) => item.menu_route == "sellOutOrderDetail"
  126. ) || {};
  127. if (tran && tran.action && tran.action.length > 0) {
  128. return tran.action;
  129. } else {
  130. return [];
  131. }
  132. },
  133. },
  134. data() {
  135. return {
  136. activeTabs: "1",
  137. activeNames: ["0", "1", "2", "3", "4"],
  138. status: "", //存储详情接口状态
  139. statusList: [],
  140. ShowDataTableColumns: ShowDataTableColumns,
  141. sitem: null,
  142. newTime: "",
  143. showModel: false,
  144. loading: false,
  145. statusOptions: [
  146. { value: "0", label: "待库管发货" },
  147. { value: "1", label: "待客户验收" },
  148. { value: "2", label: "订单出库完成" },
  149. ],
  150. code: "",
  151. did: "", //详情页上的id
  152. };
  153. },
  154. mounted() {
  155. this.code = this.$route.query.id;
  156. this.initData();
  157. },
  158. methods: {
  159. async updateStatus(e) {
  160. await this.setstatus(e.status);
  161. },
  162. getNewTime() {
  163. this.newTime = new Date().valueOf();
  164. },
  165. async setstatus(status) {
  166. const model = {
  167. id: this.did,
  168. status: status,
  169. };
  170. let res = await asyncRequest.status(model);
  171. if (res && res.code === 0) {
  172. this.$notify.success({
  173. title: "修改成功!",
  174. message: "",
  175. });
  176. await this.initData();
  177. } else if (res && res.code >= 100 && res.code <= 104) {
  178. await this.logout();
  179. } else {
  180. this.$message.warning(res.message);
  181. }
  182. },
  183. async initData(e) {
  184. let model = {
  185. outCode: this.code,
  186. };
  187. const res = await asyncRequest.detail(model);
  188. if (res && res.code === 0 && res.data) {
  189. this.sitem = res.data;
  190. const { status, can, id } = this.sitem;
  191. this.status = status;
  192. this.did = id;
  193. if (can && can.length > 0) {
  194. this.sitem.class_cat = "";
  195. can.forEach((x, i) => {
  196. this.sitem.class_cat += i === 0 ? x.name : "/" + x.name;
  197. });
  198. }
  199. this.getNewTime();
  200. } else if (res && res.code >= 100 && res.code <= 104) {
  201. await this.logout();
  202. } else {
  203. this.$message.warning(res.message);
  204. }
  205. },
  206. async goodsCheck() {
  207. let model = {
  208. outCode: this.code,
  209. status: "2",
  210. };
  211. this.$confirm("客户是否已收到货?", {
  212. confirmButtonText: "确定",
  213. cancelButtonText: "取消",
  214. type: "warning",
  215. })
  216. .then(async () => {
  217. const res = await asyncRequest.salecustomer(model);
  218. if (res && res.code === 0) {
  219. await this.initData();
  220. } else if (res && res.code >= 100 && res.code <= 104) {
  221. await this.logout();
  222. } else {
  223. this.$message.warning(res.message);
  224. }
  225. })
  226. .catch(() => {
  227. console.log("取消");
  228. });
  229. },
  230. },
  231. };
  232. </script>