diff --git a/.drone.yml b/.drone.yml index c4a3777..4cf35bf 100644 --- a/.drone.yml +++ b/.drone.yml @@ -26,6 +26,9 @@ steps: # 将用户中心仪表盘主题 hgcloud_home 同步到运行目录 - cp -rf /www/wwwroot/hgdemo.hgidc.cn/public/web/BlackFruit-web/clientarea/home/hgcloud_home /www/wwwroot/hgdemo.hgidc.cn/public/home/template/pc/ + # 将购物车主题 hgcart 同步到运行目录 + - cp -rf /www/wwwroot/hgdemo.hgidc.cn/public/web/BlackFruit-web/clientarea/cart/hgcart /www/wwwroot/hgdemo.hgidc.cn/public/cart/template/pc/ + - name: Restart Nginx commands: - nginx -s reload diff --git a/clientarea/cart/hgcart/.gitkeep b/clientarea/cart/hgcart/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/clientarea/cart/hgcart/api/goodsList.js b/clientarea/cart/hgcart/api/goodsList.js new file mode 100644 index 0000000..bcfe556 --- /dev/null +++ b/clientarea/cart/hgcart/api/goodsList.js @@ -0,0 +1,112 @@ +// 获取商品一级分组 +function productGroupFirst() { + return Axios.get(`/product/group/first`); +} + +//获取商品二级分组 +function productGroupSecond(id) { + return Axios.get(`/product/group/second?id=${id}`, id); +} + +// 商品列表 +function productGoods(params) { + return Axios.get(`/product`, { params }); +} + +// 获取可用域名后缀 +function domainSuffix(id) { + return Axios.get(`/idcsmart_domain/domain_suffix?host_id=${id}`); +} + +// 域名查询 +function domainSearch(params) { + return Axios.get(`/idcsmart_domain/check_domain`, { params }); +} + +// 获取域名价格 +function domainPrice(params) { + return Axios.get(`/idcsmart_domain/get_price`, { params }); +} + +// 获取whois信息 +function domainWhois(params) { + return Axios.get(`/idcsmart_domain/whois`, { params }); +} + +// 加入购物车 +function addToCart(params) { + return Axios.post(`/cart`, params, { timeout: 1000 * 60 * 20 }); +} + +// 结算购物车 +function cartCheckout(params) { + return Axios.post(`/cart/settle`, params); +} + +// 获取商品活动促销信息 +function eventPromotion(params) { + return Axios.get(`/event_promotion/product/${params.id}/event_promotion`, { + params + }); +} + +// 编辑购物车商品 +function updateCart(params) { + return Axios.put(`/cart/${params.position}`, params); +} + +// 删除购物车商品 +function deleteCart(params) { + return Axios.delete(`/cart/${params.position}`, params); +} + +// 批量删除购物车商品 +function deleteCartBatch(params) { + return Axios.delete(`/cart/batch`, { params }); +} + +// 信息模板列表 +function templateList(params) { + return Axios.get(`/idcsmart_domain/info_template`, { params }); +} + +// 信息模板详情 +function templateDetails(id) { + return Axios.get(`/idcsmart_domain/info_template/${id}`); +} + +// 新建信息模板 +function templateAdd(params) { + return Axios.post(`/idcsmart_domain/info_template`, params); +} + +// 删除信息模板 +function templateDelete(id) { + return Axios.delete(`/idcsmart_domain/info_template/${id}`); +} + +// 信息模板实名认证 +function templateAuth(params) { + return Axios.post( + `/idcsmart_domain/info_template/${params.id}/certifications`, + params + ); +} + +// 支持的信息模板 +function templateSupport(params) { + return Axios.get(`/idcsmart_domain/info_template/support`, { params }); +} + +// 批量查询域名 +function domainBatch(params) { + return Axios.get(`/idcsmart_domain/bulk_check`, { + params, + timeout: 1000 * 60 * 20 + }); +} + +// 获取域名设置 +function domainSetting() { + return Axios.get(`/idcsmart_domain/config`); +} diff --git a/clientarea/cart/hgcart/api/product.js b/clientarea/cart/hgcart/api/product.js new file mode 100644 index 0000000..255729c --- /dev/null +++ b/clientarea/cart/hgcart/api/product.js @@ -0,0 +1,35 @@ +// 获取商品列表页 +function getProduct(id) { + return Axios.get(`/menu/${id}/host`); +} +// 获取详情 +function getProductDetail(id) { + return Axios.get(`/host/${id}/view`); +} +// 获取订购页 +function getOrederConfig(params) { + return Axios.get(`/product/${params.id}/config_option`, { params }); +} +// 产品详情 +function hostDetail(params) { + return Axios.get(`/host/${params.id}`, { params }); +} +// 产品合同是否逾期 +function timeoutStatus(id) { + return Axios.get(`/e_contract/host/${id}/timeout`); +} + +// 商品详情 +function apiProductDetail(params) { + return Axios.get(`/product/${params.id}`, { params }); +} + +//获取商品二级分组 +function productGroupSecond(id) { + return Axios.get(`/product/group/second?id=${id}`, id); +} + +// 商品列表 +function productGoods(params) { + return Axios.get(`/product`, { params }); +} diff --git a/clientarea/cart/hgcart/api/shopping.js b/clientarea/cart/hgcart/api/shopping.js new file mode 100644 index 0000000..5100fdd --- /dev/null +++ b/clientarea/cart/hgcart/api/shopping.js @@ -0,0 +1,48 @@ +// 获取购物车 +function cartList() { + return Axios.get(`/cart`); +} + +//修改购物车商品数量 +function editGoodsNum(index, num) { + return Axios.put(`/cart/${index}/qty`, { qty: num }); +} + +//批量删除购物车商品 +function deleteGoods(arr) { + const params = { positions: arr }; + return Axios.delete(`/cart/batch`, { data: params }); +} + +// 修改配置计算价格 +function configOption(id, params) { + return Axios.post(`/product/${id}/config_option`, params); +} + +// 结算购物车 +function cart_settle(params) { + return Axios.post(`/cart/settle`, params); +} + +// 获取商品折扣金额 +function clientLevelAmount(params) { + return Axios.get(`/client_level/product/${params.id}/amount`, { params }); +} + +// 结算商品 +function product_settle(params) { + return Axios.post(`/product/settle`, params); +} +//支付接口 +function payLisy() { + return Axios.get(`/gateway`); +} +// 修改购物车 +function updateCart(params) { + return Axios.put(`/cart/${params.position}`, params); +} + +// 商品列表 +function productDetail(id) { + return Axios.get(`/product/${id}`); +} diff --git a/clientarea/cart/hgcart/css/goods.css b/clientarea/cart/hgcart/css/goods.css new file mode 100644 index 0000000..ecd9f89 --- /dev/null +++ b/clientarea/cart/hgcart/css/goods.css @@ -0,0 +1,52 @@ +.template { + height: 100%; +} +.main-card { + height: 100%; +} +.config-box { + height: 100%; + display: flex; + flex-direction: column; +} +.content { + flex: 1; +} +.goods-item-name { + cursor: pointer; + padding: 6px 12px; + border: 1px solid var(--color-primary); + color: var(--color-primary); + border-radius: 3px; + margin-bottom: 30px; + display: inline-block; +} +.goods-change-box { + max-width: 100%; +} +.goods-change-box .goods-item-box { + max-height: 500px; + overflow-y: auto; + padding: 0.2rem; +} +.goods-change-box .goods-item-box .goods-group-item { + margin-bottom: 0.3rem; +} +.goods-change-box .goods-item-box .goods-group-item .goods-group-name { + font-weight: 700; + font-size: 0.18rem; + margin-bottom: 0.15rem; +} +.goods-change-box .goods-item-box .goods-group-item .goods-group-info { + display: grid; + grid-template-columns: repeat(4, 1fr); + grid-column-gap: 15px; + row-gap: 0.1rem; +} +.goods-change-box .goods-item-box .goods-group-item .goods-group-info .option-name { + cursor: pointer; + font-size: 0.14rem; +} +.goods-change-box .goods-item-box .goods-group-item .goods-group-info .option-name:hover { + color: var(--color-primary); +} diff --git a/clientarea/cart/hgcart/css/goods.less b/clientarea/cart/hgcart/css/goods.less new file mode 100644 index 0000000..05648d1 --- /dev/null +++ b/clientarea/cart/hgcart/css/goods.less @@ -0,0 +1,68 @@ +.template { + height: 100%; +} + +.main-card { + height: 100%; +} + +.config-box { + height: 100%; + display: flex; + flex-direction: column; +} + +.content { + flex: 1 +} + + + + +.goods-item-name { + cursor: pointer; + padding: 6px 12px; + border: 1px solid var(--color-primary); + color: var(--color-primary); + border-radius: 3px; + margin-bottom: 30px; + display: inline-block; +} + + +.goods-change-box { + max-width: 100%; + + .goods-item-box { + max-height: 500px; + overflow-y: auto; + padding: .2rem; + + .goods-group-item { + margin-bottom: .3rem; + + .goods-group-name { + font-weight: 700; + font-size: .18rem; + margin-bottom: .15rem; + } + + .goods-group-info { + // 一行4个 grid 布局 + display: grid; + grid-template-columns: repeat(4, 1fr); + grid-column-gap: 15px; + row-gap: .1rem; + + .option-name { + cursor: pointer; + font-size: .14rem; + + &:hover { + color: var(--color-primary); + } + } + } + } + } +} diff --git a/clientarea/cart/hgcart/css/goodsList.css b/clientarea/cart/hgcart/css/goodsList.css new file mode 100644 index 0000000..1ae2b51 --- /dev/null +++ b/clientarea/cart/hgcart/css/goodsList.css @@ -0,0 +1,968 @@ +.main-title { + font-size: 0.28rem; + color: #171725; +} +.cart-des { + padding: 0.1rem; + border-radius: 0.03rem; + border: 1px solid #e6e7eb; + box-sizing: border-box; + overflow-y: auto; + margin-bottom: 0.24rem; +} +.cart-des * { + all: revert; +} +.main-content-box { + box-sizing: border-box; + padding-bottom: 0.1rem; + width: 100%; + border-radius: 0.03rem; +} +.search-box { + display: flex; + justify-content: center; + align-items: center; +} +.search-box .el-select { + width: 3.2rem; + font-size: 0.15rem; +} +.search-box .el-select .el-input__inner { + height: 0.46rem !important; + line-height: 0.46rem; +} +.search-box .el-select .el-input__suffix .el-input__icon { + line-height: 1; +} +.second-select { + margin: 0 0.1rem; +} +.second-select .el-input__inner { + height: 0.46rem; + line-height: 0.46rem; +} +.search-input { + width: 3.2rem; +} +.search-input .el-input__inner { + height: 0.46rem !important; + line-height: 0.46rem; +} +.search-btn { + margin-left: 0.1rem; + width: 0.8rem; + height: 0.46rem; + background: var(--color-primary); + border-radius: 0.03rem; + border: none; + font-size: 0.16rem; + color: rgba(255, 255, 255, 0.9); +} +.second-desc { + height: 0.4rem; + font-size: 0.14rem; + color: var(--color-danger); + background: rgba(220, 45, 45, 0.1); + margin-top: 0.24rem; + border-radius: 0.04rem; +} +.shopping-box { + box-sizing: border-box; + margin-top: 0.24rem; + min-height: 3rem; +} +.goods-list-div { + width: 100%; + display: grid; + grid-template-columns: repeat(4, 1fr); + row-gap: 0.2rem; + column-gap: 0.2rem; +} +.shopping-item { + position: relative; + box-sizing: border-box; + min-height: 2.75rem; + border: 1px solid #EDEDED; + border-radius: 0.08rem; + overflow: hidden; + display: flex; + flex-direction: column; + justify-content: space-between; + padding-bottom: 0.16rem; +} +.shopping-item .client-box { + position: absolute; + top: 0; + right: 0; + background-color: var(--color-primary); + padding: 0 0.08rem; + color: #fff; + font-size: 14px; + border-radius: 0px 0px 0px 8px; +} +.shopping-item .goods-name { + margin-top: 0.18rem; + display: flex; + justify-content: space-between; + align-items: center; + column-gap: 0.3rem; + padding: 0 0.16rem; +} +.shopping-item .goods-name .goods-name-text { + font-size: 16px; + font-weight: 700; + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.shopping-item .goods-name .qty-box { + font-size: 12px; + color: #CFD2E1; + flex-shrink: 0; + position: relative; +} +.shopping-item .goods-name .qty-box img { + position: absolute; + top: -0.2rem; + right: 0; + width: 0.55rem; + height: 0.48rem; +} +.shopping-item .goods-name.sold-out .goods-name-text { + color: #CFD2E1; +} +.shopping-item .goods-name.sold-out .qty-box { + width: 0.55rem; +} +.shopping-item .goods-content { + display: flex; + flex-direction: column; + justify-content: space-between; +} +.shopping-item .goods-active { + margin-top: 0.12rem; + padding: 0 0.16rem; + display: flex; + flex-wrap: wrap; + column-gap: 0.08rem; + row-gap: 0.08rem; +} +.shopping-item .goods-active .active-name { + font-size: 12px; + color: var(--color-primary); + background: rgba(57, 124, 252, 0.1); + padding: 0.03rem 0.08rem; + border-radius: 2px; +} +.shopping-item .goods-tag { + box-sizing: border-box; + height: 0.36rem; + display: flex; + flex-wrap: wrap; + align-items: center; + row-gap: 0.08rem; + column-gap: 0.16rem; + background: rgba(57, 124, 252, 0.15); + padding: 0 0.16rem; +} +.shopping-item .goods-tag .tag-item { + position: relative; + font-size: 12px; + flex-shrink: 0; + color: var(--color-primary); + padding-left: 0.08rem; +} +.shopping-item .goods-tag .tag-item::after { + content: ''; + position: absolute; + top: 50%; + left: 0; + width: 0.04rem; + height: 0.04rem; + transform: translateY(-50%); + border-radius: 50%; + background: rgba(57, 124, 252, 0.45); +} +.shopping-item .goods-description { + box-sizing: border-box; + padding: 0.24rem 0.21rem 0.22rem 0.16rem; + max-height: 400px; + min-height: 150px; + flex: 1; + overflow: auto; + font-size: 14px; + white-space: normal; + background: #F4F4F4; +} +.shopping-item .goods-description * { + all: revert; +} +.shopping-item .goods-description ul { + padding-left: 0.16rem; + margin: 0; +} +.shopping-item .goods-description img { + max-width: 100%; +} +.shopping-item .goods-description::-webkit-scrollbar { + /*滚动条整体样式*/ + width: 0px; +} +.shopping-item .goods-description:hover::-webkit-scrollbar { + width: 4px; +} +.shopping-item .price-box { + margin-top: 0.18rem; + padding: 0 0.16rem; + display: flex; + justify-content: space-between; + align-items: center; + column-gap: 0.1rem; +} +.shopping-item .price-box .price-box-left { + text-align: right; + display: flex; + align-items: flex-end; + column-gap: 0.04rem; +} +.shopping-item .price-box .original-price { + font-size: 12px; + color: #CFD2E1; + text-decoration: line-through; +} +.shopping-item .price-box .item-price { + font-size: 24px; + color: var(--color-price-text); +} +.shopping-item .price-box .item-price .item-price-prefix { + font-size: 12px; +} +.shopping-item .price-box .item-price .item-price-cycle { + font-size: 14px; + color: #485169; +} +.shopping-item .price-box .buy-btn { + height: 0.3rem; +} +.tips { + color: #8692b0; + font-size: 0.13rem; + text-align: center; +} +.domain-box .register-type { + display: flex; + align-items: center; +} +.domain-box .register-type .el-divider { + background-color: #D8D8D8; + margin: 0 0.24rem; +} +.domain-box .register-type .reg-ridio { + font-size: 0.14rem; + color: #646464; + cursor: pointer; +} +.domain-box .register-type .isActice { + color: var(--color-primary); +} +.domain-box .domain-search { + margin-top: 0.32rem; + position: relative; + display: flex; + align-items: center; +} +.domain-box .domain-search .el-input { + height: 0.56rem; +} +.domain-box .domain-search .el-input .el-input__inner { + height: 0.56rem; + line-height: 0.56rem; +} +.domain-box .domain-search .el-input-group__append { + padding: 0; + background: #ffffff; + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.domain-box .domain-search .input-btn { + width: 1.7rem; +} +.domain-box .domain-search .suffix-box { + width: 1.7rem; + display: flex; + justify-content: center; + align-items: center; + color: #2B2B2B; + font-size: 0.16rem; + cursor: pointer; +} +.domain-box .domain-search .suffix-box .el-icon-arrow-down { + font-size: 0.14rem; + color: #8692b0; + margin-left: 0.1rem; +} +.domain-box .domain-search .search-button { + height: 0.56rem; + padding-left: 0.7rem; + padding-right: 0.7rem; + border: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + background: var(--color-primary); + color: #ffffff; + font-size: 0.16rem; +} +.domain-box .domain-search .suffix-list { + z-index: 2; + position: absolute; + top: 0.56rem; + left: 0; + display: flex; + flex-wrap: wrap; + width: calc(100% - 2.7rem); + padding: 0.3rem 0.23rem 0.3rem 0.46rem; + background: #feffff; + box-shadow: 0rem 0.05rem 0.1rem 0.01rem rgba(0, 0, 0, 0.1); + border-radius: 0.03rem 0.03rem 0.03rem 0.03rem; +} +.domain-box .domain-search .suffix-list .suffix-item { + margin-right: 0.16rem; + margin-bottom: 0.16rem; + width: 1.1rem; + height: 0.4rem; + border: 0.01rem solid #e6eaed; + display: flex; + justify-content: center; + align-items: center; + font-size: 0.16rem; + color: #2B2B2B; + cursor: pointer; +} +.domain-box .domain-search .suffix-list .suffix-item:hover { + background: rgba(0, 88, 255, 0.08); +} +.domain-box .domain-search .suffix-list .suffix-active { + background: rgba(0, 88, 255, 0.08); + border: 0.01rem solid var(--color-primary); + color: var(--color-primary); +} +.domain-box .batch-search-box { + margin-top: 0.32rem; +} +.domain-box .batch-search-box .batch-tips { + box-sizing: border-box; + color: #8692b0; + font-size: 0.14rem; + padding: 0.16rem; + border-radius: 0.04rem; + border: 0.01rem solid #EAEAEA; +} +.domain-box .batch-search-box .batch-tips .input-batch .el-textarea__inner { + height: 1.3rem; + border: none; + padding: 0; +} +.domain-box .batch-search-box .batch-btn { + margin-top: 0.16rem; + display: flex; + align-items: center; + justify-content: space-between; +} +.domain-box .batch-search-box .batch-btn .upload-btn { + display: flex; + align-items: center; + column-gap: 0.08rem; + font-size: 0.12rem; + color: var(--color-primary); + cursor: pointer; +} +.domain-box .batch-search-box .batch-btn .el-button { + height: 0.36rem; +} +.domain-box .domain-content { + margin-top: 0.24rem; + display: flex; + column-gap: 0.4rem; +} +.domain-box .domain-content .domain-left { + flex: 1; +} +.domain-box .domain-content .domain-left .domain-one { + height: 100%; +} +.domain-box .domain-content .domain-left .domain-one .domain-one-list { + height: 100%; + display: flex; + flex-direction: column; +} +.domain-box .domain-content .domain-left .domain-one .search-title { + display: flex; + align-items: center; + justify-content: space-between; + font-size: 0.16rem; + color: #2B2B2B; +} +.domain-box .domain-content .domain-left .domain-one .search-title .search-fillter { + display: flex; + align-items: center; + column-gap: 0.08rem; + cursor: pointer; +} +.domain-box .domain-content .domain-left .domain-one .search-title .search-fillter.is_select { + color: var(--color-primary); +} +.domain-box .domain-content .domain-left .domain-one .fillter-list { + margin-top: 0.24rem; + border-radius: 8px; + box-sizing: border-box; + border: 1px solid #EAEAEA; + padding: 0.24rem; + display: flex; + flex-wrap: wrap; + gap: 0.24rem; +} +.domain-box .domain-content .domain-left .domain-one .fillter-list .fillter-item { + width: 1rem; + height: 0.4rem; + border: 0.01rem solid #e6eaed; + display: flex; + justify-content: center; + align-items: center; + font-size: 0.14rem; + color: #2B2B2B; + cursor: pointer; + border-radius: 0.04rem; +} +.domain-box .domain-content .domain-left .domain-one .fillter-list .fillter-item:hover { + background: rgba(0, 88, 255, 0.08); +} +.domain-box .domain-content .domain-left .domain-one .fillter-list .fillter-item.is_select { + background: rgba(0, 88, 255, 0.08); + border-color: var(--color-primary); + color: var(--color-primary); +} +.domain-box .domain-content .domain-left .domain-one .start-search { + margin-top: 0.24rem; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + height: 93%; + border-radius: 8px; + border: 0.01rem solid #EAEAEA; +} +.domain-box .domain-content .domain-left .domain-one .start-search img { + width: 0.58rem; + height: 0.57rem; +} +.domain-box .domain-content .domain-left .domain-one .start-search p { + text-align: center; + margin-top: 0.19rem; + font-size: 0.18rem; + color: #2B2B2B; +} +.domain-box .domain-content .domain-left .domain-one .domain-list { + margin-top: 0.24rem; + background: #ffffff; + border: 1px solid #EAEAEA; + border-radius: 8px; + flex: 1; + overflow-y: auto; +} +.domain-box .domain-content .domain-left .domain-one .domain-list .domain-item { + height: 0.6rem; + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 0.01rem solid #ededed; + padding: 0 0.33rem 0 0.3rem; + transition: background-color 0.25s ease; +} +.domain-box .domain-content .domain-left .domain-one .domain-list .domain-item:hover { + background-color: #f5f7fa; +} +.domain-box .domain-content .domain-left .domain-one .domain-list .domain-item .item-left .domain-name { + font-size: 0.16rem; + color: #2B2B2B; +} +.domain-box .domain-content .domain-left .domain-one .domain-list .domain-item .item-left .domain-status { + margin-left: 0.42rem; + font-size: 0.13rem; + color: rgba(0, 0, 0, 0.6); +} +.domain-box .domain-content .domain-left .domain-one .domain-list .domain-item .item-right { + display: flex; + align-items: center; +} +.domain-box .domain-content .domain-left .domain-one .domain-list .domain-item .item-right .premium-type { + padding: 0.06rem 0.12rem; + margin-right: 0.25rem; + font-size: 0.14rem; + color: #8692b0; + border-radius: 0.16rem 0.16rem 0.16rem 0.16rem; + background: #f3f3f5; +} +.domain-box .domain-content .domain-left .domain-one .domain-list .domain-item .item-right .whois-box { + font-size: 0.14rem; + color: #2B2B2B; +} +.domain-box .domain-content .domain-left .domain-one .domain-list .domain-item .item-right .whois-box:hover { + color: var(--color-primary); + cursor: pointer; +} +.domain-box .domain-content .domain-left .domain-one .domain-list .domain-item .item-right .pirce-box { + cursor: pointer; +} +.domain-box .domain-content .domain-left .domain-one .domain-list .domain-item .item-right .pirce-box .original-price { + color: #8692b0; + font-size: 0.12rem; + text-decoration: line-through; + margin-right: 0.17rem; +} +.domain-box .domain-content .domain-left .domain-one .domain-list .domain-item .item-right .pirce-box .now-price { + font-size: 0.12rem; + color: var(--color-price-text); +} +.domain-box .domain-content .domain-left .domain-one .domain-list .domain-item .item-right .add-btn { + margin-left: 0.4rem; + height: 0.36rem; +} +.domain-box .domain-content .domain-left .batch-box { + height: 100%; +} +.domain-box .domain-content .domain-left .batch-box .batch-main { + height: 100%; + display: flex; + flex-direction: column; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-search { + margin-top: 0.24rem; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + height: 100%; + background: #ffffff; + border: 0.01rem solid #EAEAEA; + border-radius: 0.08rem; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-search img { + width: 0.58rem; + height: 0.57rem; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-search p { + text-align: center; + margin-top: 0.19rem; + font-size: 0.18rem; + color: #2B2B2B; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .search-title { + font-size: 0.16rem; + color: #2B2B2B; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .avail-list { + margin-top: 0.24rem; + background: #ffffff; + border: 0.01rem solid #EAEAEA; + border-radius: 0.08rem 0.08rem 0 0; + border-bottom: none; + max-height: 5rem; + overflow-y: auto; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .el-collapse { + border: none; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item { + height: 0.64rem; + box-sizing: border-box; + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 0.01rem solid #EAEAEA; + padding: 0 0.24rem; + transition: background-color 0.25s ease; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item:hover { + background-color: #f5f7fa; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item:nth-last-of-type(1) { + border-bottom: none; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item .item-left .domain-name { + font-size: 0.14rem; + color: #2B2B2B; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item .item-left .domain-status { + margin-left: 0.42rem; + font-size: 0.14rem; + color: rgba(0, 0, 0, 0.6); +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item .item-right { + display: flex; + align-items: center; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item .item-right .premium-type { + padding: 0.06rem 0.12rem; + margin-right: 0.25rem; + font-size: 0.14rem; + color: #8692b0; + border-radius: 0.16rem 0.16rem 0.16rem 0.16rem; + background: #f3f3f5; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item .item-right .whois-box { + font-size: 0.14rem; + color: #2B2B2B; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item .item-right .whois-box:hover { + color: var(--color-primary); + cursor: pointer; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item .item-right .pirce-box { + cursor: pointer; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item .item-right .pirce-box .oir-price { + color: #8692b0; + font-size: 0.14rem; + text-decoration: line-through; + margin-right: 0.17rem; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item .item-right .pirce-box .now-price { + font-size: 0.12rem; + color: var(--color-price-text); +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item .item-right .pirce-box .el-icon-arrow-down { + font-size: 0.12rem; + color: #8692b0; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .batch-item .item-right .add-btn { + margin-left: 0.4rem; + border-radius: 0.04rem; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .all-check { + display: flex; + justify-content: space-between; + align-items: center; + box-sizing: border-box; + padding: 0 0.24rem; + height: 0.64rem; + background: #F9F9F9; + color: #2B2B2B; + font-size: 0.14rem; + border: 0.01rem solid #EAEAEA; + border-top: none; + border-radius: 0 0 0.08rem 0.08rem; +} +.domain-box .domain-content .domain-left .batch-box .batch-main .all-check .el-button { + color: #ffffff; + font-size: 0.14rem; + background: var(--color-primary); +} +.domain-box .domain-content .domain-left .batch-box .unavail-title { + width: 100%; + font-size: 0.16rem; + color: #2B2B2B; + display: flex; + align-items: center; + justify-content: space-between; +} +.domain-box .domain-content .domain-left .batch-box .unavail-title .open-text { + cursor: pointer; + font-size: 0.14rem; + color: var(--color-primary); +} +.domain-box .domain-content .domain-left .batch-box .unavail-list { + margin-top: 0.24rem; + display: flex; + flex-wrap: wrap; + border-radius: 0.08rem; + border: 0.01rem solid #e6e7eb; +} +.domain-box .domain-content .domain-left .batch-box .unavail-list .unavail-item { + width: 50%; + height: 0.64rem; + box-sizing: border-box; + padding: 0.17rem 0.24rem; + border-bottom: 0.01rem solid #ededed; +} +.domain-box .domain-content .domain-left .batch-box .unavail-list .unavail-item:nth-child(odd) { + position: relative; +} +.domain-box .domain-content .domain-left .batch-box .unavail-list .unavail-item:nth-child(odd)::after { + content: ""; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 0.01rem; + height: 0.32rem; + background: #ededed; +} +.domain-box .domain-content .domain-left .batch-box .unavail-list .unavail-item .unavail-name { + font-size: 0.14rem; + color: #2B2B2B; +} +.domain-box .domain-content .domain-left .batch-box .unavail-list .unavail-item .unavail-reason { + margin-left: 0.4rem; + color: rgba(0, 0, 0, 0.6); + font-size: 0.14rem; +} +.domain-box .domain-content .domain-right { + box-sizing: border-box; + width: 5.33rem; + height: 7rem; + flex-shrink: 0; +} +.domain-box .domain-content .domain-right .car-top { + display: flex; + justify-content: space-between; + color: #2B2B2B; + font-size: 0.16rem; +} +.domain-box .domain-content .domain-right .car-top .clear-car { + cursor: pointer; + color: #A2A2A2; +} +.domain-box .domain-content .domain-right .car-top .clear-car .icon { + fill: #A2A2A2; + margin-right: 0.08rem; +} +.domain-box .domain-content .domain-right .car-top .clear-car:hover { + color: var(--color-danger); +} +.domain-box .domain-content .domain-right .car-top .clear-car:hover .icon { + fill: var(--color-danger); +} +.domain-box .domain-content .domain-right .car-box { + box-sizing: border-box; + margin-top: 0.24rem; + height: 5.3rem; + border-radius: 8px; + border: 0.01rem solid #EAEAEA; + background: #ffffff; + overflow-y: auto; +} +.domain-box .domain-content .domain-right .car-no { + height: 100%; + display: flex; + justify-content: center; + align-items: center; + font-size: 0.14rem; + color: #8692b0; +} +.domain-box .domain-content .domain-right .car-list .car-item { + padding: 0.16rem 0.32rem; + border-bottom: 0.01rem solid #F6F7FB; +} +.domain-box .domain-content .domain-right .car-list .car-item:hover { + background: #F7F8F9; +} +.domain-box .domain-content .domain-right .car-list .car-item:hover .car-del { + display: block; +} +.domain-box .domain-content .domain-right .car-list .car-item:nth-last-of-type(1) { + border-bottom: none; +} +.domain-box .domain-content .domain-right .car-list .car-item .caritem-top, +.domain-box .domain-content .domain-right .car-list .car-item .car-bottom { + display: flex; + justify-content: space-between; + align-items: center; +} +.domain-box .domain-content .domain-right .car-list .car-item .car-bottom { + color: #2B2B2B; + margin-top: 0.16rem; +} +.domain-box .domain-content .domain-right .car-list .car-item .car-name { + display: flex; + align-items: center; + column-gap: 0.16rem; +} +.domain-box .domain-content .domain-right .car-list .car-item .car-name .shop-name { + font-size: 0.14rem; + color: #2B2B2B; +} +.domain-box .domain-content .domain-right .car-list .car-item .car-del { + display: none; + cursor: pointer; + color: #9E9E9E; + font-size: 0.14rem; +} +.domain-box .domain-content .domain-right .car-list .car-item .car-del .icon { + fill: #9E9E9E; + margin-right: 0.04rem; +} +.domain-box .domain-content .domain-right .car-list .car-item .car-del:hover { + color: var(--color-danger); +} +.domain-box .domain-content .domain-right .car-list .car-item .car-del:hover .icon { + fill: var(--color-danger); + margin-right: 0.04rem; +} +.domain-box .domain-content .domain-right .car-list .car-item .car-year .el-select { + width: 0.96rem; + height: 0.36rem; + border-radius: 0.04rem; +} +.domain-box .domain-content .domain-right .car-list .car-item .car-price { + font-size: 0.14rem; + color: var(--color-price-text); +} +.car-money { + padding: 0 0.2rem; + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 0.26rem; + font-size: 0.16rem; + font-weight: 400; + color: rgba(0, 0, 0, 0.9); +} +.car-money .mon-right { + font-size: 0.14rem; +} +.car-money .mon-right p { + margin: 0; +} +.car-money .mon-right .original-price { + text-decoration: line-through; + color: #999; +} +.car-money .mon-right .original-price .hide { + visibility: hidden; +} +.car-money .money-text { + color: var(--color-price-text); +} +.car-settle { + margin-top: 0.2rem; +} +.car-settle .settle-btn { + width: 100%; + background: var(--color-primary); + font-size: 0.16rem; + color: rgba(255, 255, 255, 0.9); + border: none; + border-radius: 0; +} +.price-list { + display: flex; + font-size: 0.14rem; +} +.price-list .price-item > div { + width: 0.85rem; + height: 0.45rem; + display: flex; + justify-content: center; + align-items: center; +} +.price-list .price-item .price-year { + background: #f8fafc; +} +.price-list .price-item .price-new { + border-bottom: 1px solid #e6e7eb; +} +.blue-a-text { + color: var(--color-primary); + cursor: pointer; +} +.up-dialog .el-dialog__header { + display: none; +} +.up-dialog .el-dialog__body { + padding: 0.6rem 0.8rem; +} +.up-dialog .dia-title { + font-size: 0.24rem; + color: #171725; +} +.up-dialog .dia-concent { + margin-top: 0.3rem; +} +.up-dialog .dia-concent .up-tips { + font-size: 0.16rem; + color: #1e2736; +} +.up-dialog .dia-concent .file-box { + margin-top: 0.1rem; + display: flex; + align-items: center; +} +.up-dialog .dia-concent .file-box .file-name { + flex: 1; + border: 0.01rem solid #e6e7eb; + height: 0.46rem; + line-height: 0.46rem; + padding: 0 0.16rem; + background: rgba(102, 107, 128, 0.08); + font-size: 0.15rem; +} +.up-dialog .dia-concent .file-box .file-name:focus { + outline: none; + border: 0.01rem solid #e6e7eb; +} +.up-dialog .dia-concent .file-box .file-btn { + display: flex; + align-items: center; + justify-content: center; + padding: 0.12rem 0.28rem; + height: 0.46rem; + box-sizing: border-box; + color: #4e5259; + font-size: 0.16rem; + border: 0.01rem solid #e6e7eb; + margin-left: 0.1rem; + cursor: pointer; +} +.up-dialog .dia-foter { + display: flex; + justify-content: flex-end; + align-items: center; + margin-top: 0.4rem; +} +.up-dialog .dia-foter .confim-btn, +.up-dialog .dia-foter .cancel-btn { + min-width: 1.12rem; + border: none; + border-radius: 0.03rem 0.03rem 0.03rem 0.03rem; + font-size: 0.16rem; +} +.up-dialog .dia-foter .confim-btn { + background: var(--color-primary); + color: rgba(255, 255, 255, 0.9); +} +.up-dialog .dia-foter .cancel-btn { + margin-left: 0.12rem; + background: #e7e7e7; + color: #1e2736; +} +.el-popover { + max-width: none; +} +@media screen and (max-width: 915px) { + .goods-list-div { + grid-template-columns: repeat(2, 1fr); + } +} +@media screen and (max-width: 750px) { + .goods-list-div { + grid-template-columns: repeat(1, 1fr); + } + .search-box .el-select .el-input__inner { + height: 40px !important; + line-height: 40px; + } + .second-select .el-input__inner { + height: 40px !important; + line-height: 40px; + } + .search-input .el-input__inner { + height: 40px !important; + line-height: 40px; + } + .search-btn { + height: 40px; + } +} diff --git a/clientarea/cart/hgcart/css/goodsList.less b/clientarea/cart/hgcart/css/goodsList.less new file mode 100644 index 0000000..22e6f2e --- /dev/null +++ b/clientarea/cart/hgcart/css/goodsList.less @@ -0,0 +1,1207 @@ +.main-title { + font-size: 0.28rem; + color: #171725; +} + +.cart-des { + padding: .1rem; + border-radius: .03rem; + border: 1px solid #e6e7eb; + box-sizing: border-box; + overflow-y: auto; + margin-bottom: 0.24rem; + + * { + all: revert; + } + +} + + +.main-content-box { + box-sizing: border-box; + padding-bottom: 0.1rem; + width: 100%; + border-radius: 0.03rem; +} + +.search-box { + display: flex; + justify-content: center; + align-items: center; +} + +.search-box .el-select { + width: 3.2rem; + font-size: 0.15rem; +} + +.search-box .el-select .el-input__inner { + height: 0.46rem !important; + + line-height: 0.46rem; +} + +.search-box .el-select .el-input__suffix .el-input__icon { + line-height: 1; +} + +.second-select { + margin: 0 0.1rem; +} + +.second-select .el-input__inner { + height: 0.46rem; + line-height: 0.46rem; +} + +.search-input { + width: 3.2rem; +} + +.search-input .el-input__inner { + height: 0.46rem !important; + line-height: 0.46rem; +} + +.search-btn { + margin-left: 0.1rem; + width: 0.8rem; + height: 0.46rem; + background: var(--color-primary); + border-radius: 0.03rem; + border: none; + font-size: 0.16rem; + color: rgba(255, 255, 255, 0.9); +} + +.second-desc { + height: 0.4rem; + font-size: 0.14rem; + color: var(--color-danger); + background: rgba(220, 45, 45, 0.1); + margin-top: 0.24rem; + border-radius: 0.04rem; +} + +.shopping-box { + box-sizing: border-box; + margin-top: 0.24rem; + min-height: 3rem; +} + +.goods-list-div { + width: 100%; + display: grid; + grid-template-columns: repeat(4, 1fr); + row-gap: 0.2rem; + column-gap: 0.2rem; +} + + + +.shopping-item { + position: relative; + box-sizing: border-box; + min-height: 2.75rem; + border: 1px solid #EDEDED; + border-radius: 0.08rem; + overflow: hidden; + display: flex; + flex-direction: column; + justify-content: space-between; + padding-bottom: 0.16rem; + + .client-box { + position: absolute; + top: 0; + right: 0; + background-color: var(--color-primary); + padding: 0 0.08rem; + color: #fff; + font-size: 14px; + border-radius: 0px 0px 0px 8px; + } + + .goods-name { + margin-top: 0.18rem; + display: flex; + justify-content: space-between; + align-items: center; + column-gap: 0.3rem; + padding: 0 0.16rem; + + .goods-name-text { + // color: #485169; + font-size: 16px; + font-weight: 700; + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .qty-box { + font-size: 12px; + color: #CFD2E1; + flex-shrink: 0; + position: relative; + + + + img { + position: absolute; + top: -0.2rem; + right: 0; + width: 0.55rem; + height: 0.48rem; + } + + } + + &.sold-out { + .goods-name-text { + color: #CFD2E1; + } + + .qty-box { + width: 0.55rem; + } + } + } + + .goods-content { + display: flex; + flex-direction: column; + justify-content: space-between; + } + + .goods-active { + margin-top: 0.12rem; + padding: 0 0.16rem; + display: flex; + flex-wrap: wrap; + column-gap: 0.08rem; + row-gap: 0.08rem; + + .active-name { + font-size: 12px; + color: var(--color-primary); + background: rgba(57, 124, 252, 0.1); + padding: 0.03rem 0.08rem; + border-radius: 2px; + } + } + + .goods-tag { + box-sizing: border-box; + height: 0.36rem; + display: flex; + flex-wrap: wrap; + align-items: center; + row-gap: 0.08rem; + column-gap: 0.16rem; + background: rgba(57, 124, 252, 0.15); + padding: 0 .16rem; + + .tag-item { + position: relative; + font-size: 12px; + flex-shrink: 0; + color: var(--color-primary); + padding-left: 0.08rem; + + &::after { + content: ''; + position: absolute; + top: 50%; + left: 0; + width: 0.04rem; + height: 0.04rem; + transform: translateY(-50%); + border-radius: 50%; + background: rgba(57, 124, 252, 0.45); + } + } + } + + .goods-description { + box-sizing: border-box; + padding: 0.24rem 0.21rem 0.22rem 0.16rem; + max-height: 400px; + min-height: 150px; + flex: 1; + overflow: auto; + font-size: 14px; + white-space: normal; + background: #F4F4F4; + + + * { + all: revert; + } + + ul { + padding-left: 0.16rem; + margin: 0; + } + + img { + max-width: 100%; + } + + &::-webkit-scrollbar { + /*滚动条整体样式*/ + width: 0px; + } + + &:hover { + &::-webkit-scrollbar { + width: 4px; + } + } + } + + + .price-box { + margin-top: 0.18rem; + padding: 0 0.16rem; + display: flex; + justify-content: space-between; + align-items: center; + column-gap: 0.1rem; + + .price-box-left { + text-align: right; + display: flex; + align-items: flex-end; + column-gap: 0.04rem; + } + + + .original-price { + font-size: 12px; + color: #CFD2E1; + text-decoration: line-through; + } + + .item-price { + font-size: 24px; + color: var(--color-price-text); + + .item-price-prefix { + font-size: 12px; + } + + .item-price-cycle { + font-size: 14px; + color: #485169; + } + } + + .buy-btn { + height: 0.3rem; + } + + } +} + + +.tips { + color: #8692b0; + font-size: 0.13rem; + text-align: center; +} + +.domain-box { + .register-type { + display: flex; + align-items: center; + + .el-divider { + background-color: #D8D8D8; + margin: 0 0.24rem; + } + + .reg-ridio { + font-size: 0.14rem; + color: #646464; + cursor: pointer; + } + + .isActice { + color: var(--color-primary); + } + } + + .domain-search { + margin-top: 0.32rem; + position: relative; + display: flex; + align-items: center; + + .el-input { + height: 0.56rem; + + .el-input__inner { + height: 0.56rem; + line-height: 0.56rem; + } + } + + .el-input-group__append { + padding: 0; + background: #ffffff; + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .input-btn { + width: 1.7rem; + } + + .suffix-box { + width: 1.7rem; + display: flex; + justify-content: center; + align-items: center; + color: #2B2B2B; + font-size: 0.16rem; + cursor: pointer; + + .el-icon-arrow-down { + font-size: 0.14rem; + color: rgba(134, 146, 176, 1); + margin-left: 0.1rem; + } + } + + .search-button { + height: 0.56rem; + padding-left: 0.7rem; + padding-right: 0.7rem; + border: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + background: var(--color-primary); + color: #ffffff; + font-size: 0.16rem; + } + + .suffix-list { + // 定位在输入框下方 + z-index: 2; + position: absolute; + top: 0.56rem; + left: 0; + display: flex; + flex-wrap: wrap; + width: calc(100% - 2.7rem); + padding: 0.3rem 0.23rem 0.3rem 0.46rem; + background: #feffff; + box-shadow: 0rem 0.05rem 0.1rem 0.01rem rgba(0, 0, 0, 0.1); + border-radius: 0.03rem 0.03rem 0.03rem 0.03rem; + + .suffix-item { + margin-right: 0.16rem; + margin-bottom: 0.16rem; + width: 1.1rem; + height: 0.4rem; + border: 0.01rem solid #e6eaed; + display: flex; + justify-content: center; + align-items: center; + font-size: 0.16rem; + color: #2B2B2B; + cursor: pointer; + + &:hover { + background: rgba(0, 88, 255, 0.08); + } + } + + .suffix-active { + background: rgba(0, 88, 255, 0.08); + border: 0.01rem solid var(--color-primary); + color: var(--color-primary); + } + } + } + + .batch-search-box { + margin-top: 0.32rem; + + .batch-tips { + box-sizing: border-box; + color: #8692b0; + font-size: 0.14rem; + padding: 0.16rem; + border-radius: 0.04rem; + border: 0.01rem solid #EAEAEA; + + .input-batch { + .el-textarea__inner { + height: 1.3rem; + border: none; + padding: 0; + } + } + + + } + + .batch-btn { + margin-top: 0.16rem; + display: flex; + align-items: center; + justify-content: space-between; + + .upload-btn { + display: flex; + align-items: center; + column-gap: 0.08rem; + font-size: 0.12rem; + color: var(--color-primary); + cursor: pointer; + + } + + + .el-button { + height: 0.36rem; + } + } + + } + + + + .domain-content { + margin-top: 0.24rem; + display: flex; + column-gap: 0.4rem; + + .domain-left { + flex: 1; + + .domain-one { + height: 100%; + + .domain-one-list { + height: 100%; + display: flex; + flex-direction: column; + + } + + .search-title { + display: flex; + align-items: center; + justify-content: space-between; + font-size: 0.16rem; + color: #2B2B2B; + + .search-fillter { + display: flex; + align-items: center; + column-gap: 0.08rem; + cursor: pointer; + + &.is_select { + color: var(--color-primary); + } + } + } + + .fillter-list { + margin-top: 0.24rem; + border-radius: 8px; + box-sizing: border-box; + border: 1px solid #EAEAEA; + padding: 0.24rem; + display: flex; + flex-wrap: wrap; + gap: 0.24rem; + + .fillter-item { + width: 1rem; + height: 0.4rem; + border: 0.01rem solid #e6eaed; + display: flex; + justify-content: center; + align-items: center; + font-size: 0.14rem; + color: #2B2B2B; + cursor: pointer; + border-radius: .04rem; + + &:hover { + background: rgba(0, 88, 255, 0.08); + } + + &.is_select { + background: rgba(0, 88, 255, 0.08); + border-color: var(--color-primary); + color: var(--color-primary); + } + } + } + + .start-search { + margin-top: 0.24rem; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + height: 93%; + border-radius: 8px; + border: 0.01rem solid #EAEAEA; + + img { + width: 0.58rem; + height: 0.57rem; + } + + p { + text-align: center; + margin-top: 0.19rem; + font-size: 0.18rem; + color: #2B2B2B; + } + } + + .domain-list { + margin-top: 0.24rem; + background: #ffffff; + border: 1px solid #EAEAEA; + border-radius: 8px; + flex: 1; + overflow-y: auto; + + .domain-item { + height: 0.6rem; + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 0.01rem solid #ededed; + padding: 0 0.33rem 0 0.3rem; + transition: background-color 0.25s ease; + + // hover时的样式 + &:hover { + background-color: #f5f7fa; + } + + .item-left { + .domain-name { + font-size: 0.16rem; + color: #2B2B2B; + } + + .domain-status { + margin-left: 0.42rem; + font-size: 0.13rem; + color: rgba(0, 0, 0, 0.6); + } + } + + .item-right { + display: flex; + align-items: center; + + .premium-type { + padding: 0.06rem 0.12rem; + margin-right: 0.25rem; + font-size: 0.14rem; + color: #8692b0; + border-radius: 0.16rem 0.16rem 0.16rem 0.16rem; + background: #f3f3f5; + } + + .whois-box { + font-size: 0.14rem; + color: #2B2B2B; + + &:hover { + color: var(--color-primary); + cursor: pointer; + } + } + + .pirce-box { + cursor: pointer; + + .original-price { + color: #8692b0; + font-size: 0.12rem; + text-decoration: line-through; + margin-right: 0.17rem; + } + + .now-price { + font-size: 0.12rem; + color: var(--color-price-text); + } + + + } + + .add-btn { + margin-left: 0.4rem; + height: 0.36rem; + } + } + } + } + } + + .batch-box { + height: 100%; + + + .batch-main { + height: 100%; + display: flex; + flex-direction: column; + + .batch-search { + margin-top: 0.24rem; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + height: 100%; + background: #ffffff; + border: 0.01rem solid #EAEAEA; + border-radius: 0.08rem; + + img { + width: 0.58rem; + height: 0.57rem; + } + + p { + text-align: center; + margin-top: 0.19rem; + font-size: 0.18rem; + color: #2B2B2B; + } + } + + .search-title { + font-size: 0.16rem; + color: #2B2B2B; + } + + .avail-list { + margin-top: 0.24rem; + background: #ffffff; + border: 0.01rem solid #EAEAEA; + border-radius: 0.08rem 0.08rem 0 0; + border-bottom: none; + max-height: 5rem; + overflow-y: auto; + + } + + .el-collapse { + border: none; + } + + .batch-item { + height: 0.64rem; + box-sizing: border-box; + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 0.01rem solid #EAEAEA; + padding: 0 0.24rem; + transition: background-color 0.25s ease; + + // hover时的样式 + &:hover { + background-color: #f5f7fa; + } + + &:nth-last-of-type(1) { + border-bottom: none; + } + + .item-left { + .domain-name { + font-size: 0.14rem; + color: #2B2B2B; + } + + .domain-status { + margin-left: 0.42rem; + font-size: 0.14rem; + color: rgba(0, 0, 0, 0.6); + } + } + + .item-right { + display: flex; + align-items: center; + + .premium-type { + padding: 0.06rem 0.12rem; + margin-right: 0.25rem; + font-size: 0.14rem; + color: #8692b0; + border-radius: 0.16rem 0.16rem 0.16rem 0.16rem; + background: #f3f3f5; + } + + .whois-box { + font-size: 0.14rem; + color: #2B2B2B; + + &:hover { + color: var(--color-primary); + cursor: pointer; + } + } + + .pirce-box { + cursor: pointer; + + .oir-price { + color: #8692b0; + font-size: 0.14rem; + text-decoration: line-through; + margin-right: 0.17rem; + } + + .now-price { + font-size: 0.12rem; + color: var(--color-price-text); + } + + .el-icon-arrow-down { + font-size: 0.12rem; + color: rgba(134, 146, 176, 1); + } + } + + .add-btn { + margin-left: 0.4rem; + border-radius: 0.04rem; + } + } + } + + .all-check { + display: flex; + justify-content: space-between; + align-items: center; + box-sizing: border-box; + padding: 0 0.24rem; + height: 0.64rem; + background: #F9F9F9; + color: #2B2B2B; + font-size: 0.14rem; + border: 0.01rem solid #EAEAEA; + border-top: none; + border-radius: 0 0 0.08rem 0.08rem; + + .el-button { + color: #ffffff; + font-size: 0.14rem; + background: var(--color-primary); + } + } + } + + .unavail-title { + width: 100%; + font-size: 0.16rem; + color: #2B2B2B; + display: flex; + align-items: center; + justify-content: space-between; + + .open-text { + cursor: pointer; + font-size: 0.14rem; + color: var(--color-primary); + } + } + + .unavail-list { + margin-top: 0.24rem; + display: flex; + flex-wrap: wrap; + border-radius: 0.08rem; + border: 0.01rem solid #e6e7eb; + + .unavail-item { + // 两个一行 + width: 50%; + height: 0.64rem; + box-sizing: border-box; + padding: 0.17rem 0.24rem; + border-bottom: 0.01rem solid #ededed; + + // 奇数的后面有一条竖线 + &:nth-child(odd) { + position: relative; + + &::after { + content: ""; + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 0.01rem; + height: 0.32rem; + background: #ededed; + } + } + + .unavail-name { + font-size: 0.14rem; + color: #2B2B2B; + } + + .unavail-reason { + margin-left: 0.4rem; + color: rgba(0, 0, 0, 0.6); + font-size: 0.14rem; + } + } + } + } + } + + .domain-right { + box-sizing: border-box; + width: 5.33rem; + height: 7rem; + flex-shrink: 0; + + .car-top { + display: flex; + justify-content: space-between; + color: #2B2B2B; + font-size: 0.16rem; + + + .clear-car { + cursor: pointer; + color: #A2A2A2; + + .icon { + fill: #A2A2A2; + margin-right: 0.08rem; + } + + &:hover { + .icon { + fill: var(--color-danger); + } + + color: var(--color-danger); + } + } + } + + .car-box { + box-sizing: border-box; + margin-top: 0.24rem; + height: 5.3rem; + border-radius: 8px; + border: 0.01rem solid #EAEAEA; + background: #ffffff; + overflow-y: auto; + } + + .car-no { + height: 100%; + display: flex; + justify-content: center; + align-items: center; + font-size: 0.14rem; + color: rgba(134, 146, 176, 1); + } + + .car-list { + .car-item { + padding: 0.16rem 0.32rem; + border-bottom: 0.01rem solid #F6F7FB; + + &:hover { + background: #F7F8F9; + + .car-del { + display: block; + } + } + + &:nth-last-of-type(1) { + border-bottom: none; + } + + .caritem-top, + .car-bottom { + display: flex; + justify-content: space-between; + align-items: center; + } + + .car-bottom { + color: #2B2B2B; + margin-top: 0.16rem; + } + + .car-name { + display: flex; + align-items: center; + column-gap: 0.16rem; + + .shop-name { + font-size: 0.14rem; + color: #2B2B2B; + } + } + + .car-del { + display: none; + cursor: pointer; + color: #9E9E9E; + font-size: 0.14rem; + + .icon { + fill: #9E9E9E; + margin-right: 0.04rem; + } + + &:hover { + + .icon { + fill: var(--color-danger); + margin-right: 0.04rem; + } + + color: var(--color-danger); + } + } + + .car-year { + .el-select { + width: 0.96rem; + height: 0.36rem; + border-radius: 0.04rem; + } + } + + .car-price { + font-size: 0.14rem; + color: var(--color-price-text); + } + } + } + } + } +} + +.car-money { + padding: 0 0.2rem; + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 0.26rem; + font-size: 0.16rem; + font-weight: 400; + color: rgba(0, 0, 0, 0.9); + + .mon-right { + font-size: 0.14rem; + + p { + margin: 0; + } + + .original-price { + text-decoration: line-through; + color: #999; + + .hide { + visibility: hidden; + } + } + } + + .money-text { + color: var(--color-price-text); + } +} + +.car-settle { + margin-top: 0.2rem; + + .settle-btn { + width: 100%; + background: var(--color-primary); + font-size: 0.16rem; + color: rgba(255, 255, 255, 0.9); + border: none; + border-radius: 0; + } +} + +.price-list { + display: flex; + font-size: 0.14rem; + + .price-item { + >div { + width: 0.85rem; + height: 0.45rem; + display: flex; + justify-content: center; + align-items: center; + } + + .price-year { + background: rgb(248, 250, 252); + } + + .price-new { + border-bottom: 1px solid #e6e7eb; + } + } +} + +.blue-a-text { + color: var(--color-primary); + cursor: pointer; +} + +.up-dialog { + .el-dialog__header { + display: none; + } + + .el-dialog__body { + padding: 0.6rem 0.8rem; + } + + .dia-title { + font-size: 0.24rem; + color: #171725; + } + + .dia-concent { + margin-top: 0.3rem; + + .up-tips { + font-size: 0.16rem; + color: #1e2736; + } + + .file-box { + margin-top: 0.1rem; + display: flex; + align-items: center; + + .file-name { + flex: 1; + border: 0.01rem solid #e6e7eb; + height: 0.46rem; + line-height: 0.46rem; + padding: 0 0.16rem; + background: rgba(102, 107, 128, 0.08); + font-size: 0.15rem; + + // 选中时的样式 + &:focus { + outline: none; + border: 0.01rem solid #e6e7eb; + } + } + + .file-btn { + display: flex; + align-items: center; + justify-content: center; + padding: 0.12rem 0.28rem; + height: 0.46rem; + box-sizing: border-box; + color: #4e5259; + font-size: 0.16rem; + border: 0.01rem solid #e6e7eb; + margin-left: 0.1rem; + cursor: pointer; + } + } + } + + .dia-foter { + display: flex; + justify-content: flex-end; + align-items: center; + margin-top: 0.4rem; + + .confim-btn, + .cancel-btn { + min-width: 1.12rem; + border: none; + border-radius: 0.03rem 0.03rem 0.03rem 0.03rem; + font-size: 0.16rem; + } + + .confim-btn { + background: var(--color-primary); + color: rgba(255, 255, 255, 0.9); + } + + .cancel-btn { + margin-left: 0.12rem; + background: #e7e7e7; + color: #1e2736; + } + } +} + +.el-popover { + max-width: none; +} + + + + +@media screen and (max-width: 915px) { + .goods-list-div { + grid-template-columns: repeat(2, 1fr); + } + + +} + +@media screen and (max-width: 750px) { + + .goods-list-div { + grid-template-columns: repeat(1, 1fr); + } + + .search-box .el-select .el-input__inner { + height: 40px !important; + line-height: 40px; + } + + .second-select .el-input__inner { + height: 40px !important; + line-height: 40px; + } + + .search-input .el-input__inner { + height: 40px !important; + line-height: 40px; + } + + .search-btn { + height: 40px; + } +} diff --git a/clientarea/cart/hgcart/css/goods_iframe.css b/clientarea/cart/hgcart/css/goods_iframe.css new file mode 100644 index 0000000..201ba12 --- /dev/null +++ b/clientarea/cart/hgcart/css/goods_iframe.css @@ -0,0 +1,34 @@ +.template { + height: 100%; +} +.config-box { + height: 100%; +} +.content { + height: 100%; + background: #fff; +} +.ifram-hiden { + display: none !important; +} +.l-empty { + width: 0 !important; +} +html { + font-size: 100px !important; +} +.template > .tit { + display: none; +} +.template .main-card { + max-width: inherit; +} +.common-config .common-box .order-right { + right: -0.2rem; +} +.config-box .f-order { + width: 100%; +} +.config-box .f-order .main-card { + height: 100%; +} diff --git a/clientarea/cart/hgcart/css/goods_iframe.less b/clientarea/cart/hgcart/css/goods_iframe.less new file mode 100644 index 0000000..c44d2ed --- /dev/null +++ b/clientarea/cart/hgcart/css/goods_iframe.less @@ -0,0 +1,42 @@ +.template { + height: 100%; +} + + +.config-box { + height: 100%; +} + +.content { + height: 100%; + background: #fff; +} + +.ifram-hiden { + display: none !important; +} + +.l-empty { + width: 0 !important; +} + +html { + font-size: 100px !important; +} +.template>.tit{ + display: none; +} + +.template .main-card{ + max-width: inherit; +} + +.common-config .common-box .order-right{ + right: -.2rem; +} +.config-box .f-order{ + width: 100%; + .main-card{ + height: 100%; + } +} diff --git a/clientarea/cart/hgcart/css/settlement.css b/clientarea/cart/hgcart/css/settlement.css new file mode 100644 index 0000000..1941226 --- /dev/null +++ b/clientarea/cart/hgcart/css/settlement.css @@ -0,0 +1,295 @@ +.main-title { + color: #171725; + font-size: 0.28rem; + margin-bottom: 0.4rem; +} +.table-name { + display: flex; + align-items: center; +} +.goods-name { + color: #171725; + font-weight: bold; + font-size: 0.16rem; +} +.goods-info { + margin-bottom: 0.1rem; + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + font-size: 0.14rem; +} +.goodsInfo-price { + color: #1E2736; +} +.goodsInfo-name { + color: #757575; +} +.radio-box { + /* width: 80%; */ +} +.table-content { + font-size: 0.14rem; +} +.goods-table { + margin-top: 0.16rem; + width: 100%; + text-align: left; + border: 1px solid #E6E7EB; + border-radius: 0.03rem; + border-collapse: collapse; +} +.info-box { + width: 90%; +} +.goods-table thead { + line-height: 0.46rem; + background: #EEF4FF; + height: 0.46rem; + color: #757575; +} +.goods-table tbody tr td { + padding-top: 0.29rem; + padding-bottom: 0.3rem; +} +.description-box { + width: 5.5rem; +} +.price-box, +.num-box { + width: 2.4rem; +} +.total-box { + width: 1rem; +} +.delete-btn { + cursor: pointer; + font-size: 0.18rem; + color: #F0142F; +} +.item-price { + color: #171725; +} +.item-total { + font-weight: bold; + color: #171725; +} +.shopping-goods { + margin-bottom: 0.4rem; +} +.goods-box { + padding-bottom: 2.6rem; +} +.el-footer { + width: calc(100vw - 160px); + padding-left: 2.1rem; + padding-right: 1.2rem; + box-sizing: border-box; + display: flex; + align-items: center; + font-size: 0.18rem; + box-shadow: 0rem 0rem 0.2rem rgba(0, 0, 0, 0.15); + position: fixed; + bottom: 0; + background-color: #fff; + z-index: 9; +} +.footer-box { + width: 100%; + height: 100%; + margin: 0 auto; + max-width: 1500px; + display: flex; + align-items: center; + justify-content: flex-end; +} +.goodsInfo-type { + overflow: hidden; + text-overflow: ellipsis; + /* white-space: nowrap; */ + color: #1E2736; +} +.footer-left { + color: #333333; + font-size: 0.18rem; + display: flex; + justify-content: start; +} +.radio-box .el-radio .el-radio__input .el-radio__inner { + width: 0.24rem; + height: 0.24rem; + background-color: #fff; +} +.radio-box .el-radio .el-radio__input .el-radio__inner::after { + width: 0.12rem; + height: 0.12rem; + background: var(--color-primary); +} +.radio-box .el-radio { + margin-bottom: 0.2rem; +} +.footer-left .radio-box .el-radio .el-radio__label { + font-size: 0.16rem; + color: #1E2736; +} +.footer-right { + font-size: 0.14rem; + color: #1E2736; + display: flex; +} +.total-price { + font-weight: bold; + font-size: 0.28rem; + color: var(--color-price-text); +} +.text-red { + color: var(--color-warning); +} +.btn-box { + position: relative; + margin-left: 0.4rem; +} +.pay-text { + white-space: nowrap; + margin-right: 0.31rem; + color: #333333; + font-size: 0.18rem; + font-weight: 300; +} +.buy-btn { + width: 2.04rem; + height: 0.46rem; + background: var(--color-primary); + border-radius: 0.04rem; + font-size: 0.16rem; + font-weight: 500; + color: #FFFFFF; +} +.delect-btn { + margin: 0 0.4rem; +} +.all-check .el-checkbox__label { + color: #333333; + font-size: 0.18rem; +} +.qty-num { + color: #4E5259; + height: 0.13rem; + margin-top: 0.1rem; +} +.qty-tips { + margin-top: 0.2rem; + font-size: 0.13rem; + color: var(--color-primary); +} +.check-box { + margin-top: 0.1rem; +} +.bule-text { + cursor: pointer; + color: var(--color-primary); +} +.totalprice-box { + white-space: nowrap; +} +.red-text { + color: var(--color-danger); +} +.original-price { + text-decoration: line-through; + color: #999999; +} +.discount-codeNumber { + margin-top: 0.08rem; + font-size: 0.14rem; + font-weight: bold; + color: var(--color-discount-num); +} +.cash-box { + margin-top: 0.08rem; +} +.remove-discountCode { + margin-left: 0.09rem; +} +.cash-codeNumber { + margin-top: 0.08rem; + cursor: pointer; + height: 0.32rem; + line-height: 0.32rem; + background: rgba(240, 20, 46, 0.12); + padding: 0 0.14rem; + color: var(--color-cash-num); + font-weight: bold; + font-size: 0.14rem; +} +@media screen and (max-width: 750px) { + .footer-box { + display: block; + } + .table-content { + overflow-x: auto; + } + .description-box { + min-width: 5.5rem; + } + .price-box { + min-width: 2.4rem; + } + .num-box { + min-width: 2.4rem; + } + .total-box { + min-width: 2.4rem; + } + .el-footer { + padding: 0.3rem; + width: 100%; + height: auto !important; + } + .el-input .el-input__inner { + font-size: inherit !important; + } + .bule-text { + cursor: pointer; + color: var(--color-primary); + } + .check-box { + margin-top: 0.1rem; + } + .footer-left { + display: none; + flex-direction: column; + color: #333333; + font-size: 0.18rem; + } + .btn-box { + display: flex; + margin-left: 0; + flex-direction: column-reverse; + align-items: self-end; + } + .delect-btn { + margin: 0; + } + .footer-right { + font-size: 0.14rem; + color: #1E2736; + display: block; + text-align: right; + } + .delect-goods { + color: var(--color-danger); + } + .buy-btn { + margin-left: 0; + margin-top: 0.2rem; + width: 2.04rem; + height: 0.46rem; + background: var(--color-primary); + border-radius: 0.04rem; + font-size: 0.16rem; + font-weight: 500; + color: #FFFFFF; + } +} diff --git a/clientarea/cart/hgcart/css/settlement.less b/clientarea/cart/hgcart/css/settlement.less new file mode 100644 index 0000000..e4243cd --- /dev/null +++ b/clientarea/cart/hgcart/css/settlement.less @@ -0,0 +1,364 @@ +.main-title { + color: #171725; + font-size: 0.28rem; + margin-bottom: 0.4rem; +} + + + +.table-name { + display: flex; + align-items: center; +} + +.goods-name { + color: #171725; + font-weight: bold; + font-size: 0.16rem; +} + +.goods-info { + margin-bottom: 0.1rem; + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + font-size: 0.14rem; +} + +.goodsInfo-price { + color: #1E2736; +} + +.goodsInfo-name { + color: #757575; +} + +.radio-box { + /* width: 80%; */ +} + +.table-content { + font-size: 0.14rem; +} + +.goods-table { + margin-top: 0.16rem; + width: 100%; + text-align: left; + border: 1px solid #E6E7EB; + border-radius: 0.03rem; + border-collapse: collapse; +} + +.info-box { + width: 90%; +} + +.goods-table thead { + line-height: 0.46rem; + background: #EEF4FF; + height: 0.46rem; + color: #757575; +} + +.goods-table tbody tr td { + padding-top: 0.29rem; + padding-bottom: 0.3rem; +} + +.description-box { + width: 5.5rem; +} + +.price-box, +.num-box { + width: 2.4rem; +} + +.total-box { + width: 1rem; +} + +.delete-btn { + cursor: pointer; + font-size: 0.18rem; + color: #F0142F; +} + +.item-price { + color: #171725; +} + +.item-total { + font-weight: bold; + color: #171725; +} + +.shopping-goods { + margin-bottom: 0.4rem; +} + +.goods-box { + padding-bottom: 2.6rem; +} + + +.el-footer { + width: calc(100vw - 160px); + padding-left: 2.1rem; + padding-right: 1.2rem; + box-sizing: border-box; + display: flex; + align-items: center; + font-size: 0.18rem; + box-shadow: 0rem 0rem 0.2rem rgba(0, 0, 0, 0.15); + position: fixed; + bottom: 0; + background-color: #fff; + z-index: 9; +} + +.footer-box { + width: 100%; + height: 100%; + margin: 0 auto; + max-width: 1500px; + display: flex; + align-items: center; + justify-content: flex-end; +} + +.goodsInfo-type { + overflow: hidden; + text-overflow: ellipsis; + /* white-space: nowrap; */ + color: #1E2736; +} + +.footer-left { + color: #333333; + font-size: 0.18rem; + display: flex; + justify-content: start; +} + +.radio-box .el-radio .el-radio__input .el-radio__inner { + width: 0.24rem; + height: 0.24rem; + background-color: #fff; +} + +.radio-box .el-radio .el-radio__input .el-radio__inner::after { + width: 0.12rem; + height: 0.12rem; + background: var(--color-primary); +} + +.radio-box .el-radio { + margin-bottom: 0.2rem; +} + +.footer-left .radio-box .el-radio .el-radio__label { + font-size: 0.16rem; + color: #1E2736; +} + +.footer-right { + font-size: 0.14rem; + color: #1E2736; + display: flex; +} + +.total-price { + font-weight: bold; + font-size: 0.28rem; + color: var(--color-price-text); +} + +.text-red { + color: var(--color-warning); +} + +.btn-box { + position: relative; + margin-left: 0.4rem; +} + + + +.pay-text { + white-space: nowrap; + margin-right: 0.31rem; + color: #333333; + font-size: 0.18rem; + font-weight: 300; +} + +.buy-btn { + width: 2.04rem; + height: 0.46rem; + background: var(--color-primary); + border-radius: 0.04rem; + font-size: 0.16rem; + font-weight: 500; + color: #FFFFFF; +} + +.delect-btn { + margin: 0 0.4rem; +} + +.all-check .el-checkbox__label { + color: #333333; + font-size: 0.18rem; +} + +.qty-num { + color: #4E5259; + height: 0.13rem; + margin-top: 0.1rem; +} + +.qty-tips { + margin-top: 0.2rem; + font-size: 0.13rem; + color: var(--color-primary); +} + +.check-box { + margin-top: 0.1rem; +} + +.bule-text { + cursor: pointer; + color: var(--color-primary); +} + +.totalprice-box { + white-space: nowrap; +} + +.red-text { + color: var(--color-danger); +} + +.original-price { + text-decoration: line-through; + color: #999999; +} + +.discount-codeNumber { + margin-top: 0.08rem; + font-size: 0.14rem; + font-weight: bold; + color: var(--color-discount-num); +} + +.cash-box { + margin-top: 0.08rem; +} + +.remove-discountCode { + margin-left: 0.09rem; +} + +.cash-codeNumber { + margin-top: 0.08rem; + cursor: pointer; + height: 0.32rem; + line-height: 0.32rem; + background: rgba(240, 20, 46, 0.12); + padding: 0 0.14rem; + color: var(--color-cash-num); + font-weight: bold; + font-size: 0.14rem; +} + +@media screen and (max-width: 750px) { + .footer-box { + display: block; + } + + .table-content { + overflow-x: auto; + } + + .description-box { + min-width: 5.5rem; + } + + .price-box { + min-width: 2.4rem; + } + + .num-box { + min-width: 2.4rem; + } + + .total-box { + min-width: 2.4rem; + } + + .el-footer { + padding: 0.3rem; + width: 100%; + height: auto !important; + } + + .el-input .el-input__inner { + font-size: inherit !important; + } + + .bule-text { + cursor: pointer; + color: var(--color-primary); + } + + .check-box { + margin-top: 0.1rem; + } + + .footer-left { + display: none; + flex-direction: column; + color: #333333; + font-size: 0.18rem; + } + + .btn-box { + display: flex; + margin-left: 0; + flex-direction: column-reverse; + align-items: self-end; + } + + .delect-btn { + margin: 0; + } + + .footer-right { + font-size: 0.14rem; + color: #1E2736; + display: block; + text-align: right; + } + + .delect-goods { + color: var(--color-danger); + } + + .buy-btn { + margin-left: 0; + margin-top: 0.2rem; + width: 2.04rem; + height: 0.46rem; + background: var(--color-primary); + border-radius: 0.04rem; + font-size: 0.16rem; + font-weight: 500; + color: #FFFFFF; + } + + +} diff --git a/clientarea/cart/hgcart/css/shoppingCar.css b/clientarea/cart/hgcart/css/shoppingCar.css new file mode 100644 index 0000000..01d6787 --- /dev/null +++ b/clientarea/cart/hgcart/css/shoppingCar.css @@ -0,0 +1,281 @@ +.main-title { + color: #171725; + font-size: 0.28rem; + margin-bottom: 0.4rem; +} +.search-box { + margin-top: -0.62rem; + margin-bottom: 0.1rem; + text-align: right; +} +.search-box .el-input { + width: 3.2rem; +} +.search-box .el-input .el-input__inner { + height: 46px; + line-height: 46px; +} +.table-name { + display: flex; + align-items: center; +} +.goods-name { + color: #171725; + font-weight: bold; + font-size: 0.16rem; +} +.el-link.el-link--primary { + margin-left: 0.08rem; + color: var(--color-primary); + font-size: 0.14rem; +} +.table-content { + font-size: 0.14rem; +} +.goods-table { + margin-top: 0.16rem; + width: 100%; + text-align: left; + border: 1px solid #e6e7eb; + border-radius: 0.03rem; + border-collapse: collapse; +} +.goods-table thead { + line-height: 0.46rem; + background: #eef4ff; + height: 0.46rem; + color: #757575; +} +.goods-table tbody tr td { + padding-top: 0.29rem; + padding-bottom: 0.3rem; +} +.description-box { + width: 5.5rem; +} +.price-box { + width: 4rem; +} +.total-box { + min-width: 1.5rem; +} +.num-box { + width: 2.4rem; +} +.action-box { + width: 1rem; +} +.delete-btn { + cursor: pointer; + font-size: 0.18rem; + color: var(--color-danger); +} +.item-price { + color: #171725; +} +.item-total { + font-size: 0.14rem; + font-weight: bold; + color: #171725; +} +.original-price { + text-decoration: line-through; + color: #999999; +} +.discount-codeNumber { + font-size: 0.12rem; + font-weight: bold; + color: var(--color-discount-num); +} +.remove-discountCode { + cursor: pointer; + margin-left: 0.09rem; +} +.shopping-goods { + margin-bottom: 0.4rem; +} +.goods-box { + padding-bottom: 1.6rem; +} +.el-footer { + width: calc(100vw - 160px); + padding-left: 2.1rem; + padding-right: 1.2rem; + box-sizing: border-box; + font-size: 0.18rem; + box-shadow: 0rem 0rem 0.2rem rgba(0, 0, 0, 0.15); + height: 1.6rem !important; + position: fixed; + bottom: 0; + background-color: #fff; + z-index: 9; +} +.footer-box { + height: 100%; + margin: 0 auto; + max-width: 1500px; + display: flex; + align-items: center; + justify-content: space-between; +} +.no-goods-td { + display: flex; + align-items: center; + width: 4.8rem; +} +.no-goods-tips { + color: #8692b0; + font-size: 0.13rem; + font-weight: 500; + white-space: nowrap; +} +.buy-again-btn { + margin-left: 0.1rem; + background: #e1f0ff; + height: 0.32rem; + min-width: 0.6rem; + border-radius: 0.03rem; + font-size: 0.14rem; + font-weight: 400; + color: var(--color-primary); +} +.footer-left { + color: #333333; + font-size: 0.18rem; +} +.footer-right { + font-size: 0.14rem; + color: #1e2736; + display: flex; + align-items: center; +} +.total-price { + font-weight: bold; + font-size: 0.28rem; + color: var(--color-price-text); +} +.text-red { + color: var(--color-warning); +} +.goods-info { + margin-bottom: 0.1rem; + display: flex; + justify-content: space-between; + font-size: 0.14rem; +} +.goodsInfo-price { + color: #1e2736; +} +.goodsInfo-type { + overflow: hidden; + text-overflow: ellipsis; + /* white-space: nowrap; */ + width: 80%; + color: #1e2736; +} +.goodsInfo-name { + color: #757575; +} +.buy-btn { + margin-left: 0.4rem; + width: 2.04rem; + height: 0.46rem; + background: var(--color-primary); + border-radius: 0.04rem; + font-size: 0.16rem; + font-weight: 500; + color: #ffffff; +} +.delect-btn { + margin: 0 0.4rem; +} +.mar-left-24 { + margin-left: 24px; +} +.info-box { + width: 90%; +} +.all-check .el-checkbox__label { + color: #333333; + font-size: 0.18rem; +} +.qty-num { + color: #4e5259; + height: 0.13rem; + margin-top: 0.1rem; +} +.qty-tips { + margin-top: 0.2rem; + font-size: 0.13rem; + color: #3699ff; +} +.red-text { + color: var(--color-danger); +} +.discount-box { + margin-top: 0.08rem; + font-size: 0.14rem; + font-weight: 400; + display: flex; + flex-wrap: wrap; + align-items: center; + column-gap: 0.05rem; + row-gap: 0.05rem; +} +@media screen and (max-width: 750px) { + .table-content { + overflow-x: auto; + } + .search-box .el-input { + width: 4.2rem; + } + .description-box { + min-width: 5.5rem; + } + .price-box { + min-width: 4rem; + } + .num-box { + min-width: 2.5rem; + } + .action-box { + min-width: 1.5rem; + } + .el-footer { + padding: 0 0.3rem; + width: 100%; + } + .el-input .el-input__inner { + font-size: inherit !important; + } + .footer-left { + display: flex; + flex-direction: column; + color: #333333; + font-size: 0.18rem; + } + .delect-btn { + margin: 0; + } + .footer-right { + font-size: 0.14rem; + color: #1e2736; + display: flex; + flex-direction: column; + align-items: center; + } + .delect-goods { + color: var(--color-danger); + } + .buy-btn { + margin-left: 0; + margin-top: 0.2rem; + width: 2.04rem; + height: 0.46rem; + background: var(--color-primary); + border-radius: 0.04rem; + font-size: 0.16rem; + font-weight: 500; + color: #ffffff; + } +} diff --git a/clientarea/cart/hgcart/css/shoppingCar.less b/clientarea/cart/hgcart/css/shoppingCar.less new file mode 100644 index 0000000..8d11956 --- /dev/null +++ b/clientarea/cart/hgcart/css/shoppingCar.less @@ -0,0 +1,339 @@ +.main-title { + color: #171725; + font-size: 0.28rem; + margin-bottom: 0.4rem; +} + +.search-box { + margin-top: -0.62rem; + margin-bottom: 0.1rem; + text-align: right; +} + +.search-box .el-input { + width: 3.2rem; +} + +.search-box .el-input .el-input__inner { + height: 46px; + line-height: 46px; +} + +.table-name { + display: flex; + align-items: center; +} + +.goods-name { + color: #171725; + font-weight: bold; + font-size: 0.16rem; +} + +.el-link.el-link--primary { + margin-left: 0.08rem; + color: var(--color-primary); + font-size: 0.14rem; +} + +.table-content { + font-size: 0.14rem; +} + +.goods-table { + margin-top: 0.16rem; + width: 100%; + text-align: left; + border: 1px solid #e6e7eb; + border-radius: 0.03rem; + border-collapse: collapse; +} + +.goods-table thead { + line-height: 0.46rem; + background: #eef4ff; + height: 0.46rem; + color: #757575; +} + +.goods-table tbody tr td { + padding-top: 0.29rem; + padding-bottom: 0.3rem; +} + +.description-box { + width: 5.5rem; +} + +.price-box { + width: 4rem; +} + +.total-box { + min-width: 1.5rem; +} + +.num-box { + width: 2.4rem; +} + +.action-box { + width: 1rem; +} + +.delete-btn { + cursor: pointer; + font-size: 0.18rem; + color: var(--color-danger); +} + +.item-price { + color: #171725; +} + +.item-total { + font-size: 0.14rem; + font-weight: bold; + color: #171725; +} + +.original-price { + text-decoration: line-through; + color: #999999; +} + +.discount-codeNumber { + font-size: 0.12rem; + font-weight: bold; + color: var(--color-discount-num); +} + +.remove-discountCode { + cursor: pointer; + margin-left: 0.09rem; +} + +.shopping-goods { + margin-bottom: 0.4rem; +} + +.goods-box { + padding-bottom: 1.6rem; +} + +.el-footer { + width: calc(100vw - 160px); + padding-left: 2.1rem; + padding-right: 1.2rem; + box-sizing: border-box; + font-size: 0.18rem; + box-shadow: 0rem 0rem 0.2rem rgba(0, 0, 0, 0.15); + height: 1.6rem !important; + position: fixed; + bottom: 0; + background-color: #fff; + z-index: 9; +} + +.footer-box { + height: 100%; + margin: 0 auto; + max-width: 1500px; + display: flex; + align-items: center; + justify-content: space-between; +} + +.no-goods-td { + display: flex; + align-items: center; + width: 4.8rem; +} + +.no-goods-tips { + color: #8692b0; + font-size: 0.13rem; + font-weight: 500; + white-space: nowrap; +} + +.buy-again-btn { + margin-left: 0.1rem; + background: #e1f0ff; + height: 0.32rem; + min-width: 0.6rem; + border-radius: 0.03rem; + font-size: 0.14rem; + font-weight: 400; + color: var(--color-primary); +} + +.footer-left { + color: #333333; + font-size: 0.18rem; +} + +.footer-right { + font-size: 0.14rem; + color: #1e2736; + display: flex; + align-items: center; +} + +.total-price { + font-weight: bold; + font-size: 0.28rem; + color: var(--color-price-text); +} + +.text-red { + color: var(--color-warning); +} + +.goods-info { + margin-bottom: 0.1rem; + display: flex; + justify-content: space-between; + font-size: 0.14rem; +} + +.goodsInfo-price { + color: #1e2736; +} + +.goodsInfo-type { + overflow: hidden; + text-overflow: ellipsis; + /* white-space: nowrap; */ + width: 80%; + color: #1e2736; +} + +.goodsInfo-name { + color: #757575; +} + +.buy-btn { + margin-left: 0.4rem; + width: 2.04rem; + height: 0.46rem; + background: var(--color-primary); + border-radius: 0.04rem; + font-size: 0.16rem; + font-weight: 500; + color: #ffffff; +} + +.delect-btn { + margin: 0 0.4rem; +} + +.mar-left-24 { + margin-left: 24px; +} + +.info-box { + width: 90%; +} + +.all-check .el-checkbox__label { + color: #333333; + font-size: 0.18rem; +} + +.qty-num { + color: #4e5259; + height: 0.13rem; + margin-top: 0.1rem; +} + +.qty-tips { + margin-top: 0.2rem; + font-size: 0.13rem; + color: #3699ff; +} + +.red-text { + color: var(--color-danger); +} + +.discount-box { + margin-top: 0.08rem; + font-size: 0.14rem; + font-weight: 400; + display: flex; + flex-wrap: wrap; + align-items: center; + column-gap: 0.05rem; + row-gap: 0.05rem; +} + +@media screen and (max-width: 750px) { + .table-content { + overflow-x: auto; + } + + .search-box .el-input { + width: 4.2rem; + } + + .description-box { + min-width: 5.5rem; + } + + .price-box { + min-width: 4rem; + } + + .num-box { + min-width: 2.5rem; + } + + .action-box { + min-width: 1.5rem; + } + + .el-footer { + padding: 0 0.3rem; + width: 100%; + } + + .el-input .el-input__inner { + font-size: inherit !important; + } + + .footer-left { + display: flex; + flex-direction: column; + color: #333333; + font-size: 0.18rem; + } + + .delect-btn { + margin: 0; + } + + .footer-right { + font-size: 0.14rem; + color: #1e2736; + display: flex; + flex-direction: column; + align-items: center; + } + + .delect-goods { + color: var(--color-danger); + } + + .buy-btn { + margin-left: 0; + margin-top: 0.2rem; + width: 2.04rem; + height: 0.46rem; + background: var(--color-primary); + border-radius: 0.04rem; + font-size: 0.16rem; + font-weight: 500; + color: #ffffff; + } +} diff --git a/clientarea/cart/hgcart/goods.php b/clientarea/cart/hgcart/goods.php new file mode 100644 index 0000000..0411cec --- /dev/null +++ b/clientarea/cart/hgcart/goods.php @@ -0,0 +1,57 @@ + + + + + + +
+
+
+
+
+
+
+
+ + + + + + + + +
+ +
+ {{secProductGroupList[0]?.goodsList[0]?.product_group_name_first}} + +
+
+ + +
+
{{item.name}}
+
+
+ {{option.name}} +
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + diff --git a/clientarea/cart/hgcart/goodsList.php b/clientarea/cart/hgcart/goodsList.php new file mode 100644 index 0000000..4eb438f --- /dev/null +++ b/clientarea/cart/hgcart/goodsList.php @@ -0,0 +1,457 @@ + + + + + + +
+
+
+
+
+
+
+
+ + + + + + +
+
+
+
{{lang.new_goods}}
+
+ +
+ + {{select_second_obj.description}} + +
+
+ + +
+

{{lang.goods_loading}}

+ +
+
+
+
+ +
{{lang.template_text131}}
+
+

{{lang.template_text132}}

+
+ + + +
{{lang.template_text134}}
+
+
+
+ {{lang.template_text135}} + {{lang.template_text136}} +
+
+
+
+
+
+ + + + + diff --git a/clientarea/cart/hgcart/goods_iframe.php b/clientarea/cart/hgcart/goods_iframe.php new file mode 100644 index 0000000..8724230 --- /dev/null +++ b/clientarea/cart/hgcart/goods_iframe.php @@ -0,0 +1,34 @@ + + + + + + +
+
+
+
+
+
+
+
+ + + + + + +
+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/clientarea/cart/hgcart/img/firewall-icon.png b/clientarea/cart/hgcart/img/firewall-icon.png new file mode 100644 index 0000000..d790a77 Binary files /dev/null and b/clientarea/cart/hgcart/img/firewall-icon.png differ diff --git a/clientarea/cart/hgcart/img/firewall-icon.svg b/clientarea/cart/hgcart/img/firewall-icon.svg new file mode 100644 index 0000000..0d465b6 --- /dev/null +++ b/clientarea/cart/hgcart/img/firewall-icon.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/clientarea/cart/hgcart/img/sold_out.svg b/clientarea/cart/hgcart/img/sold_out.svg new file mode 100644 index 0000000..ca009ed --- /dev/null +++ b/clientarea/cart/hgcart/img/sold_out.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/clientarea/cart/hgcart/index_iframe.php b/clientarea/cart/hgcart/index_iframe.php new file mode 100644 index 0000000..97ab20c --- /dev/null +++ b/clientarea/cart/hgcart/index_iframe.php @@ -0,0 +1,37 @@ + + + + + + + + +
+ + + + + + + + + +
+
+
+
+
+
+
+
+ + + + + + + + + + + diff --git a/clientarea/cart/hgcart/js/goods.js b/clientarea/cart/hgcart/js/goods.js new file mode 100644 index 0000000..131392a --- /dev/null +++ b/clientarea/cart/hgcart/js/goods.js @@ -0,0 +1,179 @@ +var orignalSetItem = localStorage.setItem; +localStorage.setItem = function (key, newValue) { + var setItemEvent = new Event("setItemEvent"); + setItemEvent.newValue = newValue; + window.dispatchEvent(setItemEvent); + orignalSetItem.apply(this, arguments); +}; +(function (window, undefined) { + var old_onload = window.onload; + window.onload = function () { + const template = document.getElementsByClassName("goods")[0]; + Vue.prototype.lang = window.lang; + window.addEventListener("setItemEvent", function (e) { + if (e.newValue && String(e.newValue).indexOf("cartNum") !== -1) { + vm._data.shoppingCarNum = e.newValue.split("-")[1] * 1; + } + }); + const vm = new Vue({ + components: { + asideMenu, + topMenu, + pagination, + }, + created() { + const params = getUrlParams(); + if (params.token) { + localStorage.setItem("jwt", params.token); + } + this.id = params.id; + // 只获取 commonData 配置,不触发 getGoodDetail + this.commonData = JSON.parse( + localStorage.getItem("common_set_before") + ); + }, + mounted() { + if (window.self !== window.top) { + this.isIfram = true; + } + // 先加载 content,完成后再加载 popover 数据,避免并发请求过多 + this.getList().then(() => { + if (this.commonData.cart_change_product == 1) { + this.getGoodDetail(this.id); + } + }); + }, + updated() { + // // 关闭loading + document.getElementById("mainLoading").style.display = "none"; + document.getElementsByClassName("goods")[0].style.display = "block"; + }, + computed: { + calcProductGroup() { + // fillterKey 过滤关键字 secProductGroupList + const fillterKey = this.fillterKey.trim().toLowerCase(); + const originList = JSON.parse( + JSON.stringify(this.secProductGroupList) + ); + const arr = originList + .filter((item) => { + return ( + item.goodsList.filter((i) => { + return i.name.toLowerCase().indexOf(fillterKey) !== -1; + }).length > 0 + ); + }) + .map((item) => { + item.goodsList = item.goodsList.filter((i) => { + return i.name.toLowerCase().indexOf(fillterKey) !== -1; + }); + return item; + }); + return arr; + }, + }, + data() { + return { + id: "", + isIfram: false, + shoppingCarNum: 0, + fillterKey: "", + params: { + page: 1, + limit: 20, + pageSizes: [20, 50, 100], + total: 200, + orderby: "id", + sort: "desc", + keywords: "", + }, + commonData: {}, + content: "", + productInfo: {}, + secProductGroupList: [], + }; + }, + filters: { + formateTime(time) { + if (time && time !== 0) { + return formateDate(time * 1000); + } else { + return "--"; + } + }, + }, + methods: { + async getList() { + try { + const params = { id: this.id, flag: this.isIfram }; + const res = await getOrederConfig(params); + this.$nextTick(() => { + // 解决Jquery加载JS会在文件末尾添加时间戳的问题 + $.ajaxSetup({ + cache: true, + }); + $(".config-box .content").html(res.data.data.content); + }); + this.content = res.data.data.content; + } catch (error) {} + }, + handleCommand(id) { + // 打开新页面 替换id + location.href = `goods.htm?id=${id}`; + }, + getGoodDetail(id) { + apiProductDetail({ id }).then((res) => { + this.productInfo = res.data.data.product; + this.getProductGroup_second( + this.productInfo.product_group_id_first + ); + }); + }, + // 获取二级分类 + getProductGroup_second(id) { + productGroupSecond(id).then((res) => { + this.secProductGroupList = res.data.data.list.map((item) => { + item.goodsList = []; + return item; + }); + this.getProductGoodList(); + }); + }, + // 获取商品列表 + getProductGoodList() { + this.secProductGroupList.forEach((item) => { + const params = { + page: 1, + limit: 999999, + id: item.id, + }; + productGoods(params).then((res) => { + item.goodsList = res.data.data.list; + }); + }); + }, + // 每页展示数改变 + sizeChange(e) { + this.params.limit = e; + this.params.page = 1; + // 获取列表 + }, + // 当前页改变 + currentChange(e) { + this.params.page = e; + }, + + // 获取通用配置 + getCommonData() { + this.commonData = JSON.parse( + localStorage.getItem("common_set_before") + ); + if (this.commonData.cart_change_product == 1) { + this.getGoodDetail(this.id); + } + }, + }, + }).$mount(template); + typeof old_onload == "function" && old_onload(); + }; +})(window); diff --git a/clientarea/cart/hgcart/js/goodsList.js b/clientarea/cart/hgcart/js/goodsList.js new file mode 100644 index 0000000..d1323b4 --- /dev/null +++ b/clientarea/cart/hgcart/js/goodsList.js @@ -0,0 +1,949 @@ +(function (window, undefined) { + var old_onload = window.onload; + window.onload = function () { + const template = document.getElementsByClassName("template")[0]; + Vue.prototype.lang = window.lang; + new Vue({ + components: { + asideMenu, + topMenu, + scrollText, + }, + created() { + window.addEventListener("scroll", this.scrollBottom); + // 监听 页面点击事件 用于关闭 isShowSuffixBox + document.addEventListener("click", (e) => { + const classNameArr = [ + "suffix-list", + "suffix-box", + "suffix-item", + "suffix-item suffix-active", + "el-icon-arrow-down select-btn", + ]; + if (!classNameArr.includes(e.target.className)) { + this.isShowSuffixBox = false; + } + }); + + this.getCommonData(); + this.getCarList(); + + sessionStorage.removeItem("product_information"); + this.fpg_id = this.getQuery("fpg_id") * 1; + this.spg_id = this.getQuery("spg_id") * 1; + this.host_id = this.getQuery("host_id") * 1; + this.domainInput = this.getQuery("domain"); + }, + mounted() { + const addons_js_arr = JSON.parse( + document.querySelector("#addons_js").getAttribute("addons_js") + ); // 插件列表 + const arr = addons_js_arr.map((item) => { + return item.name; + }); + if (arr.includes("EventPromotion")) { + // 开启活动满减 + this.isShowFull = true; + } + this.initData(); + }, + updated() { + // 关闭loading + document.getElementById("mainLoading").style.display = "none"; + document.getElementsByClassName("template")[0].style.display = "block"; + }, + destroyed() { + window.removeEventListener("scroll", this.scrollBottom); + }, + data() { + return { + isShowView: false, + searchValue: "", // 搜索内容 + searchLoading: false, + select_first_obj: { + id: "", // 一级分组ID + type: "", // 一级分组类型 + }, // 选中的一级分类对象 + select_second_obj: { + id: "", // 二级分组ID + type: "", // 二级分组类型 + description: "", // 二级分组描述 + }, // 选中的一级分类对象 + first_group_list: [], // 一级分类数组 + second_group_list: [], // 二级分类数组 + commonData: {}, + scrollDisabled: false, + secondLoading: false, // 二级分类加载 + goodSLoading: false, + goodsParmas: { + keywords: "", // 关键字,搜索范围:商品ID,商品名,描述 + id: "", // 二级分组ID + page: 1, // 页数 + limit: 12, // 每页条数 + }, + goodsList: [], // 商品列表数组 + regType: "1", + domainInput: "", + selectSuffix: "", + isAllCheck: false, + isShowFull: false, + suffixList: [], + domainList: [], + isSearching: false, + isShowSuffixBox: false, + carList: [], + checkList: [], + product_id: "", + isCarLoading: false, + isIndeterminate: false, + isBatchIndeterminate: false, + isBatchAllCheck: false, + batchLoading: false, + addAllLoading: false, + textarea2: "", + batchCheckGroup: [], + availList: [], + unavailList: [], + faillList: [], + activeNames: [], + domainConfig: {}, + isShowUpload: false, + fileName: "", + fileContent: "", + originalPrice: 0.0, + /* 传参搜索 */ + fpg_id: "", + spg_id: "", + host_id: "", + isShowFilrer: false, + selectFilterSuffix: [], + }; + }, + filters: { + formateTime(time) { + if (time && time !== 0) { + return formateDate(time * 1000); + } else { + return "--"; + } + }, + }, + computed: { + // 是否选中的分类为域名 + isDomain() { + return this.select_second_obj.type === "domain"; + }, + // 计算购物车选中的商品的总价 + totalMoneyCalc() { + let total = 0; + this.carList.forEach((item) => { + if (this.checkList.includes(item.positions)) { + total += this.priceCalc(item) * 1000; + } + }); + const firstDiscount = this.carList.filter( + (item) => this.checkList[0] === item.positions + ); + let domainDiscount = 0; + if (firstDiscount.length > 0) { + domainDiscount = firstDiscount[0]?.priceArr[0]?.discount; + } + this.originalPrice = (total / 1000).toFixed(2); + let temp = (total - domainDiscount * 1000) / 1000; + if (isNaN(temp)) { + temp = 0.0; + } + return temp; + }, + showDomainList() { + return ( + this.domainList.filter((item) => { + return ( + item.avail === 0 || + (item.avail === 1 && item.priceArr.length > 0) + ); + }) || [] + ); + }, + // 是否登录 + isLogin() { + return window.localStorage.jwt ? true : false; + }, + calcDomainList() { + if (this.selectFilterSuffix.length === 0) { + return this.showDomainList; + } else { + return this.showDomainList.filter((item) => { + return this.selectFilterSuffix.includes( + this.getDomainSuffix(item.name).suffix + ); + }); + } + }, + fillterDomainSuffix() { + // 根据域名后缀分类 + return [ + ...new Set( + this.showDomainList.map((item) => { + return this.getDomainSuffix(item.name).suffix; + }) + ), + ]; + }, + showOriginal() { + const firstDiscount = this.carList.filter( + (item) => this.checkList[0] === item.positions + ); + const domainDiscount = firstDiscount[0]?.priceArr[0]?.discount; + if (this.checkList.length > 0 && domainDiscount > 0) { + return true; + } else { + return false; + } + }, + }, + methods: { + openFilter() { + this.isShowFilrer = !this.isShowFilrer; + this.selectFilterSuffix = []; + }, + handelFilterSuffix(item) { + const index = this.selectFilterSuffix.indexOf(item); + if (index !== -1) { + this.selectFilterSuffix.splice(index, 1); + } else { + this.selectFilterSuffix.push(item); + } + }, + calcEvent(eventList) {}, + getQuery(name) { + const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); + const r = window.location.search.substr(1).match(reg); + if (r != null) return decodeURI(r[2]); + return null; + }, + goLogin() { + sessionStorage.redirectUrl = "/cart/goodsList.htm"; + location.href = "/login.htm"; + }, + // 选择文件 + selectFile() { + document.getElementById("upFile").click(); + // 监听文件上传 + document.getElementById("upFile").addEventListener("change", (e) => { + // 获取文件 + const file = e.target.files[0]; + // 判断文件类型 + if (file.type !== "text/plain") { + this.$message.warning(lang.template_text137); + return; + } + // 读取文件名 + this.fileName = file.name; + // 读取文件 + const reader = new FileReader(); + // 判断txt文件编码格式 + reader.readAsText(file, "utf-8"); + reader.onload = (e) => { + const txtString = e.target.result; + // utf-8 的 中文编码 正则表达式 + const patrn = /[\u4E00-\u9FA5]/gi; + // 检测当前文本是否含有中文(如果没有,则当乱码处理) + // 两个格式的英文编码一样,所以纯英文文件也当成乱码再处理一次 + if (!patrn.exec(txtString)) { + let reader_gb2312 = new FileReader(); + // 再拿一次纯文本,这一次拿到的文本一定不会乱码 + reader_gb2312.readAsText(file, "gb2312"); + reader_gb2312.onload = (e2) => { + this.fileContent = e2.target.result; + }; + } else { + this.fileContent = txtString; + } + }; + }); + }, + confirmUpload() { + // 解析输入框中的换行 把换行替换成\n 传字符串 + let params = this.fileContent + .replace(/[\r\n]/g, ",") + .split(",") + .filter((item) => { + return item !== ""; + }); + const maxLimt = this.domainConfig.number_limit || 500; + if (params.length > maxLimt) { + // 截取前500个 + params = params.slice(0, maxLimt); + } + this.textarea2 = params.join("\n"); + this.cancelUpload(); + }, + cancelUpload() { + document.getElementById("upFile").value = ""; + document + .getElementById("upFile") + .removeEventListener("change", () => {}); + this.fileName = ""; + this.fileContent = ""; + this.isShowUpload = false; + }, + // 获取域名设置 + getDomainSet() { + domainSetting().then((res) => { + this.domainConfig = res.data.data; + this.selectSuffix = res.data.data.default_search_domain || ""; + const suffixArr = this.suffixList.reduce((all, cur) => { + all.push(cur.suffix); + return all; + }, []); + if ( + suffixArr.length > 0 && + !suffixArr.includes(this.selectSuffix) + ) { + this.selectSuffix = this.suffixList[0].suffix; + } + // 官网跳转查询 + if (location.href.indexOf("suffix") !== -1) { + this.selectSuffix = this.getQuery("suffix"); + this.handelDomainSearch(); + } + }); + }, + // 是否已经加入购物车 + isAddCart(item) { + const isHave = this.carList.find((cartItem) => { + return cartItem.config_options.domain === item.name; + }); + return Boolean(isHave); + }, + // 价格计算 + priceCalc(item) { + if (item.priceArr.length === 0) { + return 0; + } + const price = + item.priceArr.find((priceItem) => { + return priceItem.buyyear === item.selectYear; + }) || []; + return price.buyprice; + }, + goBuyDomain() { + if (this.checkList.length === 0) { + this.$message.warning(lang.template_text138); + return; + } + if (!this.isLogin) { + this.$message.warning(lang.template_text139); + sessionStorage.redirectUrl = "/cart/goodsList.htm"; + this.goLogin(); + return; + } + sessionStorage.setItem( + "buyDomainPosition", + JSON.stringify(this.checkList) + ); + if (this.host_id) { + location.href = `/plugin/${getPluginId( + "IdcsmartDomain" + )}/buyDomain.htm?host_id=${this.host_id}`; + } else { + location.href = `/plugin/${getPluginId( + "IdcsmartDomain" + )}/buyDomain.htm`; + } + }, + // 批量查询域名 + batchSearchDomain() { + if (!this.textarea2) { + this.$message.warning(lang.template_text140); + return; + } + // 解析输入框中的换行 把换行替换成\n 传字符串 + const params = this.textarea2 + .replace(/[\r\n]/g, ",") + .split(",") + .filter((item) => { + return item !== ""; + }) + .join(","); + const maxLimt = this.domainConfig.number_limit || 500; + if (params.split(",").length - 1 >= maxLimt) { + this.$message.warning( + `${lang.template_text141}${maxLimt}${lang.template_text142}` + ); + return; + } + this.batchLoading = true; + domainBatch({domains: params}) + .then((res) => { + this.availList = res.data.data.avail.map((item) => { + item.priceArr = []; + item.showPrice = 0; + item.priceLoading = true; + return item; + }); + // 查询可注册的域名价格 + this.availList.forEach((item) => { + domainPrice({name: item.name, host_id: this.host_id}) + .then((res) => { + item.priceArr = res.data.data || []; + item.showPrice = res.data.data[0]?.buyprice || 0; + }) + .finally(() => { + item.priceLoading = false; + }); + }); + this.unavailList = res.data.data.unavail; + this.faillList = res.data.data.fail; + }) + .catch((err) => {}) + .finally(() => { + this.batchLoading = false; + }); + }, + handleBatchChange(val) { + let checkedCount = val.length; + this.isBatchAllCheck = checkedCount === this.availList.length; + this.isBatchIndeterminate = + checkedCount > 0 && checkedCount < this.availList.length; + }, + handleBatchCheckAllChange(val) { + this.batchCheckGroup = val + ? this.availList.map((item) => { + return item.name; + }) + : []; + this.isBatchIndeterminate = false; + }, + // 购物车列表 + getCarList() { + this.isCarLoading = true; + cartList().then((res) => { + const arr = res.data.data.list + .map((item, index) => { + return { + ...item, + positions: index, + selectYear: item.config_options.year, + priceArr: [], + showPrice: 0, + priceLoading: true, + }; + }) + .filter((item) => { + return item.customfield.is_domain === 1; + }); + // 拉取价格 + this.carList = arr; + this.isCarLoading = false; + this.carList.forEach((item) => { + domainPrice({ + name: item.config_options.domain, + host_id: this.host_id, + }) + .then((res) => { + item.priceArr = res.data.data || []; + item.showPrice = res.data.data[0]?.buyprice || 0; + }) + .catch((err) => {}) + .finally(() => { + item.priceLoading = false; + }); + }); + }); + }, + handleCheckAllChange(val) { + this.checkList = val + ? this.carList.map((item) => { + return item.positions; + }) + : []; + this.isIndeterminate = false; + }, + handleCheckedCitiesChange(value) { + let checkedCount = value.length; + this.isAllCheck = checkedCount === this.carList.length; + this.isIndeterminate = + checkedCount > 0 && checkedCount < this.carList.length; + }, + // 加入购物车 + addCart(item) { + if (this.isAddCart(item)) { + return; + } + this.isCarLoading = true; + const params = { + product_id: this.product_id, + config_options: { + domain: item.name, + year: 1, + }, + qty: 1, + customfield: { + is_domain: 1, // 是否域名商品 + }, + }; + addToCart(params) + .then((res) => { + if (res.data.status === 200) { + this.getCarList(); + } + }) + .catch((err) => { + this.$message.error(err.data.msg); + }) + .finally(() => { + this.isCarLoading = false; + }); + }, + // 批量加入购物车 + addAllCart() { + // 判断是否有选中的域名 + if (this.batchCheckGroup.length === 0) { + this.$message.warning(lang.template_text138); + return; + } + if (this.addAllLoading) { + return; + } + this.addAllLoading = true; + // 筛选出选中的域名 + const arr = this.availList.filter((item) => { + return this.batchCheckGroup.includes(item.name); + }); + // 循环调用加入购物车接口 + const productsArr = []; + arr.forEach((item) => { + const params = { + product_id: this.product_id, + config_options: { + domain: item.name, + year: 1, + }, + qty: 1, + customfield: { + is_domain: 1, // 是否域名商品 + }, + }; + productsArr.push(params); + }); + addToCart({products: productsArr}) + .then((res) => { + if (res.data.status === 200) { + this.getCarList(); + } + }) + .catch((err) => { + this.$message.error(err.data.msg); + }) + .finally(() => { + this.addAllLoading = false; + }); + }, + + // 修改购物车 + changeCart(val, item) { + const params = { + position: item.positions, + product_id: item.product_id, + qty: 1, + config_options: { + domain: item.config_options.domain, + year: val, + }, + customfield: { + is_domain: 1, // 是否域名商品 + }, + }; + updateCart(params) + .then((res) => { + if (res.data.status === 200) { + // this.getCarList() + } + }) + .catch((err) => { + this.$message.error(err.data.msg); + }); + }, + + // 删除购物车 + async deleteCart(item) { + this.isCarLoading = true; + const params = { + position: item.positions, + }; + const res = await deleteCart(params); + if (res.data.status === 200) { + this.isCarLoading = false; + this.getCarList(); + } + }, + // 批量删除购物车 + async deleteClearCart() { + if (this.carList.length === 0) { + return; + } + this.isCarLoading = true; + const params = { + positions: this.carList.map((item) => { + return item.positions; + }), + }; + const res = await deleteCartBatch(params); + if (res.data.status === 200) { + this.isCarLoading = false; + this.getCarList(); + } + }, + // 获取后缀 + async getSuffix() { + // DA购买域名需要传入产品ID筛选对于的后缀 + try { + const res = await domainSuffix(this.host_id); + this.suffixList = res.data.data || []; + this.getDomainSet(); + } catch (error) { + this.getDomainSet(); + } + }, + // 选择后缀 + handelSelectSuffix(item) { + this.selectSuffix = item; + }, + // 域名截断 return domain suffix baidu.com => baidu .com + getDomainSuffix(str) { + const domainStr = str.trim(); + const domainRegex = /^[^.]+(\.[^.]+)+$/; + const domainData = { + domain: domainStr, + suffix: "", + }; + if (domainRegex.test(domainStr)) { + const parts = domainStr.split("."); + domainData.domain = parts[0]; + domainData.suffix = + parts.length >= 2 ? "." + parts.slice(1).join(".") : ""; + } + return domainData; + }, + handelDomainSearch() { + // 去除前后空格 + this.domainInput = this.domainInput.trim(); + if (!this.domainInput) { + this.$message.warning(lang.template_text140); + return; + } + const suffix = this.getDomainSuffix(this.domainInput).suffix; + if ( + suffix && + this.suffixList.find((item) => item.suffix === suffix) + ) { + this.selectSuffix = suffix; + } + this.isShowSuffixBox = false; + this.isSearching = true; + this.domainList = []; + this.domainInput = this.getDomainSuffix(this.domainInput).domain; + domainSearch({ + domain: this.domainInput, + suffix: this.selectSuffix, + host_id: this.host_id, + }) + .then((res) => { + if (res.data.status === 200) { + const list = res.data.data; + this.domainList = list.map((item) => { + item.priceArr = []; + item.showPrice = 0; + item.priceLoading = true; + + return item; + }); + this.isSearching = false; + this.domainList.forEach((item) => { + if (item.avail === 1) { + domainPrice({name: item.name, host_id: this.host_id}) + .then((res) => { + item.priceArr = res.data.data || []; + item.showPrice = res.data.data[0]?.buyprice || 0; + }) + .finally(() => { + item.priceLoading = false; + }); + } + }); + // 判断当前选中的域名后缀是否支持中文 + const isChinese = + this.suffixList.find((item) => { + return item.suffix === this.selectSuffix; + }).allow_zh === 0; + // 判断输入的是否是中文 + const chineseReg = /[\u4e00-\u9fa5]/g; + if (isChinese && chineseReg.test(this.domainInput)) { + this.domainList.unshift({ + // 添加一条不支持中文的提示 + name: this.domainInput + this.selectSuffix, + avail: -2, + description: lang.template_text143, + }); + } + } + }) + .catch((err) => { + this.isSearching = false; + }); + }, + // 获取域名价格 + getDomainPrice() {}, + goWhois(item) { + window.open( + `/plugin/${getPluginId("IdcsmartDomain")}/whois.htm?domain=${ + item.name + }` + ); + }, + getRule(arr) { + let isHave = this.showFun(arr, "CartController::index"); + if (isHave) { + this.isShowView = true; + } + if (!this.isShowView) { + // 没有权限 + location.href = "/noPermissions.htm"; + } + }, + showFun(arr, str) { + if (typeof arr == "string") { + return true; + } else { + let isShow = ""; + isShow = arr.find((item) => { + let isHave = item.includes(str); + if (isHave) { + return isHave; + } + }); + return isShow; + } + }, + // 获取一级分类 + getProductGroup_first() { + productGroupFirst().then((res) => { + this.first_group_list = res.data.data.list; + }); + }, + // 搜索 + searchGoods() { + this.searchLoading = true; + this.goodsParmas.keywords = this.searchValue; + this.goodsParmas.id = ""; + this.goodsParmas.page = 1; + this.goodsList = []; + this.getProductGoodList(); + }, + // 获取二级分类 + getProductGroup_second(id) { + productGroupSecond(id).then((res) => { + this.secondLoading = false; + this.second_group_list = res.data.data.list; + if (res.data.data.list[0]) { + this.select_second_obj.id = res.data.data.list[0].id; + this.select_second_obj.type = res.data.data.list[0].type; + this.select_second_obj.description = + res.data.data.list[0]?.description; + this.goodsParmas.id = this.select_second_obj.id; + if (this.select_second_obj.type === "domain") { + this.getSuffix(); + } + this.getProductGoodList(); + } + }); + }, + // 获取商品列表 + getProductGoodList() { + this.goodSLoading = true; + productGoods(this.goodsParmas).then((res) => { + if ( + this.select_second_obj.type === "domain" && + res.data.data.list[0] + ) { + this.product_id = res.data.data.list[0].id; + } + this.searchLoading = false; + const list = res.data.data.list.map((item) => { + item.activeList = []; + return item; + }); + if (this.isShowFull) { + list.forEach((item) => { + eventPromotion({id: item.id}).then((res) => { + item.activeList = res.data.list; + }); + }); + } + this.goodsList = this.goodsList.concat(list); + this.goodSLoading = false; + this.scrollDisabled = + res.data.data.list.length < this.goodsParmas.limit; + this.$nextTick(() => { + // 判断当前列表是否达到滚动加载的条件 + this.needScroll(); + }); + }); + }, + needScroll() { + const scrollTop = + document.documentElement.scrollTop || document.body.scrollTop; + const clientHeight = document.documentElement.clientHeight; + const scrollHeight = document.documentElement.scrollHeight; + if ( + scrollTop + clientHeight >= scrollHeight && + !this.scrollDisabled + ) { + this.goodsParmas.page++; + this.getProductGoodList(); + } + }, + // 初始化 + async initData() { + // 获取一级分类 + await productGroupFirst().then((res) => { + this.first_group_list = res.data.data.list; + }); + if (this.first_group_list[0]) { + this.select_first_obj.id = + this.fpg_id || this.first_group_list[0].id; + this.secondLoading = true; + // 获取二级分类 + await productGroupSecond(this.select_first_obj.id).then((ress) => { + this.second_group_list = ress.data.data.list; + }); + if (this.second_group_list[0]) { + this.select_second_obj.id = + this.spg_id || this.second_group_list[0].id; + const selectItem = this.second_group_list.find( + (item) => item.id === this.select_second_obj.id + ); + this.select_second_obj.type = selectItem?.type; + this.select_second_obj.description = selectItem?.description; + this.goodsParmas.page = 1; + this.goodsParmas.id = this.spg_id || this.second_group_list[0].id; + this.secondLoading = false; + if (this.select_second_obj.type === "domain") { + this.getSuffix(); + } + this.getProductGoodList(); + } else { + this.goodSLoading = false; + this.goodsList = []; + } + } else { + this.goodSLoading = false; + this.goodsList = []; + } + }, + // 点击一级分类 + selectFirstType(val) { + this.select_first_obj.id = val; + this.secondLoading = true; + this.goodsParmas.page = 1; + this.second_group_list = []; + this.select_second_obj = { + id: "", + type: "", + description: "", + }; + this.getProductGroup_second(val); + this.goodsList = []; + }, + // 点击二级分类 + selectSecondType(val) { + this.select_second_obj.id = val; + const clickItem = this.second_group_list.find((item) => { + return item.id === val; + }); + this.select_second_obj.type = clickItem?.type; + this.select_second_obj.description = clickItem?.description; + this.goodsList = []; + this.goodsParmas.page = 1; + this.goodsParmas.id = val; + if (this.select_second_obj.type === "domain") { + this.getSuffix(); + } + this.getProductGoodList(); + }, + // 获取通用配置 + getCommonData() { + getCommon().then((res) => { + this.commonData = res.data.data; + localStorage.setItem( + "common_set_before", + JSON.stringify(res.data.data) + ); + document.title = + this.commonData.website_name + "-" + lang.common_cloud_text301; + }); + }, + // 点击购买 + goOrder(item) { + if ( + Boolean( + (JSON.parse(localStorage.getItem("common_set_before")) || {}) + .custom_fields?.before_settle === 1 + ) + ) { + window.open("/account.htm"); + return; + } + // 新窗口打开 + window.open(`goods.htm?id=${item.id}`); + }, + // 滚动计算 + scrollBottom() { + if (this.select_second_obj.type === "domain") { + return; + } + const scrollTop = + document.documentElement.scrollTop || document.body.scrollTop; + const clientHeight = document.documentElement.clientHeight; + const scrollHeight = document.documentElement.scrollHeight; + if (scrollTop + clientHeight >= scrollHeight) { + if (this.scrollDisabled) { + } else { + this.goodsParmas.page++; + this.getProductGoodList(); + } + } + }, + }, + watch: { + "select_first_obj.id": function (val) { + // 更改url 中fpg_id 和 spg_id 参数 + const url = window.location.href; + // 拿到当前url中的参数 + const params = new URLSearchParams(url.split("?")[1]); + // 改变参数 + params.set("fpg_id", val); + // 重新组装url + const newUrl = `${url.split("?")[0]}?${params.toString()}`; + // 替换当前url + window.history.replaceState({}, "", newUrl); + }, + "select_second_obj.id": function (val) { + // 更改url 中fpg_id 和 spg_id 参数 + const url = window.location.href; + // 拿到当前url中的参数 + const params = new URLSearchParams(url.split("?")[1]); + // 改变参数 + params.set("spg_id", val); + // 重新组装url + const newUrl = `${url.split("?")[0]}?${params.toString()}`; + // 替换当前url + window.history.replaceState({}, "", newUrl); + }, + }, + }).$mount(template); + typeof old_onload == "function" && old_onload(); + }; +})(window); diff --git a/clientarea/cart/hgcart/js/settlement.js b/clientarea/cart/hgcart/js/settlement.js new file mode 100644 index 0000000..e33e001 --- /dev/null +++ b/clientarea/cart/hgcart/js/settlement.js @@ -0,0 +1,367 @@ +(function (window, undefined) { + var old_onload = window.onload; + window.onload = function () { + const template = document.getElementsByClassName("template")[0]; + Vue.prototype.lang = window.lang; + const host = location.host; + const fir = location.pathname.split("/")[1]; + const str = `${host}/${fir}/`; + new Vue({ + components: { + asideMenu, + topMenu, + payDialog, + eventCode, + }, + created() { + localStorage.frontMenusActiveId = ""; + const temp = this.getQuery(location.search); + if (temp.cart) { + // 购物车过来 + this.selectGoodsList = JSON.parse(sessionStorage.shoppingCartList); + this.isFormShoppingCart = true; + } else { + const obj = sessionStorage.product_information + ? JSON.parse(sessionStorage.product_information) + : sessionStorage.settleItem + ? JSON.parse(sessionStorage.settleItem) + : {}; + sessionStorage.settleItem = sessionStorage.product_information; + sessionStorage.removeItem("product_information"); + this.isFormShoppingCart = false; + this.productObj = { + product_id: temp.id ? temp.id : obj.id ? obj.id : "", + config_options: obj.config_options, + qty: Number(obj.qty), + customfield: obj.customfield, + self_defined_field: obj.self_defined_field, + }; + productDetail(this.productObj.product_id).then((res) => { + this.productObj.name = res.data.data.product.name; + }); + } + this.getCommonData(); + // this.getPayLisy(); + }, + mounted() { + this.addons_js_arr = JSON.parse( + document.querySelector("#addons_js").getAttribute("addons_js") + ); // 插件列表 + const arr = this.addons_js_arr.map((item) => { + return item.name; + }); + if (arr.includes("PromoCode")) { + // 开启了优惠码插件 + this.isShowPromo = true; + } + if (arr.includes("IdcsmartClientLevel")) { + // 开启了等级优惠 + this.isShowLevel = true; + } + if (arr.includes("EventPromotion")) { + // 开启活动满减 + this.isShowFull = true; + } + this.getCartList(); + }, + updated() { + // 关闭loading + document.getElementById("mainLoading").style.display = "none"; + document.getElementsByClassName("template")[0].style.display = "block"; + }, + data() { + return { + initArr: [], + commonData: {}, // 公告接口数据 + addons_js_arr: [], + showPayBtn: false, + + totalPriceLoading: false, + + goodIdList: [], + isUseDiscountCode: false, + productObj: { + customfield: {}, + }, // 单独结算的商品对象 + shoppingList: [], // 所有购物车列表 + listLoading: false, + selectGoodsList: [], + isFormShoppingCart: true, // 是否从购物车页面结算 + showGoodsList: [], // 展示的列表 + payTypeList: [], // 支付渠道数组 + payType: "", // 选择的支付渠道 + checked: false, // 勾选隐私协议 + isShowPromo: false, // 是否开启优惠码 + isShowLevel: false, // 是否开启等级优惠 + isShowFull: false, + subBtnLoading: false, // 提交按钮loading + }; + }, + + filters: { + formateTime(time) { + if (time && time !== 0) { + return formateDate(time * 1000); + } else { + return "--"; + } + }, + filterMoney(money) { + if (isNaN(money) || money * 1 < 0) { + return "0.00"; + } else { + return formatNuberFiexd(money); + } + }, + }, + computed: { + finallyPrice() { + return this.totalPrice; + }, + totalLevelDiscount() { + return formatNuberFiexd( + this.showGoodsList.reduce((pre, cur) => { + return pre + cur.level_discount * 1; + }, 0) + ); + }, + totalPrice() { + return formatNuberFiexd( + this.showGoodsList.reduce((pre, cur) => { + return pre + cur.calcItemPrice * 1; + }, 0) + ); + }, + orginPrice() { + return formatNuberFiexd( + this.showGoodsList.reduce((pre, cur) => { + return pre + cur.price * 1; + }, 0) + ); + }, + totalCodelDiscount() { + return formatNuberFiexd( + this.showGoodsList.reduce((pre, cur) => { + return pre + cur.code_discount * 1; + }, 0) + ); + }, + totalFullDiscount() { + return formatNuberFiexd( + this.showGoodsList.reduce((pre, cur) => { + return pre + cur.eventDiscount * 1; + }, 0) + ); + }, + }, + methods: { + getRule(arr) { + let isHave = this.showFun(arr, "PayController::pay"); + if (isHave) { + this.showPayBtn = true; + } + }, + showFun(arr, str) { + if (typeof arr == "string") { + return true; + } else { + let isShow = ""; + isShow = arr.find((item) => { + let isHave = item.includes(str); + if (isHave) { + return isHave; + } + }); + return isShow; + } + }, + // 获取购物车列表 + async getCartList() { + this.listLoading = true; + this.initArr = []; + if (this.isFormShoppingCart) { + // 从购物车结算 + await cartList().then((res) => { + this.shoppingList = res.data.data.list; + this.selectGoodsList.forEach((item) => { + const obj = this.shoppingList[item]; + this.initArr.push(obj); + }); + }); + } else { + // 从商品详情结算 + this.initArr.push(this.productObj); + } + + this.initArr.forEach((item) => { + item.isLoading = true; + item.priceLoading = false; + item.price = 0; // 商品单价 + item.code_discount = 0; // 商品优惠码抵扣金额 + item.isUseDiscountCode = false; + item.level_discount = 0; // 商品等级优惠折扣金额 + item.eventDiscount = 0; + item.calcItemPrice = 0; + this.goodIdList.push(item.product_id); + this.getConfigOption(item); + }); + this.showGoodsList = [...this.initArr]; + this.listLoading = false; + }, + // 获取商品配置项价格 + getConfigOption(item) { + const params = { + config_options: { + ...item.config_options, + promo_code: item.customfield.promo_code, + event_promotion: item.customfield.event_promotion, + }, + qty: item.qty, + }; + item.priceLoading = true; + configOption(item.product_id, params) + .then(async (res) => { + item.info = res.data.data; + const son_previews = []; + if (res.data.data.other && res.data.data.other.son_previews) { + res.data.data.other.son_previews.forEach((i) => { + i.forEach((items) => { + son_previews.push(items); + }); + }); + } + if (res.data.data.sub_host && res.data.data.sub_host.length > 0) { + res.data.data.sub_host.forEach((i) => { + i.preview.forEach((items) => { + son_previews.push(items); + }); + }); + } + item.preview = res.data.data.preview.concat(son_previews); + item.price = res.data.data.price * 1; + item.calcItemPrice = res.data.data.price_total * 1; + item.level_discount = + res.data.data.price_client_level_discount * 1 || 0; + item.code_discount = + res.data.data.price_promo_code_discount * 1 || 0; + item.eventDiscount = + res.data.data.price_event_promotion_discount * 1 || 0; + }) + .catch((err) => { + item.preview = []; + }) + .finally(() => { + item.priceLoading = false; + item.isLoading = false; + this.showGoodsList = [...this.initArr]; + this.$forceUpdate(); + }); + }, + + goPay() { + if (!this.checked) { + this.$message.warning(lang.shoppingCar_tip_text6); + return; + } + if ( + Boolean( + (JSON.parse(localStorage.getItem("common_set_before")) || {}) + .custom_fields?.before_settle === 1 + ) + ) { + window.open("/account.htm"); + return; + } + this.subBtnLoading = true; + const settleApi = this.isFormShoppingCart + ? cart_settle + : product_settle; + const params = this.isFormShoppingCart + ? { + positions: this.selectGoodsList, + } + : { + product_id: this.productObj.product_id, + config_options: this.productObj.config_options, + customfield: this.productObj.customfield, + self_defined_field: this.productObj.self_defined_field, + qty: this.productObj.qty, + }; + settleApi(params) + .then((res) => { + this.$refs.payDialog.showPayDialog( + res.data.data.order_id, + res.data.data.amount, + this.payType + ); + }) + .catch((err) => { + if (err.data?.data?.certification === 0) { + this.$message.error({ + duration: 0, + showClose: true, + dangerouslyUseHTMLString: true, + message: `${err.data.msg} + ${lang.wx_tip7} + `, + type: "error", + }); + } else { + this.$message.error(err.data.msg); + } + }) + .finally(() => { + this.subBtnLoading = false; + }); + }, + + // 支付成功回调 + paySuccess(e) { + location.href = "/finance.htm"; + }, + // 取消支付回调 + payCancel(e) { + location.href = "/finance.htm"; + }, + getPayLisy() { + payLisy().then((res) => { + this.payTypeList = res.data.data.list; + this.payType = res.data.data.list[0].name; + }); + }, + // 解析url + getQuery(url) { + const str = url.substr(url.indexOf("?") + 1); + const arr = str.split("&"); + const res = {}; + for (let i = 0; i < arr.length; i++) { + const item = arr[i].split("="); + res[item[0]] = item[1]; + } + return res; + }, + goTermsServiceUrl() { + window.open(this.commonData.terms_service_url); + }, + goTermsPrivacUrl() { + window.open(this.commonData.terms_privacy_url); + }, + goHelpUrl(url) { + window.open(this.commonData[url]); + }, + + // 获取通用配置 + getCommonData() { + this.commonData = JSON.parse( + localStorage.getItem("common_set_before") + ); + document.title = + this.commonData.website_name + "-" + lang.shoppingCar_tip_text7; + }, + }, + }).$mount(template); + typeof old_onload == "function" && old_onload(); + }; +})(window); diff --git a/clientarea/cart/hgcart/js/shoppingCar.js b/clientarea/cart/hgcart/js/shoppingCar.js new file mode 100644 index 0000000..f546b7d --- /dev/null +++ b/clientarea/cart/hgcart/js/shoppingCar.js @@ -0,0 +1,510 @@ +(function (window, undefined) { + var old_onload = window.onload; + window.onload = function () { + const template = document.getElementsByClassName("template")[0]; + Vue.prototype.lang = window.lang; + new Vue({ + components: { + asideMenu, + topMenu, + discountCode, + eventCode, + }, + created() { + localStorage.frontMenusActiveId = ""; + this.getCommonData(); + }, + mounted() { + this.addons_js_arr = JSON.parse( + document.querySelector("#addons_js").getAttribute("addons_js") + ); // 插件列表 + const arr = this.addons_js_arr.map((item) => { + return item.name; + }); + if (arr.includes("PromoCode")) { + // 开启了优惠码插件 + this.isShowPromo = true; + } + if (arr.includes("IdcsmartClientLevel")) { + // 开启了等级优惠 + this.isShowLevel = true; + } + if (arr.includes("EventPromotion")) { + // 开启活动满减 + this.isShowFull = true; + } + this.getCartList(); + }, + updated() { + // 关闭loading + document.getElementById("mainLoading").style.display = "none"; + document.getElementsByClassName("template")[0].style.display = "block"; + }, + destroyed() { }, + data() { + return { + timer1: null, + listLoding: false, + commonData: {}, + searchVal: "", + checkedCities: [], + checkAll: false, // 是否全选 + visible: false, + showList: [], + addons_js_arr: [], // 插件列表 + shoppingList: [], + isShowPromo: false, // 是否开启优惠码 + isShowLevel: false, // 是否开启等级优惠 + isShowFull: false, // 是否开启满减优惠 + settleLoading: false, + }; + }, + + filters: { + formateTime(time) { + if (time && time !== 0) { + return formateDate(time * 1000); + } else { + return "--"; + } + }, + filterMoney(money) { + if (isNaN(money) || money * 1 < 0) { + return "0.00"; + } else { + return formatNuberFiexd(money); + } + }, + }, + computed: { + totalPrice() { + return this.showList + .filter((item) => { + return this.checkedCities.includes(item.position); + }) + .reduce((pre, cur) => { + return pre + cur.calcItemPrice * 1; + }, 0); + }, + nowList() { + if (this.searchVal !== "") { + return this.showList.filter((item) => + item.name.includes(this.searchVal) + ); + } else { + return this.showList; + } + }, + }, + methods: { + // 获取购物车列表 + getCartList() { + this.listLoding = true; + cartList() + .then((res) => { + this.shoppingList = res.data.data.list.map((item, index) => { + item.price = 0; // 商品单价 + item.calcItemPrice = 0; + item.code_discount = 0; // 商品优惠码抵扣金额 + item.level_discount = 0; // 商品等级优惠折扣金额 + item.eventDiscount = 0; // 商品活动优惠金额 + item.isUseDiscountCode = false; // 商品是否使用优惠码 + item.position = index; // 商品所在购物车位置 + item.isShowTips = false; // 是否提示商品库存不足 + item.priceLoading = true; // 商品价格loading + if (item.stock_control === 1 && item.qty > item.stock_qty) { + item.isShowTips = true; + item.qty = item.stock_qty; + } + item.isLoading = true; // 商品loading + return item; + }); + const arr = this.shoppingList.filter((arritem) => { + return arritem.customfield?.is_domain !== 1; + }); + this.listLoding = false; + this.showList = [...arr]; + this.showList.forEach((item) => { + this.getConfigOption(item); + }); + }) + .catch((err) => { + console.log(err); + this.listLoding = false; + }); + }, + // 获取商品配置项价格 + getConfigOption(item) { + const params = { + config_options: { + ...item.config_options, + promo_code: item.customfield.promo_code, + event_promotion: item.customfield.event_promotion, + }, + qty: item.qty, + }; + item.priceLoading = true; + configOption(item.product_id, params) + .then(async (res) => { + item.info = res.data.data; + const son_previews = []; + if (res.data.data.other && res.data.data.other.son_previews) { + res.data.data.other.son_previews.forEach((i) => { + i.forEach((items) => { + son_previews.push(items); + }); + }); + } + if (res.data.data.sub_host && res.data.data.sub_host.length > 0) { + res.data.data.sub_host.forEach((i) => { + i.preview.forEach((items) => { + son_previews.push(items); + }); + }); + } + item.preview = res.data.data.preview.concat(son_previews); + item.price = res.data.data.price * 1; + item.base_price = res.data.data.base_price * 1; + item.calcItemPrice = res.data.data.price_total * 1; + item.level_discount = + res.data.data.price_client_level_discount * 1 || 0; + item.code_discount = + res.data.data.price_promo_code_discount * 1 || 0; + item.eventDiscount = + res.data.data.price_event_promotion_discount * 1 || 0; + }) + .catch((err) => { + item.preview = []; + }) + .finally(() => { + item.priceLoading = false; + item.isLoading = false; + this.showList = [...this.showList]; + this.$forceUpdate(); + }); + }, + // 更改活动 + changeEventCode(priceObj, item) { + if (item.customfield.event_promotion == priceObj.id) { + return; + } + item.customfield.event_promotion = priceObj.id; + const params = { + position: item.position, + product_id: item.product_id, + config_options: item.config_options, // 配置信息 + qty: item.qty, // 商品数量 + customfield: item.customfield, + self_defined_field: item.self_defined_field, + }; + updateCart(params).then((res) => { + this.getConfigOption(item); + }); + }, + // 使用优惠码 + getDiscount(data) { + this.showList.forEach((item) => { + if (item.position === data[2]) { + item.customfield.promo_code = data[1]; + item.isUseDiscountCode = true; + const params = { + position: data[2], + product_id: item.product_id, + config_options: item.config_options, // 配置信息 + qty: item.qty, // 商品数量 + customfield: item.customfield, + self_defined_field: item.self_defined_field, + }; + updateCart(params).then((res) => { + this.getConfigOption(item); + }); + } + }); + }, + // 删除优惠码 + removeDiscountCode(item) { + item.customfield.promo_code = ""; + item.isUseDiscountCode = false; + let i; + this.showList.forEach((items, index) => { + if (items.position === item.position) { + i = index; + } + }); + const params = { + position: i, + product_id: item.product_id, + config_options: item.config_options, // 配置信息 + qty: item.qty, // 商品数量 + customfield: item.customfield, + self_defined_field: item.self_defined_field, + }; + updateCart(params).then((res) => { + this.getConfigOption(item); + }); + }, + // 搜索 + searchValChange(value) { + this.checkedCities = []; + this.checkAll = false; + }, + // 点击全选按钮 + handleCheckAllChange(val) { + const arr = this.showList.filter((item) => { + return item.info; + }); + const arrr = arr.map((item) => { + return item.position; + }); + this.checkedCities = val ? arrr : []; + }, + // 编辑商品数量 + handelEditGoodsNum(index, num) { + return editGoodsNum(index, num); + }, + // 编辑商品 + goGoods(item) { + if (item.info) { + const obj = { + config_options: item.config_options, // 配置信息 + position: item.position, // 修改接口要用的位置信息 + qty: item.qty, // 商品数量 + customfield: item.customfield, + self_defined_field: item.self_defined_field, + }; + sessionStorage.setItem("product_information", JSON.stringify(obj)); + } + location.href = `goods.htm?id=${item.product_id}&change=true&name=${item.name}`; + }, + // 监听购物车选择数量变化 + handleCheckedCitiesChange(value) { + this.checkAll = value.length === this.showList.length; + }, + // 删除商品函数 + deleteGoodsList(arr) { + deleteGoods(arr) + .then((res) => { + if (res.data.status === 200) { + this.$message.success(res.data.msg); + this.getCartList(); + this.$refs.topMenu.getCartList(); + } + }) + .catch((err) => { + err.data.msg && this.$message.error(err.data.msg); + }) + .finally(() => { }); + }, + // 点击删除按钮 + handelDeleteGoods(item) { + // 调用删除接口 + const p = item.position; + let shoppingList_index = 0; + let checkedCities_index = 0; + let show_index = 0; + // 删除列表中对应的商品 + this.shoppingList.forEach((listItem, index) => { + if (listItem.position === p) { + shoppingList_index = index; + } + }); + this.checkedCities.forEach((listItem, index) => { + if (listItem === p) { + checkedCities_index = index; + } + }); + this.showList.forEach((listItem, index) => { + if (listItem === p) { + show_index = index; + } + }); + this.showList.splice(show_index, 1); + this.checkedCities.splice(checkedCities_index, 1); + this.deleteGoodsList([item.position]); + }, + // 删除选中的商品 + deleteCheckGoods() { + if (this.checkedCities.length === 0) { + this.$message.warning(lang.referral_status9); + return; + } else { + this.deleteGoodsList(this.checkedCities); + this.checkedCities = []; + } + }, + // 商品数量增加减少 + handleChange(n, o, item) { + if (item.stock_control === 1 && n >= item.stock_qty) { + this.$message.error(lang.referral_status10); + return; + } + // 节个流 + if (this.timer1) { + clearTimeout(this.timer1); + this.timer1 = null; + } + item.priceLoading = true; + + this.timer1 = setTimeout(() => { + this.handelEditGoodsNum(item.position, n) + .then(async () => { + this.getConfigOption(item); + }) + .catch((err) => { + err.data.msg && this.$message.error(err.data.msg); + }) + .finally(() => { + item.priceLoading = false; + clearTimeout(this.timer1); + this.timer1 = null; + }); + this.syncBindTool(item); + }, 500); + }, + // 同步绑定工具函数 + syncBindTool(item) { + if ( + item.customfield.product_related_limit && + item.customfield.product_related_limit?.related.length > 0 + ) { + const arr = item.customfield.product_related_limit.related || []; + // 循环判断是否有关联商品 + // 过滤出关联商品 + const relatedList = this.showList.filter((items) => { + return ( + arr.includes(items.product_id * 1) || + arr.includes(String(items.product_id)) + ); + }); + // 过滤出和当前商品ID一样的列表 + const someList = this.showList.filter((items) => { + return items.product_id == item.product_id; + }); + // 对比关联商品和当前商品的数量 + const relatedNum = relatedList.reduce((pre, cur) => { + return pre + cur.qty; + }, 0); + const someNum = someList.reduce((pre, cur) => { + return pre + cur.qty; + }, 0); + if (relatedNum != someNum && relatedNum !== 0) { + if (someNum > relatedNum) { + // 如果关联商品数量小于当前商品数量 给筛选出来的关联商品加1 + this.handelEditGoodsNum( + relatedList[0].position, + relatedList[0].qty + (someNum - relatedNum) + ).then(async () => { + this.showList.forEach((items) => { + if (items.position == relatedList[0].position) { + items.qty = relatedList[0].qty + (someNum - relatedNum); + this.getConfigOption(items); + this.$forceUpdate(); + } + }); + }); + } else { + // 如果关联商品数量大于当前商品数量 给当前商品加1 + this.handelEditGoodsNum( + relatedList[0].position, + relatedList[0].qty > relatedNum - someNum + ? relatedList[0].qty - (relatedNum - someNum) + : 1 + ).then(async () => { + this.showList.forEach((items) => { + if (items.position == relatedList[0].position) { + items.qty = + relatedList[0].qty > relatedNum - someNum + ? relatedList[0].qty - (relatedNum - someNum) + : 1; + this.getConfigOption(items); + this.$forceUpdate(); + } + }); + }); + } + } + } + }, + checkBindFun(selctedArr) { + let flag = true; + selctedArr.forEach((item) => { + if ( + item.customfield.product_related_limit && + item.customfield.product_related_limit?.related.length > 0 + ) { + const arr = item.customfield.product_related_limit.related || []; + // 循环判断是否有关联商品 + // 过滤出关联商品 + const relatedList = selctedArr.filter((items) => { + return ( + arr.includes(items.product_id * 1) || + arr.includes(String(items.product_id)) + ); + }); + // 过滤出和当前商品ID一样的列表 + const someList = selctedArr.filter((items) => { + return items.product_id == item.product_id; + }); + // 对比关联商品和当前商品的数量 + const relatedNum = relatedList.reduce((pre, cur) => { + return pre + cur.qty; + }, 0); + const someNum = someList.reduce((pre, cur) => { + return pre + cur.qty; + }, 0); + if (relatedNum != someNum) { + flag = false; + } + } + }); + return flag; + }, + // 结算 + goSettle() { + // 判断是否需要先设置账户,如果需要则跳转到设置账户页面 + if ( + Boolean( + (JSON.parse(localStorage.getItem("common_set_before")) || {}) + .custom_fields?.before_settle === 1 + ) + ) { + window.open("/account.htm"); + return; + } + if (this.checkedCities.length === 0) { + this.$message.warning(lang.referral_status11); + return; + } + const arr = []; // 装的是被选中的商品在购物位置的索引 + this.showList.forEach((item) => { + this.checkedCities.forEach((items) => { + if (items == item.position) { + arr.push(item); + } + }); + }); + if (!this.checkBindFun(arr)) { + this.$message.warning(lang.cart_tip_text14); + return; + } + this.settleLoading = true; + sessionStorage.shoppingCartList = JSON.stringify(this.checkedCities); + setTimeout(() => { + location.href = `/cart/settlement.htm?cart=1`; + this.settleLoading = false; + }, 500); + }, + + // 获取通用配置 + getCommonData() { + this.commonData = JSON.parse( + localStorage.getItem("common_set_before") + ); + document.title = + this.commonData.website_name + "-" + lang.shoppingCar_title; + }, + }, + }).$mount(template); + typeof old_onload == "function" && old_onload(); + }; +})(window); diff --git a/clientarea/cart/hgcart/settlement.php b/clientarea/cart/hgcart/settlement.php new file mode 100644 index 0000000..03842ae --- /dev/null +++ b/clientarea/cart/hgcart/settlement.php @@ -0,0 +1,182 @@ + + + + + +
+
+
+
+
+
+
+
+ + + + + + +
+
+ {{lang.settlement_title}} +

+ {{lang.dont_save_password_tip}} +

+
+
+
+
+
+ {{item.name}} +
+
+ + + + + + + + + + + + + + + +
{{lang.settlement_goodsInfo}}{{lang.settlement_goodsPrice}}{{lang.settlement_goodsNums}}{{lang.settlement_goodsTotalPrice}}
+
+
+ + {{item.name}} + + + {{commonData.currency_prefix}}{{item.info.base_price}} +
+
+ + {{infoItem.name}} + :{{infoItem.value}} + + {{commonData.currency_prefix}}{{infoItem.price}} +
+
+
+
+ + + + {{item.qty}} + + {{commonData.currency_prefix}} {{item.calcItemPrice | filterMoney}} + +
+

+ {{lang.shoppingCar_tip_text2}}:{{commonData.currency_prefix}} {{ + item.level_discount | filterMoney }} +

+

+ {{lang.shoppingCar_tip_text4}}:{{commonData.currency_prefix}} {{ item.code_discount | + filterMoney }} +

+

{{lang.goods_text4}}:{{commonData.currency_prefix}} {{ + item.eventDiscount | filterMoney }}

+
+ +
+ + +

+ {{commonData.currency_prefix}} {{item.price | filterMoney}} +

+
+ {{ item.customfield.promo_code }} +
+
+
+
+
+
+
+
+ + + + + +
+
+
+ + + + + diff --git a/clientarea/cart/hgcart/shoppingCar.php b/clientarea/cart/hgcart/shoppingCar.php new file mode 100644 index 0000000..8f64dc8 --- /dev/null +++ b/clientarea/cart/hgcart/shoppingCar.php @@ -0,0 +1,187 @@ + + + + + + +
+
+
+
+
+
+
+
+ + + + + + +
+
{{lang.shoppingCar_title}}
+ +
+
+ +
+
+ + {{item.name}} + + {{item.name}} + {{lang.shoppingCar_editGoods}} +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
{{lang.shoppingCar_goodsInfo}}{{lang.shoppingCar_goodsPrice}}{{lang.shoppingCar_goodsNums}}{{lang.shoppingCar_goodsTotalPrice}}{{lang.shoppingCar_goodsAction}}
+
+
+ + {{item.name}} + + + {{commonData.currency_prefix}}{{item.info.base_price}} +
+
+ + {{infoItem.name}} + :{{infoItem.value}} + + {{commonData.currency_prefix}}{{infoItem.price}} +
+
+
+ + + + +

{{lang.shoppingCar_goods_tock_qty}}:{{ item.stock_qty }}

+

{{lang.shoppingCar_tock_qty_tip}}

+
+ {{commonData.currency_prefix}} {{item.calcItemPrice | filterMoney}} + +
+

+ {{lang.shoppingCar_tip_text2}}:{{commonData.currency_prefix}} {{ + item.level_discount | filterMoney }} +

+

+ {{lang.shoppingCar_tip_text4}}:{{commonData.currency_prefix}} {{ item.code_discount + | filterMoney }} +

+

{{lang.goods_text4}}:{{commonData.currency_prefix}} {{ + item.eventDiscount | filterMoney }}

+
+ +
+

+ {{commonData.currency_prefix}} {{item.price | filterMoney}} +

+
+ + +
+ {{ item.customfield.promo_code }} + +
+ + +
+ +
+ +
+ {{lang.shoppingCar_no_goods_tip}} + {{lang.shoppingCar_buy_again}} + + +
+
+
+
+
+
+ +
+
+
+
+ + + +
+
+
+ + + + + diff --git a/clientarea/cart/hgcart/theme.jpg b/clientarea/cart/hgcart/theme.jpg new file mode 100644 index 0000000..37ef1ae Binary files /dev/null and b/clientarea/cart/hgcart/theme.jpg differ