quotationDialogPro.vue 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. <template>
  2. <el-dialog
  3. :visible.sync="dialogVisible"
  4. width="1080px"
  5. class="quotation_style"
  6. >
  7. <div id="pdfContentsDiv" style="padding: 25px;">
  8. <div slot="title" class="dialog-title quotation-title">
  9. <img
  10. :src="queryOrders.logoImg"
  11. class="align"
  12. alt
  13. style="width: 28px; height: 28px;vertical-align: middle;"
  14. />
  15. <span style="color:#000">{{queryOrders.inscompany}}-报价单</span>
  16. </div>
  17. <div style="border: 1px solid #000000;margin:10px 0">
  18. <div class="quotation_title">
  19. <div style="font-weight: 500;font-size: 24px;margin-bottom:5px">{{queryOrders.inscompany}}报价单</div>
  20. <div>报价时间:{{ queryOrders.createtime }}</div>
  21. </div>
  22. <div class="vehicle">
  23. <li>
  24. <span>订单号:</span>{{ queryOrders.orderno }}
  25. </li>
  26. <li>
  27. <span>车型:</span>{{ queryOrders.carinfo.modelcname }}
  28. </li>
  29. <li>
  30. <span>车牌号:</span>{{ queryOrders.carinfo.licenseNo }}
  31. </li>
  32. <li>
  33. <span>车主姓名:</span>{{ queryOrders.ownerinfo.name }}
  34. </li>
  35. <li>
  36. <span>投保人姓名:</span>{{ queryOrders.applyinfo.name }}
  37. </li>
  38. <li>
  39. <span>被保人姓名:</span>{{ queryOrders.insureinfo.name }}
  40. </li>
  41. <li>
  42. <span>发动机号:</span>{{ queryOrders.carinfo.engineNo }}
  43. </li>
  44. <li>
  45. <span>车架号:</span>{{ queryOrders.carinfo.vinNo }}
  46. </li>
  47. <li>
  48. <span>座位数:</span>{{ queryOrders.carinfo.seatCount }}
  49. </li>
  50. <li style="width: 100%;">
  51. <span>车辆交强险保险期间:</span>{{ queryOrders.jqstartdate }} 至 {{ queryOrders.jqenddate }}
  52. </li>
  53. <li style="width: 100%;" v-if="queryOrders.systartdate &&queryOrders.syenddate">
  54. <span>车辆商业险保险期间:</span>{{ queryOrders.systartdate }} 至 {{ queryOrders.syenddate }}
  55. </li>
  56. </div>
  57. <div class="quotation-style tax-arrears" v-if="queryOrders.kindinfo && queryOrders.kindinfo.length>0">
  58. <b>商业险险别</b>
  59. <b>保额(元)</b>
  60. <b style=" border-right:0">保费(元)</b>
  61. <div v-for="(kindinfoitem, kindinfoindex) in queryOrders.kindinfo"
  62. :key="kindinfoindex">
  63. <span >{{ kindinfoitem.kindName }}</span>
  64. <span
  65. v-if="['D4', 'SY_FJ_YBW2'].includes(kindinfoitem.kindCode)"
  66. >{{ kindinfoitem.unitAmount }}</span
  67. >
  68. <span
  69. v-else-if="
  70. ['MJ1', 'MJ2', 'MJ3', 'MJ4'].includes(kindinfoitem.kindCode)
  71. "
  72. >
  73. {{ kindinfoitem.deductibleRate }}
  74. </span>
  75. <span v-else>{{ kindinfoitem.amount }}</span>
  76. <span >{{ kindinfoitem.coveragePremium ?kindinfoitem.coveragePremium :'-' }}</span>
  77. </div>
  78. </div>
  79. <div v-else style="height: 1px;width:100%;background:#000"></div>
  80. <div class="money_style">
  81. <div v-if="queryOrders.sypremium">车辆商业险:<span>¥{{ queryOrders.sypremium }}</span></div>
  82. <div v-if="queryOrders.jqpremium">交强险:<span>¥{{ queryOrders.jqpremium }}</span></div>
  83. <div v-if="queryOrders.taxamount">车船税:<span>¥{{ queryOrders.taxamount }}</span></div>
  84. <div v-if="queryOrders.jypremium">驾意险:<span>¥{{ queryOrders.jypremium }}</span></div>
  85. <div style="font-weight: bold;">应缴金额:<span>¥{{ queryOrders.sumpremium }}</span></div>
  86. </div>
  87. </div>
  88. <div >注:本报价单仅供参考,最终以出单价格为准。</div>
  89. </div>
  90. <span slot="footer" class="dialog-footer">
  91. <el-button type="primary" class="blue_color" size="small" @click="copybjd()">截图</el-button>
  92. <el-button size="small" class="blueplain_color" @click="dialogVisible = false">关闭</el-button>
  93. </span>
  94. </el-dialog>
  95. </template>
  96. <script>
  97. import html2Canvas from "html2canvas";
  98. export default {
  99. name: "quotationDialog",
  100. props:{
  101. queryOrders:{
  102. type:Object,
  103. default:{}
  104. }
  105. },
  106. data(){
  107. return{
  108. dialogVisible:false,
  109. logoImg:''
  110. }
  111. },
  112. created(){
  113. },
  114. methods:{
  115. setBackupVisible: function (backupVisible) {
  116. this.dialogVisible = backupVisible
  117. },
  118. // 截图粘贴
  119. copybjd() {
  120. html2Canvas(document.getElementById("pdfContentsDiv"), {
  121. allowTaint: true,
  122. taintTest: false,
  123. // useCORS: true
  124. }).then(function (canvas) {
  125. let base64Data = "";
  126. base64Data = canvas.toDataURL("image/png", 1);
  127. const date = new Date();
  128. const saveInfo = {
  129. download: date.getTime() + `.png`,
  130. href: base64Data,
  131. };
  132. const element = document.createElement("a");
  133. element.style.display = "none";
  134. for (const key in saveInfo) {
  135. element.setAttribute(key, saveInfo[key]);
  136. }
  137. document.body.appendChild(element);
  138. element.click();
  139. setTimeout(() => {
  140. document.body.removeChild(element);
  141. }, 300);
  142. });
  143. },
  144. }
  145. }
  146. </script>
  147. <style scoped lang="scss">
  148. .vehicle{
  149. li{
  150. width: 49%;
  151. padding-top: 13px;
  152. display: inline-block;
  153. }
  154. span{
  155. color: #868B98 ;
  156. }
  157. margin: 10px 0 20px 5px
  158. }
  159. .dialog-footer{
  160. button{
  161. width: 96px;
  162. text-align: center;
  163. }
  164. }
  165. .quotation-title{
  166. color: var(--themeColor);
  167. font-weight: bold;
  168. font-size: 16px;
  169. }
  170. .quotation_title{
  171. text-align: center;
  172. padding: 10px 0;
  173. border-bottom: 1px solid #000000;
  174. }
  175. .tax-arrears{
  176. b,span{
  177. width: 33.3%;
  178. }
  179. }
  180. .quotation-style{
  181. font-size: 0;
  182. b{
  183. font-size: 14px;
  184. border-top: 1px solid #000 ;
  185. }
  186. b,span{
  187. display: inline-block;
  188. box-sizing: border-box;
  189. width: 33.3%;
  190. text-align: center;
  191. line-height: 40px;
  192. border-bottom: 1px solid #000 ;
  193. border-right: 1px solid #000 ;
  194. font-size: 14px;
  195. }
  196. span:last-child{
  197. border-right:0;
  198. // border-bottom: 1px solid #000 ;
  199. }
  200. }
  201. .blue_color{
  202. color: #fff;
  203. background: #2D4D89;
  204. border: 1px solid #2D4D89;
  205. }
  206. .blueplain_color{
  207. color: #2D4D89;
  208. background: #EAEDF1;
  209. border: 1px solid #EAEDF1;
  210. }
  211. .money_style{
  212. text-align: right ;
  213. div{
  214. line-height: 30px;
  215. }
  216. span{
  217. display: inline-block;
  218. width: 100px;
  219. text-align: left;
  220. }
  221. }
  222. /deep/ {
  223. .el-dialog__header{
  224. padding: 0 ;
  225. }
  226. .el-dialog__body{
  227. padding: 0;
  228. border-bottom: 1px solid #EEF1F6
  229. }
  230. .el-descriptions__body{
  231. padding:0
  232. }
  233. .el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{
  234. text-align: center;
  235. }
  236. .el-descriptions-item__content{
  237. color: #333333 ;
  238. font-weight: bold;
  239. }
  240. .el-descriptions-item__label.is-bordered-label{
  241. background: var(--themeColor);
  242. color: #fff;
  243. }
  244. }
  245. </style>