detail.vue 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. <template>
  2. <div class="salesOrderDetail pagePadding">
  3. <div
  4. style="width: 100%"
  5. v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
  6. >
  7. <div class="tl" style="padding: 10px 0 50px 0">
  8. <span> {{ status }}----{{ powers }}</span>
  9. <el-button
  10. v-if="status !== '0'"
  11. style="margin: 0 0 0 10px"
  12. class="fr"
  13. type="primary"
  14. plain
  15. :size="'mini'"
  16. @click="openModal('add', false, 'sell')"
  17. >新建销售退货单
  18. </el-button>
  19. <!-- <el-button
  20. class="fr"
  21. type="primary"
  22. plain
  23. :size="'mini'"
  24. @click="openModal('add', false, 'service')"
  25. >新建售后申请单
  26. </el-button> -->
  27. <el-button
  28. type="primary"
  29. plain
  30. :size="'mini'"
  31. @click="statusConfirm('1', '发起审核流程')"
  32. v-if="status === '0' && powers.some((item) => item == '012')"
  33. >发起审核流程
  34. </el-button>
  35. <el-button
  36. @click="statusConfirm('0', '取消审核流程')"
  37. plain
  38. :size="'mini'"
  39. v-if="status === '1' && powers.some((item) => item == '014')"
  40. >取消审核流程</el-button
  41. >
  42. <el-button
  43. @click="statusConfirm('-1', '作废该条信息')"
  44. type="danger"
  45. plain
  46. :size="'mini'"
  47. v-if="
  48. status !== '' &&
  49. status !== '3' &&
  50. powers.some((item) => item == '015')
  51. "
  52. >作废该条信息</el-button
  53. >
  54. </div>
  55. <status-bar
  56. v-if="newTime !== ''"
  57. :newTime="newTime"
  58. :options="statusOptions"
  59. :status="status"
  60. />
  61. <el-collapse v-model="activeNames">
  62. <el-collapse-item title="销售订单信息" name="0">
  63. <add-form
  64. :newTime="newTime"
  65. v-if="newTime !== ''"
  66. :sitem="sitem"
  67. :id="queryId"
  68. @refresh="initData()"
  69. />
  70. </el-collapse-item>
  71. <el-collapse-item title="采购反馈物流" name="1">
  72. <feedback-form
  73. :newTime="newTime"
  74. v-if="newTime !== '' && status == 1"
  75. :sitem="sitem"
  76. :id="queryId"
  77. @refresh="initData()"
  78. />
  79. </el-collapse-item>
  80. <el-collapse-item title="准备发货" name="6" v-if="status === '2'">
  81. <el-button
  82. class="fr"
  83. style="margin: 0 0 10px 0"
  84. type="primary"
  85. plain
  86. :size="'mini'"
  87. @click="statusConfirm('3', '开始发货')"
  88. v-if="status === '2' && powers.some((item) => item == '026')"
  89. >开始发货
  90. </el-button>
  91. </el-collapse-item>
  92. <el-collapse-item title="销售出库单" name="3">
  93. <!-- && status == 3 -->
  94. <order-out-table
  95. :newTime="newTime"
  96. v-if="newTime !== '' && (status == 3 || status == 4)"
  97. :sitem="sitem"
  98. :id="queryId"
  99. @refresh="initData()"
  100. />
  101. </el-collapse-item>
  102. <el-collapse-item title="审批记录" name="10">
  103. <process-time-line
  104. v-if="newTime !== ''"
  105. :newTime="newTime"
  106. :type="'XSQRD'"
  107. :orderCode="orderCode"
  108. />
  109. </el-collapse-item>
  110. </el-collapse>
  111. <add-edit
  112. :id="modelId"
  113. :sitem="s_sitem"
  114. :show-model="showModel"
  115. :is-detail="isDetail"
  116. @refresh="searchList"
  117. @cancel="showModel = false"
  118. />
  119. <!-- <edit-add
  120. :id="modelId"
  121. :sitem="sitem"
  122. :show-model="showModell"
  123. :is-detail="isDetail"
  124. @refresh="searchList"
  125. @cancel="showModel = false"
  126. /> -->
  127. </div>
  128. <div v-else>
  129. <no-auth></no-auth>
  130. </div>
  131. </div>
  132. </template>
  133. <script>
  134. import mixinPage from "@/mixins/elPaginationHandle";
  135. import resToken from "@/mixins/resToken";
  136. import asyncRequest from "@/apis/service/sellOut/salesOrder/detail";
  137. import addForm from "./components/addForm";
  138. import feedbackForm from "./components/feedback-form";
  139. import orderOutTable from "./components/order-out-table";
  140. import addEdit from "./addEdit.vue";
  141. export default {
  142. name: "salesOrderDetail",
  143. mixins: [mixinPage, resToken],
  144. components: {
  145. addEdit,
  146. addForm,
  147. feedbackForm,
  148. orderOutTable,
  149. // editAdd,
  150. },
  151. computed: {
  152. powers() {
  153. let tran =
  154. this.$store.getters.btnList.find(
  155. (item) => item.menu_route == "salesOrderDetail"
  156. ) || {};
  157. if (tran && tran.action && tran.action.length > 0) {
  158. return tran.action;
  159. } else {
  160. return [];
  161. }
  162. },
  163. },
  164. mounted() {
  165. console.log(this.$route);
  166. },
  167. data() {
  168. return {
  169. finishStatus: "finish",
  170. activeNames: ["-1", "0", "1", "2", "3", "4", "5", "6", "10"],
  171. statusOptions: [
  172. { value: "0", label: "发起流程" },
  173. { value: "1", label: "反馈物流" },
  174. { value: "2", label: "同意下单" },
  175. { value: "3", label: "填写发货信息" },
  176. { value: "4", label: "发货中" },
  177. { value: "5", label: "发货完成" },
  178. ],
  179. sitem: null,
  180. s_sitem: null,
  181. orderCode: "",
  182. status: "",
  183. newTime: "",
  184. loading: false,
  185. queryId: "",
  186. };
  187. },
  188. mounted() {
  189. this.status = "";
  190. this.queryId = this.$route.query.id;
  191. this.initData();
  192. },
  193. methods: {
  194. async statusConfirm(status, message) {
  195. await this.$confirm(`确定要${message}?`, {
  196. confirmButtonText: "确定",
  197. cancelButtonText: "取消",
  198. type: "warning",
  199. })
  200. .then(async () => {
  201. if (status === "-1") {
  202. await this.deleteById(message);
  203. } else {
  204. await this.setStatus(status, message);
  205. }
  206. })
  207. .catch(() => {
  208. console.log("取消");
  209. });
  210. },
  211. getNewTime() {
  212. this.newTime = new Date().valueOf() + "";
  213. console.log(this.orderCode);
  214. console.log(this.newTime);
  215. },
  216. async deleteById(message) {
  217. const res = await asyncRequest.delete({ id: this.queryId });
  218. if (res && res.code === 0) {
  219. this.$notify.success({
  220. title: message + "成功!",
  221. message: "",
  222. });
  223. this.routeGoto("check", {});
  224. } else if (res && res.code >= 100 && res.code <= 104) {
  225. await this.logout();
  226. } else {
  227. this.$message.warning(res.message);
  228. }
  229. },
  230. async setStatus(status, message, remark) {
  231. let model = {
  232. id: this.queryId,
  233. remark: remark || "",
  234. status: status,
  235. };
  236. const res = await asyncRequest.status(model);
  237. this.loading = false;
  238. if (res && res.code === 0) {
  239. this.$notify.success({
  240. title: message + "成功!",
  241. message: "",
  242. });
  243. this.initData();
  244. } else if (res && res.code >= 100 && res.code <= 104) {
  245. await this.logout();
  246. } else {
  247. this.$message.warning(res.message);
  248. }
  249. },
  250. async examForm(e) {
  251. if (!this.loading) {
  252. let type = e.state === "1" ? "2" : "0";
  253. await this.setStatus(type, "提交入库方审核", e.remark);
  254. }
  255. },
  256. async initData() {
  257. this.loading = true;
  258. const res = await asyncRequest.detail({ id: this.queryId });
  259. if (res && res.code === 0 && res.data) {
  260. this.sitem = res.data;
  261. this.status = this.sitem.status;
  262. this.orderCode = this.sitem.orderCode;
  263. this.getNewTime();
  264. } else if (res && res.code >= 100 && res.code <= 104) {
  265. await this.logout();
  266. } else {
  267. this.$message.warning(res.message);
  268. }
  269. this.loading = false;
  270. },
  271. openModal(id, isDetail, sitem) {
  272. if (sitem == "sell") {
  273. this.showModel = true;
  274. } else {
  275. this.showModell = true;
  276. }
  277. console.log(id, isDetail, sitem);
  278. this.modelId = id;
  279. this.isDetail = isDetail;
  280. // this.sitem = sitem;
  281. // this.sitem.info[0].edit = false;
  282. this.s_sitem = this.sitem;
  283. },
  284. },
  285. };
  286. </script>
  287. <style lang="scss" scoped>
  288. .salesOrderDetail {
  289. }
  290. </style>