detail.vue 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <template>
  2. <div class="stockApplyDetail pagePadding">
  3. <div v-if="powers.some((i) => i == '007')">
  4. <!-- <status-bar
  5. v-if="newTime !== '' && queryType === 'view'"
  6. :newTime="newTime"
  7. :options="statusOptions"
  8. :status="status"
  9. /> -->
  10. <el-tabs v-model="activeTabs">
  11. <el-tab-pane label="新建备库申请单" name="0" v-if="queryType === 'add'">
  12. <add-edit
  13. :sitem="sitem"
  14. :id="queryId"
  15. :newTime="newTime"
  16. :type="queryId"
  17. @refresh="routeReGoto('stockApply', {})"
  18. v-if="newTime != ''"
  19. />
  20. </el-tab-pane>
  21. <el-tab-pane label="业务详情" name="1" v-if="queryType === 'view'">
  22. <el-collapse v-model="activeNames" style="margin: -18px 0 0 0">
  23. <el-collapse-item name="1" title="备库详情">
  24. <show-data-table
  25. :newTime="newTime"
  26. v-if="newTime !== ''"
  27. :sitem="sitem"
  28. :columns="showColumns"
  29. >
  30. <template slot="status">
  31. <el-tag
  32. :size="'mini'"
  33. :type="sitem.status == '0' ? 'warning' : ''"
  34. v-text="
  35. (statusOptions.find((item) => item.value == sitem.status) || {})
  36. .label || '--'
  37. "
  38. ></el-tag>
  39. </template>
  40. <template slot="wsm">
  41. <span>{{ sitem.wsm_name }}</span>
  42. <el-popover placement="top" width="300" trigger="hover">
  43. <ul>
  44. <li>
  45. <span>仓库编码:</span><span>{{ sitem.wsm_code }}</span>
  46. </li>
  47. </ul>
  48. <i slot="reference" class="el-icon-warning-outline fr" />
  49. </el-popover>
  50. </template>
  51. <template slot="wsm_supplier">
  52. <span>{{ sitem.wsm_supplier }}</span>
  53. <el-popover placement="top" width="300" trigger="hover">
  54. <ul>
  55. <li>
  56. <span>仓库所在供应商编码:</span><span>{{ sitem.wsm_supplierNo }}</span>
  57. </li>
  58. </ul>
  59. <i slot="reference" class="el-icon-warning-outline fr" />
  60. </el-popover>
  61. </template>
  62. <template slot="file_url">
  63. <el-link :underline="false" :href="sitem.file_url" target="_blank">{{
  64. sitem.file_name
  65. }}</el-link>
  66. </template>
  67. </show-data-table>
  68. </el-collapse-item>
  69. <el-collapse-item name="2" title="商品详情">
  70. <show-goods-data-table
  71. :newTime="newTime"
  72. v-if="newTime !== ''"
  73. :type="'1'"
  74. :iscgd="true"
  75. :skucode="sitem.skuCode"
  76. :spucode="sitem.spuCode"
  77. />
  78. </el-collapse-item>
  79. <el-collapse-item
  80. name="3"
  81. title="采购反馈-设置入库的仓库"
  82. v-if="status + '' === '1' && ppowers.some((i) => i == '1') && !isSupertube"
  83. >
  84. <purchase-back
  85. :sitem="sitem"
  86. :id="queryId"
  87. :newTime="newTime"
  88. v-if="newTime != ''"
  89. @refresh="initData"
  90. />
  91. </el-collapse-item>
  92. </el-collapse>
  93. </el-tab-pane>
  94. <el-tab-pane label="审批记录" name="2" v-if="queryType === 'view'">
  95. <process-time-line
  96. v-if="newTime !== ''"
  97. :newTime="newTime"
  98. :type="'BHD'"
  99. :orderCode="queryId"
  100. />
  101. </el-tab-pane>
  102. <el-tab-pane label="流程图" name="5" v-if="queryType === 'view'">
  103. <flow-chart process_id="3" type="BHD" :orderCode="queryId" />
  104. </el-tab-pane>
  105. </el-tabs>
  106. </div>
  107. <div v-else>
  108. <no-auth></no-auth>
  109. </div>
  110. </div>
  111. </template>
  112. <script>
  113. import mixinPage from "@/mixins/elPaginationHandle";
  114. import resToken from "@/mixins/resToken";
  115. import asyncRequest from "@/apis/service/sellOut/stockApply";
  116. import addEdit from "./components/addEdit";
  117. import { mapGetters } from "vuex";
  118. import { showColumns } from "./columns";
  119. import PurchaseBack from "./components/purchaseBack.vue";
  120. export default {
  121. name: "stockApplyDetail",
  122. mixins: [mixinPage, resToken],
  123. components: {
  124. addEdit,
  125. PurchaseBack,
  126. },
  127. computed: {
  128. ...mapGetters(["tablebtnSize", "searchSize", "size", 'isSupertube']),
  129. powers() {
  130. const tran =
  131. this.$store.getters.btnList.find(
  132. (item) => item.menu_route == "stockApplyDetail"
  133. ) || {};
  134. const { action } = tran ?? {};
  135. return action ?? [];
  136. },
  137. ppowers() {
  138. const tran =
  139. this.$store.getters.roleProcess.find((i) => i.process_type === "BHD") || {};
  140. const { action } = tran ?? {};
  141. return action ?? [];
  142. },
  143. },
  144. data() {
  145. return {
  146. activeTabs: "0",
  147. activeNames: ["0", "1", "2", "3", "4"],
  148. showColumns,
  149. newTime: "",
  150. isDisabled: false,
  151. queryId: "",
  152. queryType: "",
  153. loading: true,
  154. sitem: null,
  155. status: "",
  156. statusOptions: [
  157. { value: "1", label: "待采购反馈" },
  158. { value: "2", label: "已生成采购单" },
  159. {
  160. value: "4",
  161. label: "已取消采购",
  162. },
  163. ],
  164. };
  165. },
  166. mounted() {
  167. const { id, type } = this.$route.query;
  168. this.queryId = id;
  169. this.queryType = type;
  170. this.activeTabs = type === "add" ? "0" : "1";
  171. if (this.queryType === "add") {
  172. this.sitem = {};
  173. this.getNewTime();
  174. } else {
  175. this.initData();
  176. }
  177. },
  178. methods: {
  179. async initData() {
  180. this.loading = true;
  181. const { code, data, message } = await asyncRequest.detail({
  182. id: this.queryId,
  183. });
  184. if (code === 0) {
  185. const { status } = data;
  186. this.sitem = data;
  187. this.status = status;
  188. this.getNewTime();
  189. } else if (res && res.code >= 100 && res.code <= 104) {
  190. await this.logout();
  191. } else {
  192. this.$message.warning(message);
  193. }
  194. this.loading = false;
  195. },
  196. // 点击按钮后执行方法
  197. async statusConfirm(status, message) {
  198. await this.$confirm(`确定要${message}?`, {
  199. confirmButtonText: "确定",
  200. cancelButtonText: "取消",
  201. type: "warning",
  202. })
  203. .then(async () => {
  204. if (status + '' === "-1") {
  205. await this.deleteById(message);
  206. } else {
  207. this.isDisabled = true;
  208. await this.setStatus(status, message);
  209. }
  210. })
  211. .catch(() => {
  212. console.log("取消");
  213. });
  214. },
  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("stockApply", {});
  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. // 发起备库申请
  231. async setStatus(status, message) {
  232. let model = {
  233. id: this.queryId,
  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. getNewTime() {
  251. this.newTime = new Date().valueOf();
  252. },
  253. },
  254. };
  255. </script>