diff --git a/src/assets/imgs/rocket.png b/src/assets/imgs/rocket.png
new file mode 100644
index 0000000000000000000000000000000000000000..04a761984fcbb55be902145f0e72878a7c7689b0
Binary files /dev/null and b/src/assets/imgs/rocket.png differ
diff --git a/src/views/infra/chatGpt/HeadPortrait.vue b/src/views/infra/chatGpt/HeadPortrait.vue
new file mode 100644
index 0000000000000000000000000000000000000000..b82e98fc1a892a0f7c38d251a5852cf973883f29
--- /dev/null
+++ b/src/views/infra/chatGpt/HeadPortrait.vue
@@ -0,0 +1,47 @@
+
+
+
![]()
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/infra/chatGpt/PersonCard.vue b/src/views/infra/chatGpt/PersonCard.vue
new file mode 100644
index 0000000000000000000000000000000000000000..0e2dd4730fee510eddf33361cd6e5d6aa5f366a2
--- /dev/null
+++ b/src/views/infra/chatGpt/PersonCard.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+
{{ personInfo.name }}
+
{{ personInfo.detail }}
+
+
+
+
+
+
+
+
diff --git a/src/views/infra/chatGpt/chatwindow.vue b/src/views/infra/chatGpt/chatwindow.vue
new file mode 100644
index 0000000000000000000000000000000000000000..658f4e41bc92b8a1470b5a39b3377d88ee018bf5
--- /dev/null
+++ b/src/views/infra/chatGpt/chatwindow.vue
@@ -0,0 +1,472 @@
+
+
+
+
+
+
+
+ {{ item.msg }}
+
+
+
![表情]()
+
+
+
+
+
![]()
+
{{ item.name }}
+
{{ item.time }}
+
+
+
+
+ {{ item.msg }}
+
+
+
![表情]()
+
+
+
+
+
{{ item.name }}
+
{{ item.time }}
+
![]()
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/infra/chatGpt/index.vue b/src/views/infra/chatGpt/index.vue
new file mode 100644
index 0000000000000000000000000000000000000000..21bf41024a5801b4e1a8efc9c9eb8890fc41d9da
--- /dev/null
+++ b/src/views/infra/chatGpt/index.vue
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/infra/chatGpt/util.js b/src/views/infra/chatGpt/util.js
new file mode 100644
index 0000000000000000000000000000000000000000..cc77aa677b1456cb8500b5f3a7b9263eb0e06250
--- /dev/null
+++ b/src/views/infra/chatGpt/util.js
@@ -0,0 +1,88 @@
+//防抖
+export function debounce(fn) {
+ console.log(1)
+ let t = null //只会执行一次
+ debugger
+
+ return function (){
+ if(t){
+ clearTimeout(t)
+ }
+ t = setTimeout(()=>{
+ console.log(temp); //可以获取
+ // console.log(arguments[0]) //undefined
+ fn.apply(this,arguments)
+ //在这个回调函数里面的argument是这个回调函数的参数,因为没有参数所以undefined,可以通过外面的函数赋值来进行访问
+ //也可以改变成箭头函数,箭头函数的this是指向定义函数的那一层的,所以访问到的arguments是上一层函数的arguments
+ },1000)
+
+ }
+}
+//节流
+export function throttle(fn, delay = 200) {
+ let timer = null
+ console.log(fn);
+ debugger
+ return function () {
+ if(timer) return
+ timer = setTimeout(() => {
+ debugger
+ fn.apply(this,arguments)
+ timer = null
+ })
+ }
+ }
+//下拉动画
+ export function animation(obj, target, fn1) {
+ // console.log(fn1);
+ // fn是一个回调函数,在定时器结束的时候添加
+ // 每次开定时器之前先清除掉定时器
+ clearInterval(obj.timer);
+ obj.timer = setInterval(function () {
+ // 步长计算公式 越来越小
+ // 步长取整
+ var step = (target - obj.scrollTop) / 10;
+ step = step > 0 ? Math.ceil(step) : Math.floor(step);
+ if (obj.scrollTop >= target) {
+ clearInterval(obj.timer);
+ // 如果fn1存在,调用fn
+ if (fn1) {
+ fn1();
+ }
+ } else {
+ // 每30毫秒就将新的值给obj.left
+ obj.scrollTop = obj.scrollTop + step;
+ }
+ }, 10);
+ }
+
+ //判断文件类型
+ export function judgeFileType(file) {
+ if (file == null||file == ""){
+ alert("请选择要上传的图片!");
+ return false;
+ }
+ if (file.lastIndexOf('.')==-1){ //如果不存在"."
+ alert("路径不正确!");
+ return false;
+ }
+ var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|";
+ var extName = file.substring(file.lastIndexOf(".")).toLowerCase();//(把路径中的所有字母全部转换为小写)
+ if(AllImgExt.indexOf(extName+"|")==-1)
+ {
+ ErrMsg="该文件类型不允许上传。请上传 "+AllImgExt+" 类型的文件,当前文件类型为"+extName;
+ alert(ErrMsg);
+ return false;
+ }
+ }
+
+ //文件类型
+ export function fileType() {
+ return {
+ 'application/msword': 'word',
+ 'application/pdf': 'pdf',
+ 'application/vnd.ms-powerpoint': 'ppt',
+ 'application/vnd.ms-excel': 'excel',
+ 'aplication/zip': 'zpi',
+ }
+ }
\ No newline at end of file