人气榜
-
+
- {{popularityName}}
+ {{ popularityName }}
总
@@ -372,7 +393,8 @@
-
@@ -477,6 +500,9 @@ import apiDict from "@/api/modules/dict.js";
import apiType from "@/api/modules/type.js";
import { cutFullName } from "@/utils/tools.js";
import apiPlace from "@/api/phase2/place.js"
+import AICall from '@/views/portal/case/AICall.vue'
+import { showCaseAiEntrance } from '@/api/boe/aiChat.js'
+
export default {
name: "case",
components: {
@@ -486,9 +512,12 @@ export default {
interactBar,
timeShow,
author,
+ AICall
},
data() {
return {
+ showAiCase:false,
+ showAICall:false,
timeoutId: null,
isTimeData: false,
articlePageList: [],
@@ -503,10 +532,10 @@ export default {
popularityName: '季度',
pubTimeNum: 1,
pageViewNum: 0,
- twoId:'',
- treeList:[],
- caseType:process.env.VUE_APP_CASE_TYPE,//类型
- caseYears:[],
+ twoId: '',
+ treeList: [],
+ caseType: process.env.VUE_APP_CASE_TYPE,//类型
+ caseYears: [],
refId: '',//消息跳转案例的id
selectList: [],//点击选中的list
twoList: [], //二级分类{type:12}
@@ -558,9 +587,9 @@ export default {
// notInIds: [],//重复的id
orderField: "id",
orderAsc: false,//排序
- sysType1:'',
- sysType2:'',
- sysType3:''
+ sysType1: '',
+ sysType2: '',
+ sysType3: ''
},
keyWord: "",
anking: 2,
@@ -633,7 +662,7 @@ export default {
twoChildChecked = true;
}
var threeChildChecked = false;
- two.children && two.children.forEach(three => {
+ two.children && two.children.forEach(three => {
if (three.checked) {
list.push(three);
threeChildChecked = true;
@@ -664,25 +693,25 @@ export default {
return !this.speciData.some(item => item.fielclass);
}
},
- beforeRouteLeave (to, from, next) {
+ beforeRouteLeave(to, from, next) {
const isScroll = 'caseDetail,caseCharts,caseExcellent'
- if(!isScroll.includes(to.name)){
+ if (!isScroll.includes(to.name)) {
// console.log('我是外')
this.queryCondition.pageIndex = 1
this.search()
// window.location.reload()
// this.$destroy()
- }else{
+ } else {
sessionStorage.setItem('pagesScroll', JSON.stringify(window.pageYOffset))
}
window.removeEventListener("scroll", this.handleScroll);
next()
},
beforeRouteEnter(to, from, next) {
- if(from.name !== 'caseDetail'){
+ if (from.name !== 'caseDetail') {
// console.log('我是内')
}
- next(vm=>{
+ next(vm => {
vm.$nextTick(() => {
window.scrollTo({
left: 0,
@@ -761,6 +790,7 @@ export default {
},
mounted() {
let $this = this;
+ this.getShowAiCase()
// if(this.speciData.length==0){
// this.specialized();
// }
@@ -774,12 +804,12 @@ export default {
}
// console.log(isBack, 'isBack');
// Promise.all([apiType.items("org_domain"), apiCase.majorTypes()]).then(rs => {
- // 90是测试环境,155是生产环境
- // console.log(this.caseType);
+ // 90是测试环境,155是生产环境
+ // console.log(this.caseType);
- Promise.all([apiType.treeList(1,Number(this.caseType ?? 155),1), apiCase.majorTypes()]).then(rs => {
+ Promise.all([apiType.treeList(1, Number(this.caseType ?? 155), 1), apiCase.majorTypes()]).then(rs => {
if (rs[0].code == 200) {
- const {records} = rs[0].data
+ const { records } = rs[0].data
records.forEach(item => {
item.fielclass = false;
item.type = 'org_domain';
@@ -845,27 +875,35 @@ export default {
},
methods: {
- allRequests(){
+// 是否展示入口
+ getShowAiCase(){
+ showCaseAiEntrance().then(res=>{
+ this.showAiCase = res.data
+ })
+ },
+
+
+ allRequests() {
window.addEventListener(
"scroll",
this.handleScroll
);
},
- deleteFavorite(e){
+ deleteFavorite(e) {
this.search()
},
- positiveReview(e){
+ positiveReview(e) {
this.favorableName = this.switch[e]
this.getPositive()
},
- popularityReview(e){
+ popularityReview(e) {
this.popularityName = this.switch[e]
this.getPopularity()
},
- handleType(msg){
+ handleType(msg) {
// this.queryCondition.type = msg
},
- handleOptionClick(treeItem){
+ handleOptionClick(treeItem) {
this.treeList.forEach(one => {
one.checked = false;
if (one.id == treeItem.id) {
@@ -874,7 +912,7 @@ export default {
this.queryCondition.sysType3 = ''
this.queryCondition.sysType1 = one.id
}
- one.children.forEach(two => {
+ one.children.forEach(two => {
two.checked = false;
if (two.id == treeItem.id) {
two.checked = true
@@ -895,7 +933,7 @@ export default {
})
this.getCaseData()
},
- // 移入
+ // 移入
changeIndex(twoId) {
this.twoId = twoId
},
@@ -903,20 +941,20 @@ export default {
leaveIndex() {
this.twoId = ''
},
- // 加载分类
+ // 加载分类
async loadTypeData() {
try {
const { result, status } = await apiType.tree(1);
if (status === 200) {
result.forEach(one => {
one.checked = false;
- if(!one.children) one.children = []
+ if (!one.children) one.children = []
one.children && one.children.forEach(two => {
two.checked = false;
- if(!two.children) two.children = []
+ if (!two.children) two.children = []
two.children && two.children.forEach(three => {
three.checked = false;
- if(!three.children) three.children = []
+ if (!three.children) three.children = []
})
})
})
@@ -940,23 +978,23 @@ export default {
},
// 查看率的时间
toCaseDetail(id, refId) {
- if(!id){
+ if (!id) {
this.$message.error('该案例已被删除')
return
}
- apiCase.details(id,true).then(res=>{
+ apiCase.details(id, true).then(res => {
if (res.status == 200) {
if (refId) {
apiCase.startReadTimer(refId)
}
this.$router.push({ path: '/case/detail', query: { id } });
- }else{
+ } else {
this.$message.error(res.message);
}
})
},
- toExcellent(item){
- this.$router.push({path:'/case/excellent',query:{majorId:item.majorId,majorName:item.majorName,riseRankTime:item.riseRankTime.split(' ')[0]}})
+ toExcellent(item) {
+ this.$router.push({ path: '/case/excellent', query: { majorId: item.majorId, majorName: item.majorName, riseRankTime: item.riseRankTime.split(' ')[0] } })
},
tylClick() {
window.open("https://m.qingxuetang.com/x/?appId=qxtcorp306130");
@@ -1259,31 +1297,31 @@ export default {
this.isSeach = true;
this.search(true);
},
- searchTime(){
+ searchTime() {
this.pubTimeNum++
- if(this.pubTimeNum>2){
+ if (this.pubTimeNum > 2) {
this.pubTimeNum = 0;
}
- if(this.pubTimeNum != 0){
+ if (this.pubTimeNum != 0) {
this.pageViewNum = 0;
}
this.queryCondition.orderField = 'sysCreateTime'
this.queryCondition.orderAsc = this.pubTimeNum == 2 ? true : this.pubTimeNum == 1 ? false : ''
this.search(true);
},
- searchPageView(){
+ searchPageView() {
this.pageViewNum++
- if(this.pageViewNum>2){
+ if (this.pageViewNum > 2) {
this.pageViewNum = 0;
}
- if(this.pageViewNum != 0){
+ if (this.pageViewNum != 0) {
this.pubTimeNum = 0;
}
this.queryCondition.orderField = 'views'
this.queryCondition.orderAsc = this.pageViewNum == 2 ? true : this.pageViewNum == 1 ? false : ''
this.search(true);
},
- yearsChange(e){
+ yearsChange(e) {
this.search(true)
},
searchexcellent(num) {
@@ -1300,24 +1338,24 @@ export default {
// this.search(true)
// return
// }
- this.queryCondition.excellent =false;
+ this.queryCondition.excellent = false;
this.queryCondition.type = num;
this.years = []
- if(num == 'excellent'){
- this.queryCondition.excellent =true;
+ if (num == 'excellent') {
+ this.queryCondition.excellent = true;
this.queryCondition.type = num;
}
- if(num == 'all' || num == 'recommend'){
+ if (num == 'all' || num == 'recommend') {
this.pubTimeNum = 1
this.queryCondition.orderField = 'sysCreateTime'
this.queryCondition.orderAsc = false
}
- if(num == 'time'){
+ if (num == 'time') {
this.isTime = true
this.caseTimeShow = false
this.isTimeData = true
}
- if(num == 'collect'){
+ if (num == 'collect') {
this.caseTimeShow = false
}
if (this.timeoutId) {
@@ -1339,16 +1377,16 @@ export default {
// 滚动请求
handleScroll() {
let innerw = document.querySelector("#fixd-box");
- // let innerHeight = document.querySelector("#case-list-content")
- // .clientHeight;
- // let outerHeight = document.documentElement.clientHeight;
+ // let innerHeight = document.querySelector("#case-list-content")
+ // .clientHeight;
+ // let outerHeight = document.documentElement.clientHeight;
let outerWidth = innerw.clientWidth;
let scrollTop = document.documentElement.scrollTop;
- // if (outerHeight + scrollTop + 350 >= innerHeight) {
- // if (this.moreState == 1) {
- // this.debounce(this.loadMore(), 5000);
- // }
- // }
+ // if (outerHeight + scrollTop + 350 >= innerHeight) {
+ // if (this.moreState == 1) {
+ // this.debounce(this.loadMore(), 5000);
+ // }
+ // }
if (scrollTop > 260) {
document.querySelector("#fixd-box").style.cssText =
"position: fixed;top: 10px;width:" + outerWidth + "px";
@@ -1484,16 +1522,16 @@ export default {
// this.queryCondition.pubTimeNum = this.pubTimeNum
// this.queryCondition.pageViewNum = this.pageViewNum
this.numIsFalse = true
- if(this.queryCondition.type == 'collect'){
+ if (this.queryCondition.type == 'collect') {
const params = {
- pageIndex:this.queryCondition.pageIndex,
- pageSize:5,
- orderField:this.queryCondition.orderField,
- orderAsc:this.queryCondition.orderAsc
+ pageIndex: this.queryCondition.pageIndex,
+ pageSize: 5,
+ orderField: this.queryCondition.orderField,
+ orderAsc: this.queryCondition.orderAsc
}
- await apiCase.queryFavoriteCaseOfIndex(params).then(res=>{
- if(res.status == 200){
- if(res.result.list.length > 0){
+ await apiCase.queryFavoriteCaseOfIndex(params).then(res => {
+ if (res.status == 200) {
+ if (res.result.list.length > 0) {
this.isSeach = false;
res.result.list.forEach(item => {
item.majorType = item.majorType ? item.majorType.split(",") : [];
@@ -1506,8 +1544,8 @@ export default {
sex: null
};
});
- res.result.list.forEach(item=>{
- item.viewRankTags = item.viewRankTags?.slice(0,2)||[]
+ res.result.list.forEach(item => {
+ item.viewRankTags = item.viewRankTags?.slice(0, 2) || []
})
this.caseList.list = res.result.list
this.getCaseUserData(res.result.list);
@@ -1522,7 +1560,7 @@ export default {
})
return
}
- if(this.queryCondition.type=='time'){
+ if (this.queryCondition.type == 'time') {
// const data = {
// pageIndex: this.queryCondition.pageIndex,
// pageSize: 5,
@@ -1546,9 +1584,9 @@ export default {
const params = {
pageIndex: this.queryCondition.pageIndex,
}
- await apiCase.browsingHistory(params).then(res=>{
- if(res.status == 200){
- if(res.result.list.length > 0){
+ await apiCase.browsingHistory(params).then(res => {
+ if (res.status == 200) {
+ if (res.result.list.length > 0) {
this.isSeach = false;
res.result.list.forEach(item => {
item.majorType = item.majorType ? item.majorType.split(",") : [];
@@ -1561,8 +1599,8 @@ export default {
sex: null
};
});
- res.result.list.forEach(item=>{
- item.viewRankTags = item.viewRankTags?.slice(0,2)||[]
+ res.result.list.forEach(item => {
+ item.viewRankTags = item.viewRankTags?.slice(0, 2) || []
})
this.caseList.list = res.result.list
this.getCaseUserData(res.result.list);
@@ -1599,15 +1637,15 @@ export default {
} else {
this.moreState = 3;
}
- if(res.result.list.length ===0){
+ if (res.result.list.length === 0) {
this.moreState = 3;
this.isSeach = false;
}
- console.log(res?.result?.list ,'有没有数据1');
- res.result.list.forEach(item=>{
- item.viewRankTags = item.viewRankTags?.slice(0,2)||[]
+ console.log(res?.result?.list, '有没有数据1');
+ res.result.list.forEach(item => {
+ item.viewRankTags = item.viewRankTags?.slice(0, 2) || []
})
- console.log(res?.result?.list ,'有没有数据2');
+ console.log(res?.result?.list, '有没有数据2');
this.caseList.list = res.result.list
this.getCaseUserData(res.result.list);
// 给所有的赋值
@@ -1659,47 +1697,47 @@ export default {
// console.log(err);
// });
},
- getCase(ids,list){
- apiCase.ids(ids).then(res=>{
- if(res.status == 200) {
- this.isSeach = false;
- const listData = []
- list.forEach((item, index) => {
- res.result.some(con => {
+ getCase(ids, list) {
+ apiCase.ids(ids).then(res => {
+ if (res.status == 200) {
+ this.isSeach = false;
+ const listData = []
+ list.forEach((item, index) => {
+ res.result.some(con => {
if (con.id == item.contentId) {
- item.info = con;
- con.eventTime = item.eventTime
- listData.push(con)
- if(typeof item.info.majorType == 'string') {
- item.info.majorType = item.info.majorType.split(',');
- }
- return true;
+ item.info = con;
+ con.eventTime = item.eventTime
+ listData.push(con)
+ if (typeof item.info.majorType == 'string') {
+ item.info.majorType = item.info.majorType.split(',');
+ }
+ return true;
} else {
- return false;
+ return false;
}
- });
});
- listData.forEach(item=>{
- item.info = {};
- item.deleted=false;
- item.authorInfo = {
- aid: "",
- name: "",
- orgInfo: "",
- avatar: "",
- sex: null
- }
- item.isAll = false;
- })
- setTimeout(() => {
- this.numIsFalse = false
- }, 3000);
- this.getCaseUserData(listData);
- this.caseList.list = listData
- console.log(listData,'this.caseList.list')
- }
+ });
+ listData.forEach(item => {
+ item.info = {};
+ item.deleted = false;
+ item.authorInfo = {
+ aid: "",
+ name: "",
+ orgInfo: "",
+ avatar: "",
+ sex: null
+ }
+ item.isAll = false;
+ })
+ setTimeout(() => {
+ this.numIsFalse = false
+ }, 3000);
+ this.getCaseUserData(listData);
+ this.caseList.list = listData
+ console.log(listData, 'this.caseList.list')
+ }
})
- },
+ },
// getTags() {
// this.searchTags = [];
// let caseData = deepClone(this.queryCondition);
@@ -1742,12 +1780,12 @@ export default {
// },
tagsClose(tag, index) {
// 课程分类
- if(tag.hasOwnProperty('checked')){
+ if (tag.hasOwnProperty('checked')) {
tag.checked = false;
- this.queryCondition.sysType1 =''
- this.queryCondition.sysType2 =''
- this.queryCondition.sysType3 =''
- }else{
+ this.queryCondition.sysType1 = ''
+ this.queryCondition.sysType2 = ''
+ this.queryCondition.sysType3 = ''
+ } else {
// 案例分类
tag.fielclass = false;
}
@@ -1823,8 +1861,8 @@ export default {
// }
// });
- apiCase.queryPraisesNew(3,this.popularityName == '季度' ? 1 : 2).then(res => {
- if(res.status == 200) {
+ apiCase.queryPraisesNew(3, this.popularityName == '季度' ? 1 : 2).then(res => {
+ if (res.status == 200) {
this.Popularity = res.result
}
})
@@ -1846,16 +1884,16 @@ export default {
// // }
// }
// });
- apiCase.queryCommentsNew(3,this.favorableName == '季度' ? 3 : 4).then(res => {
- if(res.status == 200) {
+ apiCase.queryCommentsNew(3, this.favorableName == '季度' ? 3 : 4).then(res => {
+ if (res.status == 200) {
this.Positive = res.result
}
})
},
- getQueryRecommendRank(){
+ getQueryRecommendRank() {
apiCase.queryRecommendRank(3).then(res => {
- if(res.status == 200) {
+ if (res.status == 200) {
this.recommendRank = res.result
}
})
@@ -1864,6 +1902,13 @@ export default {
jumpRouter(item) {
// console.log(item)
this.$router.push(`/case/detail?id=${item.id}`);
+ },
+ // 案例立即咨询
+ getAICase() {
+ this.showAICall = true
+ },
+ onClose() {
+ this.showAICall = false
}
}
};
@@ -1874,37 +1919,42 @@ export default {
cursor: pointer;
font-weight: 400;
font-size: 14px;
- color: rgba(51,51,51,0.9);
+ color: rgba(51, 51, 51, 0.9);
}
-.el-icon--right{
+
+.el-icon--right {
margin-left: 14px !important;
}
-.the_charts{
- position: relative;
- display: flex;
- justify-content: center;
- align-items: center;
- margin-bottom: 10px;
- font-size: 17px;
- max-width: 400px;
- min-width: 260px;
- height: 47px;
- background: #DDEDFF;
- border-radius: 8px;
- .text{
- font-size: 17px;
- color: #387DF7;
- }
- .icon{
- position: absolute;
- font-size: 17px;
- color: #387DF7;
- right: 25px;
- top: 50%;
- transform: translateY(-50%);
- }
+.the_charts {
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ margin-bottom: 10px;
+ font-size: 17px;
+ max-width: 400px;
+ min-width: 260px;
+ height: 47px;
+ background: #DDEDFF;
+ border-radius: 8px;
+
+ .text {
+ font-size: 17px;
+ color: #387DF7;
}
+
+ .icon {
+ position: absolute;
+ font-size: 17px;
+ color: #387DF7;
+ right: 25px;
+ top: 50%;
+ transform: translateY(-50%);
+ }
+
+}
+
// 课程分类
.course-title-style {
position: relative;
@@ -1976,6 +2026,7 @@ export default {
}
}
+
.u-class {
::v-deep .el-dialog {
border-radius: 15px;
@@ -2106,7 +2157,8 @@ export default {
border: 0.96px solid rgba(140, 105, 242, 1);
box-shadow: 7px 5px 6px 0px rgba(76, 31, 221, 0.3);
}
- .text_msg{
+
+ .text_msg {
margin: 43px 0 0 222px;
font-size: 14px;
color: #000;
@@ -2489,19 +2541,23 @@ export default {
background-color: #fff;
display: flex;
align-items: center;
+
// margin-bottom: ;
- .pub_time{
+ .pub_time {
display: flex;
margin-right: 25px;
align-items: center;
cursor: pointer;
- .text{
+
+ .text {
font-size: 14px;
color: #333333;
}
- .triangle{
+
+ .triangle {
margin-left: 5px;
- .up-triangle{
+
+ .up-triangle {
width: 0;
height: 0;
border-left: 4px solid transparent;
@@ -2509,7 +2565,8 @@ export default {
border-bottom: 6px solid #DCDFE6;
margin-bottom: 2px;
}
- .down-triangle{
+
+ .down-triangle {
width: 0;
height: 0;
border-left: 4px solid transparent;
@@ -2518,7 +2575,8 @@ export default {
}
}
}
- .time{
+
+ .time {
position: relative;
display: flex;
justify-content: center;
@@ -2527,29 +2585,35 @@ export default {
width: 116px;
height: 38px;
border-radius: 4px;
+
// background: #04243C;
- &:hover{
+ &:hover {
// background: #387DF7;
border: 1px solid #387DF7;
- .text{
+
+ .text {
// color: #fff;
}
+
// .png{
// background: url('../../../assets/images/case/wighttime.png') no-repeat;
// }
}
- .png{
+
+ .png {
width: 18px;
height: 18px;
background: url('../../../../public/images/browse.png') no-repeat;
background-size: 100%;
margin-right: 9px;
}
- .text{
+
+ .text {
font-size: 14px;
color: #333333;
}
}
+
.time::before {
content: '';
position: absolute;
@@ -2562,7 +2626,8 @@ export default {
z-index: 1;
border-radius: 4px;
}
- .time_active{
+
+ .time_active {
display: flex;
justify-content: center;
align-items: center;
@@ -2571,19 +2636,22 @@ export default {
height: 38px;
background: #387DF7;
border-radius: 4px;
- .png{
+
+ .png {
width: 20px;
height: 20px;
background: url('../../../assets/images/case/wighttime.png') no-repeat;
background-size: 100%;
margin-right: 9px;
}
- .text{
+
+ .text {
font-size: 14px;
color: #fff;
}
}
- .collect{
+
+ .collect {
position: relative;
display: flex;
justify-content: center;
@@ -2592,29 +2660,35 @@ export default {
width: 116px;
height: 38px;
border-radius: 4px;
+
// background: #04243C;
- &:hover{
+ &:hover {
// background: #387DF7;
border: 1px solid #387DF7;
- .text{
+
+ .text {
// color: #fff;
}
+
// .png{
// background: url('../../../assets/images/case/wight.png') no-repeat;
// }
}
- .png{
+
+ .png {
width: 18px;
height: 18px;
background: url('../../../../public/images/collect.png') no-repeat;
background-size: 100%;
margin-right: 9px;
}
- .text{
+
+ .text {
font-size: 14px;
color: #333333;
}
}
+
.collect::before {
content: '';
position: absolute;
@@ -2627,7 +2701,8 @@ export default {
z-index: 1;
border-radius: 4px;
}
- .collect_active{
+
+ .collect_active {
display: flex;
justify-content: center;
align-items: center;
@@ -2636,26 +2711,29 @@ export default {
height: 38px;
background: #387DF7;
border-radius: 4px;
- .png{
+
+ .png {
width: 18px;
height: 18px;
background: url('../../../assets/images/case/wight.png') no-repeat;
background-size: 100%;
margin-right: 9px;
}
- .text{
+
+ .text {
font-size: 14px;
color: #fff;
}
}
}
- .back_num{
+ .back_num {
background: #FFFFFF;
display: flex;
justify-content: center;
padding: 0 40px;
- .search_div_num{
+
+ .search_div_num {
display: flex;
justify-content: center;
align-items: center;
@@ -2667,6 +2745,7 @@ export default {
color: #387DF7;
}
}
+
.data-content {
background-color: #fff;
padding: 5px 50px;
@@ -2700,12 +2779,13 @@ export default {
.case-info {
.case-info-cont {
- .case_text{
- font-size: 14px;
- font-weight: 400;
- color: #666666;
- margin-bottom: 8px;
- }
+ .case_text {
+ font-size: 14px;
+ font-weight: 400;
+ color: #666666;
+ margin-bottom: 8px;
+ }
+
.case-info-title {
font-size: 15px;
color: #333;
@@ -2804,4 +2884,22 @@ export default {
text-align: center;
}
}
+
+.AI-case {
+ margin-bottom: 10px;
+ position: relative;
+
+ img {
+ width: 100%;
+ }
+
+ span {
+ width: 160px;
+ height: 40px;
+ position: absolute;
+ left: 20px;
+ top: 105px;
+ cursor: pointer;
+ }
+}
diff --git a/src/views/portal/case/components/map.svg b/src/views/portal/case/components/map.svg
new file mode 100644
index 00000000..c35539ec
--- /dev/null
+++ b/src/views/portal/case/components/map.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/views/portal/case/components/messages.vue b/src/views/portal/case/components/messages.vue
new file mode 100644
index 00000000..9d7cfb38
--- /dev/null
+++ b/src/views/portal/case/components/messages.vue
@@ -0,0 +1,300 @@
+
+
+
+
+
+ {{messageData}}
+
+
+
+
+
+
+
+ 引用案例
+
+ {{ showAllCaseRefers ? '收起' : '查看更多' }}
+
+
+
+
+
+
+
+ {{ item.authorName }}
+ {{ item.orgInfo }}
+
+
+ {{ keyword }}
+
+
+
{{item.content}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/portal/case/components/sendMessage.vue b/src/views/portal/case/components/sendMessage.vue
new file mode 100644
index 00000000..6c3c7c52
--- /dev/null
+++ b/src/views/portal/case/components/sendMessage.vue
@@ -0,0 +1,386 @@
+
+
+
+
+
+
+
diff --git a/src/views/portal/case/components/u762.svg b/src/views/portal/case/components/u762.svg
new file mode 100644
index 00000000..61d75d58
--- /dev/null
+++ b/src/views/portal/case/components/u762.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/src/views/portal/case/components/user.svg b/src/views/portal/case/components/user.svg
new file mode 100644
index 00000000..3ffc87bc
--- /dev/null
+++ b/src/views/portal/case/components/user.svg
@@ -0,0 +1 @@
+
\ No newline at end of file