detailDialog.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. <template>
  2. <ele-modal
  3. custom-class="ele-dialog-form long-dialog-form"
  4. :centered="true"
  5. v-if="visible"
  6. :visible.sync="visible"
  7. :title="title"
  8. :append-to-body="true"
  9. :maxable="true"
  10. :resizable="true"
  11. :close-on-click-modal="false"
  12. width="70%"
  13. @close="cancel"
  14. >
  15. <div class="switch">
  16. <div class="switch_left">
  17. <ul>
  18. <li
  19. v-for="item in tabOptions"
  20. :key="item.key"
  21. :class="{ active: activeComp == item.key }"
  22. @click="activeComp = item.key"
  23. >
  24. {{ item.name }}
  25. </li>
  26. </ul>
  27. </div>
  28. </div>
  29. <div v-show="activeComp == 'order'">
  30. <el-form
  31. ref="form"
  32. class="el-form-box"
  33. :model="form"
  34. label-width="120px"
  35. >
  36. <headerTitle title="订单信息"> </headerTitle>
  37. <el-row>
  38. <el-col :span="12">
  39. <el-form-item label="订单编号:" prop="orderNo">
  40. <el-input v-model="form.orderNo" disabled></el-input>
  41. </el-form-item>
  42. <el-form-item label="合同名称:" prop="contractName">
  43. <el-input v-model="form.contractName" disabled></el-input>
  44. </el-form-item>
  45. <el-form-item label="合同编号:" prop="contractNumber">
  46. <el-input v-model="form.contractNumber" disabled></el-input>
  47. </el-form-item>
  48. <el-form-item label="结算方式:" prop="settlementModeName">
  49. <el-input v-model="form.settlementModeName" disabled></el-input>
  50. </el-form-item>
  51. <el-form-item label="客户收货地址:" prop="receiveAddress">
  52. <el-input v-model="form.receiveAddress" disabled></el-input>
  53. </el-form-item>
  54. <el-form-item label="订单备注:" prop="remark">
  55. <el-input
  56. type="textarea"
  57. v-model="form.remark"
  58. disabled
  59. ></el-input>
  60. </el-form-item>
  61. <el-form-item prop="orderFiles" label="订单附件:">
  62. <fileMain v-model="form.orderFiles" type="view"></fileMain>
  63. </el-form-item>
  64. </el-col>
  65. <el-col :span="12">
  66. <el-form-item label="项目名称:" prop="projectName">
  67. <el-input v-model="form.projectName" disabled></el-input>
  68. </el-form-item>
  69. <el-form-item label="销售部门:" prop="salesDeptName">
  70. <el-input v-model="form.salesDeptName" disabled></el-input>
  71. </el-form-item>
  72. <el-form-item label="销售类型:" prop="saleTypeName">
  73. <el-input v-model="form.saleTypeName" disabled></el-input>
  74. </el-form-item>
  75. <el-form-item label="总金额:" prop="totalAmount">
  76. <el-input v-model="form.totalAmount" disabled>
  77. <template slot="append"> 元 </template>
  78. </el-input>
  79. </el-form-item>
  80. <el-form-item label="优惠后总金额:" prop="payAmount">
  81. <el-input v-model="form.payAmount" disabled>
  82. <template slot="append"> 元 </template>
  83. </el-input>
  84. </el-form-item>
  85. <el-form-item
  86. label="订单类型:"
  87. prop="needProduce"
  88. style="margin-bottom: 22px"
  89. >
  90. <el-radio v-model="form.needProduce" disabled :label="1"
  91. >生产性订单</el-radio
  92. >
  93. <el-radio v-model="form.needProduce" disabled :label="0"
  94. >库存式订单</el-radio
  95. >
  96. <el-radio v-model="form.needProduce" disabled :label="2"
  97. >无客户生产性订单</el-radio
  98. >
  99. <el-radio v-model="form.needProduce" disabled :label="4"
  100. >不定向订单</el-radio
  101. >
  102. </el-form-item>
  103. <el-form-item
  104. label="总数"
  105. prop="totalPlanNum"
  106. v-if="form.needProduce == 4"
  107. >
  108. <el-input
  109. v-model="form.totalPlanNum"
  110. class="totalPlanNum"
  111. disabled
  112. >
  113. <template slot="append">
  114. <DictSelection
  115. dictName="计量单位"
  116. disabled
  117. v-model="form.planNumUnit"
  118. >
  119. </DictSelection>
  120. </template>
  121. </el-input>
  122. </el-form-item>
  123. </el-col>
  124. </el-row>
  125. <headerTitle title="基本信息"></headerTitle>
  126. <el-row>
  127. <el-col :span="12">
  128. <el-form-item label="客户名称:" prop="partaName">
  129. <el-input v-model="form.partaName" disabled></el-input>
  130. </el-form-item>
  131. <el-form-item
  132. label="客户统一社会信用代码:"
  133. prop="partaUnifiedSocialCreditCode"
  134. class="form_item_label"
  135. >
  136. <el-input
  137. v-model="form.partaUnifiedSocialCreditCode"
  138. disabled
  139. ></el-input>
  140. </el-form-item>
  141. <el-form-item label="客户联系人:" prop="partaLinkName">
  142. <el-input v-model="form.partaLinkName" disabled></el-input>
  143. </el-form-item>
  144. <el-form-item label="客户电话:" prop="partaTel">
  145. <el-input v-model="form.partaTel" disabled></el-input>
  146. </el-form-item>
  147. <el-form-item label="客户传真:" prop="partaFax">
  148. <el-input v-model="form.partaFax" disabled></el-input>
  149. </el-form-item>
  150. <el-form-item label=" 客户Email:" prop="partaEmail">
  151. <el-input v-model="form.partaEmail" disabled></el-input>
  152. </el-form-item>
  153. <el-form-item label="客户地址:" prop="partaAddress">
  154. <el-input v-model="form.partaAddress" disabled></el-input>
  155. </el-form-item>
  156. </el-col>
  157. <el-col :span="12">
  158. <el-form-item label="售出方名称:" prop="partbName">
  159. <el-input v-model="form.partbName" disabled></el-input>
  160. </el-form-item>
  161. <el-form-item
  162. label="售出方统一社会信用代码:"
  163. prop="partbUnifiedSocialCreditCode"
  164. class="form_item_label"
  165. >
  166. <el-input
  167. v-model="form.partbUnifiedSocialCreditCode"
  168. disabled
  169. ></el-input>
  170. </el-form-item>
  171. <el-form-item label="售出方联系人:" prop="partbLinkName">
  172. <el-input v-model="form.partbLinkName" disabled></el-input>
  173. </el-form-item>
  174. <el-form-item
  175. prop="partbTel"
  176. label="售出方联系电话:"
  177. class="form_item_label"
  178. >
  179. <el-input v-model="form.partbTel" disabled></el-input>
  180. </el-form-item>
  181. <el-form-item prop="partbFax" label="售出方传真:">
  182. <el-input v-model="form.partbFax" disabled></el-input>
  183. </el-form-item>
  184. <el-form-item label="售出方Email:" prop="partbEmail">
  185. <el-input v-model="form.partbEmail" disabled></el-input>
  186. </el-form-item>
  187. <el-form-item label="售出方地址:" prop="partbAddress">
  188. <el-input v-model="form.partbAddress" disabled></el-input>
  189. </el-form-item>
  190. </el-col>
  191. </el-row>
  192. </el-form>
  193. <headerTitle title="物品清单" v-if="form.needProduce != 4"></headerTitle>
  194. <inventoryTabledetail
  195. v-if="form.needProduce != 4"
  196. ref="inventoryTabledetailRef"
  197. :isCustomerMark="true"
  198. :isDiscountTotalPrice="true"
  199. pageName="send"
  200. ></inventoryTabledetail>
  201. <headerTitle title="类型清单" v-if="form.needProduce == 4"></headerTitle>
  202. <typeList
  203. v-if="form.needProduce == 4"
  204. ref="typeListRef"
  205. type="view"
  206. ></typeList>
  207. </div>
  208. <bpmDetail
  209. v-if="activeComp === 'bpm' && form.processInstanceId"
  210. :id="form.processInstanceId"
  211. ></bpmDetail>
  212. <div v-if="activeComp == 'invoice'">
  213. <invoiceList :orderId="detailId"></invoiceList>
  214. </div>
  215. <div v-if="activeComp == 'returnorder'">
  216. <returnGoodsList :orderId="detailId"></returnGoodsList>
  217. </div>
  218. <div v-if="activeComp == 'accountstatement'">
  219. <accountstatementList :orderId="detailId"></accountstatementList>
  220. </div>
  221. <div slot="footer" class="footer">
  222. <el-button @click="cancel">返回</el-button>
  223. </div>
  224. </ele-modal>
  225. </template>
  226. <script>
  227. import { getSaleOrderDetail } from '@/api/saleManage/saleorder';
  228. import invoiceList from '@/views/saleManage/saleOrder/orderAssociation/invoiceList.vue';
  229. import returnGoodsList from '@/views/saleManage/saleOrder/orderAssociation/returnGoodsList.vue';
  230. import accountstatementList from '@/views/saleManage/saleOrder/orderAssociation/accountstatementList.vue';
  231. import { getFile } from '@/api/system/file';
  232. import dictMixins from '@/mixins/dictMixins';
  233. import { copyObj } from '@/utils/util';
  234. import bpmDetail from '@/views/bpm/processInstance/detail.vue';
  235. import inventoryTabledetail from '@/BIZComponents/inventoryTableDetails.vue';
  236. import fileMain from '@/components/addDoc/index.vue';
  237. import typeList from './typeList.vue';
  238. export default {
  239. mixins: [dictMixins],
  240. components: {
  241. fileMain,
  242. invoiceList,
  243. returnGoodsList,
  244. accountstatementList,
  245. bpmDetail,
  246. inventoryTabledetail,
  247. typeList
  248. },
  249. data() {
  250. return {
  251. activeComp: 'order',
  252. tabOptions: [
  253. { key: 'order', name: '订单详情' },
  254. { key: 'bpm', name: '流程详情' },
  255. { key: 'invoice', name: '发货列表' },
  256. { key: 'returnorder', name: '退货列表' },
  257. { key: 'accountstatement', name: '对账列表' }
  258. ],
  259. visible: false,
  260. detailId: '',
  261. title: '详情',
  262. form: {
  263. orderFiles: []
  264. },
  265. };
  266. },
  267. methods: {
  268. async open(row) {
  269. this.form = row;
  270. this.visible = true;
  271. this.getDetailData(row.id);
  272. this.detailId = row.id;
  273. },
  274. toSendTab(tabName) {
  275. this.activeComp = tabName;
  276. },
  277. cancel() {
  278. this.$nextTick(() => {
  279. // 关闭后,销毁所有的表单数据
  280. (this.form = copyObj(this.formDef)),
  281. (this.otherForm = copyObj(this.otherFormDef)),
  282. (this.tableBankData = []);
  283. this.tableLinkData = [];
  284. this.visible = false;
  285. });
  286. },
  287. async getDetailData(id) {
  288. this.loading = true;
  289. const data = await getSaleOrderDetail(id);
  290. this.loading = false;
  291. if (data) {
  292. this.form = data;
  293. this.$nextTick(() => {
  294. this.$refs.inventoryTabledetailRef &&
  295. this.$refs.inventoryTabledetailRef.putTableValue(data);
  296. this.$refs.typeListRef &&
  297. this.$refs.typeListRef.putTableValue(row.typedetailList);
  298. });
  299. }
  300. }
  301. }
  302. };
  303. </script>
  304. <style scoped lang="scss">
  305. .ele-dialog-form {
  306. .el-form-item {
  307. margin-bottom: 10px;
  308. }
  309. }
  310. .headbox {
  311. display: flex;
  312. justify-content: flex-start;
  313. align-items: center;
  314. .amount {
  315. font-size: 14px;
  316. font-weight: bold;
  317. margin-right: 20px;
  318. }
  319. }
  320. .switch_left ul .active {
  321. border-top: 4px solid var(--color-primary);
  322. color: var(--color-primary-5);
  323. }
  324. .switch {
  325. padding-bottom: 20px;
  326. }
  327. :deep .divider .content {
  328. justify-content: flex-start;
  329. }
  330. </style>