detail.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. <template>
  2. <div class="purchaseOrderDetail pagePadding">
  3. <div style="width: 100%" v-if="powers.some((i) => i == '007')">
  4. <div
  5. class="detail-page-title"
  6. v-if="status === '1' && powers.some((i) => i == '082')"
  7. >
  8. <span>采购单编号:</span><span>{{ queryId }} </span>
  9. <tolerance
  10. :newTime="newTime"
  11. v-if="newTime !== ''"
  12. :sitem="sitem"
  13. :showBtn="status === '1' && powers.some((i) => i == '082')"
  14. />
  15. </div>
  16. <el-tabs v-model="activeTabs">
  17. <el-tab-pane label="业务详情" name="1">
  18. <el-collapse v-model="activeNames" style="margin: -18px 0 0 0">
  19. <el-collapse-item title="采购单信息" name="1">
  20. <show-data-table
  21. :newTime="newTime"
  22. v-if="newTime !== ''"
  23. :sitem="sitem"
  24. :columns="ShowDataTableColumns"
  25. >
  26. <template slot="supplier_name">
  27. <span>{{ sitem.supplier_name }}</span>
  28. <el-popover placement="top" width="300" trigger="hover">
  29. <ul>
  30. <li>
  31. <span>销售方公司编号:</span><span>{{ sitem.supplierNo }}</span>
  32. </li>
  33. </ul>
  34. <i class="el-icon-warning-outline fr" slot="reference"></i>
  35. </el-popover>
  36. </template>
  37. <template slot="company">
  38. <span>{{ sitem.company }}</span>
  39. <el-popover placement="top" width="300" trigger="hover">
  40. <ul>
  41. <li>
  42. <span>购买方公司编号:</span><span>{{ sitem.companyNo }}</span>
  43. </li>
  44. </ul>
  45. <i class="el-icon-warning-outline fr" slot="reference"></i>
  46. </el-popover>
  47. </template>
  48. <template slot="status">
  49. <el-tag
  50. :size="'mini'"
  51. :type="sitem.status == '0' ? 'warning' : ''"
  52. v-text="
  53. (statusOptions.find((item) => item.value == sitem.status) || {})
  54. .label || '--'
  55. "
  56. ></el-tag>
  57. <el-tooltip
  58. class="fr"
  59. v-if="
  60. sitem &&
  61. ppowers.some((i) => i == '0') &&
  62. sitem.status === '0' &&
  63. sitem.has_account + '' === '0'
  64. "
  65. effect="dark"
  66. content="已于供应商确认"
  67. placement="top"
  68. >
  69. <i class="el-icon-video-play tb-icon" @click="statusConfirm()"></i>
  70. </el-tooltip>
  71. </template>
  72. <template slot="order_type">
  73. <el-tag
  74. :size="'mini'"
  75. v-text="
  76. (
  77. cg_order_type_options.find(
  78. (item) => item.id == sitem.order_type
  79. ) || {}
  80. ).label || '--'
  81. "
  82. ></el-tag>
  83. <el-popover
  84. placement="top"
  85. width="300"
  86. v-if="sitem.order_type === '1'"
  87. trigger="hover"
  88. >
  89. <ul>
  90. <li>
  91. <span>备库单编号:</span><span>{{ sitem.bkcode }}</span>
  92. </li>
  93. </ul>
  94. <i class="el-icon-warning-outline fr" slot="reference"></i>
  95. </el-popover>
  96. <el-popover
  97. placement="top"
  98. width="300"
  99. v-if="sitem.order_type !== '1'"
  100. trigger="hover"
  101. >
  102. <ul>
  103. <li>
  104. <span>订单编号:</span><span>{{ sitem.orderCode }}</span>
  105. </li>
  106. </ul>
  107. <i class="el-icon-warning-outline fr" slot="reference"></i>
  108. </el-popover>
  109. </template>
  110. <template slot="wsm">
  111. <span>{{ sitem.wsm_supplier }}/{{ sitem.wsm_name }}</span>
  112. <el-popover placement="top" width="300" trigger="hover">
  113. <ul>
  114. <li>
  115. <span>仓库公司编号:</span><span>{{ sitem.wsm_supplierNo }}</span>
  116. </li>
  117. <li>
  118. <span>仓库名称编号:</span><span>{{ sitem.wsm_code }}</span>
  119. </li>
  120. </ul>
  121. <i class="el-icon-warning-outline fr" slot="reference"></i>
  122. </el-popover>
  123. </template>
  124. <template slot="gold_price">
  125. <div
  126. v-if="
  127. sitem.status == '0' &&
  128. sitem.can[0].id == '6' &&
  129. cost_detailArr.is_gold_price == '1'
  130. "
  131. >
  132. {{ sitem.gold_price }}
  133. </div>
  134. <div v-else>----</div>
  135. </template>
  136. <template slot="customer">
  137. <span>{{ sitem.customer.companyName }}</span>
  138. <el-popover
  139. placement="top"
  140. width="300"
  141. trigger="hover"
  142. v-if="sitem.order_type != 1"
  143. >
  144. <ul>
  145. <li>
  146. <span>客户编号:</span><span>{{ sitem.customer.companyNo }}</span>
  147. </li>
  148. </ul>
  149. <i class="el-icon-warning-outline fr" slot="reference"></i>
  150. </el-popover>
  151. </template>
  152. <template slot="addr_info">
  153. <el-table
  154. :data="sitem.addr_info"
  155. :size="'mini'"
  156. border
  157. stripe
  158. style="width: 100%"
  159. >
  160. <el-table-column
  161. prop="receipt_quantity"
  162. label="发货数量"
  163. show-overflow-tooltip
  164. width="150px"
  165. >
  166. </el-table-column>
  167. <el-table-column
  168. prop="contactor"
  169. label="收货人"
  170. show-overflow-tooltip
  171. width="100px"
  172. >
  173. </el-table-column>
  174. <el-table-column
  175. prop="mobile"
  176. label="联系电话"
  177. show-overflow-tooltip
  178. width="140px"
  179. >
  180. </el-table-column>
  181. <el-table-column
  182. prop="addr_code"
  183. label="收货地址"
  184. show-overflow-tooltip
  185. min-width="500px"
  186. >
  187. </el-table-column>
  188. </el-table>
  189. </template>
  190. </show-data-table>
  191. </el-collapse-item>
  192. <el-collapse-item title="商品信息" name="2">
  193. <show-goods-data-table
  194. :newTime="newTime"
  195. v-if="newTime !== ''"
  196. :type="sitem.order_type"
  197. :skucode="sitem.skuCode"
  198. :spucode="sitem.spuCode"
  199. :iscgd="true"
  200. />
  201. <editPrice
  202. :newTime="newTime"
  203. v-if="
  204. newTime !== '' &&
  205. sitem.status == '0' &&
  206. sitem.can[0].id == '6' &&
  207. cost_detailArr.is_gold_price == '1'
  208. "
  209. :sitem="sitem"
  210. :cost_detailArr="cost_detailArr"
  211. @refresh="refresh"
  212. >
  213. </editPrice>
  214. </el-collapse-item>
  215. <el-collapse-item
  216. title="入库单"
  217. name="3"
  218. v-if="sitem && sitem.status !== '0'"
  219. >
  220. <order-in-table
  221. :newTime="newTime"
  222. v-if="newTime !== ''"
  223. :sitem="sitem"
  224. :id="queryId"
  225. @refresh="initData()"
  226. />
  227. </el-collapse-item>
  228. <el-collapse-item
  229. title="工差单"
  230. name="4"
  231. v-if="
  232. sitem &&
  233. sitem.order_type !== '1' &&
  234. sitem.status !== '0' &&
  235. sitem.purcheasediff
  236. "
  237. >
  238. <work-diff-table :newTime="newTime" v-if="newTime !== ''" :sitem="sitem" />
  239. </el-collapse-item>
  240. </el-collapse>
  241. </el-tab-pane>
  242. <el-tab-pane label="审批记录" name="2">
  243. <process-time-line
  244. v-if="newTime !== ''"
  245. :newTime="newTime"
  246. :type="'CGD'"
  247. :orderCode="queryId"
  248. />
  249. </el-tab-pane>
  250. </el-tabs>
  251. </div>
  252. <div v-else>
  253. <no-auth></no-auth>
  254. </div>
  255. </div>
  256. </template>
  257. <script>
  258. import mixinPage from "@/mixins/elPaginationHandle";
  259. import resToken from "@/mixins/resToken";
  260. import asyncRequest from "@/apis/service/purchaseIn/purchaseOrder";
  261. import orderInTable from "./components/order-in-table";
  262. import workDiffTable from "./components/work-diff-table";
  263. import ShowDataTableColumns from "./components/ShowDataTableColumns";
  264. import { statusOptions } from "./columns";
  265. import { cg_order_type_options } from "@/assets/js/statusList";
  266. import tolerance from "./components/tolerance";
  267. import urlConfig from "@/apis/url-config";
  268. import editPrice from "./components/editPrice";
  269. export default {
  270. name: "purchaseOrderDetail",
  271. mixins: [mixinPage, resToken],
  272. components: {
  273. orderInTable,
  274. tolerance,
  275. workDiffTable,
  276. editPrice,
  277. },
  278. computed: {
  279. powers() {
  280. const tran =
  281. this.$store.getters.btnList.find(
  282. (item) => item.menu_route == "purchaseOrderDetail"
  283. ) || {};
  284. const { action } = tran ?? {};
  285. return action ?? [];
  286. },
  287. ppowers() {
  288. const tran =
  289. this.$store.getters.roleProcess.find((i) => i.process_type === "CGD") || {};
  290. const { action } = tran ?? {};
  291. return action ?? [];
  292. },
  293. },
  294. data() {
  295. return {
  296. hasdiff: false,
  297. activeTabs: "1",
  298. ShowDataTableColumns: ShowDataTableColumns,
  299. isMetal: false,
  300. finishStatus: "finish",
  301. activeNames: ["0", "1", "2", "3", "4", "5", "10"],
  302. sitem: null,
  303. statusOptions: statusOptions,
  304. cg_order_type_options,
  305. status: "",
  306. newTime: "",
  307. loading: false,
  308. queryId: "",
  309. ReturnAddModel: false, //采购单退货弹窗
  310. cost_detailArr: [],
  311. fileUrl: urlConfig.baseURL,
  312. };
  313. },
  314. mounted() {
  315. this.queryId = this.$route.query.id;
  316. this.initData();
  317. },
  318. methods: {
  319. // editPriceIf(sitem){
  320. // console.log(sitem.status,"aaaaaaaa")
  321. // if(sitem.status == "0" ){
  322. // return false
  323. // }else{
  324. // return true
  325. // }
  326. // },
  327. refresh() {
  328. this.initData();
  329. },
  330. getNewTime() {
  331. this.newTime = new Date().valueOf();
  332. },
  333. async examForm(e) {
  334. if (!this.loading) {
  335. let type = e.state === "1" ? "2" : "0";
  336. await this.setStatus(type, "提交入库方审核", e.remark);
  337. }
  338. },
  339. async goldPrice() {
  340. let res = {};
  341. let { order_type } = this.sitem;
  342. if (order_type == "1" || order_type == "2") {
  343. res = await asyncRequest.cost_detail({ spuCode: this.sitem.spuCode });
  344. } else {
  345. res = await asyncRequest.cove_detail({ spuCode: this.sitem.spuCode });
  346. }
  347. if (res && res.code === 0 && res.data) {
  348. this.cost_detailArr = res.data;
  349. } else if (res && res.code >= 100 && res.code <= 104) {
  350. await this.logout();
  351. } else {
  352. this.$message.warning(res.message);
  353. }
  354. },
  355. async initData() {
  356. this.loading = true;
  357. const res = await asyncRequest.detail({ cgdNo: this.queryId });
  358. if (res && res.code === 0 && res.data) {
  359. this.sitem = res.data;
  360. console.log("11111111111111111", this.sitem);
  361. this.goldPrice();
  362. const { status, can, cgdNo } = this.sitem;
  363. this.status = status;
  364. console.log(this.status);
  365. if (can && can.length > 0) {
  366. this.sitem.class_cat = "";
  367. can.forEach((x, i) => {
  368. this.sitem.class_cat += i === 0 ? x.name : "/" + x.name;
  369. });
  370. }
  371. this.getNewTime();
  372. } else if (res && res.code >= 100 && res.code <= 104) {
  373. await this.logout();
  374. } else {
  375. this.$message.warning(res.message);
  376. }
  377. this.loading = false;
  378. },
  379. async statusConfirm() {
  380. await this.$confirm(`确定已与供应商确认?`, {
  381. confirmButtonText: "确定",
  382. cancelButtonText: "取消",
  383. type: "warning",
  384. })
  385. .then(async () => {
  386. let model = {
  387. cgdNo: [this.sitem.cgdNo],
  388. status: "1",
  389. };
  390. const res = await asyncRequest.status(model);
  391. this.loading = false;
  392. if (res && res.code === 0) {
  393. this.$notify.success({
  394. title: "提交成功!",
  395. message: "",
  396. });
  397. await this.initData();
  398. } else if (res && res.code >= 100 && res.code <= 104) {
  399. await this.logout();
  400. } else {
  401. this.$message.warning(res.message);
  402. }
  403. })
  404. .catch(() => {
  405. console.log("取消");
  406. });
  407. },
  408. },
  409. };
  410. </script>
  411. <style lang="scss" scoped>
  412. .purchaseOrderDetail {
  413. }
  414. </style>