drawer.vue 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. <template>
  2. <el-drawer
  3. :visible.sync="drawer"
  4. direction="rtl"
  5. :append-to-body="true"
  6. size="100%"
  7. >
  8. <div slot="title" class="title">
  9. <span style="margin: 0" class="name">订单编号:{{ row.orderNo }}</span>
  10. <span>项目名称:{{ row.projectName }}</span>
  11. <span>客户名称:{{ row.partaName }}</span>
  12. <span>销售类型:{{ row.saleTypeName }}</span>
  13. </div>
  14. <!-- <headerTitle title="摘要卡片" style="margin-top: 15px"></headerTitle> -->
  15. <div class="card">
  16. <div>
  17. <span> 订单数量</span>
  18. <span class="value"
  19. >{{ orderNoCountData.saleOrderNumber }}
  20. &nbsp;&nbsp;
  21. </span>
  22. </div>
  23. <div>
  24. <span> 订单总金额</span>
  25. <span class="value"
  26. >{{ orderNoCountData.totalAmountSaleOrder }}
  27. &nbsp;&nbsp;元
  28. </span>
  29. </div>
  30. <div>
  31. <span> 应收款</span>
  32. <span class="value"
  33. >{{ orderNoCountData.receivable }}
  34. &nbsp;&nbsp;元
  35. </span>
  36. </div>
  37. <div>
  38. <span> 出库数量</span>
  39. <span class="value"
  40. >{{ orderNoCountData.sendNumber }}
  41. &nbsp;&nbsp;
  42. </span>
  43. </div>
  44. <div>
  45. <span> 退货数量</span>
  46. <span class="value"
  47. >{{ orderNoCountData.returnNumber }}
  48. &nbsp;&nbsp;
  49. </span>
  50. </div>
  51. <div>
  52. <span> 退货金额</span>
  53. <span class="value"
  54. >{{ orderNoCountData.returnAmount }}
  55. &nbsp;&nbsp;元
  56. </span>
  57. </div>
  58. <!-- <span>预计结单日期:</span> -->
  59. </div>
  60. <div class="ele-body" style="height: calc(100% - 124px)">
  61. <el-tabs v-model="activeName" style="width: 100%" type="border-card">
  62. <el-tab-pane label="详细信息" name="详细信息">
  63. <saleOrderInfo ref="saleOrderInfoRef"></saleOrderInfo>
  64. </el-tab-pane>
  65. <el-tab-pane label="受托收货" name="受托收货">
  66. <entrustedReceive :saleOrderData="row" :key="row.id"></entrustedReceive>
  67. </el-tab-pane>
  68. <el-tab-pane label="发货单" name="发货单">
  69. <invoice v-if="activeName == '发货单'" :saleOrderData="row" :key="row.id"></invoice>
  70. </el-tab-pane>
  71. <el-tab-pane label="退货单" name="退货单">
  72. <returnGoods :saleOrderData="row" :key="row.id"></returnGoods>
  73. </el-tab-pane>
  74. <el-tab-pane label="对账单" name="对账单">
  75. <accountstatement
  76. :saleOrderData="row"
  77. :key="row.id"
  78. ></accountstatement>
  79. </el-tab-pane>
  80. <el-tab-pane label="采购计划" name="采购计划">
  81. <purchasePlanManage
  82. :saleOrderData="row"
  83. :key="row.id"
  84. ></purchasePlanManage>
  85. </el-tab-pane>
  86. <el-tab-pane label="生产计划" name="生产计划">
  87. <productionPlan :saleOrderData="row" :key="row.id"></productionPlan>
  88. </el-tab-pane>
  89. <el-tab-pane label="生产工单" name="生产工单">
  90. <produceOrder :saleOrderData="row" :key="row.id"></produceOrder>
  91. </el-tab-pane>
  92. <el-tab-pane label="领料" name="领料">
  93. <pick :saleOrderData="row" :key="row.id"> </pick>
  94. </el-tab-pane>
  95. <el-tab-pane label="退料" name="退料">
  96. <materialReturn :saleOrderData="row" :key="row.id"> </materialReturn>
  97. </el-tab-pane>
  98. <el-tab-pane label="入库单" name="入库单">
  99. <warehousing :saleOrderData="row" :key="row.id"></warehousing>
  100. </el-tab-pane>
  101. <el-tab-pane label="应收款" name="应收款">
  102. <receivableManage
  103. :saleOrderData="row"
  104. :key="row.id"
  105. ></receivableManage>
  106. </el-tab-pane>
  107. <el-tab-pane label="催单记录" name="催单记录">
  108. <saleOrderReminderList
  109. ref="saleOrderReminderListRef"
  110. ></saleOrderReminderList>
  111. </el-tab-pane>
  112. <el-tab-pane
  113. label="审批流程"
  114. name="审批流程"
  115. v-if="row.processInstanceId"
  116. >
  117. <bpmDetail
  118. v-if="row.processInstanceId && activeName == '审批流程'"
  119. :id="row.processInstanceId"
  120. :key="row.id"
  121. ></bpmDetail>
  122. </el-tab-pane>
  123. <el-tab-pane label="售后工单" name="售后工单">
  124. <saleOderAftersalesList
  125. :saleOrderData="row"
  126. ref="saleOderAftersalesListRef"
  127. ></saleOderAftersalesList>
  128. </el-tab-pane>
  129. <el-tab-pane label="冲差单" name="冲差单">
  130. <adjustmentNote
  131. v-if="activeName == '冲差单'"
  132. :saleOrderData="row"
  133. :showAddBtn="true"
  134. ref="adjustmentNoteRef"
  135. ></adjustmentNote>
  136. </el-tab-pane>
  137. </el-tabs>
  138. </div>
  139. </el-drawer>
  140. </template>
  141. <script>
  142. import {
  143. getSaleOrderDetail,
  144. queryOrderNoCount
  145. } from '@/api/saleManage/saleorder';
  146. import dictMixins from '@/mixins/dictMixins';
  147. import bpmDetail from '@/views/bpm/processInstance/detail.vue';
  148. import saleOrderInfo from './darwerComponents/saleOrderInfo.vue';
  149. //受托收货
  150. import entrustedReceive from '@/views/saleManage/saleOrder/entrustedReceive/index.vue';
  151. //发货单
  152. import invoice from '@/views/saleManage/saleOrder/invoice/index.vue';
  153. //退货单
  154. import returnGoods from '@/views/saleManage/saleOrder/returnGoods/index.vue';
  155. //冲差单
  156. import adjustmentNote from '@/views/saleManage/saleOrder/adjustmentNote‌/index.vue';
  157. //对账单
  158. import accountstatement from '@/views/saleManage/saleOrder/accountstatement/index.vue';
  159. //采购计划
  160. import purchasePlanManage from '@/views/purchasingManage/purchasePlanManage/index.vue';
  161. //生成计划
  162. import productionPlan from './darwerComponents/productionPlan.vue';
  163. //生成工单
  164. import produceOrder from './darwerComponents/produceOrder.vue';
  165. //领料
  166. import pick from './darwerComponents/pick/index.vue';
  167. //退料
  168. import materialReturn from './darwerComponents/materialReturn/index.vue';
  169. //入库
  170. import warehousing from './darwerComponents/warehousing/index.vue';
  171. //应收
  172. import receivableManage from '@/views/financialManage/receivableManage/index.vue';
  173. //催单
  174. import saleOrderReminderList from './darwerComponents/saleOrderReminderList.vue';
  175. //售后工单
  176. import saleOderAftersalesList from './darwerComponents/saleOderAftersalesList.vue';
  177. export default {
  178. mixins: [dictMixins],
  179. components: {
  180. bpmDetail,
  181. saleOrderInfo,
  182. invoice,
  183. returnGoods,
  184. accountstatement,
  185. purchasePlanManage,
  186. productionPlan,
  187. produceOrder,
  188. pick,
  189. materialReturn,
  190. warehousing,
  191. receivableManage,
  192. saleOrderReminderList,
  193. saleOderAftersalesList,
  194. entrustedReceive,
  195. adjustmentNote
  196. },
  197. data() {
  198. return {
  199. drawer: false,
  200. title: '',
  201. activeName: '详细信息',
  202. row: { contactId: '' },
  203. content: '',
  204. orderNoCountData: {
  205. saleOrderNumber: '', //订单数量
  206. totalAmountSaleOrder: '', //订单总金额
  207. sendNumber: '', //发货数量
  208. receivable: '', //应收款
  209. returnNumber: '', //退货数量
  210. returnAmount: '' //退货金额
  211. }
  212. };
  213. },
  214. created() {},
  215. methods: {
  216. async open(row) {
  217. this.activeName='详细信息'
  218. this.row = await getSaleOrderDetail(row.id);
  219. this.orderNoCountData = await queryOrderNoCount(row.orderNo);
  220. this.drawer = true;
  221. this.$nextTick(() => {
  222. this.$refs.saleOrderInfoRef.init(this.row);
  223. this.$refs.saleOrderReminderListRef.init(this.row.reminderRecord);
  224. this.$refs.saleOderAftersalesListRef.init(this.row)
  225. });
  226. },
  227. handleClose(done) {
  228. this.$confirm('确认关闭?')
  229. .then((_) => {
  230. done();
  231. })
  232. .catch((_) => {});
  233. }
  234. }
  235. };
  236. </script>
  237. <style lang="scss" scoped>
  238. .ele-body {
  239. display: flex;
  240. }
  241. :deep(.el-tabs__content) {
  242. padding: 10px;
  243. height: calc(100% - 40px);
  244. overflow: auto;
  245. }
  246. :deep(.el-input.is-disabled .el-input__inner) {
  247. color: #606266;
  248. }
  249. .card {
  250. display: flex;
  251. padding: 15px;
  252. font-size: 16px;
  253. span {
  254. flex: 1;
  255. }
  256. }
  257. .title {
  258. span {
  259. margin-left: 50px;
  260. }
  261. .name {
  262. font-weight: 800;
  263. color: #40a9ff;
  264. }
  265. }
  266. .card {
  267. display: flex;
  268. padding: 15px;
  269. font-size: 16px;
  270. > div {
  271. flex: 1;
  272. margin: 0px 40px;
  273. background: #1890ff;
  274. color: #fff;
  275. display: flex;
  276. flex-direction: column;
  277. align-items: center;
  278. justify-content: center;
  279. padding: 12px;
  280. border-radius: 10px;
  281. .value {
  282. margin-top: 8px;
  283. }
  284. }
  285. }
  286. </style>