detailDialog.vue 14 KB

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