quotationDialog.vue 10 KB

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