import * as WebBrowser from "expo-web-browser";
import * as React from "react";
import {
Image,
Platform,
StyleSheet,
TouchableOpacity,
View,
ImageBackground,
} from "react-native";
import scrollPage from "../decorator/scrollPage";
import { useModel } from "flooks";
import {
Layout,
Tab,
TabView,
Text,
useTheme,
Button,
Card,
List,
} from "@ui-kitten/components";
import FormInput from "../components/FormInput";
import { useFocusEffect } from "@react-navigation/native";
import ScrollPage from "../components/ScrollPage";
import NavHeaderBar from "../components/NavHeaderBar";
import GoodsCard from "../components/GoodsCard";
import EmptyComponent from "../components/EmptyComponent";
import ActionButton from "react-native-action-button";
import TabBarIcon from "../components/TabBarIcon";
const Header = (props, title) => (
{title}
);
export default function AddGoodsClassification({ navigation, route }) {
const theme = useTheme();
const { changeBackground } = useModel("barModel");
const { httpGet, httpPost } = useModel("httpModel", true);
const { registerSecend, guideStep } = useModel("userModel", true);
const { success } = useModel("loadingModel", true);
const {
goodsClassificationTitle1,
goodsClassificationTitle2,
goodsClassificationTitle3,
add,
remove,
successText,
removeTips,
addClassTips,
} = useModel("wordsModel");
const { showDialog } = useModel("dialogModel", true);
const [categoryList, changeCategoryList] = React.useState([]);
const [merchantNatureList, changeMerchantNatureList] = React.useState([]);
const [goods, changeGoods] = React.useState([]);
const [selectId, changeSelectId] = React.useState(0);
const [goodsClass, setGoodsClass] = React.useState([]);
const [pageType, changeType] = React.useState("signboard");
useFocusEffect(
React.useCallback(() => {
changeBackground(theme["color-primary-500"]);
console.log(route);
if (route.params.type == "classification") {
changeSelectId(route.params.classificationId);
}
if (route.params.type) {
changeType(route.params.type);
} else {
changeType("signboard");
}
getAllGoods();
}, [])
);
React.useEffect(() => {
if (selectId && selectId != "new") {
getSelectGoods();
}
}, [selectId]);
function getSelectGoods() {
httpGet("/classification/allGoods", {
classificationId: selectId,
}).then((res) => {
setGoodsClass(res);
});
}
function getAllGoods() {
httpGet("/goods/my").then((res) => {
changeGoods(res);
});
}
const topGoods = React.useMemo(() => {
if (pageType == "signboard") {
return goods.filter((item) => {
return item.signboard;
});
} else {
return [...goodsClass];
}
}, [goods, goodsClass]);
const elseGoods = React.useMemo(() => {
if (pageType === "signboard") {
return goods.filter((item) => {
return !item.signboard;
});
} else {
let _topIds = topGoods.map((item) => {
return item.id;
});
return goods.filter((item) => {
return _topIds.indexOf(item.id) === -1;
});
}
}, [goods, goodsClass]);
const [name, changeName] = React.useState("");
const [sort, changeSort] = React.useState("");
const [goodsIds, changeGoodsIds] = React.useState("");
const canNext = React.useMemo(() => {
return true;
}, [name]);
const chooseGoodsItem = ({ item, index }) => (
{
showDialog({
bodyText: removeTips,
status: "danger",
cancelable: true,
confirmCallback: () => {
changeSignboard(item.id, false, remove, item);
},
});
}}
/>
);
const goodsItem = ({ item, index }) => (
{
if (topGoods.length < 2 || pageType != "signboard") {
changeSignboard(item.id, true, add, item);
} else {
showDialog({
bodyText: addClassTips,
});
}
}}
/>
);
function changeSignboard(id, signboard, tips, info) {
if (pageType == "signboard") {
httpPost(
"/goods/save",
{
id,
signboard,
},
{ body: "json" }
).then((res) => {
success(tips + successText);
let _goods = goods.map((item) => {
if (item.id != id) {
return item;
} else {
return res;
}
});
changeGoods(_goods);
});
} else if (pageType == "classification" && selectId == "new") {
let _goodsClass = [...goodsClass];
if (signboard) {
_goodsClass.push(info);
} else {
_goodsClass.splice(
_goodsClass.findIndex((item) => {
return item.id == id;
}),
1
);
}
success(tips + successText);
setGoodsClass(_goodsClass);
} else {
if (signboard) {
let ids = topGoods.map((item) => {
return item.id;
});
ids.push(id);
httpGet(
"/classification/saveGoods",
{
classificationId: selectId,
string: ids.join(","),
},
{ body: "json" }
).then((res) => {
success(tips + successText);
getSelectGoods();
});
} else {
httpGet(
"/classification/delGoods",
{
classificationId: selectId,
goodId: id,
},
{ body: "json" }
).then((res) => {
success(tips + successText);
getSelectGoods();
});
}
}
}
return (
<>
{
return Header(props, goodsClassificationTitle2);
}}
disabled={true}
>
{
return Header(props, goodsClassificationTitle3);
}}
disabled={true}
>
{
let ids = topGoods.map((item) => {
return item.id;
});
ids = ids.join(",");
console.log(ids);
navigation.navigate(route.params.preKey, {
choosIds: ids,
});
}}
position='center'
/>
>
);
}
const styles = StyleSheet.create({
flex1: {
backgroundColor: "rgba(0,0,0,0)",
paddingHorizontal: 15,
paddingBottom: 20,
},
list: {
backgroundColor: "rgba(0,0,0,0)",
},
container: {
backgroundColor: "#EEEEEE",
paddingTop: 20,
},
tabContent: {
backgroundColor: "#fff",
marginTop: 20,
},
img: {
width: 100,
height: 100,
alignSelf: "center",
},
img2: {
width: 97,
height: 21,
alignSelf: "center",
marginTop: 2,
},
text: {
marginTop: 16,
},
layoutLeft: {
// flexDirection: "row",
paddingVertical: 10,
justifyContent: "center",
alignItems: "center",
},
form: {
paddingHorizontal: 26,
paddingVertical: 20,
},
textareaContainer: {
backgroundColor: "#F0F0F0",
height: 100,
borderRadius: 4,
},
textarea: {
textAlignVertical: "top", // hack android
fontSize: 13,
color: "#333",
paddingHorizontal: 14,
paddingVertical: 10,
height: 100,
},
});