DetailCom.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <template>
  2. <div>
  3. <div class="sale-header">销售信息反馈表</div>
  4. <table border-collapse="collapse">
  5. <tr>
  6. <th>顾客名称</th>
  7. <th>详细地址</th>
  8. <th>联系人</th>
  9. <th>联系电话</th>
  10. </tr>
  11. <tr>
  12. <td>{{ saleModel.customer }}</td>
  13. <td>{{ saleModel.address }}</td>
  14. <td>{{ saleModel.contacts }}</td>
  15. <td>{{ saleModel.phoneNo }}</td>
  16. </tr>
  17. <tr>
  18. <th>产品型号</th>
  19. <th>产品分类</th>
  20. <th>检验批号</th>
  21. <th>数量</th>
  22. </tr>
  23. <tr>
  24. <td>{{ saleModel.materialModel }}</td>
  25. <td>{{ saleModel.type }}</td>
  26. <td>{{ saleModel.checkCode }}</td>
  27. <td>{{ saleModel.num }}</td>
  28. </tr>
  29. <tr>
  30. <th>产品编号</th>
  31. <th colspan="3" style="font-weight: normal">{{ saleModel.seqs }}</th>
  32. </tr>
  33. <tr v-for="(item, index) in contentArray" :key="index">
  34. <td colspan="4">
  35. <div class="sale-box">
  36. <div class="sale-title">{{ item.title }}</div>
  37. <div class="sale-content">
  38. {{ item.content }}
  39. </div>
  40. <div class="sale-bottom">
  41. <div class="desc" v-if="index === 0">
  42. 市场营销部:{{ item[`user`] }}
  43. </div>
  44. <div class="desc" v-if="index === 1">
  45. 质量管理部:{{ item[`user`] }}
  46. </div>
  47. <div class="desc" v-if="index === 2">
  48. 责任部门:{{ item[`user`] }}
  49. </div>
  50. <div class="desc" v-if="index === 3">
  51. 责任部门:{{ item[`user`] }}
  52. </div>
  53. <div class="desc" v-if="index === 4">
  54. 质量管理部:{{ item[`user`] }}
  55. </div>
  56. <div class="desc" v-if="index === 5">
  57. 质量管理部:{{ item[`user`] }}
  58. </div>
  59. <div class="desc" v-if="index === 6">
  60. 市场营销部:{{ item[`user`] }}
  61. </div>
  62. <div class="desc">时间: {{ item.time }}</div>
  63. <el-button
  64. v-if="item.fileUrl"
  65. link
  66. type="primary"
  67. size="small"
  68. @click="handleDownload(item)"
  69. >下载附件</el-button
  70. >
  71. </div>
  72. </div>
  73. </td>
  74. </tr>
  75. </table>
  76. </div>
  77. </template>
  78. <script setup>
  79. const saleModel = ref({});
  80. const contentArray = ref([]);
  81. const refreshView = (row) => {
  82. saleModel.value = row;
  83. contentArray.value = [];
  84. if (row.remark1 && JSON.parse(row.remark1).content) {
  85. let remark1 = JSON.parse(row.remark1);
  86. contentArray.value.push({ ...remark1, title: "顾客投诉或建议" });
  87. }
  88. if (row.remark2 && JSON.parse(row.remark2).content) {
  89. let remark2 = JSON.parse(row.remark2);
  90. contentArray.value.push({ ...remark2, title: "投诉或建议处置意见" });
  91. }
  92. if (row.remark3 && JSON.parse(row.remark3).content) {
  93. let remark3 = JSON.parse(row.remark3);
  94. contentArray.value.push({ ...remark3, title: "原因分析" });
  95. }
  96. if (row.remark4 && JSON.parse(row.remark4).content) {
  97. let remark4 = JSON.parse(row.remark4);
  98. contentArray.value.push({ ...remark4, title: "整改及纠正措施" });
  99. }
  100. if (row.remark5 && JSON.parse(row.remark5).content) {
  101. let remark5 = JSON.parse(row.remark5);
  102. contentArray.value.push({ ...remark5, title: "整改及纠正措施验证" });
  103. }
  104. if (row.remark6 && JSON.parse(row.remark6).content) {
  105. let remark6 = JSON.parse(row.remark6);
  106. contentArray.value.push({ ...remark6, title: "处置情况反馈意见" });
  107. }
  108. if (row.remark7 && JSON.parse(row.remark7).content) {
  109. let remark7 = JSON.parse(row.remark7);
  110. contentArray.value.push({ ...remark7, title: "处置情况反馈意见" });
  111. }
  112. };
  113. const handleDownload = (item) => {
  114. let url = import.meta.env.VITE_APP_UPLOAD_URL + item.fileUrl;
  115. // 创建一个 <a> 元素
  116. var link = document.createElement("a");
  117. // 设置文件的 URL
  118. link.href = url;
  119. // 设置下载的文件名
  120. link.download = item.fileName;
  121. // 将 <a> 元素添加到文档中(虽然不需要在页面上可见)
  122. document.body.appendChild(link);
  123. // 触发点击事件
  124. link.click();
  125. // 移除 <a> 元素
  126. document.body.removeChild(link);
  127. };
  128. defineExpose({ refreshView });
  129. </script>
  130. <style scoped lang="scss">
  131. .sale-header {
  132. text-align: center;
  133. font-size: 20px;
  134. //font-weight: bold;
  135. margin-bottom: 10px;
  136. }
  137. table {
  138. width: 800px;
  139. margin: 0 auto;
  140. border: 1px solid #000000;
  141. border-collapse: collapse;
  142. }
  143. th,
  144. td {
  145. border: 1px solid #000000;
  146. text-align: center;
  147. padding: 3px;
  148. }
  149. .sale-box {
  150. .sale-title {
  151. font-size: 16px;
  152. margin-bottom: 5px;
  153. text-align: start;
  154. }
  155. .sale-content {
  156. font-size: 16px;
  157. min-height: 60px;
  158. margin-bottom: 10px;
  159. text-align: start;
  160. padding: 0 8px;
  161. }
  162. .sale-bottom {
  163. display: flex;
  164. justify-content: flex-end;
  165. margin-top: 10px;
  166. }
  167. .desc {
  168. margin-right: 20px;
  169. }
  170. }
  171. </style>