You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

add-work-details.vue 8.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. <template>
  2. <view class="bg">
  3. <view class="title_wrap"><text class="title">基本信息</text><text class="common-word">待补充</text></view>
  4. <car-number-input @numberInputResult="carNumber" :defaultStr="state.form.vehiclePlate"></car-number-input>
  5. <u-form label-width="230" :model="state.form" ref="uForm" :label-style='labelStyle'>
  6. <u-form-item label="车牌颜色" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  7. borderBottom>
  8. <u-input v-model="state.form.vehiclePlateColorStr" type="select" @click="show1 = true" input-align='right'/>
  9. </u-form-item>
  10. <u-form-item label="姓名" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  11. borderBottom>
  12. <u-input placeholder='请输入姓名' type="idcard" v-model="state.form.name" maxlength="18"
  13. inputAlign="right" />
  14. </u-form-item>
  15. <u-form-item label="联系方式" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  16. borderBottom>
  17. <u-input placeholder='请输入手机号码' type="number" v-model="state.form.mobile" maxlength="11"
  18. inputAlign="right" />
  19. </u-form-item>
  20. </u-form>
  21. </view>
  22. <view class="bg">
  23. <view class="title">工单信息</view>
  24. <u-form label-width="230" :model="state.form" ref="uForm" :label-style='labelStyle' borderBottom>
  25. <u-form-item label="工单号码" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  26. borderBottom>
  27. <u-input placeholder='请输入工单号码' type="idcard" v-model="state.form.name" inputAlign="right" />
  28. </u-form-item>
  29. <u-form-item label="工单类型" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  30. borderBottom>
  31. <u-input v-model="state.form.vehiclePlateColorStr" type="select" @click="show1 = true" input-align='right'/>
  32. </u-form-item>
  33. <u-form-item label="是否ETC用户" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  34. borderBottom>
  35. <u-input v-model="state.form.vehiclePlateColorStr" type="select" @click="show1 = true" input-align='right'/>
  36. </u-form-item>
  37. <u-form-item label="事件发生日期" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  38. borderBottom>
  39. <picker mode="date" value="{{state.date}}" bindchange="bindDateChange">
  40. <view class="picker" v-if="!state.date">
  41. 请选择日期
  42. </view>
  43. <view>
  44. {{state.date}}
  45. </view>
  46. </picker>
  47. </u-form-item>
  48. <u-form-item label="申请日期" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  49. borderBottom>
  50. <picker mode="date" value="{{state.date}}" bindchange="bindDateChange">
  51. <view class="picker" v-if="!state.date">
  52. 请选择日期
  53. </view>
  54. <view>
  55. {{state.date}}
  56. </view>
  57. </picker>
  58. </u-form-item>
  59. <u-form-item label="客户投诉" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  60. borderBottom>
  61. </u-form-item>
  62. <textarea style="border: 1rpx dashed rgb(192, 196, 204);min-height: 200rpx; width: 100%;border-radius: 18rpx;padding: 20rpx;box-sizing: border-box;" placeholder="请输入述求" auto-height adjust-position></textarea>
  63. <u-form-item label="以佐证资料" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  64. borderBottom>
  65. </u-form-item>
  66. <view class="picture-wrapper" @click="cardFileImageUpdate()">
  67. <view class="bg">
  68. <view class="">
  69. <view class="name"> 佐证资料一 </view>
  70. <view class="value"> 上传佐证资料一 </view>
  71. <view class="tip">
  72. <view class="tip-value"> 拍摄规范 </view>
  73. </view>
  74. </view>
  75. <image v-if="!state.form.proxyUrl" class="icon" :src="`${$imgUrl}issuance/weituo.png`"
  76. :style="{'--bgimg':`url(${$imgUrl}issuance/bg-border.png)`}">
  77. </image>
  78. <image v-else class="icon" :src="strReplace(state.form.proxyUrl)"
  79. :style="{'--bgimg':`url(${$imgUrl}issuance/bg-border.png)`}"></image>
  80. </view>
  81. </view>
  82. <u-form-item label="文件" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  83. borderBottom>
  84. </u-form-item>
  85. <view class="down-wrap">
  86. <text>XXXXX文件.pdf</text>
  87. <text class="down">下载</text>
  88. </view>
  89. <view class="down-wrap">
  90. <text>XXXXX文件.pdf</text>
  91. <text class="down">下载</text>
  92. </view>
  93. </u-form>
  94. </view>
  95. <view class="action">
  96. <button type="default" class="ui-btn" @click="savaHandle()">
  97. 提交
  98. </button>
  99. </view>
  100. <!-- 选择车牌颜色 -->
  101. <u-select v-model="show1" :list="state.colorRange" @confirm="changeColor"></u-select>
  102. </template>
  103. <script setup lang="ts">
  104. import { navTo,uploadFile,strReplace} from "@/utils/utils";
  105. import { reactive,ref } from "vue";
  106. import carNumberInput from "@/components/car-number-input/car-number-input.vue";
  107. import { onLoad } from "@dcloudio/uni-app";
  108. import { getItem } from "@/utils/storage.ts"
  109. const labelStyle = {
  110. color: "#004576",
  111. fontSize: "28rpx",
  112. }
  113. const leftIcon = {
  114. height: '100%',
  115. width: '8rpx',
  116. display: 'flex',
  117. 'align-items': 'center',
  118. 'margin-right': '4rpx',
  119. }
  120. const show1 = ref(false)
  121. const state = reactive({
  122. form: {
  123. name: "",
  124. mobile: "",
  125. vehiclePlate: "",
  126. vehiclePlateColor: "",
  127. vehiclePlateColorStr:"",//车牌颜色中文
  128. proxyUrl:"",
  129. },
  130. colorRange: [],
  131. date: '',//2016-09-01
  132. })
  133. onLoad((option : any) => {
  134. let getColor = getItem('key')['VEHICLE_COLOR_TYPE'];
  135. for (var k = 0; k < getColor.length; k++) {
  136. let obj = {};
  137. obj['value'] = getColor[k]['code']
  138. obj['label'] = getColor[k]['name']
  139. state.colorRange.push(obj)
  140. }
  141. console.log("state.colorRange",state.colorRange)
  142. });
  143. //车牌号输入
  144. const carNumber = (val : any) => {
  145. state.form.vehiclePlate = val.trim();
  146. };
  147. const changeColor = (item) => {
  148. state.form.vehiclePlateColor = item[0].value
  149. state.form.vehiclePlateColorStr = item[0].label
  150. console.log(item)
  151. }
  152. const bindDateChange=(e) =>{
  153. console.log('picker发送选择改变,携带值为', e.detail.value)
  154. state.date= e.detail.value
  155. }
  156. const savaHandle = () => {
  157. navTo(`/subpackage/after-sale/rescind-carId/rescind-carId-select`)
  158. }
  159. const addFile=()=>{
  160. }
  161. const cardFileImageUpdate = () => {
  162. uni.chooseImage({
  163. count: 1, //只能选取一张照片
  164. sizeType: ["original", "compressed"], //可以指定是原图还是压缩图,默认二者都有
  165. sourceType: ["camera", "album"], //从相册选择
  166. success: function (res) {
  167. uploadFile(res.tempFilePaths[0], "", "").then((data) => {
  168. state.form.proxyUrl = data;
  169. })
  170. },
  171. });
  172. };
  173. </script>
  174. <style lang="scss" scoped>
  175. .bg {
  176. background-color: white;
  177. width: 88%;
  178. margin: 0 auto;
  179. margin-top: 20rpx;
  180. border-radius: 12px;
  181. border: 1px solid #FFFFFF;
  182. padding: 20rpx;
  183. overflow: hidden;
  184. .title_wrap {
  185. display: flex;
  186. font-weight: 400;
  187. margin-bottom: 40rpx;
  188. justify-content: space-between;
  189. .title {
  190. font-size: 30rpx;
  191. color: #01243A;
  192. }
  193. }
  194. .des {
  195. font-weight: 400;
  196. font-size: 28rpx;
  197. color: #01243A;
  198. line-height: 56rpx;
  199. margin-top: 10rpx;
  200. text-indent: 1rem;
  201. }
  202. }
  203. .action {
  204. position: absolute;
  205. left: 0;
  206. height: 188rpx;
  207. background-color: #fff;
  208. border-radius: 30rpx 30rpx 0 0;
  209. width: 100vw;
  210. display: flex;
  211. align-items: center;
  212. justify-content: center;
  213. flex-direction: column;
  214. margin-top: 20rpx;
  215. }
  216. .picker{
  217. text-align: right;
  218. color: rgb(192, 196, 204);
  219. }
  220. .five{
  221. color: rgb(195,188,157);
  222. }
  223. .picture-wrapper {
  224. margin-top: 30rpx;
  225. .bg {
  226. background: #F5F9FB;
  227. border-radius: 10rpx;
  228. padding: 40rpx 30rpx;
  229. display: flex;
  230. justify-content: space-between;
  231. .name {
  232. padding-top: 30rpx;
  233. font-size: 32rpx;
  234. font-family: SourceHanSansSC, SourceHanSansSC;
  235. font-weight: 500;
  236. color: #111;
  237. line-height: 34rpx;
  238. }
  239. .value {
  240. margin-top: 20rpx;
  241. font-size: 22rpx;
  242. font-family: SourceHanSansSC, SourceHanSansSC;
  243. font-weight: 400;
  244. color: #999999;
  245. line-height: 24rpx;
  246. }
  247. .tip {
  248. margin-top: 20rpx;
  249. text-align: center;
  250. width: 100rpx;
  251. height: 30rpx;
  252. border-radius: 6rpx;
  253. border: 1rpx solid #CCB375;
  254. .tip-value {
  255. font-size: 20rpx;
  256. font-family: Microsoft YaHei;
  257. font-weight: 400;
  258. color: #CCB375;
  259. line-height: 30rpx;
  260. opacity: 1;
  261. }
  262. }
  263. }
  264. .icon {
  265. width: 304rpx;
  266. height: 190rpx;
  267. background-image: var(--bgimg);
  268. background-size: 100% 100%;
  269. background-repeat: no-repeat;
  270. }
  271. }
  272. .down-wrap{
  273. display: flex;
  274. justify-content: space-between;
  275. margin-bottom: 30rpx;
  276. .down{
  277. width: 100rpx;
  278. height: 40rpx;
  279. border-radius: 20rpx;
  280. background:linear-gradient(90deg, #CCB375 0%, #E7D398 100%);
  281. font-weight: 400;
  282. font-size: 24rpx;
  283. color: #FFFFFF;
  284. text-align: center;
  285. line-height: 40rpx;
  286. }
  287. }
  288. </style>