MergeTaxViewDialog.vue 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. <template>
  2. <el-dialog
  3. title="税款申报信息"
  4. v-model="visible"
  5. :width="width"
  6. append-to-body
  7. draggable
  8. @close="close"
  9. >
  10. <!-- 功能按钮 -->
  11. <div style="padding: 8px 24px 16px 24px">
  12. <el-form size="small" label-width="140px" v-model="form">
  13. <el-row :gutter="30">
  14. <el-col :span="12">
  15. <el-form-item label="客户名称">
  16. <div>{{ form.companyName }}</div>
  17. </el-form-item>
  18. </el-col>
  19. <el-col :span="12">
  20. <el-form-item label="所属月份">
  21. <div>{{ form.year }}-{{ form.month }}</div>
  22. </el-form-item>
  23. </el-col>
  24. <el-col :span="24">
  25. <el-divider content-position="left" style="font-size: 10px"
  26. >个税</el-divider
  27. >
  28. </el-col>
  29. <el-col :span="12">
  30. <el-form-item label="个税金额:">
  31. <div>{{ rowNum(personTax.amount) }}</div>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :span="24">
  35. <el-form-item label="备注:">
  36. <div>{{ personTax.content }}</div>
  37. </el-form-item>
  38. </el-col>
  39. <el-col :span="24">
  40. <el-form-item label="凭证:" required>
  41. <img
  42. v-if="!!personTax.evidenceFile"
  43. style="height: 148px; width: 148px"
  44. :src="`${baseUrl}/${personTax.evidenceFile}`"
  45. class="avatar"
  46. @click="openFile(personTax.evidenceFile)"
  47. />
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="24">
  51. <el-form-item label="报表:" required>
  52. <el-button
  53. v-if="!!personTax.reportFile"
  54. type="text"
  55. class="avatar"
  56. @click="openFile(personTax.reportFile)"
  57. >打开文件</el-button
  58. >
  59. </el-form-item>
  60. </el-col>
  61. <el-col :span="24">
  62. <el-divider content-position="left" style="font-size: 10px"
  63. >其他税</el-divider
  64. >
  65. </el-col>
  66. <el-col :span="12">
  67. <el-form-item label="增值税:">
  68. <div>{{ rowNum(reportTax.valueAddedTax) }}</div>
  69. </el-form-item>
  70. </el-col>
  71. <el-col :span="12">
  72. <el-form-item label="城建税:">
  73. <div>{{ rowNum(reportTax.cityConstructTax) }}</div>
  74. </el-form-item>
  75. </el-col>
  76. <el-col :span="12">
  77. <el-form-item label="教育费附加:">
  78. <div>{{ rowNum(reportTax.additionsTaxOfEducation) }}</div>
  79. </el-form-item>
  80. </el-col>
  81. <el-col :span="12">
  82. <el-form-item label="地方教育费附加:">
  83. <div>{{ rowNum(reportTax.ladditionsTaxOfEducation) }}</div>
  84. </el-form-item>
  85. </el-col>
  86. <el-col :span="12">
  87. <el-form-item label="企业所得税:">
  88. <div>{{ rowNum(reportTax.businessIncomeTax) }}</div>
  89. </el-form-item>
  90. </el-col>
  91. <el-col :span="12">
  92. <el-form-item label="印花税:">
  93. <div>{{ rowNum(reportTax.stampTax) }}</div>
  94. </el-form-item>
  95. </el-col>
  96. <el-col :span="12">
  97. <el-form-item label="文化事业建设税:">
  98. <div>{{ rowNum(reportTax.culturalConstructTax) }}</div>
  99. </el-form-item>
  100. </el-col>
  101. <el-col :span="12">
  102. <el-form-item label="消费税:">
  103. <div>{{ rowNum(reportTax.excise) }}</div>
  104. </el-form-item>
  105. </el-col>
  106. <el-col :span="12">
  107. <el-form-item label="合计:">
  108. <div>{{ rowNum(reportTax.sumTax) }}</div>
  109. </el-form-item>
  110. </el-col>
  111. <el-col :span="24">
  112. <el-form-item label="备注:">
  113. <div>{{ reportTax.content }}</div>
  114. </el-form-item>
  115. </el-col>
  116. <el-col :span="24">
  117. <el-form-item label="凭证:" required>
  118. <img
  119. v-if="!!reportTax.evidenceFile"
  120. style="height: 148px; width: 148px"
  121. :src="`${baseUrl}${reportTax.evidenceFile}`"
  122. class="avatar"
  123. @click="openFile(reportTax.evidenceFile)"
  124. />
  125. </el-form-item>
  126. </el-col>
  127. <el-col :span="24">
  128. <el-form-item label="报表:" required>
  129. <el-table
  130. ref="dbTable"
  131. :data="reportTax.reportFiles"
  132. size="small"
  133. border
  134. header-row-class-name="list-header-row"
  135. row-class-name="list-row"
  136. >
  137. <el-table-column
  138. label="文件名"
  139. prop="rawFileName"
  140. align="center"
  141. show-overflow-tooltip
  142. >
  143. <template #default="scope">
  144. <el-button
  145. size="small"
  146. type="text"
  147. @click="openFile(scope.row.fileUrl)"
  148. >{{ scope.row.rawFileName }}</el-button
  149. >
  150. </template>
  151. </el-table-column>
  152. <el-table-column
  153. label="文件类型"
  154. width="80"
  155. prop="fileType"
  156. align="center"
  157. />
  158. </el-table>
  159. </el-form-item>
  160. </el-col>
  161. </el-row>
  162. </el-form>
  163. </div>
  164. <div class="form-btns-container" style="height: 40px">
  165. <el-button size="small" style="float: right" @click="close"
  166. ><i class="fa fa-close" aria-hidden="true" f /> 取消</el-button
  167. >
  168. </div>
  169. <!-- <feedback-dialog ref="feedbackDialogView" :parent="this" />
  170. <print-dialog ref="printDialog" :parent="this" /> -->
  171. </el-dialog>
  172. </template>
  173. <script setup>
  174. import { getAmountView } from "@/api/business/production/deduction";
  175. import { uploadFile } from "@/api/tool/file";
  176. import { rowNum } from "@/utils/index";
  177. import { ref } from "vue";
  178. const { proxy } = getCurrentInstance();
  179. const visible = ref(false);
  180. const width = ref(800);
  181. const selections = ref([]);
  182. const currentSource = ref(null);
  183. const editStatus = ref(false);
  184. const canSave = ref(false);
  185. const baseUrl = ref(import.meta.env.VITE_APP_BASE_API);
  186. const props = defineProps({
  187. getList: {
  188. type: Function,
  189. default: () => {},
  190. },
  191. });
  192. const { getList } = toRefs(props);
  193. const total = ref(0);
  194. const employeeEmptyData = {
  195. id: null,
  196. title: "",
  197. remark: "",
  198. employeeName: "",
  199. departmentName: "",
  200. idCardImage: "",
  201. idCardImageBack: "",
  202. idiograph: "",
  203. details: [],
  204. editStatus: true,
  205. };
  206. const form = ref({});
  207. const conditions = ref({});
  208. const reportTax = ref({});
  209. const personTax = ref({});
  210. const emptyForm = {
  211. details: [],
  212. };
  213. function open(detail) {
  214. visible.value = true;
  215. conditions.value = detail;
  216. loadData();
  217. }
  218. function loadData() {
  219. console.log(conditions.value);
  220. getAmountView(conditions.value).then((res) => {
  221. form.value = res.data.form;
  222. reportTax.value = res.data.reportTax;
  223. personTax.value = res.data.individualTax;
  224. });
  225. }
  226. function close() {
  227. visible.value = false;
  228. reset();
  229. }
  230. function reset() {
  231. form.value = proxy.deepClone(emptyForm);
  232. reportTax.value = {};
  233. personTax.value = {};
  234. canSave.value = false;
  235. }
  236. function handleCurrentChange(row) {
  237. currentSource.value = row;
  238. }
  239. function openFile(url) {
  240. window.open(`${baseUrl.value}${url}`);
  241. }
  242. // 暴露给父组件的方法
  243. defineExpose({
  244. open,
  245. });
  246. </script>
  247. <style scoped>
  248. .img {
  249. width: 23px;
  250. height: 23px;
  251. display: flex;
  252. justify-content: center;
  253. align-items: center;
  254. }
  255. ::v-deep(.el-upload) {
  256. display: flex;
  257. text-align: center;
  258. justify-content: center;
  259. cursor: pointer;
  260. outline: 0;
  261. }
  262. .required::after {
  263. content: "*";
  264. color: red;
  265. }
  266. </style>