detailDialog.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <template>
  2. <ele-modal
  3. custom-class="ele-dialog-form long-dialog-form"
  4. :centered="true"
  5. :visible.sync="detailDialogFlag"
  6. title="收款详情"
  7. :append-to-body="true"
  8. :close-on-click-modal="false"
  9. width="60%"
  10. :before-close="cancel"
  11. >
  12. <div class="switch_left">
  13. <ul>
  14. <li
  15. v-for="item in tabOptions"
  16. :key="item.key"
  17. :class="{ active: activeComp == item.key }"
  18. @click="activeComp = item.key"
  19. >
  20. {{ item.name }}
  21. </li>
  22. </ul>
  23. </div>
  24. <div v-if="activeComp === 'main'">
  25. <el-form ref="form" :model="form" class="el-form-box" label-width="120px">
  26. <headerTitle title="基本信息"></headerTitle>
  27. <el-row :gutter="12">
  28. <el-col :span="12">
  29. <el-form-item
  30. label="应收日期"
  31. prop="receivableDate"
  32. >
  33. <el-date-picker
  34. style="width: 100%"
  35. v-model="form.receivableDate"
  36. disabled
  37. type="date"
  38. value-format="yyyy-MM-dd">
  39. </el-date-picker>
  40. </el-form-item>
  41. </el-col>
  42. <el-col :span="12">
  43. <el-form-item
  44. label="应收金额"
  45. prop="receivableTotalPrice"
  46. >
  47. <el-input-number disabled v-model="form.receivableTotalPrice" :precision="2" :controls="false"
  48. style="width: 100%"
  49. :min="0"></el-input-number>
  50. </el-form-item>
  51. </el-col>
  52. </el-row>
  53. <el-row :gutter="12">
  54. <el-col :span="12">
  55. <el-form-item
  56. label="会计科目"
  57. prop="accountingSubjectId"
  58. >
  59. <ele-tree-select
  60. disabled
  61. clearable
  62. filterable
  63. ref="treeSelect"
  64. :data="accountingSubjectList"
  65. v-model="form.accountingSubjectId"
  66. valueKey="id"
  67. labelKey="name"
  68. placeholder="请选择"
  69. @change="changeSubjectInfo"
  70. default-expand-all
  71. />
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="12">
  75. <el-form-item
  76. label="发票编码"
  77. prop="invoiceCode"
  78. >
  79. <el-input disabled v-model="form.invoiceCode"></el-input>
  80. </el-form-item>
  81. </el-col>
  82. </el-row>
  83. <el-row :gutter="12">
  84. <el-col :span="12">
  85. <el-form-item
  86. label="来源类型"
  87. prop="sourceType"
  88. >
  89. <el-input :value="form.sourceType==2?'合同':form.sourceType==3?'销售订单':'对账单'" disabled></el-input>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :span="12">
  93. <el-form-item
  94. label="来源编码"
  95. prop="sourceCode"
  96. >
  97. <el-input v-model="form.sourceCode" disabled></el-input>
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="12">
  101. <el-form-item
  102. label="公司名称"
  103. prop="contactName"
  104. >
  105. <el-input disabled v-model="form.contactName"></el-input>
  106. </el-form-item>
  107. </el-col>
  108. <el-col :span="12">
  109. <el-form-item
  110. label="备注"
  111. prop="remark"
  112. >
  113. <el-input disabled v-model="form.remark"></el-input>
  114. </el-form-item>
  115. </el-col>
  116. <el-col :span="12">
  117. <el-form-item label="附件">
  118. <fileMain v-model="form.files" type="view"></fileMain>
  119. </el-form-item>
  120. </el-col>
  121. </el-row>
  122. <headerTitle title="收款信息"></headerTitle>
  123. <info-table ref="feeRelatedInfoTable" @invoiceChange="init" dialog-type="view" v-if="form.id" :form.sync="form"></info-table>
  124. </el-form>
  125. </div>
  126. <bpmDetail v-if="activeComp === 'bpm' && form.processInstanceId" :id="form.processInstanceId"></bpmDetail>
  127. <div slot="footer">
  128. <el-button @click="cancel">返回</el-button>
  129. </div>
  130. </ele-modal>
  131. </template>
  132. <script>
  133. import {getFile} from '@/api/system/file';
  134. import dictMixins from '@/mixins/dictMixins';
  135. import fileMain from '@/components/addDoc/index.vue';
  136. import {getFinReceivableInfoAPI} from "@/api/financialManage/receivableManage";
  137. import {getTreeByPid} from "@/api/classifyManage";
  138. import infoTable from "@/views/financialManage/receivableManage/components/infoTable.vue";
  139. import bpmDetail from "@/views/bpm/processInstance/detail.vue";
  140. import tableInfo from "@/views/financialManage/invoiceManage/components/tableInfo.vue";
  141. export default {
  142. mixins: [dictMixins],
  143. components: {
  144. tableInfo, bpmDetail,
  145. infoTable,
  146. fileMain
  147. },
  148. data() {
  149. return {
  150. activeComp: 'main',
  151. tabOptions: [
  152. {key: 'main', name: '收款详情'},
  153. {key: 'bpm', name: '流程详情'}
  154. ],
  155. dialogType: '',
  156. form: {
  157. accountingSubjectCode: "",
  158. accountingSubjectId: '',
  159. accountingSubjectName: "",
  160. contactId: '',
  161. contactName: "",
  162. files: [],
  163. id: '',
  164. invoiceCode: "",
  165. receivableDate: "",
  166. receivableTotalPrice: '',
  167. receivedTotalPrice: '',
  168. remark: "",
  169. sourceCode: "",
  170. sourceId: "",
  171. sourceType: '',
  172. unreceiveTotalPrice: 0
  173. },
  174. accountingSubjectList: [],
  175. rules: {
  176. accountingSubjectId: {required: true, message: '请选择', trigger: 'change'},
  177. receivableDate: {required: true, message: '请选择', trigger: 'change'},
  178. }
  179. };
  180. },
  181. props: {
  182. detailDialogFlag: {
  183. type: Boolean,
  184. default: false,
  185. },
  186. },
  187. async created() {
  188. },
  189. methods: {
  190. //获取详情
  191. async init(id) {
  192. await this.getClassifyList(24, 'accountingSubjectList')
  193. this.form = await getFinReceivableInfoAPI(id)
  194. this.$nextTick(()=>{
  195. this.$refs.feeRelatedInfoTable.init()
  196. })
  197. },
  198. downloadFile(file) {
  199. getFile({objectName: file.storePath}, file.name);
  200. },
  201. //获取分类管理中的数据
  202. async getClassifyList(id, listName) {
  203. let res = await getTreeByPid(id)
  204. this[listName] = res.data
  205. },
  206. //获取会计科目选中数据
  207. changeSubjectInfo(val) {
  208. if (!val) return this.form.accountingSubjectName = ''
  209. let data = this.$refs.treeSelect?.$refs?.tree?.getCurrentNode() || {}
  210. this.form.accountingSubjectName = data.name
  211. },
  212. cancel() {
  213. this.$emit('update:detailDialogFlag', false)
  214. }
  215. }
  216. };
  217. </script>
  218. <style scoped lang="scss">
  219. .ele-dialog-form {
  220. .el-form-item {
  221. margin-bottom: 10px;
  222. }
  223. }
  224. .headbox {
  225. display: flex;
  226. justify-content: flex-start;
  227. align-items: center;
  228. .amount {
  229. font-size: 14px;
  230. font-weight: bold;
  231. margin-right: 20px;
  232. }
  233. }
  234. </style>