This commit is contained in:
xyc 2025-06-10 17:53:26 +08:00
parent 17b1ae834f
commit 2d8bc14de2
11 changed files with 2007 additions and 197 deletions

View File

@ -106,10 +106,16 @@
getgogo(index) {
if (index == 1) {
this.aindex = index
uni.reLaunch({
url: '/pages/staff/staff'
});
let chooseIdx = uni.getStorageSync("chooseIdx")
if (chooseIdx == 3) {
uni.reLaunch({
url: '/pages/businessManager/businessManager'
});
} else {
uni.reLaunch({
url: '/pages/staff/staff'
});
}
}
if (index == 3) {
this.aindex = index

View File

@ -532,6 +532,13 @@
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
},
{
"path": "pages/businessManager/businessManager",
"style": {
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
}
],
"globalStyle": {

View File

@ -11,97 +11,106 @@
<script>
import request from '../../utils/request';
import {setToken} from '@/utils/auth.js'
import { getToken } from '@/utils/auth'
export default{
data(){
return{
import {
setToken
} from '@/utils/auth.js'
import {
getToken
} from '@/utils/auth'
export default {
data() {
return {
phoneNumber: "",
shopinfo:0,
yd:false,
shopinfo: 0,
yd: false,
isButtonDisabled: false,
countdownTime: 60,
qh:[
{text:'密码登录'},
{text:'验证码登录'},
qh: [{
text: '密码登录'
},
{
text: '验证码登录'
},
// {text:''}
],
tel:'',
yzm:'',
wrod:'',
activeid:0
tel: '',
yzm: '',
wrod: '',
activeid: 0
}
},
onLoad() {
if(getToken()){
let info = uni.getStorageSync('userinfo')
let chooseIdx = uni.getStorageSync("chooseIdx")
if(chooseIdx==null){
uni.navigateTo({
url:'/pages/Login/login'
})
}
else if(chooseIdx == 0){
uni.navigateTo({
url:'/pages/index/newindex'
})
}else if(chooseIdx == 2){
uni.navigateTo({
url:'/pages/staff/staff'
})
}
else if(chooseIdx == 1){
uni.navigateTo({
url:'/pages/authority/authority'
})
}
if (getToken()) {
let info = uni.getStorageSync('userinfo')
let chooseIdx = uni.getStorageSync("chooseIdx")
if (chooseIdx == null) {
uni.navigateTo({
url: '/pages/Login/login'
})
} else if (chooseIdx == 0) {
uni.navigateTo({
url: '/pages/index/newindex'
})
} else if (chooseIdx == 2) {
uni.navigateTo({
url: '/pages/staff/staff'
})
} else if (chooseIdx == 3) {
uni.navigateTo({
url: '/pages/businessManager/businessManager'
})
} else if (chooseIdx == 1) {
uni.navigateTo({
url: '/pages/authority/authority'
})
}
}else{
} else {
uni.navigateTo({
url:'/pages/Login/login'
url: '/pages/Login/login'
})
}
},
computed: {
buttonText() {
if (this.isButtonDisabled) {
return `${this.countdownTime}s 后重新发送`;
} else {
return "获取验证码";
}
},
},
methods:{
buttonText() {
if (this.isButtonDisabled) {
return `${this.countdownTime}s 后重新发送`;
} else {
return "获取验证码";
}
},
},
methods: {
//
getlogin(){
if(this.yd == false){
getlogin() {
if (this.yd == false) {
uni.showToast({
title:'请仔细阅读用户协议与隐私政策!',
icon:'none'
title: '请仔细阅读用户协议与隐私政策!',
icon: 'none'
})
return
}
if(this.tel == ''){
if (this.tel == '') {
uni.showToast({
title:'输入框不能为空!',
icon:'none'
title: '输入框不能为空!',
icon: 'none'
})
return
}
if(this.activeid == 0){
const data ={
username:this.tel,
password:this.wrod,
type:0
if (this.activeid == 0) {
const data = {
username: this.tel,
password: this.wrod,
type: 0
}
request({
url: '/loginApp',
method: 'post',
data: data
}).then((res)=>{
if(res.code == 200){
}).then((res) => {
if (res.code == 200) {
setToken(res.token)
// uni.showToast({
// title:'',
@ -113,18 +122,18 @@
})
}
if(this.activeid == 1){
const data ={
phone:this.tel,
code:this.yzm,
type:1
if (this.activeid == 1) {
const data = {
phone: this.tel,
code: this.yzm,
type: 1
}
request({
url: '/loginApp',
method: 'post',
data: data
}).then((res)=>{
if(res.code == 200){
}).then((res) => {
if (res.code == 200) {
setToken(res.token)
this.userinfo()
@ -135,8 +144,8 @@
})
}
},
userinfo(){
if(this.shopinfo == 0){
userinfo() {
if (this.shopinfo == 0) {
uni.showLoading({
title: '加载中'
});
@ -144,25 +153,25 @@
url: '/getJcPartnerInfo',
method: 'get',
}).then((res)=>{
if(res.code == 500){
}).then((res) => {
if (res.code == 500) {
uni.showToast({
title:"信息有误"
title: "信息有误"
})
return
}
let userJson = {}
userJson.userId = res.user.userId
uni.setStorageSync('userinfo',res.user)
uni.setStorageSync('userinfo', res.user)
this.goselect()
if(res.code == 200){
uni.hideLoading();
if (res.code == 200) {
uni.hideLoading();
this.goselect()
}
})
}
if(this.shopinfo == 1){
if (this.shopinfo == 1) {
uni.showLoading({
title: '加载中'
});
@ -170,15 +179,15 @@
url: '/getJcWorkerInfo',
method: 'get',
}).then((res)=>{
}).then((res) => {
let userJson = {}
userJson.userId = res.user.userId
uni.setStorageSync('userinfo',res.user)
uni.setStorageSync('partnerId',res.partnerInfo.partnerId)
if(res.code == 200){
uni.hideLoading();
uni.setStorageSync('userinfo', res.user)
uni.setStorageSync('partnerId', res.partnerInfo.partnerId)
if (res.code == 200) {
uni.hideLoading();
uni.navigateTo({
url:'/pages/staff/staff'
url: '/pages/staff/staff'
})
}
})
@ -187,30 +196,30 @@
},
getxz(index){
getxz(index) {
this.activeid = index
},
getxz1(){
getxz1() {
uni.navigateTo({
url:'/pages/Login/modify'
url: '/pages/Login/modify'
})
},
goregister(){
goregister() {
uni.navigateTo({
url:'/pages/login/register'
url: '/pages/login/register'
})
},
goforgot(){
goforgot() {
uni.navigateTo({
url:'/pages/login/forgot'
url: '/pages/login/forgot'
})
},
goselect(){
goselect() {
uni.navigateTo({
url:'/pages/index/index'
url: '/pages/index/index'
})
},
//
@ -224,80 +233,82 @@
this.tel = '';
return false;
}
if (this.isButtonDisabled) {
return; //
}
const data = {
phone:this.tel,
}
request({
url: '/loginSmsCode',
method: 'post',
params: data
}).then((res)=>{
if(res.code == 200){
uni.showToast({
title:'验证码已发送 请注意查收',
icon:'none'
})
}else{
uni.showToast({
title:'网络不佳请稍后再试',
icon:'none'
})
}
if (this.isButtonDisabled) {
return; //
}
const data = {
phone: this.tel,
}
request({
url: '/loginSmsCode',
method: 'post',
params: data
}).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '验证码已发送 请注意查收',
icon: 'none'
})
} else {
uni.showToast({
title: '网络不佳请稍后再试',
icon: 'none'
})
}
})
this.disableButton(); //
this.startCountdown(); //
this.disableButton(); //
this.startCountdown(); //
},
disableButton() {
this.isButtonDisabled = true;
this.isButtonDisabled = true;
},
enableButton() {
this.isButtonDisabled = false;
this.isButtonDisabled = false;
},
startCountdown() {
let countdown = setInterval(() => {
this.countdownTime--;
if (this.countdownTime === 0) {
clearInterval(countdown);
this.enableButton(); //
}
}, 1000);
let countdown = setInterval(() => {
this.countdownTime--;
if (this.countdownTime === 0) {
clearInterval(countdown);
this.enableButton(); //
}
}, 1000);
},
}
}
</script>
<style scoped lang="scss">
.jsq{
.jsq {
border: none !important;
font-size: 12px;
height: 30px;
font-weight: 400;
color: #0078FF;
}
button {
border: none !important;
background: none !important;
margin: 0px;
display: block;
}
button:focus {
color: #0078FF;
outline: none;
box-shadow: none;
}
.content{
box-sizing: border-box;
background: linear-gradient(180deg, rgba(13,46,141,0.2) 0%, rgba(255,255,255,0) 100%);
border: none !important;
background: none !important;
margin: 0px;
display: block;
}
.top{
button:focus {
color: #0078FF;
outline: none;
box-shadow: none;
}
.content {
box-sizing: border-box;
background: linear-gradient(180deg, rgba(13, 46, 141, 0.2) 0%, rgba(255, 255, 255, 0) 100%);
}
.top {
box-sizing: border-box;
padding: 0px 27px;
padding-top: 100px;
@ -308,7 +319,8 @@
width: 100%;
height: calc(100vh);
}
.touxiang{
.touxiang {
width: 88px;
height: 88px;
border-radius: 10px;
@ -316,17 +328,20 @@
margin: 0 auto;
margin-bottom: 40px;
overflow: hidden;
image{
image {
width: 100%;
height: 100%;
}
}
.twotap{
.twotap {
margin-top: 10px;
width: 100%;
display: flex;
align-items: center;
view{
view {
font-size: 12px;
font-family: Microsoft YaHei;
font-weight: 400;
@ -334,20 +349,23 @@
margin-right: 38.5px;
}
}
.blck{
.blck {
color: #333333 !important;
font-weight: bold !important;
}
.inputs{
.inputs {
height: 54px;
box-sizing: border-box;
padding: 16px 0px;
display: flex;
align-items: center;
border-bottom: 2px solid #E8E8E8 ;
border-bottom: 2px solid #E8E8E8;
margin-top: 20px;
}
.wjworb{
.wjworb {
margin-top: 5px;
width: 100%;
display: flex;
@ -357,7 +375,8 @@
align-items: center;
}
.dl{
.dl {
width: 90%;
height: 44px;
background: linear-gradient(-46deg, #0853C4 0%, #4282D8 80%);
@ -370,7 +389,8 @@
align-items: center;
margin-top: 22px;
}
.hging{
.hging {
width: 100%;
text-align: center;
font-size: 14px;
@ -378,26 +398,30 @@
color: #636363;
margin-top: 20px;
}
.wx{
.wx {
width: 38px;
height: 38px;
overflow: hidden;
box-sizing: border-box;
margin: 0px auto;
margin-top: 20px;
image{
image {
width: 100%;
height: 100%;
}
}
.hui{
.hui {
font-size: 10px;
width: 100%;
text-align: center;
font-weight: 400;
color: #666666;
}
.dbottom{
.dbottom {
display: flex;
align-items: center;
justify-content: center;
@ -410,23 +434,26 @@
bottom: 25px;
}
.lan{
.lan {
color: #0D2E8D;
}
.box-box{
.box-box {
width: 95%;
margin: 20px auto;
border-radius: 8px;
overflow: hidden;
}
.bb-top{
.bb-top {
height: 65px;
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.bb-bai{
.bb-bai {
width: 50%;
height: 100%;
display: flex;
@ -437,8 +464,9 @@
background: #FFFFFF;
color: #0D2E8D;
}
.bb-hui{
height: 100%;
.bb-hui {
height: 100%;
width: 50%;
display: flex;
align-items: center;
@ -448,13 +476,15 @@
font-weight: 400;
color: #FFFFFF;
}
.bb-baibox{
.bb-baibox {
box-sizing: border-box;
width: 100%;
padding: 15px;
background-color: white;
}
.anniulanan{
.anniulanan {
width: 90%;
height: 42px;
margin: 20px auto;
@ -465,20 +495,23 @@
background-color: #0D2E8D;
color: white;
}
.dalan{
.dalan {
font-size: 25px;
font-weight: bold;
color: #0D2E8D;
margin-left: 10px;
}
.axquan{
.axquan {
width: 14px;
height: 14px;
border-radius: 50%;
border: 1px solid #AAAAAA;
margin-right: 5px;
}
.axquanl{
.axquanl {
width: 14px;
height: 14px;
border-radius: 50%;
@ -486,5 +519,4 @@
margin-right: 5px;
background-color: #0D2E8D;
}
</style>
</style>

View File

@ -34,6 +34,9 @@
<view class="bb-bai" :class="{'shendu' : shopinfo == 2}" @click="shopinfo = 2">
<text>员工登录</text>
</view>
<view class="bb-bai" :class="{'shendu' : shopinfo == 3}" @click="shopinfo = 3">
<text>业务登录</text>
</view>
</view>
<view class="bb-baibox">
@ -231,7 +234,7 @@
}).then((res) => {
if (res.code == 200) {
uni.setStorageSync('staffinfo', res.data.user)
uni.setStorageSync('staffinfo', res.data)
uni.setStorageSync('partnerId', res.data.partnerId)
uni.setStorageSync('roleSelect', 'worker')
uni.setStorageSync('userId', res.data.user.id)
@ -243,6 +246,29 @@
}
})
}
if (this.shopinfo == 3) {
uni.showLoading({
title: '加载中'
});
request({
url: '/rescue/getJcWorkerInfo',
method: 'get',
}).then((res) => {
if (res.code == 200) {
uni.setStorageSync('staffinfo', res.data)
uni.setStorageSync('partnerId', res.data.partnerId)
uni.setStorageSync('roleSelect', 'businessManager')
uni.setStorageSync('userId', res.data.user.id)
uni.hideLoading();
this.$startSocketConnect(res.data.user.id)
uni.redirectTo({
url: '/pages/businessManager/businessManager'
})
}
})
}
if (this.shopinfo == 1) {
uni.showLoading({

File diff suppressed because it is too large Load Diff

View File

@ -255,6 +255,7 @@
xinlist: [],
zhilist: [],
isLoading: false,
userInfo: {},
recordTime: Number(new Date()),
baseUrl: this.$baseImageUrl,
goodsId: '',
@ -266,6 +267,10 @@
{
name: '上门取车',
label: 1
},
{
name: '业务接车',
label: 2
}
],
radiovalue1: 0,
@ -299,6 +304,46 @@
async onLoad(options) {
this.isLoading = true
await this.getinitialize()
this.userInfo = uni.getStorageSync('staffinfo')
if (!this.userInfo || !this.userInfo.userInfo) {
request({
url: '/rescue/getJcWorkerInfo',
method: 'get',
}).then((res) => {
if (res.code == 200) {
uni.setStorageSync('staffinfo', res.data)
uni.setStorageSync('userId', res.data.user.id)
}
})
}
console.log('当前用户信息', this.userInfo);
if (this.userInfo.userInfo) {
this.otherPhone = this.userInfo.userInfo.mobile
this.otherName = this.userInfo.userInfo.nickname
}
if (options.type) {
if (options.type === 'business') {
//
//1.
this.radiovalue1 = 2
//2.
console.log('客户来源', this.columns);
console.log('当前userId', uni.getStorageSync('userId'));
const result = this.findUserWithParent(this.columns, uni.getStorageSync('userId'))
console.log('查询出来的shuju ', result)
if (result) {
this.customerSource = result.child.name
this.customerSourceId = result.child.id
this.businessChannel = result.parent.name
this.businessChannelId = result.parent.id
this.cssj = this.customerSourceId
}
console.log(this.customerSource, this.businessChannel);
}
}
this.isLoading = false
},
onShow() {
@ -322,13 +367,30 @@
this.customerSourceId = e.detail.value[1].value
this.businessChannel = e.detail.value[0].text
this.businessChannelId = e.detail.value[0].value
console.log('客户来源', this.customerSource);
console.log('bangding', this.cssj);
},
onnodeclick(e) {
console.log('选择的内容', e);
console.log('bangding', this.cssj);
},
/**
* @param {Object} data
* @param {Object} userId
*/
findUserWithParent(data, userId) {
for (const parent of data) {
if (Array.isArray(parent.children)) {
for (const child of parent.children) {
if (child.userIds && child.userIds.includes(userId)) {
return {
parent,
child
};
}
}
}
}
return null; //
},
async getCustomerSource(searchValue) {
console.log('搜索内容', searchValue);
let res = await request({

View File

@ -81,7 +81,7 @@
</view>
<view class="on-input" v-if="item.nodeNames">
<uni-icons type="more" color="#999999" size="16"></uni-icons>
<text class="single-line" style="color: red;" v-if="tapValue == '4'">需复检项目</text>
<text class="single-line" style="color: red;" v-if="tapValue == '4'">需复检|重检项目</text>
<text class="single-line" style="color: red;width: 150rpx;" v-else>异常项目</text>
<text class="multi-line" :style="true ? 'color:red' : ''">{{ item.nodeNames }}</text>
</view>
@ -148,17 +148,16 @@
text: "进行中",
value: "0"
},
{
text: "已完成",
value: "1",
},
// {
// text: "",
// value: "2"
// },
{
text: "待重检",
value: "2"
},
{
text: "待复检",
text: "待审核",
value: "4"
},
{
@ -293,8 +292,7 @@
method: 'get',
params: {
ids: ids.join(','),
status: 3,
type: this.tapValue == '7' ? '0' : ''
type: this.tapValue == '4' ? '0' : ''
}
})
} else if (this.tapValue == '5') {

View File

@ -259,8 +259,14 @@
console.log('当前选择的汇报对象', this.reportTosStr)
if (res.data.filePath) {
this.fileList1 = res.data.filePath.split(',').map(item => {
return {
url: this.baseImageUrl + "/" + item
if (!item.includes('http')) {
return {
url: this.baseImageUrl + "/" + item
}
} else {
return {
url: item
}
}
})
}

View File

@ -131,6 +131,18 @@
<uni-icons type="right" color="#999999" size="16"></uni-icons>
</view>
</view>
<view class="on-input" @click="checkoutRole()">
<view class="dix">
<view class="d-icon">
<image src="../../static/detection/tc.png" mode=""></image>
</view>
<view class="aa">{{chooseIdx == 3 ? '切换员工端' : '切换业务经理端'}}</view>
</view>
<view class="">
<uni-icons type="right" color="#999999" size="16"></uni-icons>
</view>
</view>
</view>
</view>
<uni-popup ref="alertDialog" type="dialog">
@ -157,13 +169,15 @@
msg: '3',
user: {},
baseUrl: '',
chooseIdx: undefined,
partnerId: '',
myindex: {},
lookAppointment: false
}
},
onLoad() {
this.baseUrl = this.$baseImageUrl + '/'
this.baseUrl = this.$baseImageUrl + '/',
this.chooseIdx = uni.getStorageSync("chooseIdx")
},
onShow() {
this.user = uni.getStorageSync('staffinfo')
@ -207,6 +221,20 @@
url: `/pages/editUserInfo/editUserInfo`
});
},
checkoutRole() {
uni.showLoading({
title: '加载中'
});
if (this.chooseIdx == 3) {
uni.setStorageSync("chooseIdx", 2)
} else {
uni.setStorageSync("chooseIdx", 3)
}
setTimeout(function() {
uni.hideLoading();
}, 1000);
this.chooseIdx = uni.getStorageSync("chooseIdx")
},
dialogClose() {
this.$refs.alertDialog.close()
console.log('点击关闭')

View File

@ -69,11 +69,11 @@
<view class="title_">资料统计</view>
<view class="box_">
<view class="d_b" style="display: flex; flex-wrap: wrap;">
<view class="three_">
<view class="three_" @click="goxiangqing2(6,'add')">
<view class="text_">新增</view>
<view class=""> {{fileRes.addCount || 0}}</view>
</view>
<view class="three_">
<view class="three_" @click="goxiangqing2(6,'update')">
<view class="text_">修改</view>
<view class=""> {{fileRes.updateCount || 0}}</view>
</view>
@ -467,6 +467,12 @@
})
}
},
//
goxiangqing2(id, type) {
uni.navigateTo({
url: '/pages/statistics/statislist?id=' + id + '&type=' + type
})
},
goOrderList() {
uni.navigateTo({
url: '/pages/index/ordermanage'

View File

@ -93,7 +93,7 @@
<image src="http://www.nuoyunr.com/lananRsc/detection/qs.png" mode=""></image>
</view>
<view class="waigg">
<view class="top-boxx" v-for="(item,index) in datas" :key="index" @click ="goProjectList(item)">
<view class="top-boxx" v-for="(item,index) in datas" :key="index" @click="goProjectList(item)">
<view class="t-top">
<view class="t-title" style="display: flex; align-items: center; ">{{ item.name || '' }}:
@ -103,15 +103,35 @@
</view>
</view>
</view>
<view v-if="id == 6">
<view class="jsy" v-if="datas.length == 0">
<image src="http://www.nuoyunr.com/lananRsc/detection/qs.png" mode=""></image>
</view>
<view class="">
<view class="top-boxx2" v-for="(item,index) in datas" :key="index"
style="display: flex;padding: 15rpx;justify-content: space-between;">
<view class="" style="">
<view class="" style=" ">
资料名称{{ item.fileName || '' }}
</view>
<view style="margin-top: 20rpx;">{{ type=='add' ? '新增时间' : '修改时间' }}
{{formatDate(item.createTime)}}
</view>
<view class="" style="margin-top: 20rpx;">类型 {{ item.type == 2 ?'文件' :'文件夹' }}</view>
</view>
<view v-if="item.type=='2'" style="color: #3D89FC;" @click="viewFile(item.filePath)">查看文件</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import config from '@/config'
import request from '../../utils/request';
import * as utils from '../../utils/utils';
import headersVue from "@/components/header/headers.vue";
export default {
@ -126,6 +146,7 @@
range: ['2023-9-28', '2023-10-7'],
titles: '',
businessId: '',
type: '',
}
},
@ -170,11 +191,20 @@
this.getCustomerSourceCount()
this.titles = '客户来源统计'
}
if (this.id == 6) {
this.getMonth()
this.getFileBytype()
this.type = option.type
this.titles = '资料统计'
}
},
onShow() {
},
methods: {
formatDate(time) {
return utils.formatDateTimeToMinute(time);
},
gettime() {
//
var now = new Date();
@ -197,6 +227,28 @@
this.range[1] = currentTime
},
getMonth() {
//
const now = new Date();
//
const year = now.getFullYear();
let month = now.getMonth() + 1; // 0
//
const formatNumber = (num) => (num < 10 ? '0' + num : num);
//
const firstDay = `${year}-${formatNumber(month)}-01`;
//
const lastDate = new Date(year, month, 0).getDate();
const lastDay = `${year}-${formatNumber(month)}-${formatNumber(lastDate)}`;
//
this.range[0] = firstDay;
this.range[1] = lastDay;
},
async getone() {
let data = {
startTime: this.range[0],
@ -223,11 +275,11 @@
this.datas = res.data
},
goProjectList(data){
uni.navigateTo({
url: "/pages/index/staffProjectList/staffProjectList?customerSource=" + data.name
})
},
goProjectList(data) {
uni.navigateTo({
url: "/pages/index/staffProjectList/staffProjectList?customerSource=" + data.name
})
},
async getthree() {
let data = {
startTime: this.range[0],
@ -241,6 +293,40 @@
this.datas = res.data
},
viewFile(filePath) {
let url = ''
//http
if (filePath.indexOf('http') === -1) {
url = this.$baseImageUrl + '/' + filePath
} else {
url = filePath
}
uni.downloadFile({
url: url,
success: (res) => { // 使
var filePath = res.tempFilePath;
this.isLoading = false;
uni.openDocument({
filePath: filePath,
showMenu: true,
success: (res) => {
console.log("文件打开成功");
},
fail: (err) => {
console.error("文件打开失败", err);
uni.showToast({
title: '文件打开失败',
icon: 'none'
});
}
});
},
fail: (err) => {
console.error("文件下载失败", err);
}
});
},
async getfour() {
let data = {
startTime: this.range[0],
@ -267,6 +353,23 @@
})
this.datas = res.data
},
async getFileBytype() {
let data = {
startTime: this.range[0],
endTime: this.range[1],
servicePackageId: 'jiance'
}
let res = await request({
url: '/partnerOwn/partner/getFileByType',
method: 'get',
params: data
})
if (this.type == 'add') {
this.datas = res.data.insertFile
} else {
this.datas = res.data.updateFile
}
},
maskClick(e) {
console.log('执行了吗');
if (this.id == 1) {
@ -356,6 +459,16 @@
margin-top: 10px;
}
.top-boxx2 {
border-radius: 5px;
box-sizing: border-box;
// padding: 18px;
background-color: white;
margin-top: 10px;
}
.cont-box {