detailDialog.vue 7.0 KB

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