index.jsx 6.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. import React, { useState, useRef } from "react";
  2. import Taro, { useDidShow } from "@tarojs/taro";
  3. import "./index.scss";
  4. import { View, Text, Input, Image } from "@tarojs/components";
  5. import Tab from "../../compents/tab/index";
  6. import Tags from "../../compents/tags/index";
  7. import request, { uploadFiles } from "../../util/request";
  8. import uploadicon from "../../assets/uploadicon.png";
  9. import IsLogin from "../../layout/IsLogin";
  10. import "taro-ui/dist/style/components/flex.scss";
  11. const batchimport = props => {
  12. const [pageState, setPageState] = useState("1");
  13. const [labelList, setLabelList] = useState([]);
  14. const [imgUrl, setImgUrl] = useState([]);
  15. const [tagList, setTagList] = useState([]);
  16. let [arrList, setArrList] = useState({});
  17. useDidShow(() => {
  18. getMateTagGroupList();
  19. });
  20. const getMateTagGroupList = () => {
  21. request({
  22. url: "/taMateTagGroup",
  23. params: { pageSize: 1, pageSize: 9999 }
  24. }).then(res => {
  25. const { records, ...page } = res.data.data;
  26. setTagList(records);
  27. });
  28. };
  29. const onSave = e => {
  30. let data = [];
  31. imgUrl.map(item => {
  32. labelList.map(x => {
  33. data.push({ tagId: x.tagId, imageId: item.imageId });
  34. });
  35. });
  36. request({ url: "/taMetaImageTag", data: data, method: "post" }).then(
  37. res => {
  38. Taro.showModal({
  39. title: "上传成功",
  40. content: "点击确认按钮,返回上级菜单",
  41. showCancel: false,
  42. success: function(res) {
  43. setImgUrl([])
  44. setPageState("1")
  45. }
  46. });
  47. }
  48. );
  49. };
  50. const onLabelChange = (e, index) => {
  51. console.log(e, index, "onLabelChange");
  52. let newArrArrList = {
  53. ...arrList,
  54. [index]: e
  55. };
  56. setArrList(newArrArrList);
  57. console.log(newArrArrList, "arrList");
  58. let newArr = Object.values(newArrArrList).reduce((pre, cur) => {
  59. return pre.concat(cur);
  60. }, []);
  61. setLabelList(newArr);
  62. };
  63. const onUpImage = () => {
  64. Taro.chooseImage({
  65. sourceType: ["album"],
  66. count: 9,
  67. success: res => {
  68. const tempFilePaths = res.tempFilePaths;
  69. Taro.showLoading({title: '请稍候...'})
  70. uploadFiles(tempFilePaths, "/api/mp/taMetaImage").then(res1 => {
  71. setImgUrl(imgUrl.concat(res1));
  72. Taro.hideLoading()
  73. }).catch(err => Taro.hideLoading());
  74. }
  75. });
  76. };
  77. const handleImageDelete = row => {
  78. Taro.showModal({
  79. content: '确认删除当前图片?',
  80. success: res => {
  81. if (res.confirm) {
  82. setImgUrl(imgUrl.filter(x => x.imageId !== row.imageId))
  83. }
  84. }
  85. })
  86. }
  87. return (
  88. <IsLogin>
  89. <View className="batchimport">
  90. <View style={{ display: pageState == "1" ? "none" : "block" }}>
  91. <Text>标签</Text>
  92. <View style={{ padding: "0 20px" }}>
  93. <View
  94. className="at-row at-row--wrap at-row__justify--center"
  95. style={{ marginTop: "0.15rem" }}
  96. >
  97. {labelList.map(item => {
  98. return (
  99. <View className="at-col at-col-4" key={item.name}>
  100. <View className="tags-btn">{item.name}</View>
  101. </View>
  102. );
  103. })}
  104. {/* <View className='at-col at-col-4 ' >
  105. <View className='tags-btn tags-btn-on' onClick={() => setPageState('1')} >添加</View>
  106. </View> */}
  107. </View>
  108. </View>
  109. <Text>照片</Text>
  110. <View>
  111. {imgUrl.length === 0 && (
  112. <Image
  113. className="guide-view-img"
  114. style={{ width: "10%", height: "100%" }}
  115. onClick={() => onUpImage()}
  116. src={uploadicon}
  117. ></Image>
  118. )}
  119. {imgUrl.length > 0 && (
  120. <View className="at-row at-row--wrap">
  121. {imgUrl.map(x => {
  122. return (
  123. <View
  124. className="at-col at-col-3"
  125. style={{ padding: "3px", height: "94px" }}
  126. key={x.imageId}
  127. >
  128. <Image
  129. className="guide-view-img"
  130. style={{
  131. width: "100%",
  132. height: "100%"
  133. }}
  134. mode="aspectFit"
  135. onClick={() => handleImageDelete(x)}
  136. src={x.image}
  137. ></Image>
  138. </View>
  139. );
  140. })}
  141. <View
  142. className="at-col at-col-3"
  143. style={{ padding: "30px", height: "94px" }}
  144. >
  145. <Image
  146. className="guide-view-img"
  147. style={{
  148. width: "100%",
  149. height: "100%"
  150. }}
  151. onClick={() => onUpImage()}
  152. src={uploadicon}
  153. ></Image>
  154. </View>
  155. </View>
  156. )}
  157. </View>
  158. {/* <Tab value={['取消','']} onClick={() => { Taro.navigateTo({ url: `/pages/label/edit/index` }) }} ></Tab> */}
  159. <Tab
  160. pageState="3"
  161. value={["取消", "上传"]}
  162. onClick={[
  163. e => {
  164. setPageState("1");
  165. },
  166. e => onSave(e)
  167. ]}
  168. ></Tab>
  169. </View>
  170. <View style={{ display: pageState == "2" ? "none" : "block" }}>
  171. <View style={{ padding: "0 20px" }}>
  172. {tagList.map((item, index) => {
  173. return (
  174. <View className="material-card" key={item.name}>
  175. <Text>{item.name}</Text>
  176. <Tags
  177. list={item.taMateTagList}
  178. onChange={e => onLabelChange(e, index)}
  179. style={{ marginTop: "90rpx" }}
  180. ></Tags>
  181. </View>
  182. );
  183. })}
  184. </View>
  185. {/* <Tab value={['取消','']} onClick={() => { Taro.navigateTo({ url: `/pages/label/edit/index` }) }} ></Tab> */}
  186. <Tab
  187. pageState="3"
  188. value={["取消", "选择"]}
  189. onClick={[
  190. e => {
  191. Taro.navigateBack({
  192. delta: 1
  193. });
  194. },
  195. e => {
  196. if (labelList.length > 0) setPageState("2");
  197. setImgUrl([])
  198. }
  199. ]}
  200. ></Tab>
  201. </View>
  202. </View>
  203. </IsLogin>
  204. );
  205. };
  206. export default batchimport;