| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- <template>
- <div class="">
- <lucency-header :lang="lang" page-key="product" />
- <!-- 推荐广告-->
- <product-banner :lang="lang" />
- <!-- 产品类别 -->
- <product-types :lang="lang" :type="type"></product-types>
- <!-- 产品列表 -->
- <product-list :lang="lang" :product-list="products"></product-list>
- <page-select :page="page" :count="nowCount" :total="nowTotal"></page-select>
- <default-footer :lang="lang"/>
- <site-bar wechat-src="/image/wechat.jpg"></site-bar>
- </div>
- </template>
- <script>
- import langMap from "@/map/langMap";
- import productBanner from "@/components/banner/productBanner";
- import qs from "qs"
- import axios from "axios"
- import handle from "~/until/handle";
- export default {
- name: "index",
- props:['uLang','pType','pKey','pProduct'],
- components:{
- productBanner
- },
- async asyncData(ctx){
- // ctx.searchProduct();
- const queryData = {};
- // console.log(ctx)
- queryData['key']=ctx.key;
- queryData['type']=ctx.type;
- queryData['page']=1;
- // 获取数据
- let url = 'http://szhfy.com.cn/api/searchProduct.php';
- let [err,res] = await handle(axios.post(
- url,
- qs.stringify(queryData)
- ));
- if(err){
- console.log(err);
- return {};
- }
- let result = res.data;
- if(result.rcode === 1){
- return {products:result.data}
- }else{
- console.error(result.msg);
- console.log(result);
- return {products:[]}
- }
- },
- data(){
- return {
- lang: this.uLang?this.uLang:langMap.lang.cn,
- type: this.pType?this.pType:'all',
- key: this.pKey?this.pKey:'',
- page: 1,
- nowCount: 199,
- nowTotal: 2,
- products: this.pProduct?this.pProduct:[],
- pageSave: {
- }
- }
- },
- mounted() {
- this.$root.$on('changeLang',this.switchLang);
- this.$root.$on('searchProductKey',this.changeProductKeyHandle);
- this.$root.$on('changeProductType',this.selectType);
- this.$root.$on('changePage',this.changePageHandle);
- // this.loadData();
- },
- methods:{
- switchLang(nextLang){
- if(nextLang){
- this.lang = nextLang;
- }else{
- if(this.lang === langMap.lang.cn){
- this.lang = langMap.lang.en
- }else{
- this.lang = langMap.lang.cn
- }
- }
- },
- selectType(nextType){
- console.log(nextType)
- this.type = nextType;
- this.page = 1;
- this.searchProduct();
- },
- changeProductKeyHandle(key){
- if(this.key === key){
- return 0;
- }
- this.key = key;
- this.page = 1;
- this.searchProduct();
- },
- changePageHandle(nextPage){
- this.page = nextPage;
- this.searchProduct();
- },
- async searchProduct(){
- // const formData = new FormData();
- // formData.append('key',this.key);
- // formData.append('type',this.type);
- // formData.append('page',this.page);
- const queryData = {};
- // console.log(ctx)
- queryData['key']=this.key;
- queryData['type']=this.type;
- queryData['page']=this.page;
- // 获取数据
- let url = '/api/searchProduct.php';
- let data = qs.stringify(queryData);
- let [err,res] = await handle(this.$axios.post(
- url,
- data
- ));
- if(err){
- console.log(err);
- return null;
- }
- let result = res.data;
- if(result.rcode === 1){
- this.products = result.data;
- this.loadPageData(data);
- }else{
- console.error(result.msg);
- console.log(result);
- }
- },
- async loadPageData(queryData){
- let url = '/api/getProductPage.php';
- // let
- let err,res;
- let pageData = null;
- if(this.pageSave[this.type] && this.pageSave[this.type][this.key]){
- pageData = this.pageSave[this.type][this.key]
- }else{
- [err,res] = await handle(this.$axios.post(
- url,
- queryData
- ));
- if(err){
- console.error(err);
- }else{
- let result = res.data;
- if(result.rcode === 1){
- pageData = result.data;
- }else{
- console.error(result.msg);
- console.log(result);
- }
- }
- }
- if (pageData){
- this.nowTotal = Math.ceil(pageData.count / pageData.limit);
- this.nowCount = pageData.count;
- if(!this.pageSave[this.type]){
- this.pageSave[this.type] = {}
- }
- if(!this.pageSave[this.type][this.key]){
- this.pageSave[this.type][this.key] = pageData;
- }
- }else{
- this.nowTotal = 1;
- this.nowCount = 1;
- }
- }
- }
- }
- </script>
- <style scoped>
- </style>
|