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.
 
 
 

422 lines
9.7 KiB

  1. <template>
  2. <view class="box">
  3. <!-- 编辑 -->
  4. <view class="conmsg">
  5. <view class="conmsg-title">
  6. 客户信息
  7. </view>
  8. <view class="conmsg-msg">
  9. <view class="conmsg-msg-lab">
  10. <view class="conmsg-msg-lab-1">
  11. 客户姓名
  12. <view class="star">
  13. *
  14. </view>
  15. </view>
  16. <view class="conmsg-msg-lab-inp">
  17. <input type="text" placeholder="请输入客户姓名" v-model="form.name"/>
  18. </view>
  19. </view>
  20. <view class="conmsg-msg-lab">
  21. <view class="conmsg-msg-lab-1">
  22. 客户性别
  23. </view>
  24. <view class="conmsg-msg-lab-inp">
  25. <u-radio-group v-model="form.sex" >
  26. <view style="display: flex;">
  27. <u-radio name="1" shape='circle'>男</u-radio>
  28. <u-radio name="2" shape='circle'>女</u-radio>
  29. </view>
  30. </u-radio-group>
  31. </view>
  32. </view>
  33. <view class="conmsg-msg-lab">
  34. <view class="conmsg-msg-lab-1">
  35. 联系电话
  36. <view class="star">
  37. *
  38. </view>
  39. </view>
  40. <view class="conmsg-msg-lab-inp">
  41. <input type="number" placeholder="请输入联系电话" maxlength="11" v-model="form.phone"/>
  42. </view>
  43. </view>
  44. <view class="conmsg-msg-lab">
  45. <view class="conmsg-msg-lab-1">
  46. 微信账号
  47. </view>
  48. <view class="conmsg-msg-lab-inp">
  49. <input type="text" placeholder="请输入微信账号" v-model="form.chatNo"/>
  50. </view>
  51. </view>
  52. <view class="conmsg-msg-lab">
  53. <view class="conmsg-msg-lab-1">
  54. 客户等级
  55. </view>
  56. <view class="conmsg-msg-lab-inp">
  57. <input type="text" placeholder="请选择客户等级" @click="levelshow = true" v-model="selectform.level" disabled/>
  58. </view>
  59. <view class="conmsg-msg-lab-img">
  60. <image class="screen-sel-img" src="../../../static/images/right.png" mode=""></image>
  61. </view>
  62. </view>
  63. <!-- <view class="conmsg-msg-lab">
  64. <view class="conmsg-msg-lab-1">
  65. 客户阶段
  66. </view>
  67. <view class="conmsg-msg-lab-inp">
  68. <input type="text" placeholder="请选择客户阶段" @click="stageshow = true" v-model="selectform.stage" disabled/>
  69. </view>
  70. <view class="conmsg-msg-lab-img">
  71. <image class="screen-sel-img" src="../../../static/images/right.png" mode=""></image>
  72. </view>
  73. </view> -->
  74. <view class="conmsg-msg-lab">
  75. <view class="conmsg-msg-lab-1">
  76. 备注内容
  77. </view>
  78. <view class="conmsg-msg-lab-inp">
  79. <input type="text" placeholder="请输入备注内容" v-model="form.remarks"/>
  80. </view>
  81. </view>
  82. </view>
  83. </view>
  84. <view class="conmsg">
  85. <view class="conmsg-title">
  86. 客户标签
  87. </view>
  88. <view class="conmsg-msg">
  89. <view v-for="(item,index) in allList" :key="index">
  90. <view class="">
  91. <view class="conmsg-msg-lab">
  92. <view class="conmsg-msg-lab-1">
  93. {{item.name}}
  94. </view>
  95. </view>
  96. <view class="con-msg-con">
  97. <view v-for="(item1,i) in item.children" :key="index" @click="Edittag(item,item1,index,i)" :style="{border:item1.selected==0?'1px solid #0A6EE9':'1px solid #E0E0E0'}" class="chebox" >
  98. {{item1.label}}
  99. </view>
  100. </view>
  101. </view>
  102. </view>
  103. </view>
  104. </view>
  105. <view class="submit">
  106. <view class="btn" @click="submit">
  107. 确定
  108. </view>
  109. </view>
  110. <!-- 客户等级 -->
  111. <u-select v-model="levelshow" :list="levellist" @confirm="levelshowCallback"></u-select>
  112. <!-- 客户阶段 -->
  113. <!-- <u-select v-model="stageshow" :list="stagelist" @confirm="stageshowCallback"></u-select> -->
  114. <!-- 职业需求 -->
  115. <!-- <u-select v-model="demandshow" :list="demandlist" @confirm="demandshowCallback"></u-select> -->
  116. <!-- 意向面积 -->
  117. <!-- <u-select v-model="areashow" :list="arealist" @confirm="areashowCallback"></u-select> -->
  118. <!-- 预算 -->
  119. <!-- <u-select v-model="budgetshow" :list="budgetlist" @confirm="budgetshowCallback"></u-select> -->
  120. <!-- 关注点 -->
  121. <!-- <u-select v-model="fouceshow" :list="foucelist" @confirm="fouceshowCallback"></u-select> -->
  122. <!-- 客户来源 -->
  123. <!-- <u-select v-model="soureshow" :list="sourelist" @confirm="soureshowCallback"></u-select> -->
  124. </view>
  125. </template>
  126. <script>
  127. export default{
  128. data(){
  129. return{
  130. form:{
  131. name:'',
  132. sex:'1',
  133. phone:'',
  134. chatNo:'',
  135. level:'',
  136. remarks:'',
  137. },
  138. selectform:{
  139. level:'',
  140. stage:'',
  141. demand:'',
  142. area:'',
  143. budget:'',
  144. fouce:'',
  145. soure:'',
  146. },
  147. levelshow:false,
  148. customerId:'',
  149. // 等级
  150. levellist:[
  151. {
  152. value:1,
  153. label:'A'
  154. },
  155. {
  156. value:2,
  157. label:'B'
  158. },
  159. {
  160. value:3,
  161. label:'C'
  162. },
  163. {
  164. value:4,
  165. label:'D'
  166. },
  167. ],
  168. allList:[],
  169. // stagelist:[],
  170. // // 置业需求
  171. // demandlist:[],
  172. // // 意向面积
  173. // arealist:[],
  174. // // 预算
  175. // budgetlist:[],
  176. // // 关注点
  177. // foucelist:[],
  178. // // 客户来源
  179. // sourelist:[],
  180. }
  181. },
  182. onLoad(e) {
  183. console.log(e)
  184. // 先调用借口查询数据
  185. this.customerId=e.id
  186. this.getdetail()
  187. },
  188. methods:{
  189. Edittag(item,item1,index,i){
  190. // var selected='';
  191. // console.log(item,item1,index,i)
  192. // return
  193. if(this.allList[index].children[i].selected==0){
  194. this.allList[index].children[i].selected=1;
  195. }else{
  196. this.allList[index].children[i].selected=0;
  197. }
  198. this.$forceUpdate()
  199. // this.$u.post("/matchKeywords/updatePersonalMatchData", {
  200. // carId: this.customerId,
  201. // selected:selected,
  202. // name:chend.name,
  203. // pid:chend.pid,
  204. // level:chend.level,
  205. // endName:chend.endName,
  206. // keywordsId:chend.keywordsId
  207. // }).then(res => {
  208. // })
  209. },
  210. sourecheck(index){
  211. this.sourelist[index].checked=!this.sourelist[index].checked
  212. this.$forceUpdate()
  213. },
  214. demandcheck(index){
  215. this.demandlist[index].checked=!this.demandlist[index].checked
  216. this.$forceUpdate()
  217. },
  218. areacheck(index){
  219. this.arealist[index].checked=!this.arealist[index].checked
  220. this.$forceUpdate()
  221. },
  222. levelshowCallback(e){
  223. this.selectform.level=e[0].label
  224. this.form.level=e[0].value
  225. },
  226. // 获取用户数据
  227. getdetail(){
  228. this.$u.get("customer/findById?",{id:this.customerId})
  229. .then(res=>{
  230. // console.log(res)
  231. this.form=res
  232. // 给客户等级赋值
  233. let idx= this.levellist.findIndex(item=>item.value==res.level)
  234. if(idx!=-1){
  235. this.selectform.level=this.levellist[idx].label
  236. }
  237. // 获取置业需求
  238. this.getListByType()
  239. // // 获取意向面积
  240. // this.getListByType()
  241. // // 获取客户来源
  242. // this.getListByType()
  243. })
  244. },
  245. // 字典表接口
  246. getListByType(){
  247. this.$u.get("/matchKeywords/findPersonalMatchData",{customerId:this.customerId})
  248. .then(res=>{
  249. // console.log(res)
  250. res.forEach(item1=>{
  251. item1.children.map(item=>{
  252. if(item.isInterval==0){
  253. item.label=item.name+item.unit+'-'+item.endName+item.unit;
  254. }else{
  255. item.label=item.name
  256. }
  257. item.value=item.id;
  258. })
  259. })
  260. // console.log(res)
  261. this.allList=res
  262. // return
  263. })
  264. },
  265. // 提交
  266. submit(){
  267. let param={}
  268. let str=[]
  269. if(this.form.name==''){
  270. uni.showToast({
  271. title:'请输入客户姓名',
  272. icon:'none'
  273. })
  274. return
  275. }
  276. if(this.form.phone==''){
  277. uni.showToast({
  278. title:'请输入手机号',
  279. icon:'none'
  280. })
  281. return
  282. }
  283. if(!(/^1[3456789]\d{9}$/.test(this.form.phone))){
  284. uni.showToast({
  285. title: "请检查手机号码格式",
  286. icon:'none'
  287. });
  288. // this.form.phone=''
  289. return false;
  290. }
  291. this.allList.map(item=>{
  292. item.children.map(item1=>{
  293. if(item1.selected==0){
  294. str.push(item1.keywordsId)
  295. }
  296. })
  297. })
  298. str=str.join(',')
  299. param=this.form
  300. param.keywordIds=str
  301. console.log(param)
  302. // return
  303. this.$u.post("customer/update",param)
  304. .then(res=>{
  305. // console.log(res)
  306. uni.showToast({
  307. title:'操作成功',
  308. icon:'none',
  309. success: () => {
  310. uni.navigateBack()
  311. }
  312. })
  313. })
  314. },
  315. }
  316. }
  317. </script>
  318. <style lang="scss" scoped>
  319. .box {
  320. width: 100%;
  321. height: 100%;
  322. background: #F8F8F8;
  323. overflow: hidden;
  324. }
  325. .conmsg{
  326. background: #FFFFFF;
  327. margin-top: 20rpx;
  328. .conmsg-title{
  329. height: 92rpx;
  330. line-height: 92rpx;
  331. padding: 0 30rpx;
  332. font-weight: 500;
  333. color: #303030;
  334. font-size: 32rpx;
  335. border-bottom: 1px solid #E0E0E0;
  336. }
  337. .conmsg-msg{
  338. padding: 0 30rpx;
  339. .conmsg-msg-lab{
  340. height: 102rpx;
  341. display: flex;
  342. font-size: 30rpx;
  343. font-weight: 400;
  344. color: #333333;
  345. border-bottom: 1px solid #E0E0E0;
  346. line-height: 102rpx;
  347. .conmsg-msg-lab-1{
  348. display: flex;
  349. width: 136rpx;
  350. .star{
  351. color: #E7483C;
  352. line-height: 108rpx;
  353. }
  354. }
  355. .conmsg-msg-lab-inp{
  356. margin-top: 30rpx;
  357. margin-left: 44rpx;
  358. }
  359. .conmsg-msg-lab-img{
  360. width: 14rpx;
  361. height: 30rpx;
  362. margin-top: 6rpx;
  363. margin-left: auto;
  364. image{
  365. width: 100%;
  366. height: 100%;
  367. }
  368. }
  369. }
  370. }
  371. }
  372. .submit{
  373. height: 228rpx;
  374. .btn{
  375. margin: 60rpx auto;
  376. text-align: center;
  377. width: 690rpx;
  378. height: 88rpx;
  379. background: #2671E2;
  380. border-radius: 8rpx;
  381. font-size: 32tpx;
  382. font-weight: 400;
  383. color: #FFFFFF;
  384. line-height: 88rpx;
  385. position: fixed;
  386. bottom: 20rpx;
  387. left: 20rpx;
  388. }
  389. }
  390. .con-msg-con{
  391. display: flex;
  392. flex-wrap: wrap;
  393. // justify-content: space-around;
  394. border-bottom: 1px solid #E0E0E0;
  395. .chebox{
  396. // width: 20%;
  397. height: 60rpx;
  398. line-height: 60rpx;
  399. margin: 10rpx 0;
  400. margin-right: 20rpx;
  401. border: 1px solid #E0E0E0;
  402. box-sizing: border-box;
  403. padding: 0 10rpx;
  404. }
  405. }
  406. </style>