repairConfirmation.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. <template>
  2. <zj-page-layout :hasFooter="true" :isScroll="false">
  3. <view class="card-container">
  4. <block v-if="defaultPath">
  5. <image :src="imageUrl + defaultPath" class="canvasImg" mode="widthFix"></image>
  6. </block>
  7. <block v-else>
  8. <image :src="path" class="canvasImg" mode="widthFix"></image>
  9. <l-painter
  10. isCanvasToTempFilePath
  11. pathType="url"
  12. @success="canvasSuccess($event)"
  13. hidden
  14. css="background: #ffffff; border-radius: 20rpx; padding: 0 30rpx;"
  15. >
  16. <template>
  17. <l-painter-view css="text-align: center; line-height: 140rpx;">
  18. <l-painter-text text="确认书" css="font-size: 40rpx; font-weight: 500;" />
  19. </l-painter-view>
  20. <template v-if="type == 'gz'">
  21. <l-painter-view css="text-align: left; line-height: 38rpx;text-indent: 2em;">
  22. <l-painter-text
  23. text="鉴于格力电器售后服务过程中存在用户未自行提供产品标配之外辅材配件(如:空气开关、铜管、支架、地架等格力指定专供辅材及配件)需要用户额外付费配置的现象,按照格力电器售后服务要求:为避免安装维修人员使用劣质辅材配件影响产品质量有损品牌名誉以及乱收费从而扰乱格力售后服务市场,本人承诺:本人务必在指定售后服务网点自行采购辅材配件以供备用,在从事安装工单或维修工单中涉及产品标配以外辅材配件按照指导价销售给用户并需要将应当收取用户的辅材配件费用录入系统内对应工单,并要用户扫码付款(即“电子支付”)后,再由广州嘉讯茂机电工程有限公司通过微信分账形式直接支付到本人微信钱包中,产生的微信支付手续费(辅材配件费用的千分之六)由本人自行承担。"
  24. css="font-size: 26rpx;text-indent: 2em;"
  25. />
  26. </l-painter-view>
  27. <l-painter-view css="text-align: left; line-height: 38rpx;text-indent: 2em;">
  28. <l-painter-text
  29. text="本人通过售卖自行购入的安装维修服务过程中需使用到非产品标配辅材配件,此费用由用户在格力售后系统平台结算后,平台通过微信分账形式返还给本人,产生的微信支付手续费(辅材配件费用的千分之六)由本人自行承担。"
  30. css="font-size: 26rpx;text-indent: 2em;"
  31. />
  32. </l-painter-view>
  33. <l-painter-view
  34. css="text-align: left; line-height: 38rpx;text-indent: 2em; color: #000000; font-weight: bold;"
  35. >
  36. <l-painter-text
  37. text="本人已清楚知晓收到的微信分账结算费用属于辅材配件费用,不属于本人履行安装维修服务而获取的工资报酬组成。广州嘉讯茂机电工程有限公司不为本人向用户收取的辅材配件费用承担任何责任。"
  38. css="font-size: 26rpx;text-indent: 2em;font-weight: bold;"
  39. />
  40. </l-painter-view>
  41. </template>
  42. <template v-if="type == 'fs'">
  43. <l-painter-view css="text-align: left; line-height: 38rpx;text-indent: 2em;">
  44. <l-painter-text
  45. text="鉴于格力电器售后服务过程中存在用户未自行提供产品标配之外辅材配件(如:空气开关、铜管、支架、地架等格力指定专供辅材及配件)需要用户额外付费配置的现象,按照格力电器售后服务要求:为避免安装维修人员使用劣质辅材配件影响产品质量有损品牌名誉以及乱收费从而扰乱格力售后服务市场,本人承诺:本人务必在指定售后服务网点自行采购辅材配件以供备用,在从事安装工单或维修工单中涉及产品标配以外辅材配件按照指导价销售给用户并需要将应当收取用户的辅材配件费用录入系统内对应工单,并要用户扫码付款(即“电子支付”)后,再由佛山嘉讯茂机电工程有限公司通过微信分账形式直接支付到本人微信钱包中,产生的微信支付手续费(辅材配件费用的千分之六)由本人自行承担。"
  46. css="font-size: 26rpx;text-indent: 2em;"
  47. />
  48. </l-painter-view>
  49. <l-painter-view css="text-align: left; line-height: 38rpx;text-indent: 2em;">
  50. <l-painter-text
  51. text="本人通过售卖自行购入的安装维修服务过程中需使用到非产品标配辅材配件,此费用由用户在格力售后系统平台结算后,平台通过微信分账形式返还给本人,产生的微信支付手续费(辅材配件费用的千分之六)由本人自行承担。"
  52. css="font-size: 26rpx;text-indent: 2em;"
  53. />
  54. </l-painter-view>
  55. <l-painter-view
  56. css="text-align: left; line-height: 38rpx;text-indent: 2em; color: #000000; font-weight: bold;"
  57. >
  58. <l-painter-text
  59. text="本人已清楚知晓收到的微信分账结算费用属于辅材配件费用,不属于本人履行安装维修服务而获取的工资报酬组成。佛山嘉讯茂机电工程有限公司不为本人向用户收取的辅材配件费用承担任何责任。"
  60. css="font-size: 26rpx;text-indent: 2em;font-weight: bold;"
  61. />
  62. </l-painter-view>
  63. </template>
  64. <l-painter-view>
  65. <l-painter-text text="服务人员:" css="font-size: 28rpx; color: #666666;margin-top:30rpx;" />
  66. <l-painter-text
  67. :text="`${userInfo.nickName || ''}(${userInfo.workerNumber || ''})`"
  68. css="font-size: 28rpx;margin-top:30rpx;"
  69. />
  70. </l-painter-view>
  71. <l-painter-view css="margin-top: 20rpx;">
  72. <l-painter-text text="签署日期:" css="font-size: 28rpx; color: #666666;" />
  73. <l-painter-text :text="getNowDate()" css="font-size: 28rpx;" />
  74. </l-painter-view>
  75. <l-painter-view css="margin-top: 20rpx;">
  76. <l-painter-text text="工程师签名:" css="font-size: 28rpx; color: #666666;" />
  77. </l-painter-view>
  78. <template v-if="signNameUrl">
  79. <l-painter-image
  80. :src="signNameUrl"
  81. css="transform:rotate(270deg); object-fit: contain; margin-top: 20rpx; width: 600rpx; height: 400rpx;"
  82. />
  83. </template>
  84. <template v-else>
  85. <l-painter-view css="height: 600rpx"></l-painter-view>
  86. </template>
  87. </template>
  88. </l-painter>
  89. </block>
  90. </view>
  91. <template slot="footer">
  92. <view class="footer-btn-group" v-if="!isFinishSign && !defaultPath">
  93. <u-button text="点击签名" type="primary" size="large" @click="navToPage(`/pages/signName`)"></u-button>
  94. </view>
  95. <view class="footer-btn-group" v-else>
  96. <u-button text="重新签名" type="primary" size="large" plain @click="navToPage(`/pages/signName`)"></u-button>
  97. <u-button text="确认提交" type="primary" size="large" @click="submitData"></u-button>
  98. </view>
  99. </template>
  100. </zj-page-layout>
  101. </template>
  102. <script>
  103. import lPainter from '@/components/lime-painter/components/l-painter/l-painter.vue'
  104. import lPainterView from '@/components/lime-painter/components/l-painter-view/l-painter-view.vue'
  105. import lPainterText from '@/components/lime-painter/components/l-painter-text/l-painter-text.vue'
  106. import lPainterImage from '@/components/lime-painter/components/l-painter-image/l-painter-image.vue'
  107. import store from '@/store/index.js'
  108. import { platform } from '@/common/utils/index'
  109. import { mini_env } from '@/common/utils/util'
  110. export default {
  111. components: {
  112. lPainter,
  113. lPainterView,
  114. lPainterText,
  115. lPainterImage
  116. },
  117. data() {
  118. return {
  119. imageUrl: this.$imageUrl,
  120. userInfo: {},
  121. signNameUrl: '',
  122. defaultPath: '',
  123. path: '',
  124. isFinishSign: false,
  125. type: ''
  126. }
  127. },
  128. async onLoad({ url, type }) {
  129. this.type = type
  130. this.userInfo = await this.$getUserInfo()
  131. if (url) {
  132. this.defaultPath = url
  133. }
  134. uni.$on('finishSign', async data => {
  135. this.defaultPath = ''
  136. this.signNameUrl = data
  137. })
  138. },
  139. onUnload() {
  140. uni.$off('finishSign')
  141. },
  142. methods: {
  143. getNowDate() {
  144. const date = new Date()
  145. let year = date.getFullYear()
  146. let month = date.getMonth() + 1
  147. let day = date.getDate()
  148. month = month > 9 ? month : '0' + month
  149. day = day > 9 ? day : '0' + day
  150. return `${year}年${month}月${day}日`
  151. },
  152. canvasSuccess(val) {
  153. if (this.signNameUrl) {
  154. this.isFinishSign = true
  155. }
  156. this.path = val
  157. },
  158. navToPage(url) {
  159. uni.navigateTo({
  160. url
  161. })
  162. },
  163. async submitData() {
  164. console.log(this.signNameUrl)
  165. mini_env(bool => {
  166. uni.uploadFile({
  167. header: {
  168. 'x-token': store.getters.token,
  169. APPID: store.getters.appId,
  170. Program: {
  171. H5: 'wap',
  172. APP: 'app',
  173. APPNVUE: 'app',
  174. WEIXIN: 'miniProgram'
  175. }[platform()],
  176. source: bool ? 'A' : 'B',
  177. miniOpenId: store.getters.miniOpenId,
  178. sharerOpenId: store.getters.sharerOpenId
  179. },
  180. url: `${process.env.VUE_APP_BASE_URL + process.env.VUE_APP_BASE_API}/worker/ocr/handwriting`,
  181. files: [
  182. {
  183. name: 'file',
  184. uri: this.path
  185. },
  186. {
  187. name: 'signFile',
  188. uri: this.signNameUrl
  189. }
  190. ],
  191. formData: {
  192. type: this.type,
  193. signFile2: this.signNameUrl
  194. },
  195. success: uploadFileRes => {
  196. if (JSON.parse(uploadFileRes.data)?.data?.status) {
  197. this.$navToPage(
  198. {
  199. url: '/pages/index/index'
  200. },
  201. 'switchTab'
  202. )
  203. } else {
  204. uni.showModal({
  205. title: '提交失败',
  206. content: `${JSON.parse(uploadFileRes.data)?.data?.reason},请重新签署!`,
  207. showCancel: false,
  208. confirmText: '知道了',
  209. success: function (res) {}
  210. })
  211. }
  212. }
  213. })
  214. })
  215. }
  216. }
  217. }
  218. </script>
  219. <style lang="scss" scoped>
  220. .card-container {
  221. @include zj-card;
  222. margin: 30rpx;
  223. .canvasImg {
  224. width: 100%;
  225. }
  226. .title {
  227. font-size: 40rpx;
  228. font-weight: 500;
  229. line-height: 140rpx;
  230. text-align: center;
  231. }
  232. .main {
  233. flex: 1;
  234. padding-bottom: 30rpx;
  235. .row {
  236. padding: 15rpx 0;
  237. display: flex;
  238. align-items: center;
  239. color: $reg-font;
  240. ::v-deep .u-button {
  241. width: 180rpx;
  242. height: 68rpx;
  243. }
  244. text {
  245. color: $main-font;
  246. font-weight: 500;
  247. }
  248. }
  249. }
  250. .bottom {
  251. padding-bottom: 60rpx;
  252. .text {
  253. color: $sec-font;
  254. }
  255. .info {
  256. margin-top: 30rpx;
  257. view {
  258. color: $minor-color;
  259. line-height: 36rpx;
  260. }
  261. }
  262. }
  263. }
  264. </style>