MergeTaxViewDialog.vue 8.3 KB

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