publicContent.jsx 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717
  1. import React, { Component } from "react";
  2. import Taro from "@tarojs/taro";
  3. import { Button, Text, View } from "@tarojs/components";
  4. import dayjs from "dayjs";
  5. import "./index.less";
  6. import ImagePicker from "../../components/common/imagePicker";
  7. import { AtButton, AtTextarea, AtIcon, AtCalendar } from "taro-ui";
  8. import {
  9. addPublicRelease,
  10. getWorkingHoursList,
  11. } from "../../utils/servers/servers";
  12. import {
  13. getHours,
  14. getNumHourse,
  15. getUserWordTimes,
  16. getNameList,
  17. } from "../../utils/tools";
  18. import "taro-ui/dist/style/components/form.scss";
  19. import "taro-ui/dist/style/components/button.scss";
  20. import "taro-ui/dist/style/components/loading.scss";
  21. import "taro-ui/dist/style/components/icon.scss";
  22. import "taro-ui/dist/style/components/icon.scss";
  23. import "taro-ui/dist/style/components/textarea.scss";
  24. import "taro-ui/dist/style/components/calendar.scss";
  25. import "./publicContent.less";
  26. import InquiryModal from "../../components/common/inquiryModal"; //提示弹窗
  27. import UserQuery from "../../components/common/userquery"; //选择协单人弹窗
  28. class PublicContent extends Component {
  29. constructor(props) {
  30. super(props);
  31. this.state = {
  32. rangeStartVal: "",
  33. rangeEndVal: "",
  34. rangeEndMinuteVal: "",
  35. rangeStartMinuteVal: "",
  36. reason: "",
  37. plan: "",
  38. expectedEffect: "",
  39. imgs: [],
  40. validDates: [],
  41. totalDuration: 0,
  42. loading: false,
  43. workTypeList: [],
  44. workType: 0,
  45. isPickerRender: false,
  46. coorderList: [],
  47. cList: [],
  48. popup: false,
  49. };
  50. this.onSubmit = this.onSubmit.bind(this);
  51. this.selectArrder = this.selectArrder.bind(this);
  52. this.onChange = this.onChange.bind(this);
  53. this.getWorkingHoursList = this.getWorkingHoursList.bind(this);
  54. this.onPickerHide = this.onPickerHide.bind(this);
  55. this.onSetPickerTime = this.onSetPickerTime.bind(this);
  56. this.getNumHourse = this.getNumHourse.bind(this);
  57. }
  58. componentDidMount() {
  59. Taro.eventCenter.on("result", () => {
  60. this.imagePickerRef && this.imagePickerRef.clear();
  61. this.setState({
  62. rangeStartVal: "",
  63. rangeEndVal: "",
  64. rangeEndMinuteVal: "",
  65. rangeStartMinuteVal: "",
  66. reason: "",
  67. plan: "",
  68. expectedEffect: "",
  69. imgs: [],
  70. validDates: [],
  71. totalDuration: 0,
  72. loading: false,
  73. });
  74. });
  75. this.getWorkingHoursList();
  76. }
  77. getNumHourse(startTime, endTime) {
  78. this.setState({
  79. totalDuration: getNumHourse(
  80. startTime,
  81. endTime,
  82. this.state.validDates.length
  83. ),
  84. });
  85. }
  86. // 增加 省 市 区拼接,地址带区域的则把区域去掉
  87. getArea() {
  88. const { selectArrderLocation } = this.props
  89. let pcd = selectArrderLocation.province + selectArrderLocation.city + selectArrderLocation.district
  90. let str = selectArrderLocation.name
  91. let index = str.lastIndexOf("区")
  92. let name = str.substring(index + 1)
  93. return pcd + name
  94. }
  95. onSubmit() {
  96. let objectType = this.props.enterpriseInfor.id.indexOf(',') > -1 ? 1 : 0
  97. if (!this.state.rangeStartMinuteVal) {
  98. Taro.showToast({ title: "请选择公出时间", icon: "none" });
  99. return;
  100. }
  101. if (!this.state.rangeEndMinuteVal) {
  102. Taro.showToast({ title: "请选择公出时间", icon: "none" });
  103. return;
  104. }
  105. if (
  106. !(
  107. this.props.selectArrderLocation.longitude &&
  108. this.props.selectArrderLocation.latitude
  109. )
  110. ) {
  111. Taro.showToast({ title: "请选择公出地点", icon: "none" });
  112. return;
  113. }
  114. if (!this.state.reason) {
  115. Taro.showToast({ title: "请输入公出目标", icon: "none" });
  116. return;
  117. }
  118. if (!this.state.plan && this.props.enterpriseInfor.type != 2) {
  119. Taro.showToast({ title: "请输入公出计划", icon: "none" });
  120. return;
  121. }
  122. if (!this.state.expectedEffect && this.props.enterpriseInfor.type != 2) {
  123. Taro.showToast({ title: "请输入预计效果", icon: "none" });
  124. return;
  125. }
  126. if (this.state.totalDuration === 0) {
  127. Taro.showToast({
  128. title: "请选择公出时间,目前设置公出时间不足0.5小时",
  129. icon: "none",
  130. });
  131. return;
  132. }
  133. this.setState({
  134. loading: true,
  135. });
  136. const { selectArrderLocation } = this.props
  137. let datas = {
  138. objectType,
  139. uids: this.props.enterpriseInfor.id,
  140. releaseStarts: this.state.rangeStartMinuteVal,
  141. releaseEnds: this.state.rangeEndMinuteVal,
  142. remarks: this.state.reason,
  143. districtName: this.getArea(),
  144. longitude: this.props.selectArrderLocation.longitude,
  145. latitude: this.props.selectArrderLocation.latitude,
  146. annexUrl: this.state.imgs.length === 0 ? "" : this.state.imgs.join(","),
  147. duration: this.state.totalDuration,
  148. type: this.props.enterpriseInfor.type,
  149. validDate: JSON.stringify(this.state.validDates),
  150. assist: this.state.coorderList.length === 0 ? 0 : 1,
  151. assistAid: this.state.coorderList.length === 0 ? "" : this.state.coorderList.join(","),
  152. assistAidName: this.state.coorderList.length === 0 ? "" : getNameList(this.state.coorderList, this.state.cList).join(","),
  153. };
  154. if (this.props.enterpriseInfor.type == 0) {
  155. datas = {
  156. ...datas,
  157. ...{
  158. plan: this.state.plan,
  159. expectedEffect: this.state.expectedEffect,
  160. }
  161. };
  162. } else if (this.props.enterpriseInfor.type == 2) {
  163. datas = datas;
  164. } else {
  165. datas = {
  166. ...datas,
  167. ...{
  168. plan: this.state.plan,
  169. expectedEffect: this.state.expectedEffect,
  170. orderNo: this.props.enterpriseInfor.orderNo,
  171. }
  172. };
  173. }
  174. addPublicRelease(datas)
  175. .then((v) => {
  176. this.setState({
  177. loading: false,
  178. });
  179. if (v.error.length === 0) {
  180. Taro.eventCenter.trigger("publicContent", v.data);
  181. } else {
  182. Taro.showToast({
  183. title: v.error[0].message,
  184. icon: "none",
  185. });
  186. }
  187. })
  188. .catch(() => {
  189. this.setState({
  190. loading: false,
  191. });
  192. });
  193. }
  194. selectArrder() {
  195. const key = "AWBBZ-GRAC2-JFYUO-CLA7I-JAHXK-YFFGT"; //使用在腾讯位置服务申请的key
  196. const referer = "科德打卡定位"; //调用插件的app的名称
  197. const category = "公司企业,房产小区";
  198. Taro.navigateTo({
  199. url:
  200. "plugin://chooseLocation/index?key=" +
  201. key +
  202. "&referer=" +
  203. referer +
  204. "&category=" +
  205. category,
  206. });
  207. }
  208. onChange(value, type) {
  209. let arr = this.state.imgs.concat([]);
  210. if (type === "add") {
  211. arr.push(value);
  212. } else if (type === "remove") {
  213. arr.splice(value, 1);
  214. }
  215. this.setState({
  216. imgs: arr,
  217. });
  218. }
  219. getWorkingHoursList() {
  220. getWorkingHoursList({})
  221. .then((v) => {
  222. if (v.error.length === 0) {
  223. let obj = Taro.getStorageSync("userInfor");
  224. let index = v.data.findIndex(
  225. (value) => value.type === obj.workTimeInfor.type
  226. );
  227. this.setState({
  228. workType: index !== -1 ? index : 0,
  229. });
  230. this.setState({
  231. workTypeList: v.data,
  232. });
  233. } else {
  234. Taro.showToast({
  235. title: v.error[0].message,
  236. icon: "none",
  237. });
  238. }
  239. })
  240. .catch((err) => {
  241. //console.log(err);
  242. });
  243. }
  244. onPickerHide() {
  245. this.setState({
  246. isPickerRender: false,
  247. });
  248. }
  249. onSetPickerTime(val) {
  250. let data = val.detail;
  251. this.setState({
  252. rangeStartMinuteVal: data.selectStartTime,
  253. rangeEndMinuteVal: data.selectEndTime,
  254. });
  255. let arr = [];
  256. if (data.startTime && data.endTime) {
  257. let a = dayjs(data.startTime);
  258. let b = dayjs(data.endTime);
  259. let num;
  260. if (a.hour() <= b.hour()) {
  261. num = b.diff(a, "day") + 1;
  262. } else {
  263. num = b.diff(a, "day") + 2;
  264. }
  265. let strAdd = data.startTime;
  266. for (let i = 0; i < num; i++) {
  267. let time = dayjs(strAdd).add(i, "days").format("YYYY-MM-DD");
  268. arr.push({ value: time });
  269. }
  270. }
  271. this.setState({
  272. rangeEndVal: dayjs(data.endTime).format("YYYY-MM-DD"),
  273. rangeStartVal: dayjs(data.startTime).format("YYYY-MM-DD"),
  274. validDates: arr,
  275. }, () => {
  276. let a1 = dayjs(dayjs(data.endTime).format("YYYY-MM-DD HH:mm:ss"));
  277. let b1 = dayjs(dayjs(data.startTime).format("YYYY-MM-DD HH:mm:ss"));
  278. this.getNumHourse(b1, a1);
  279. });
  280. }
  281. // 新增技术协单
  282. setList(list, arr) {
  283. this.setState({
  284. cList: list,
  285. coorderList: arr
  286. })
  287. }
  288. // 弹窗开关
  289. popupClick() {
  290. this.setState({
  291. popup: !this.state.popup
  292. })
  293. }
  294. render() {
  295. const { cList, coorderList, popup } = this.state
  296. return (
  297. <View className="publicContent">
  298. <View className="formItem">
  299. <View className="formName">公出企业:</View>
  300. <View className="formValue" style={{ flexDirection: "column", alignItems: "flex-end" }}>
  301. {/* {this.props.enterpriseInfor.name} */}
  302. {
  303. !!this.props.enterpriseInfor.name && this.props.enterpriseInfor.name.indexOf(',') > -1
  304. ? this.props.enterpriseInfor.name.split(',')?.map((item, index) => <View key={index}>{item}</View>)
  305. : this.props.enterpriseInfor.name
  306. }
  307. </View>
  308. </View>
  309. <View className="formItem">
  310. <View className="formName">公出类型:</View>
  311. <View className="formValue">
  312. {this.props.enterpriseInfor.type == 0
  313. ? "业务公出" : this.props.enterpriseInfor.type == 1
  314. ? "技术公出" : this.props.enterpriseInfor.type == 2
  315. ? "行政公出" : this.props.enterpriseInfor.type == 3
  316. ? "技术协单" : ""}
  317. </View>
  318. </View>
  319. {this.props.enterpriseInfor.contractNo ? (
  320. <View className="formItem">
  321. <View className="formName">合同编号:</View>
  322. <View className="formValue">
  323. {this.props.enterpriseInfor.contractNo}
  324. </View>
  325. </View>
  326. ) : (
  327. ""
  328. )}
  329. <View className="formItem">
  330. <View className="formName">作息时间类型:</View>
  331. <View className="formValue">
  332. <picker
  333. onChange={(e) => {
  334. this.setState({
  335. workType: e.detail.value,
  336. });
  337. if (this.state.workTypeList[e.detail.value]) {
  338. let obj = Taro.getStorageSync("userInfor");
  339. obj.workTimeInfor = this.state.workTypeList[e.detail.value];
  340. Taro.setStorageSync("userInfor", obj);
  341. this.setState({
  342. rangeStartVal: "",
  343. rangeStartMinuteVal: "",
  344. rangeEndMinuteVal: "",
  345. rangeEndVal: "",
  346. validDates: [],
  347. totalDuration: 0,
  348. });
  349. }
  350. }}
  351. value={this.state.workType}
  352. rangeKey="name"
  353. range={this.state.workTypeList}
  354. >
  355. <view style={{ display: "flex", alignItems: "center" }}>
  356. {this.state.workTypeList[this.state.workType]
  357. ? this.state.workTypeList[this.state.workType].name
  358. : ""}
  359. <AtIcon value="chevron-right" size="20" color="#bbbbbb" />
  360. </view>
  361. </picker>
  362. </View>
  363. </View>
  364. <View className="formItem">
  365. <View className="formName">公出时间:</View>
  366. <View className="formValue">
  367. <View
  368. className="time"
  369. onClick={() => {
  370. this.setState({
  371. isPickerRender: true,
  372. });
  373. }}
  374. >
  375. {this.state.rangeStartMinuteVal &&
  376. this.state.rangeEndMinuteVal ? (
  377. <View className="timeContent">
  378. <View>开始时间:{this.state.rangeStartMinuteVal}</View>
  379. <View>结束时间:{this.state.rangeEndMinuteVal}</View>
  380. </View>
  381. ) : (
  382. "请选择公出时间"
  383. )}
  384. </View>
  385. <timePicker
  386. config={{
  387. endDate: true,
  388. column: "minute",
  389. dateLimit: false,
  390. // initStartTime: "2019-01-01 12:32:44", //默认开始时间
  391. // initEndTime: "2019-12-01 12:32:44", //默认结束时间
  392. limitStartTime: dayjs()
  393. .subtract(3, "year")
  394. .format("YYYY-MM-DD HH:mm:ss"),
  395. limitEndTime: dayjs()
  396. .add(3, "year")
  397. .format("YYYY-MM-DD HH:mm:ss"),
  398. }}
  399. isPartition
  400. pickerShow={this.state.isPickerRender}
  401. onconditionaljudgment={(v) => {
  402. let a = dayjs(
  403. dayjs(v.detail.endTime)
  404. .second(0)
  405. .format("YYYY-MM-DD HH:mm:ss")
  406. );
  407. let b = dayjs(dayjs().second(0).format("YYYY-MM-DD HH:mm:ss"));
  408. if (a.isBefore(b)) {
  409. Taro.showToast({
  410. title: "结束时间不能小于当前时间",
  411. icon: "none",
  412. });
  413. v.detail.setLv(false);
  414. }
  415. }}
  416. onhidepicker={() => {
  417. this.onPickerHide();
  418. }}
  419. onsetpickertime={(v) => {
  420. this.onSetPickerTime(v);
  421. }}
  422. />
  423. </View>
  424. </View>
  425. <View className="formItem">
  426. <View className="formName">总时长:</View>
  427. <View className="formValue">{this.state.totalDuration}小时</View>
  428. </View>
  429. {this.state.validDates.length !== 0 ? (
  430. <View
  431. className="formItem"
  432. style={{ display: "block", paddingTop: "15px" }}
  433. >
  434. <View className="formName">
  435. <View>去除放假时间:</View>
  436. </View>
  437. <View className="tips">
  438. 绿色方块为公出时间,长按即可去除放假时间
  439. </View>
  440. <AtCalendar
  441. currentDate={this.state.rangeStartVal}
  442. minDate={this.state.rangeStartVal}
  443. maxDate={this.state.rangeEndVal}
  444. isSwiper={false}
  445. validDates={this.state.validDates}
  446. onDayLongClick={(item) => {
  447. if (
  448. !(
  449. dayjs(item.value).isSame(this.state.rangeStartVal) ||
  450. dayjs(item.value).isSame(this.state.rangeEndVal)
  451. )
  452. ) {
  453. if (
  454. !(
  455. dayjs(item.value).isAfter(this.state.rangeStartVal) &&
  456. dayjs(item.value).isBefore(this.state.rangeEndVal)
  457. )
  458. ) {
  459. return;
  460. }
  461. } else {
  462. Taro.showToast({
  463. title: "开始结束时间不能取消",
  464. icon: "none",
  465. });
  466. return;
  467. }
  468. let index = this.state.validDates.findIndex((v) => {
  469. let lv = dayjs(v.value).isSame(item.value);
  470. return lv;
  471. });
  472. const { start, end } = getUserWordTimes();
  473. let totalDuration = getHours(
  474. dayjs().format("YYYY-MM-DD") + start,
  475. dayjs(dayjs().format("YYYY-MM-DD") + end)
  476. ); //一天工作时长
  477. if (index < 0) {
  478. let arr = item.value.split("-");
  479. this.state.validDates.push({ value: arr.join("-") });
  480. this.setState({
  481. validDates: this.state.validDates,
  482. totalDuration: this.state.totalDuration + totalDuration,
  483. });
  484. } else {
  485. this.state.validDates.splice(index, 1);
  486. this.setState({
  487. validDates: this.state.validDates,
  488. totalDuration: this.state.totalDuration - totalDuration,
  489. });
  490. }
  491. }}
  492. />
  493. </View>
  494. ) : null}
  495. <View className="formItem" style={{ paddingBottom: 0 }}>
  496. <View className="formName">公出地点:</View>
  497. <View className="formValue" onClick={this.selectArrder}>
  498. <Text className="formValueText">
  499. {this.props.selectArrderLocation.name}
  500. </Text>
  501. <AtIcon value="chevron-right" size="30" color="#bbbbbb" />
  502. </View>
  503. </View>
  504. <View className="tips">
  505. 以地图为中心100米范围为可打卡区域,移动红标只需要拖动地图即可
  506. </View>
  507. {
  508. this.props.enterpriseInfor.type === 0 &&
  509. <View className="formItems" style={{ paddingBottom: 0, marginTop: 10 }}>
  510. <View className="formNames">技术协单: </View>
  511. <View className="formValues">
  512. {
  513. cList.length == 0
  514. ? <Text>无</Text>
  515. : cList.map((item, index) =>
  516. <View className="fitems" key={index}>
  517. {item.name}
  518. <View className="fclose"
  519. onClick={() => {
  520. coorderList.includes(item.id) &&
  521. (
  522. cList.splice(coorderList.indexOf(item.id), 1),
  523. coorderList.splice(coorderList.indexOf(item.id), 1)
  524. )
  525. this.setState({
  526. cList,
  527. coorderList,
  528. })
  529. }}
  530. ><AtIcon value="close-circle" size="15" color="#bbbbbb" /></View>
  531. </View>
  532. )
  533. }
  534. {cList.length < 5 && <Button className="addbuttom" type='primary' onClick={this.popupClick.bind(this)}>新增技术协单</Button>}
  535. </View>
  536. </View>
  537. }
  538. {
  539. this.props.enterpriseInfor.type === 0 &&
  540. <View className="tips">
  541. 请与技术协商后,再发起协单,协单将统计公出成本等
  542. </View>
  543. }
  544. <View
  545. className="formItem"
  546. style={{ display: "block", paddingTop: "15px" }}
  547. >
  548. {/* 公出目标 */}
  549. <View className="formName">
  550. <Text style={{ color: "red" }}>*公出目标:</Text>
  551. <View
  552. className="formValue"
  553. style={{ paddingTop: "10px", textAlign: "left" }}
  554. >
  555. <AtTextarea
  556. height={46}
  557. value={this.state.reason}
  558. onChange={(v) => {
  559. this.setState({
  560. reason: v,
  561. });
  562. }}
  563. maxLength={200}
  564. placeholder={
  565. this.props.enterpriseInfor.type == 2
  566. ? "详细说明本次公出的内容,预计完成的内容"
  567. : "本次公出目标,谈的思路与步骤?"
  568. }
  569. />
  570. </View>
  571. </View>
  572. {/* 公出计划 */}
  573. {this.props.enterpriseInfor.type != 2 && (
  574. <View className="formName">
  575. <Text style={{ color: "red" }}>*公出计划:</Text>
  576. <View
  577. className="formValue"
  578. style={{ paddingTop: "10px", textAlign: "left" }}
  579. >
  580. <AtTextarea
  581. height={46}
  582. value={this.state.plan}
  583. onChange={(v) => {
  584. this.setState({
  585. plan: v,
  586. });
  587. }}
  588. maxLength={200}
  589. placeholder="本次公出准备工作"
  590. />
  591. </View>
  592. </View>
  593. )}
  594. {/* 预计效果 */}
  595. {this.props.enterpriseInfor.type != 2 && (
  596. <View className="formName">
  597. <Text style={{ color: "red" }}>*预计效果:</Text>
  598. <View
  599. className="formValue"
  600. style={{ paddingTop: "10px", textAlign: "left" }}
  601. >
  602. <AtTextarea
  603. height={46}
  604. value={this.state.expectedEffect}
  605. onChange={(v) => {
  606. this.setState({
  607. expectedEffect: v,
  608. });
  609. }}
  610. maxLength={200}
  611. placeholder="预计本次公出效果"
  612. />
  613. </View>
  614. </View>
  615. )}
  616. </View>
  617. {/* */}
  618. <View className="formItem" style={{ display: "block" }}>
  619. <View className="formName">附件:</View>
  620. <View
  621. className="formValue"
  622. style={{ paddingTop: "10px", textAlign: "left" }}
  623. >
  624. <ImagePicker
  625. showAddBtn
  626. ref={(ref) => (this.imagePickerRef = ref)}
  627. url="/api/admin/release/upload"
  628. onChange={this.onChange}
  629. />
  630. </View>
  631. </View>
  632. <View className="operation">
  633. <AtButton
  634. disabled={this.state.loading}
  635. type="secondary"
  636. circle
  637. onClick={() => {
  638. Taro.eventCenter.trigger("enterpriseBack");
  639. }}
  640. >
  641. 上一步
  642. </AtButton>
  643. <AtButton
  644. type="primary"
  645. loading={this.state.loading}
  646. circle
  647. onClick={() => {
  648. if (this.state.loading) {
  649. return;
  650. }
  651. this.setState({
  652. isInquiryOpened: true,
  653. inquiryTitle: "提醒",
  654. inquiryContent: "您确定要提交此申请吗?",
  655. inquiryFn: () => {
  656. this.onSubmit();
  657. },
  658. });
  659. }}
  660. >
  661. 提交申请
  662. </AtButton>
  663. </View>
  664. <InquiryModal
  665. isOpened={this.state.isInquiryOpened}
  666. title={this.state.inquiryTitle}
  667. content={this.state.inquiryContent}
  668. onClose={() => {
  669. this.setState({
  670. isInquiryOpened: false,
  671. inquiryTitle: "",
  672. inquiryContent: "",
  673. });
  674. }}
  675. onDetermine={() => {
  676. this.state.inquiryFn();
  677. this.setState({
  678. isInquiryOpened: false,
  679. inquiryTitle: "",
  680. inquiryContent: "",
  681. inquiryFn: () => { },
  682. });
  683. }}
  684. />
  685. {popup &&
  686. <UserQuery
  687. isOpened={popup}
  688. onDesc={this.popupClick.bind(this)}
  689. cList={cList}
  690. selList={[]}
  691. coorderList={coorderList}
  692. setList={this.setList.bind(this)}
  693. />
  694. }
  695. </View>
  696. );
  697. }
  698. }
  699. export default PublicContent;