AI销管
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.
 
 
 
 

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