parent
							
								
									2273319a02
								
							
						
					
					
						commit
						4c717f56fb
					
				@ -1,33 +0,0 @@
 | 
				
			|||||||
HELP.md
 | 
					 | 
				
			||||||
target/
 | 
					 | 
				
			||||||
!.mvn/wrapper/maven-wrapper.jar
 | 
					 | 
				
			||||||
!**/src/main/**/target/
 | 
					 | 
				
			||||||
!**/src/test/**/target/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### STS ###
 | 
					 | 
				
			||||||
.apt_generated
 | 
					 | 
				
			||||||
.classpath
 | 
					 | 
				
			||||||
.factorypath
 | 
					 | 
				
			||||||
.project
 | 
					 | 
				
			||||||
.settings
 | 
					 | 
				
			||||||
.springBeans
 | 
					 | 
				
			||||||
.sts4-cache
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### IntelliJ IDEA ###
 | 
					 | 
				
			||||||
.idea
 | 
					 | 
				
			||||||
*.iws
 | 
					 | 
				
			||||||
*.iml
 | 
					 | 
				
			||||||
*.ipr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### NetBeans ###
 | 
					 | 
				
			||||||
/nbproject/private/
 | 
					 | 
				
			||||||
/nbbuild/
 | 
					 | 
				
			||||||
/dist/
 | 
					 | 
				
			||||||
/nbdist/
 | 
					 | 
				
			||||||
/.nb-gradle/
 | 
					 | 
				
			||||||
build/
 | 
					 | 
				
			||||||
!**/src/main/**/build/
 | 
					 | 
				
			||||||
!**/src/test/**/build/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### VS Code ###
 | 
					 | 
				
			||||||
.vscode/
 | 
					 | 
				
			||||||
@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "usingComponents": {}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,145 @@
 | 
				
			|||||||
 | 
					/* pages/AircraftMaintenance/AircraftMaintenance.wxss */
 | 
				
			||||||
 | 
					.container {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  width: 90%;
 | 
				
			||||||
 | 
					  border: 1px solid gray;
 | 
				
			||||||
 | 
					  border-bottom:0px ;
 | 
				
			||||||
 | 
					  padding: 5px;
 | 
				
			||||||
 | 
					  margin: auto;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.one{
 | 
				
			||||||
 | 
					  margin-top:0px;
 | 
				
			||||||
 | 
					  font-weight: bold; 
 | 
				
			||||||
 | 
					  font-size: 21px; 
 | 
				
			||||||
 | 
					  display: block; 
 | 
				
			||||||
 | 
					  margin-left: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.two {
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  font-size: 18px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  margin-left: 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.three{
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  color: red;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.four{
 | 
				
			||||||
 | 
					  align-items: center; 
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  color: red;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.five1{
 | 
				
			||||||
 | 
					  margin: 5px;
 | 
				
			||||||
 | 
					  margin-left: 2px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  margin-right: 0px;
 | 
				
			||||||
 | 
					  overflow-wrap: break-word;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.five{
 | 
				
			||||||
 | 
					  margin: 5px;
 | 
				
			||||||
 | 
					  margin-left: 2px;
 | 
				
			||||||
 | 
					  margin-right: 120px;
 | 
				
			||||||
 | 
					  word-wrap: break-word;
 | 
				
			||||||
 | 
					  word-break: break-all;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container1{
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choose1{
 | 
				
			||||||
 | 
					  margin-left: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choose{
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  right:0;
 | 
				
			||||||
 | 
					  text-overflow: ellipsis;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.picker {
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  width: 100px;
 | 
				
			||||||
 | 
					  height: auto;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  padding: 3px;
 | 
				
			||||||
 | 
					  margin: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.picker1 {
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  width: 100px;
 | 
				
			||||||
 | 
					  height: auto;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  padding: 3px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box {
 | 
				
			||||||
 | 
					  width: 25%;
 | 
				
			||||||
 | 
					  padding: 0px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  margin: 3px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box2 {
 | 
				
			||||||
 | 
					  width: 250px;
 | 
				
			||||||
 | 
					  padding: 4px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container3 {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  width: 98%;
 | 
				
			||||||
 | 
					  margin: 2px;
 | 
				
			||||||
 | 
					  padding: 3px;
 | 
				
			||||||
 | 
					  border: 1px solid black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.scroll-input {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 150px;
 | 
				
			||||||
 | 
					  padding: 10px;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  border: 1px solid black; 
 | 
				
			||||||
 | 
					  overflow-y: auto;
 | 
				
			||||||
 | 
					  overflow-x: hidden;
 | 
				
			||||||
 | 
					  resize: none;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container4 {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  width: 90%;
 | 
				
			||||||
 | 
					  border: 1px solid gray;
 | 
				
			||||||
 | 
					  padding: 5px;
 | 
				
			||||||
 | 
					  margin: auto;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  margin-bottom: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container5{
 | 
				
			||||||
 | 
					  border: white;
 | 
				
			||||||
 | 
					  padding-top: 10px;
 | 
				
			||||||
 | 
					  padding-bottom:10px; 
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box1 {
 | 
				
			||||||
 | 
					  width: 109px;
 | 
				
			||||||
 | 
					  padding: 4px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box3 {
 | 
				
			||||||
 | 
					  width: 68px;
 | 
				
			||||||
 | 
					  padding: 4px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,320 @@
 | 
				
			|||||||
 | 
					// pages/AirportGround/AirportGround.js
 | 
				
			||||||
 | 
					Page({
 | 
				
			||||||
 | 
					  data: {
 | 
				
			||||||
 | 
					    name:'AirportGround',
 | 
				
			||||||
 | 
					    selectedTime: '--时--分',
 | 
				
			||||||
 | 
					    selectedDate: '--年--月--日',
 | 
				
			||||||
 | 
					    selectedIndex1: 0, 
 | 
				
			||||||
 | 
					    selectedIndex2: 0, 
 | 
				
			||||||
 | 
					    selectedIndex4: 0, 
 | 
				
			||||||
 | 
					    selectedIndex5: 0,
 | 
				
			||||||
 | 
					    selectedIndex9: 0,
 | 
				
			||||||
 | 
					    selectedIndex9: 0,
 | 
				
			||||||
 | 
					    selectedIndex10: 0, 
 | 
				
			||||||
 | 
					    selectedIndex11: 0,
 | 
				
			||||||
 | 
					    selectedIndex20: 0,
 | 
				
			||||||
 | 
					    selectedIndex21: 0, 
 | 
				
			||||||
 | 
					    inputValue1: '',
 | 
				
			||||||
 | 
					    inputValue2: '',
 | 
				
			||||||
 | 
					    inputValue3: '',
 | 
				
			||||||
 | 
					    inputValue15: '',
 | 
				
			||||||
 | 
					    inputValue16: '',
 | 
				
			||||||
 | 
					    inputValue20: '',
 | 
				
			||||||
 | 
					    inputValue21: '',
 | 
				
			||||||
 | 
					    inputValue22: '',
 | 
				
			||||||
 | 
					    inputValue23: '',
 | 
				
			||||||
 | 
					    timezones: ['请选择','UTC-12:00', 'UTC-11:00', 'UTC-10:00', 'UTC-9:00', 'UTC-8:00', 'UTC-7:00', 'UTC-6:00', 'UTC-5:00', 'UTC-4:00', 'UTC-3:00', 'UTC-2:00', 'UTC-1:00', 'UTC+0:00', 'UTC+1:00', 'UTC+2:00', 'UTC+3:00', 'UTC+4:00', 'UTC+5:00', 'UTC+6:00', 'UTC+7:00', 'UTC+8:00', 'UTC+9:00', 'UTC+10:00', 'UTC+11:00', 'UTC+12:00'],
 | 
				
			||||||
 | 
					    position:['请选择','飞行','乘务','管制','保安','油科','护卫','动力保障','车辆勤务','现场指挥','灯光','场务','医疗急救','运输员','其他'],
 | 
				
			||||||
 | 
					    License:['请选择','私用驾驶员执照','商用驾驶员执照','航线运输驾驶员执照','临时执照','无','其它'],
 | 
				
			||||||
 | 
					    ACFT:['请选择','飞机','直升机','滑翔机','其它'],
 | 
				
			||||||
 | 
					    phase:['请选择','场外维护','加油','装载食品/货物','登机','推飞机','发动机开车/试车','滑行','其它'],
 | 
				
			||||||
 | 
					    weather:['请选择','IMC','VMC','雷暴','风切变','紊流','结冰','雨','雪','雾','多云','其它'],
 | 
				
			||||||
 | 
					    lv:['请选择','黎明','昼间','黄昏/曙暮光','夜间/月光','夜间/黑暗','未知'],
 | 
				
			||||||
 | 
					    carone:['请选择','客梯车','行李车','食品车','引导车','拖车','加油车','电/气源车','其它'],
 | 
				
			||||||
 | 
					    cartwo:['请选择','客梯车','行李车','食品车','引导车','拖车','加油车','电/气源车','其它']
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //时间选择
 | 
				
			||||||
 | 
					  onTimeChange: function (event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedTime: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onTimezoneChange: function (event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedIndex1: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onDateChange: function(e) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedDate: e.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //工作时间选择
 | 
				
			||||||
 | 
					  onInput1: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue1: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onInput2: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue2: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onInput3: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue3: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //执照选择
 | 
				
			||||||
 | 
					  onLicense: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedIndex4: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //工作经历
 | 
				
			||||||
 | 
					  onInput15: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue15: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onInput16: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue16: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //岗位选择
 | 
				
			||||||
 | 
					  onposition: function (event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedIndex2: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //航空器种类
 | 
				
			||||||
 | 
					  onACFT: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedIndex5: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //天气
 | 
				
			||||||
 | 
					  onweather: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedIndex10: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //光线条件和能见度
 | 
				
			||||||
 | 
					  onlv: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedIndex11: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //发生阶段
 | 
				
			||||||
 | 
					  onphase: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedIndex9: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //涉及车辆一
 | 
				
			||||||
 | 
					  oncarone: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedIndex20: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //涉及车辆二
 | 
				
			||||||
 | 
					  oncartwo: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedIndex21: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //事件经过
 | 
				
			||||||
 | 
					  onInput20: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue20: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //个人信息//姓名电话邮箱
 | 
				
			||||||
 | 
					  onInput21: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue21: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onInput22: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue22: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onInput23: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue23: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //文件上传
 | 
				
			||||||
 | 
					  //提交与重写
 | 
				
			||||||
 | 
					  onReset() {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedTime: '--时--分',
 | 
				
			||||||
 | 
					      selectedDate: '--年--月--日',
 | 
				
			||||||
 | 
					      selectedIndex1: 0, 
 | 
				
			||||||
 | 
					      selectedIndex2: 0, 
 | 
				
			||||||
 | 
					      selectedIndex4: 0, 
 | 
				
			||||||
 | 
					      selectedIndex5: 0,
 | 
				
			||||||
 | 
					      selectedIndex9: 0,
 | 
				
			||||||
 | 
					      selectedIndex9: 0,
 | 
				
			||||||
 | 
					      selectedIndex10: 0, 
 | 
				
			||||||
 | 
					      selectedIndex11: 0,
 | 
				
			||||||
 | 
					      selectedIndex20: 0,
 | 
				
			||||||
 | 
					      selectedIndex21: 0, 
 | 
				
			||||||
 | 
					      inputValue1: '',
 | 
				
			||||||
 | 
					      inputValue2: '',
 | 
				
			||||||
 | 
					      inputValue3: '',
 | 
				
			||||||
 | 
					      inputValue15: '',
 | 
				
			||||||
 | 
					      inputValue16: '',
 | 
				
			||||||
 | 
					      inputValue20: '',
 | 
				
			||||||
 | 
					      inputValue21: '',
 | 
				
			||||||
 | 
					      inputValue22: '',
 | 
				
			||||||
 | 
					      inputValue23: '',
 | 
				
			||||||
 | 
					    },() => {
 | 
				
			||||||
 | 
					      console.log('Form has been reset');
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  // 提交数据
 | 
				
			||||||
 | 
					  onSubmit: function () {
 | 
				
			||||||
 | 
					    // 获取存储中的 token
 | 
				
			||||||
 | 
					    const token = wx.getStorageSync('token');
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if (!token) {
 | 
				
			||||||
 | 
					      console.log('Token 不存在,请先登录');
 | 
				
			||||||
 | 
					      wx.showToast({
 | 
				
			||||||
 | 
					        title: '请先登录',
 | 
				
			||||||
 | 
					        icon: 'none'
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      return; // 终止提交
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    const data = this.data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 获取各选择项的实际文本值
 | 
				
			||||||
 | 
					  const timezoneText = data.timezones[data.selectedIndex1];  // 获取时区的实际文本
 | 
				
			||||||
 | 
					  const licenseText = data.License[data.selectedIndex4];     // 获取执照类型的实际文本
 | 
				
			||||||
 | 
					  const acftText = data.ACFT[data.selectedIndex5];           // 获取航空器类型的实际文本
 | 
				
			||||||
 | 
					  const phaseText = data.phase[data.selectedIndex9];         // 获取事件阶段的实际文本
 | 
				
			||||||
 | 
					  const weatherText = data.weather[data.selectedIndex10];    // 获取天气情况的实际文本
 | 
				
			||||||
 | 
					  const lightText = data.lv[data.selectedIndex11];           // 获取光线条件的实际文本
 | 
				
			||||||
 | 
					  const caroneText = data.carone[data.selectedIndex20];      // 获取涉及车辆一的实际文本
 | 
				
			||||||
 | 
					  const cartwoText = data.cartwo[data.selectedIndex21];      // 获取涉及车辆二的实际文本
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 提交数据到后端
 | 
				
			||||||
 | 
					  wx.request({
 | 
				
			||||||
 | 
					    url: 'http://192.168.137.1:8080/report/add',
 | 
				
			||||||
 | 
					    method: 'POST',
 | 
				
			||||||
 | 
					    header: {
 | 
				
			||||||
 | 
					      'Authorization': `${token}`,
 | 
				
			||||||
 | 
					      'content-type': 'application/json'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    data: {
 | 
				
			||||||
 | 
					      selectedTime: data.selectedTime,
 | 
				
			||||||
 | 
					      selectedDate: data.selectedDate,
 | 
				
			||||||
 | 
					      timezone: timezoneText,    // 提交时区的实际文本
 | 
				
			||||||
 | 
					      license: licenseText,      // 提交执照类型的实际文本
 | 
				
			||||||
 | 
					      acftType: acftText,        // 提交航空器类型的实际文本
 | 
				
			||||||
 | 
					      phase: phaseText,          // 提交事件阶段的实际文本
 | 
				
			||||||
 | 
					      weather: weatherText,      // 提交天气情况的实际文本
 | 
				
			||||||
 | 
					      lightCondition: lightText, // 提交光线条件的实际文本
 | 
				
			||||||
 | 
					      carone: caroneText,        // 提交涉及车辆一的实际文本
 | 
				
			||||||
 | 
					      cartwo: cartwoText,        // 提交涉及车辆二的实际文本
 | 
				
			||||||
 | 
					      inputValue1: data.inputValue1,
 | 
				
			||||||
 | 
					      inputValue2: data.inputValue2,
 | 
				
			||||||
 | 
					      inputValue3: data.inputValue3,
 | 
				
			||||||
 | 
					      inputValue15: data.inputValue15,
 | 
				
			||||||
 | 
					      inputValue16: data.inputValue16,
 | 
				
			||||||
 | 
					      inputValue20: data.inputValue20,
 | 
				
			||||||
 | 
					      inputValue21: data.inputValue21,
 | 
				
			||||||
 | 
					      inputValue22: data.inputValue22,
 | 
				
			||||||
 | 
					      inputValue23: data.inputValue23,
 | 
				
			||||||
 | 
					      name: data.name
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    success: function(res) {
 | 
				
			||||||
 | 
					      console.log('Data submitted successfully:', res);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    fail: function(err) {
 | 
				
			||||||
 | 
					      console.error('Error submitting data:', err);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					      // 使用腾讯混元智能体的 API 调用
 | 
				
			||||||
 | 
					  wx.request({
 | 
				
			||||||
 | 
					    url: 'https://yuanqi.tencent.com/openapi/v1/agent/chat/completions',
 | 
				
			||||||
 | 
					    method: 'POST',
 | 
				
			||||||
 | 
					    header: {
 | 
				
			||||||
 | 
					      'X-Source': 'openapi',
 | 
				
			||||||
 | 
					      'Content-Type': 'application/json',
 | 
				
			||||||
 | 
					      'Authorization': 'Bearer jSNTZONSnnzJ2uuQT7IEgXlPzfE4lX5f' // 替换为你的实际 Bearer Token
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    data: {
 | 
				
			||||||
 | 
					      assistant_id: 'ty1W9unZM9IY', // 替换为实际的 assistant_id
 | 
				
			||||||
 | 
					      user_id: '123456', // 替换为实际的用户ID
 | 
				
			||||||
 | 
					      stream: false,
 | 
				
			||||||
 | 
					      messages: [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          role: 'user',
 | 
				
			||||||
 | 
					          content: [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              type: 'text',
 | 
				
			||||||
 | 
					              text: JSON.stringify(data) // 将用户填写的数据转换为字符串
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          ]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    success: function (res) {
 | 
				
			||||||
 | 
					      console.log('API 调用成功: ', res); // 打印完整的 API 响应
 | 
				
			||||||
 | 
					      console.log('API 返回的 choices:', res.data.choices); // 检查数据结构
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					      // 检查选择项并从中提取智能体回复
 | 
				
			||||||
 | 
					      if (res.data && res.data.choices && res.data.choices.length > 0) {
 | 
				
			||||||
 | 
					        // 确保 message 字段的内容可以被访问
 | 
				
			||||||
 | 
					        const messageContent = res.data.choices[0].message?.content;
 | 
				
			||||||
 | 
					        let agentReply;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					        // 如果 messageContent 存在并且是一个数组,则提取内容
 | 
				
			||||||
 | 
					        if (Array.isArray(messageContent) && messageContent.length > 0) {
 | 
				
			||||||
 | 
					          agentReply = messageContent[0].text; // 假设内容在数组的第一个元素中
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          agentReply = messageContent || '无法获取智能体的回复';
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					        // 跳转到详情页面并传递数据和智能体的回复
 | 
				
			||||||
 | 
					        wx.navigateTo({
 | 
				
			||||||
 | 
					          url: '/pages/FlightCrewDetails/FlightCrewDetails',
 | 
				
			||||||
 | 
					          success: function (navRes) {
 | 
				
			||||||
 | 
					            navRes.eventChannel.emit('sendData', {
 | 
				
			||||||
 | 
					              details: data,  // 用户输入的数据
 | 
				
			||||||
 | 
					              agentReply: agentReply  // 智能体的回复
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        console.log('API 响应中没有 choices');
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    fail: function (err) {
 | 
				
			||||||
 | 
					      console.log('智能体调用失败', err);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onLoad(options) {
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onReady() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onShow() {
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onHide() {
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onUnload() {
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onPullDownRefresh() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onReachBottom() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onShareAppMessage() {
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "usingComponents": {}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,139 @@
 | 
				
			|||||||
 | 
					/* pages/AirportGround/AirportGround.wxss */
 | 
				
			||||||
 | 
					/* pages/Airtraffic/Airtraffic.wxss */
 | 
				
			||||||
 | 
					.container {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  width: 90%;
 | 
				
			||||||
 | 
					  border: 1px solid gray;
 | 
				
			||||||
 | 
					  border-bottom:0px ;
 | 
				
			||||||
 | 
					  padding: 5px;
 | 
				
			||||||
 | 
					  margin: auto;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.one{
 | 
				
			||||||
 | 
					  margin-top:0px;
 | 
				
			||||||
 | 
					  font-weight: bold; 
 | 
				
			||||||
 | 
					  font-size: 21px; 
 | 
				
			||||||
 | 
					  display: block; 
 | 
				
			||||||
 | 
					  margin-left: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.two {
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  font-size: 18px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  margin-left: 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.three{
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  color: red;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.four{
 | 
				
			||||||
 | 
					  align-items: center; 
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  color: red;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.five1{
 | 
				
			||||||
 | 
					  margin: 5px;
 | 
				
			||||||
 | 
					  margin-left: 2px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  margin-right: 0px;
 | 
				
			||||||
 | 
					  overflow-wrap: break-word;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.five{
 | 
				
			||||||
 | 
					  margin: 5px;
 | 
				
			||||||
 | 
					  margin-left: 2px;
 | 
				
			||||||
 | 
					  margin-right: 120px;
 | 
				
			||||||
 | 
					  word-wrap: break-word;
 | 
				
			||||||
 | 
					  word-break: break-all;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container1{
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choose1{
 | 
				
			||||||
 | 
					  margin-left: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choose{
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  right:0;
 | 
				
			||||||
 | 
					  text-overflow: ellipsis;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.picker {
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  width: 100px;
 | 
				
			||||||
 | 
					  height: auto;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  padding: 3px;
 | 
				
			||||||
 | 
					  margin: 10px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box {
 | 
				
			||||||
 | 
					  width: 25%;
 | 
				
			||||||
 | 
					  padding: 0px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  margin: 3px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box2 {
 | 
				
			||||||
 | 
					  width: 250px;
 | 
				
			||||||
 | 
					  padding: 4px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container3 {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  width: 98%;
 | 
				
			||||||
 | 
					  margin: 2px;
 | 
				
			||||||
 | 
					  padding: 3px;
 | 
				
			||||||
 | 
					  border: 1px solid black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.scroll-input {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 150px;
 | 
				
			||||||
 | 
					  padding: 10px;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  border: 1px solid black; 
 | 
				
			||||||
 | 
					  overflow-y: auto;
 | 
				
			||||||
 | 
					  overflow-x: hidden;
 | 
				
			||||||
 | 
					  resize: none;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container4 {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  width: 90%;
 | 
				
			||||||
 | 
					  border: 1px solid gray;
 | 
				
			||||||
 | 
					  padding: 5px;
 | 
				
			||||||
 | 
					  margin: auto;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  margin-bottom: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container5{
 | 
				
			||||||
 | 
					  border: white;
 | 
				
			||||||
 | 
					  padding-top: 10px;
 | 
				
			||||||
 | 
					  padding-bottom:10px; 
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box1 {
 | 
				
			||||||
 | 
					  width: 109px;
 | 
				
			||||||
 | 
					  padding: 4px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box3 {
 | 
				
			||||||
 | 
					  width: 68px;
 | 
				
			||||||
 | 
					  padding: 4px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,188 @@
 | 
				
			|||||||
 | 
					// pages/Fast/Fast.js
 | 
				
			||||||
 | 
					Page({
 | 
				
			||||||
 | 
					  data: {
 | 
				
			||||||
 | 
					    name:'Fast',
 | 
				
			||||||
 | 
					    selectedTime: '--时--分',
 | 
				
			||||||
 | 
					    selectedDate: '--年--月--日',
 | 
				
			||||||
 | 
					    selectedIndex1: 0, 
 | 
				
			||||||
 | 
					    inputValue20: '',
 | 
				
			||||||
 | 
					    inputValue21: '',
 | 
				
			||||||
 | 
					    inputValue22: '',
 | 
				
			||||||
 | 
					    inputValue23: '',
 | 
				
			||||||
 | 
					    timezones: ['请选择','UTC-12:00', 'UTC-11:00', 'UTC-10:00', 'UTC-9:00', 'UTC-8:00', 'UTC-7:00', 'UTC-6:00', 'UTC-5:00', 'UTC-4:00', 'UTC-3:00', 'UTC-2:00', 'UTC-1:00', 'UTC+0:00', 'UTC+1:00', 'UTC+2:00', 'UTC+3:00', 'UTC+4:00', 'UTC+5:00', 'UTC+6:00', 'UTC+7:00', 'UTC+8:00', 'UTC+9:00', 'UTC+10:00', 'UTC+11:00', 'UTC+12:00'],
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //时间选择
 | 
				
			||||||
 | 
					  onTimeChange: function (event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedTime: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onTimezoneChange: function (event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedIndex1: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onDateChange: function(e) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedDate: e.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //事件经过
 | 
				
			||||||
 | 
					  onInput20: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue20: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //个人信息//姓名电话邮箱
 | 
				
			||||||
 | 
					  onInput21: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue21: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onInput22: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue22: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onInput23: function(event) {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      inputValue23: event.detail.value
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //提交与重写
 | 
				
			||||||
 | 
					  onReset() {
 | 
				
			||||||
 | 
					    this.setData({
 | 
				
			||||||
 | 
					      selectedTime: '--时--分',
 | 
				
			||||||
 | 
					      selectedDate: '--年--月--日',
 | 
				
			||||||
 | 
					      selectedIndex1: 0,
 | 
				
			||||||
 | 
					      inputValue20: '',
 | 
				
			||||||
 | 
					      inputValue21: '',
 | 
				
			||||||
 | 
					      inputValue22: '',
 | 
				
			||||||
 | 
					      inputValue23: '',
 | 
				
			||||||
 | 
					    },() => {
 | 
				
			||||||
 | 
					      console.log('Form has been reset');
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  //提交数据
 | 
				
			||||||
 | 
					  onSubmit: function () {
 | 
				
			||||||
 | 
					    // 获取存储中的 token
 | 
				
			||||||
 | 
					    const token = wx.getStorageSync('token');
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if (!token) {
 | 
				
			||||||
 | 
					      console.log('Token 不存在,请先登录');
 | 
				
			||||||
 | 
					      wx.showToast({
 | 
				
			||||||
 | 
					        title: '请先登录',
 | 
				
			||||||
 | 
					        icon: 'none'
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      return; // 终止提交
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  const data = this.data;
 | 
				
			||||||
 | 
					    // 获取各选择项的实际文本值
 | 
				
			||||||
 | 
					  const timezoneText = data.timezones[data.selectedIndex1]; // 获取时区的实际文本
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 提交数据到后端
 | 
				
			||||||
 | 
					  wx.request({
 | 
				
			||||||
 | 
					    url: 'http://192.168.137.1:8080/report/add',
 | 
				
			||||||
 | 
					    method: 'POST',
 | 
				
			||||||
 | 
					    header: {
 | 
				
			||||||
 | 
					      'Authorization': `${token}`,
 | 
				
			||||||
 | 
					      'content-type': 'application/json'
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    data: {
 | 
				
			||||||
 | 
					      selectedTime: data.selectedTime,         // 提交的选定时间
 | 
				
			||||||
 | 
					      selectedDate: data.selectedDate,         // 提交的选定日期
 | 
				
			||||||
 | 
					      timezone: timezoneText,                  // 提交时区的实际文本
 | 
				
			||||||
 | 
					      inputValue20: data.inputValue20,         // 提交输入值20
 | 
				
			||||||
 | 
					      inputValue21: data.inputValue21,         // 提交输入值21
 | 
				
			||||||
 | 
					      inputValue22: data.inputValue22,         // 提交输入值22
 | 
				
			||||||
 | 
					      inputValue23: data.inputValue23,         // 提交输入值23
 | 
				
			||||||
 | 
					      name: data.name                           // 提交姓名
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    success: function (res) {
 | 
				
			||||||
 | 
					      console.log('Data submitted successfully:', res);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    fail: function (err) {
 | 
				
			||||||
 | 
					      console.error('Error submitting data:', err);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					    // 使用腾讯混元智能体的 API 调用
 | 
				
			||||||
 | 
					    wx.request({
 | 
				
			||||||
 | 
					      url: 'https://yuanqi.tencent.com/openapi/v1/agent/chat/completions',
 | 
				
			||||||
 | 
					      method: 'POST',
 | 
				
			||||||
 | 
					      header: {
 | 
				
			||||||
 | 
					        'X-Source': 'openapi',
 | 
				
			||||||
 | 
					        'Content-Type': 'application/json',
 | 
				
			||||||
 | 
					        'Authorization': 'Bearer jSNTZONSnnzJ2uuQT7IEgXlPzfE4lX5f' // 替换为你的实际 Bearer Token
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      data: {
 | 
				
			||||||
 | 
					        assistant_id: 'ty1W9unZM9IY', // 替换为实际的 assistant_id
 | 
				
			||||||
 | 
					        user_id: '123456', // 替换为实际的用户ID
 | 
				
			||||||
 | 
					        stream: false,
 | 
				
			||||||
 | 
					        messages: [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            role: 'user',
 | 
				
			||||||
 | 
					            content: [
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                type: 'text',
 | 
				
			||||||
 | 
					                text: JSON.stringify(data) // 将用户填写的数据转换为字符串
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      success: function (res) {
 | 
				
			||||||
 | 
					        console.log('API 调用成功: ', res); // 打印完整的 API 响应
 | 
				
			||||||
 | 
					        console.log('API 返回的 choices:', res.data.choices); // 检查数据结构
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        // 检查选择项并从中提取智能体回复
 | 
				
			||||||
 | 
					        if (res.data && res.data.choices && res.data.choices.length > 0) {
 | 
				
			||||||
 | 
					          // 确保 message 字段的内容可以被访问
 | 
				
			||||||
 | 
					          const messageContent = res.data.choices[0].message?.content;
 | 
				
			||||||
 | 
					          let agentReply;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					          // 如果 messageContent 存在并且是一个数组,则提取内容
 | 
				
			||||||
 | 
					          if (Array.isArray(messageContent) && messageContent.length > 0) {
 | 
				
			||||||
 | 
					            agentReply = messageContent[0].text; // 假设内容在数组的第一个元素中
 | 
				
			||||||
 | 
					          } else {
 | 
				
			||||||
 | 
					            agentReply = messageContent || '无法获取智能体的回复';
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					          // 跳转到详情页面并传递数据和智能体的回复
 | 
				
			||||||
 | 
					          wx.navigateTo({
 | 
				
			||||||
 | 
					            url: '/pages/FlightCrewDetails/FlightCrewDetails',
 | 
				
			||||||
 | 
					            success: function (navRes) {
 | 
				
			||||||
 | 
					              navRes.eventChannel.emit('sendData', {
 | 
				
			||||||
 | 
					                details: data,  // 用户输入的数据
 | 
				
			||||||
 | 
					                agentReply: agentReply  // 智能体的回复
 | 
				
			||||||
 | 
					              });
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          console.log('API 响应中没有 choices');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      fail: function (err) {
 | 
				
			||||||
 | 
					        console.log('智能体调用失败', err);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onLoad(options) {
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onReady() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onShow() {
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onHide() {
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onUnload() {
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onPullDownRefresh() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onReachBottom() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onShareAppMessage() {
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "usingComponents": {}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,141 @@
 | 
				
			|||||||
 | 
					/* pages/Fast/Fast.wxss */
 | 
				
			||||||
 | 
					/* pages/Students/students.wxss */
 | 
				
			||||||
 | 
					/* pages/Aviation/Aviation.wxss */
 | 
				
			||||||
 | 
					/* pages/Airtraffic/Airtraffic.wxss */
 | 
				
			||||||
 | 
					.container {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  width: 90%;
 | 
				
			||||||
 | 
					  border: 1px solid gray;
 | 
				
			||||||
 | 
					  border-bottom:0px ;
 | 
				
			||||||
 | 
					  padding: 5px;
 | 
				
			||||||
 | 
					  margin: auto;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.one{
 | 
				
			||||||
 | 
					  margin-top:0px;
 | 
				
			||||||
 | 
					  font-weight: bold; 
 | 
				
			||||||
 | 
					  font-size: 21px; 
 | 
				
			||||||
 | 
					  display: block; 
 | 
				
			||||||
 | 
					  margin-left: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.two {
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  font-size: 18px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  margin-left: 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.three{
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  color: red;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.four{
 | 
				
			||||||
 | 
					  align-items: center; 
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  color: red;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.five1{
 | 
				
			||||||
 | 
					  margin: 5px;
 | 
				
			||||||
 | 
					  margin-left: 2px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  margin-right: 0px;
 | 
				
			||||||
 | 
					  overflow-wrap: break-word;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.five{
 | 
				
			||||||
 | 
					  margin: 5px;
 | 
				
			||||||
 | 
					  margin-left: 2px;
 | 
				
			||||||
 | 
					  margin-right: 120px;
 | 
				
			||||||
 | 
					  word-wrap: break-word;
 | 
				
			||||||
 | 
					  word-break: break-all;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container1{
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choose1{
 | 
				
			||||||
 | 
					  margin-left: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choose{
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  right:0;
 | 
				
			||||||
 | 
					  text-overflow: ellipsis;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.picker {
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  width: 100px;
 | 
				
			||||||
 | 
					  height: auto;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  padding: 3px;
 | 
				
			||||||
 | 
					  margin: 10px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box {
 | 
				
			||||||
 | 
					  width: 25%;
 | 
				
			||||||
 | 
					  padding: 0px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  margin: 3px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box2 {
 | 
				
			||||||
 | 
					  width: 250px;
 | 
				
			||||||
 | 
					  padding: 4px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container3 {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  width: 98%;
 | 
				
			||||||
 | 
					  margin: 2px;
 | 
				
			||||||
 | 
					  padding: 3px;
 | 
				
			||||||
 | 
					  border: 1px solid black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.scroll-input {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 150px;
 | 
				
			||||||
 | 
					  padding: 10px;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  border: 1px solid black; 
 | 
				
			||||||
 | 
					  overflow-y: auto;
 | 
				
			||||||
 | 
					  overflow-x: hidden;
 | 
				
			||||||
 | 
					  resize: none;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container4 {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  width: 90%;
 | 
				
			||||||
 | 
					  border: 1px solid gray;
 | 
				
			||||||
 | 
					  padding: 5px;
 | 
				
			||||||
 | 
					  margin: auto;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  margin-bottom: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container5{
 | 
				
			||||||
 | 
					  border: white;
 | 
				
			||||||
 | 
					  padding-top: 10px;
 | 
				
			||||||
 | 
					  padding-bottom:10px; 
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box1 {
 | 
				
			||||||
 | 
					  width: 100px;
 | 
				
			||||||
 | 
					  padding: 0px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box3 {
 | 
				
			||||||
 | 
					  width: 68px;
 | 
				
			||||||
 | 
					  padding: 4px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "usingComponents": {
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,144 @@
 | 
				
			|||||||
 | 
					/* pages/Airtraffic/Airtraffic.wxss */
 | 
				
			||||||
 | 
					.container {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  width: 90%;
 | 
				
			||||||
 | 
					  border: 1px solid gray;
 | 
				
			||||||
 | 
					  border-bottom:0px ;
 | 
				
			||||||
 | 
					  padding: 5px;
 | 
				
			||||||
 | 
					  margin: auto;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.one{
 | 
				
			||||||
 | 
					  margin-top:0px;
 | 
				
			||||||
 | 
					  font-weight: bold; 
 | 
				
			||||||
 | 
					  font-size: 21px; 
 | 
				
			||||||
 | 
					  display: block; 
 | 
				
			||||||
 | 
					  margin-left: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.two {
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  font-size: 18px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  margin-left: 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.three{
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  color: red;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.four{
 | 
				
			||||||
 | 
					  align-items: center; 
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  color: red;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.five1{
 | 
				
			||||||
 | 
					  margin: 5px;
 | 
				
			||||||
 | 
					  margin-left: 2px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  margin-right: 0px;
 | 
				
			||||||
 | 
					  overflow-wrap: break-word;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.five{
 | 
				
			||||||
 | 
					  margin: 5px;
 | 
				
			||||||
 | 
					  margin-left: 2px;
 | 
				
			||||||
 | 
					  margin-right: 120px;
 | 
				
			||||||
 | 
					  word-wrap: break-word;
 | 
				
			||||||
 | 
					  word-break: break-all;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container1{
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choose1{
 | 
				
			||||||
 | 
					  margin-left: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.choose{
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  right:0;
 | 
				
			||||||
 | 
					  text-overflow: ellipsis;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.picker {
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  width: 100px;
 | 
				
			||||||
 | 
					  height: auto;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  padding: 3px;
 | 
				
			||||||
 | 
					  margin: 10px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box {
 | 
				
			||||||
 | 
					  width: 25%;
 | 
				
			||||||
 | 
					  padding: 0px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  margin: 3px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box2 {
 | 
				
			||||||
 | 
					  width: 250px;
 | 
				
			||||||
 | 
					  padding: 4px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container3 {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  width: 98%;
 | 
				
			||||||
 | 
					  margin: 2px;
 | 
				
			||||||
 | 
					  padding: 3px;
 | 
				
			||||||
 | 
					  border: 1px solid black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.scroll-input {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 150px;
 | 
				
			||||||
 | 
					  padding: 10px;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  border: 1px solid black; 
 | 
				
			||||||
 | 
					  overflow-y: auto;
 | 
				
			||||||
 | 
					  overflow-x: hidden;
 | 
				
			||||||
 | 
					  resize: none;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container4 {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  width: 90%;
 | 
				
			||||||
 | 
					  border: 1px solid gray;
 | 
				
			||||||
 | 
					  padding: 5px;
 | 
				
			||||||
 | 
					  margin: auto;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  margin-bottom: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.container5{
 | 
				
			||||||
 | 
					  border: white;
 | 
				
			||||||
 | 
					  padding-top: 10px;
 | 
				
			||||||
 | 
					  padding-bottom:10px; 
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box1 {
 | 
				
			||||||
 | 
					  width: 109px;
 | 
				
			||||||
 | 
					  padding: 4px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.input-box3 {
 | 
				
			||||||
 | 
					  width: 68px;
 | 
				
			||||||
 | 
					  padding: 4px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ec-canvas {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 400px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					Page({
 | 
				
			||||||
 | 
					  data: {
 | 
				
			||||||
 | 
					    details: {}, // 用户填写的数据
 | 
				
			||||||
 | 
					    agentReply: '' // 智能体的回复
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  onLoad(options) {
 | 
				
			||||||
 | 
					    const eventChannel = this.getOpenerEventChannel();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // 监听并接收来自 FlightCrew.js 传递的数据
 | 
				
			||||||
 | 
					    eventChannel.on('sendData', (data) => {
 | 
				
			||||||
 | 
					      console.log('接收到的数据: ', data);  // 打印接收到的数据,便于调试
 | 
				
			||||||
 | 
					      this.setData({
 | 
				
			||||||
 | 
					        details: data.details, // 用户的详细数据
 | 
				
			||||||
 | 
					        agentReply: data.agentReply // 智能体的回复
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  // 回到首页的函数
 | 
				
			||||||
 | 
					  goToHome() {
 | 
				
			||||||
 | 
					    wx.switchTab({
 | 
				
			||||||
 | 
					      url: '/pages/home/home', // 'home' Tab 页的路径
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "usingComponents": {}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					<text>智能分析: {{agentReply}}</text>
 | 
				
			||||||
 | 
					<button bindtap="goToHome" class="home-button">回到首页</button>
 | 
				
			||||||
@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					.home-button {
 | 
				
			||||||
 | 
					  margin-top: 20px;
 | 
				
			||||||
 | 
					  background-color: #007aff;
 | 
				
			||||||
 | 
					  color: #ffffff;
 | 
				
			||||||
 | 
					  padding: 10px 15px;
 | 
				
			||||||
 | 
					  border-radius: 5px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  font-size: 16px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "component": true,
 | 
				
			||||||
 | 
					  "styleIsolation": "apply-shared",
 | 
				
			||||||
 | 
					  "usingComponents": {}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,64 @@
 | 
				
			|||||||
 | 
					<view class="weui-navigation-bar {{extClass}}">
 | 
				
			||||||
 | 
					  <view class="weui-navigation-bar__inner {{ios ? 'ios' : 'android'}}" style="color: {{color}}; background: {{background}}; {{displayStyle}}; {{innerPaddingRight}}; {{safeAreaTop}};">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 左侧按钮 -->
 | 
				
			||||||
 | 
					    <view class='weui-navigation-bar__left' style="{{leftWidth}};">
 | 
				
			||||||
 | 
					      <block wx:if="{{back || homeButton}}">
 | 
				
			||||||
 | 
					        <!-- 返回上一页 -->
 | 
				
			||||||
 | 
					        <block wx:if="{{back}}">
 | 
				
			||||||
 | 
					          <view class="weui-navigation-bar__buttons weui-navigation-bar__buttons_goback">
 | 
				
			||||||
 | 
					            <view
 | 
				
			||||||
 | 
					              bindtap="back"
 | 
				
			||||||
 | 
					              class="weui-navigation-bar__btn_goback_wrapper"
 | 
				
			||||||
 | 
					              hover-class="weui-active"
 | 
				
			||||||
 | 
					              hover-stay-time="100"
 | 
				
			||||||
 | 
					              aria-role="button"
 | 
				
			||||||
 | 
					              aria-label="返回"
 | 
				
			||||||
 | 
					            >
 | 
				
			||||||
 | 
					              <view class="weui-navigation-bar__button weui-navigation-bar__btn_goback"></view>
 | 
				
			||||||
 | 
					            </view>
 | 
				
			||||||
 | 
					          </view>
 | 
				
			||||||
 | 
					        </block>
 | 
				
			||||||
 | 
					        <!-- 返回首页 -->
 | 
				
			||||||
 | 
					        <block wx:if="{{homeButton}}">
 | 
				
			||||||
 | 
					          <view class="weui-navigation-bar__buttons weui-navigation-bar__buttons_home">
 | 
				
			||||||
 | 
					            <view
 | 
				
			||||||
 | 
					              bindtap="home"
 | 
				
			||||||
 | 
					              class="weui-navigation-bar__btn_home_wrapper"
 | 
				
			||||||
 | 
					              hover-class="weui-active"
 | 
				
			||||||
 | 
					              aria-role="button"
 | 
				
			||||||
 | 
					              aria-label="首页"
 | 
				
			||||||
 | 
					            >
 | 
				
			||||||
 | 
					              <view class="weui-navigation-bar__button weui-navigation-bar__btn_home"></view>
 | 
				
			||||||
 | 
					            </view>
 | 
				
			||||||
 | 
					          </view>
 | 
				
			||||||
 | 
					        </block>
 | 
				
			||||||
 | 
					      </block>
 | 
				
			||||||
 | 
					      <block wx:else>
 | 
				
			||||||
 | 
					        <slot name="left"></slot>
 | 
				
			||||||
 | 
					      </block>
 | 
				
			||||||
 | 
					    </view>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 标题 -->
 | 
				
			||||||
 | 
					    <view class='weui-navigation-bar__center'>
 | 
				
			||||||
 | 
					      <view wx:if="{{loading}}" class="weui-navigation-bar__loading" aria-role="alert">
 | 
				
			||||||
 | 
					        <view
 | 
				
			||||||
 | 
					          class="weui-loading"
 | 
				
			||||||
 | 
					          aria-role="img"
 | 
				
			||||||
 | 
					          aria-label="加载中"
 | 
				
			||||||
 | 
					        ></view>
 | 
				
			||||||
 | 
					      </view>
 | 
				
			||||||
 | 
					      <block wx:if="{{title}}">
 | 
				
			||||||
 | 
					        <text>{{title}}</text>
 | 
				
			||||||
 | 
					      </block>
 | 
				
			||||||
 | 
					      <block wx:else>
 | 
				
			||||||
 | 
					        <slot name="center"></slot>
 | 
				
			||||||
 | 
					      </block>
 | 
				
			||||||
 | 
					    </view>
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    <!-- 右侧留空 -->
 | 
				
			||||||
 | 
					    <view class='weui-navigation-bar__right'>
 | 
				
			||||||
 | 
					      <slot name="right"></slot>
 | 
				
			||||||
 | 
					    </view>
 | 
				
			||||||
 | 
					  </view>
 | 
				
			||||||
 | 
					</view>
 | 
				
			||||||
@ -0,0 +1,96 @@
 | 
				
			|||||||
 | 
					.weui-navigation-bar {
 | 
				
			||||||
 | 
					  --weui-FG-0:rgba(0,0,0,.9);
 | 
				
			||||||
 | 
					  --height: 44px;
 | 
				
			||||||
 | 
					  --left: 16px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.weui-navigation-bar .android {
 | 
				
			||||||
 | 
					  --height: 48px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.weui-navigation-bar {
 | 
				
			||||||
 | 
					  overflow: hidden;
 | 
				
			||||||
 | 
					  color: var(--weui-FG-0);
 | 
				
			||||||
 | 
					  flex: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.weui-navigation-bar__inner {
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  top: 0;
 | 
				
			||||||
 | 
					  left: 0;
 | 
				
			||||||
 | 
					  height: calc(var(--height) + env(safe-area-inset-top));
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  flex-direction: row;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					  justify-content: center;
 | 
				
			||||||
 | 
					  padding-top: env(safe-area-inset-top);
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.weui-navigation-bar__left {
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  padding-left: var(--left);
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  flex-direction: row;
 | 
				
			||||||
 | 
					  align-items: flex-start;
 | 
				
			||||||
 | 
					  height: 100%;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.weui-navigation-bar__btn_goback_wrapper {
 | 
				
			||||||
 | 
					  padding: 11px 18px 11px 16px;
 | 
				
			||||||
 | 
					  margin: -11px -18px -11px -16px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.weui-navigation-bar__btn_goback_wrapper.weui-active {
 | 
				
			||||||
 | 
					  opacity: 0.5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.weui-navigation-bar__btn_goback {
 | 
				
			||||||
 | 
					  font-size: 12px;
 | 
				
			||||||
 | 
					  width: 12px;
 | 
				
			||||||
 | 
					  height: 24px;
 | 
				
			||||||
 | 
					  -webkit-mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E  %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E") no-repeat 50% 50%;
 | 
				
			||||||
 | 
					  mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E  %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E") no-repeat 50% 50%;
 | 
				
			||||||
 | 
					  -webkit-mask-size: cover;
 | 
				
			||||||
 | 
					  mask-size: cover;
 | 
				
			||||||
 | 
					  background-color: var(--weui-FG-0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.weui-navigation-bar__center {
 | 
				
			||||||
 | 
					  font-size: 17px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  flex-direction: row;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					  justify-content: center;
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  flex: 1;
 | 
				
			||||||
 | 
					  height: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.weui-navigation-bar__loading {
 | 
				
			||||||
 | 
					  margin-right: 4px;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.weui-loading {
 | 
				
			||||||
 | 
					  font-size: 16px;
 | 
				
			||||||
 | 
					  width: 16px;
 | 
				
			||||||
 | 
					  height: 16px;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  background: transparent url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A") no-repeat;
 | 
				
			||||||
 | 
					  background-size: 100%;
 | 
				
			||||||
 | 
					  margin-left: 0;
 | 
				
			||||||
 | 
					  animation: loading linear infinite 1s;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@keyframes loading {
 | 
				
			||||||
 | 
					  from {
 | 
				
			||||||
 | 
					    transform: rotate(0);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  to {
 | 
				
			||||||
 | 
					    transform: rotate(360deg);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,71 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					 | 
				
			||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
					 | 
				
			||||||
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
					 | 
				
			||||||
    <modelVersion>4.0.0</modelVersion>
 | 
					 | 
				
			||||||
    <parent>
 | 
					 | 
				
			||||||
        <groupId>org.springframework.boot</groupId>
 | 
					 | 
				
			||||||
        <artifactId>spring-boot-starter-parent</artifactId>
 | 
					 | 
				
			||||||
        <version>3.2.3</version>
 | 
					 | 
				
			||||||
        <relativePath/> <!-- lookup parent from repository -->
 | 
					 | 
				
			||||||
    </parent>
 | 
					 | 
				
			||||||
    <groupId>com.sa</groupId>
 | 
					 | 
				
			||||||
    <artifactId>bigevent</artifactId>
 | 
					 | 
				
			||||||
    <version>0.0.1-SNAPSHOT</version>
 | 
					 | 
				
			||||||
    <name>bigevent</name>
 | 
					 | 
				
			||||||
    <description>bigevent</description>
 | 
					 | 
				
			||||||
    <properties>
 | 
					 | 
				
			||||||
        <java.version>17</java.version>
 | 
					 | 
				
			||||||
    </properties>
 | 
					 | 
				
			||||||
    <dependencies>
 | 
					 | 
				
			||||||
        <dependency>
 | 
					 | 
				
			||||||
            <groupId>org.springframework.boot</groupId>
 | 
					 | 
				
			||||||
            <artifactId>spring-boot-starter-web</artifactId>
 | 
					 | 
				
			||||||
        </dependency>
 | 
					 | 
				
			||||||
        <dependency>
 | 
					 | 
				
			||||||
            <groupId>org.mybatis.spring.boot</groupId>
 | 
					 | 
				
			||||||
            <artifactId>mybatis-spring-boot-starter</artifactId>
 | 
					 | 
				
			||||||
            <version>3.0.3</version>
 | 
					 | 
				
			||||||
        </dependency>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        <dependency>
 | 
					 | 
				
			||||||
            <groupId>com.mysql</groupId>
 | 
					 | 
				
			||||||
            <artifactId>mysql-connector-j</artifactId>
 | 
					 | 
				
			||||||
            <scope>runtime</scope>
 | 
					 | 
				
			||||||
        </dependency>
 | 
					 | 
				
			||||||
        <dependency>
 | 
					 | 
				
			||||||
            <groupId>org.springframework.boot</groupId>
 | 
					 | 
				
			||||||
            <artifactId>spring-boot-starter-test</artifactId>
 | 
					 | 
				
			||||||
            <scope>test</scope>
 | 
					 | 
				
			||||||
        </dependency>
 | 
					 | 
				
			||||||
        <dependency>
 | 
					 | 
				
			||||||
            <groupId>org.mybatis.spring.boot</groupId>
 | 
					 | 
				
			||||||
            <artifactId>mybatis-spring-boot-starter-test</artifactId>
 | 
					 | 
				
			||||||
            <version>3.0.3</version>
 | 
					 | 
				
			||||||
            <scope>test</scope>
 | 
					 | 
				
			||||||
        </dependency>
 | 
					 | 
				
			||||||
        <dependency>
 | 
					 | 
				
			||||||
            <groupId>org.projectlombok</groupId>
 | 
					 | 
				
			||||||
            <artifactId>lombok</artifactId>
 | 
					 | 
				
			||||||
            <scope>annotationProcessor</scope>
 | 
					 | 
				
			||||||
        </dependency>
 | 
					 | 
				
			||||||
        <dependency>
 | 
					 | 
				
			||||||
            <groupId>org.springframework.boot</groupId>
 | 
					 | 
				
			||||||
            <artifactId>spring-boot-starter-validation</artifactId>
 | 
					 | 
				
			||||||
        </dependency>
 | 
					 | 
				
			||||||
        <dependency>
 | 
					 | 
				
			||||||
            <groupId>com.auth0</groupId>
 | 
					 | 
				
			||||||
            <artifactId>java-jwt</artifactId>
 | 
					 | 
				
			||||||
            <version>4.4.0</version>
 | 
					 | 
				
			||||||
        </dependency>
 | 
					 | 
				
			||||||
    </dependencies>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <build>
 | 
					 | 
				
			||||||
        <plugins>
 | 
					 | 
				
			||||||
            <plugin>
 | 
					 | 
				
			||||||
                <groupId>org.springframework.boot</groupId>
 | 
					 | 
				
			||||||
                <artifactId>spring-boot-maven-plugin</artifactId>
 | 
					 | 
				
			||||||
            </plugin>
 | 
					 | 
				
			||||||
        </plugins>
 | 
					 | 
				
			||||||
    </build>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</project>
 | 
					 | 
				
			||||||
@ -1,61 +0,0 @@
 | 
				
			|||||||
CREATE TABLE reports (
 | 
					 | 
				
			||||||
                        id BIGINT AUTO_INCREMENT PRIMARY KEY,
 | 
					 | 
				
			||||||
                        name TEXT,
 | 
					 | 
				
			||||||
                        selectedTime TEXT,
 | 
					 | 
				
			||||||
                        selectedDate TEXT,
 | 
					 | 
				
			||||||
                        license TEXT,
 | 
					 | 
				
			||||||
                        acftType TEXT,
 | 
					 | 
				
			||||||
                        fixstage TEXT,
 | 
					 | 
				
			||||||
                        fixcheck TEXT,
 | 
					 | 
				
			||||||
                        aarcstatus TEXT,
 | 
					 | 
				
			||||||
                        phase TEXT,
 | 
					 | 
				
			||||||
                        wether TEXT,
 | 
					 | 
				
			||||||
                        lightCondition TEXT,
 | 
					 | 
				
			||||||
                        carone TEXT,
 | 
					 | 
				
			||||||
                        cartwo TEXT,
 | 
					 | 
				
			||||||
                        workPosition TEXT,
 | 
					 | 
				
			||||||
                        task TEXT,
 | 
					 | 
				
			||||||
                        plan TEXT,
 | 
					 | 
				
			||||||
                        ats TEXT,
 | 
					 | 
				
			||||||
                        atc TEXT,
 | 
					 | 
				
			||||||
                        tcas TEXT,
 | 
					 | 
				
			||||||
                        advise TEXT,
 | 
					 | 
				
			||||||
                        involve TEXT,
 | 
					 | 
				
			||||||
                        tudentType TEXT,
 | 
					 | 
				
			||||||
                        acft0Type TEXT,
 | 
					 | 
				
			||||||
                        task0 TEXT,
 | 
					 | 
				
			||||||
                        plan0 TEXT,
 | 
					 | 
				
			||||||
                        phase0 TEXT,
 | 
					 | 
				
			||||||
                        wether0 TEXT,
 | 
					 | 
				
			||||||
                        lightCondition0 TEXT,
 | 
					 | 
				
			||||||
                        ats0 TEXT,
 | 
					 | 
				
			||||||
                        atc0 TEXT,
 | 
					 | 
				
			||||||
                        tcas0 TEXT,
 | 
					 | 
				
			||||||
                        advise0 TEXT,
 | 
					 | 
				
			||||||
                        inputValue1 TEXT,
 | 
					 | 
				
			||||||
                        inputValue2 TEXT,
 | 
					 | 
				
			||||||
                        inputValue3 TEXT,
 | 
					 | 
				
			||||||
                        inputValue4 TEXT,
 | 
					 | 
				
			||||||
                        inputValue5 TEXT,
 | 
					 | 
				
			||||||
                        inputValue6 TEXT,
 | 
					 | 
				
			||||||
                        inputValue7 TEXT,
 | 
					 | 
				
			||||||
                        inputValue8 TEXT,
 | 
					 | 
				
			||||||
                        inputValue9 TEXT,
 | 
					 | 
				
			||||||
                        inputValue10 TEXT,
 | 
					 | 
				
			||||||
                        inputValue11 TEXT,
 | 
					 | 
				
			||||||
                        inputValue12 TEXT,
 | 
					 | 
				
			||||||
                        inputValue13 TEXT,
 | 
					 | 
				
			||||||
                        inputValue14 TEXT,
 | 
					 | 
				
			||||||
                        inputValue15 TEXT,
 | 
					 | 
				
			||||||
                        inputValue16 TEXT,
 | 
					 | 
				
			||||||
                        inputValue17 TEXT,
 | 
					 | 
				
			||||||
                        inputValue18 TEXT,
 | 
					 | 
				
			||||||
                        inputValue19 TEXT,
 | 
					 | 
				
			||||||
                        inputValue20 TEXT,
 | 
					 | 
				
			||||||
                        inputValue21 TEXT,
 | 
					 | 
				
			||||||
                        inputValue22 TEXT,
 | 
					 | 
				
			||||||
                        inputValue23 TEXT,
 | 
					 | 
				
			||||||
                        inputValue100 TEXT,
 | 
					 | 
				
			||||||
                        inputValue101 TEXT,
 | 
					 | 
				
			||||||
                        inputValue102 TEXT
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.springframework.boot.SpringApplication;
 | 
					 | 
				
			||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@SpringBootApplication
 | 
					 | 
				
			||||||
public class UnsafeincidentsApplication {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static void main(String[] args) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        SpringApplication.run(UnsafeincidentsApplication.class, args);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,20 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.config;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.interceptors.LoginInterceptor;
 | 
					 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					 | 
				
			||||||
import org.springframework.context.annotation.Configuration;
 | 
					 | 
				
			||||||
import org.springframework.web.bind.annotation.RestController;
 | 
					 | 
				
			||||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 | 
					 | 
				
			||||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Configuration
 | 
					 | 
				
			||||||
public class webconfig implements WebMvcConfigurer {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Autowired
 | 
					 | 
				
			||||||
    private LoginInterceptor loginInterceptor;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void addInterceptors(InterceptorRegistry registry) {
 | 
					 | 
				
			||||||
        registry.addInterceptor(loginInterceptor).excludePathPatterns("/user/login", "/user/register");
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,53 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.controller;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.pojo.Report;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.pojo.Result;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.pojo.User;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.service.ReportService;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.service.UserService;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.utils.ThreadLocalUtil;
 | 
					 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					 | 
				
			||||||
import org.springframework.web.bind.annotation.*;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
import java.util.Map;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@RestController
 | 
					 | 
				
			||||||
@RequestMapping("/report")
 | 
					 | 
				
			||||||
public class ReportController {
 | 
					 | 
				
			||||||
    @Autowired
 | 
					 | 
				
			||||||
    ReportService reportService;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Autowired
 | 
					 | 
				
			||||||
    UserService userService;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @PostMapping("/add")
 | 
					 | 
				
			||||||
    public Result add(@RequestBody Report form) {
 | 
					 | 
				
			||||||
        reportService.add(form);
 | 
					 | 
				
			||||||
        System.out.println("test");
 | 
					 | 
				
			||||||
        return Result.success();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @GetMapping("/get")
 | 
					 | 
				
			||||||
    public Result<Report> get(Integer id) {
 | 
					 | 
				
			||||||
        return Result.success(reportService.findByID(id));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @PostMapping("/reply")
 | 
					 | 
				
			||||||
    public Result reply(Integer id, String reply) {
 | 
					 | 
				
			||||||
        reportService.reply(id, reply);
 | 
					 | 
				
			||||||
        return Result.success();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @GetMapping("/list")
 | 
					 | 
				
			||||||
    public Result<List<Report>> list() {
 | 
					 | 
				
			||||||
        Map<String,Object> claims = ThreadLocalUtil.get();
 | 
					 | 
				
			||||||
        String username = (String) claims.get("username");
 | 
					 | 
				
			||||||
        User user = userService.findByUsername(username);
 | 
					 | 
				
			||||||
        if (user.getPermissions() == 1) {
 | 
					 | 
				
			||||||
            return Result.success(reportService.list());
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            List<Report> reports = reportService.list(username);
 | 
					 | 
				
			||||||
            return Result.success(reports);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,60 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.controller;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.pojo.Result;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.pojo.User;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.service.UserService;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.utils.JwtUtil;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.utils.Md5Util;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.utils.ThreadLocalUtil;
 | 
					 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					 | 
				
			||||||
import org.springframework.web.bind.annotation.*;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.HashMap;
 | 
					 | 
				
			||||||
import java.util.Map;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@RestController
 | 
					 | 
				
			||||||
@RequestMapping("/user")
 | 
					 | 
				
			||||||
public class UserController {
 | 
					 | 
				
			||||||
    @Autowired
 | 
					 | 
				
			||||||
    UserService userService;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @PostMapping("/register")
 | 
					 | 
				
			||||||
    public Result register(String username, String password) {
 | 
					 | 
				
			||||||
        User user = userService.findByUsername(username);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (user == null) {
 | 
					 | 
				
			||||||
            userService.register(username, password);
 | 
					 | 
				
			||||||
            return Result.success();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            return Result.error("用户已存在");
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @GetMapping("/is_admin")
 | 
					 | 
				
			||||||
    public Result is_admin() {
 | 
					 | 
				
			||||||
        Map<String,Object> claims = ThreadLocalUtil.get();
 | 
					 | 
				
			||||||
        String username = (String) claims.get("username");
 | 
					 | 
				
			||||||
//        System.out.println(username);
 | 
					 | 
				
			||||||
        User user = userService.findByUsername(username);
 | 
					 | 
				
			||||||
        if (user.getPermissions() == 1) return Result.success(true);
 | 
					 | 
				
			||||||
        return Result.success(false);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @PostMapping("/login")
 | 
					 | 
				
			||||||
    public Result login(String username,String password) {
 | 
					 | 
				
			||||||
        User loginuser = userService.findByUsername(username);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//        System.out.println(username + ' ' + password);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (loginuser == null || !loginuser.getPassword().equals(Md5Util.getMD5String(password))) {
 | 
					 | 
				
			||||||
            return Result.error("用户名或密码错误");
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            Map<String,Object> claims = new HashMap<>();
 | 
					 | 
				
			||||||
            claims.put("id",loginuser.getId());
 | 
					 | 
				
			||||||
            claims.put("username",loginuser.getUsername());
 | 
					 | 
				
			||||||
            String token = JwtUtil.genToken(claims);
 | 
					 | 
				
			||||||
            return Result.success(token);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,18 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.exception;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.pojo.Result;
 | 
					 | 
				
			||||||
import org.springframework.util.StringUtils;
 | 
					 | 
				
			||||||
import org.springframework.web.bind.annotation.ExceptionHandler;
 | 
					 | 
				
			||||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@RestControllerAdvice
 | 
					 | 
				
			||||||
public class GlobalExceptionHandle {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @ExceptionHandler(Exception.class)
 | 
					 | 
				
			||||||
    public Result HandleException(Exception e) {
 | 
					 | 
				
			||||||
        e.printStackTrace();
 | 
					 | 
				
			||||||
        return Result.error(StringUtils.hasLength(e.getMessage())? e.getMessage():"操作失败");
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,31 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.interceptors;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.utils.JwtUtil;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.utils.ThreadLocalUtil;
 | 
					 | 
				
			||||||
import jakarta.servlet.http.HttpServletRequest;
 | 
					 | 
				
			||||||
import jakarta.servlet.http.HttpServletResponse;
 | 
					 | 
				
			||||||
import org.springframework.stereotype.Component;
 | 
					 | 
				
			||||||
import org.springframework.web.servlet.HandlerInterceptor;
 | 
					 | 
				
			||||||
import org.springframework.web.servlet.ModelAndView;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Component
 | 
					 | 
				
			||||||
public class LoginInterceptor implements HandlerInterceptor {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
 | 
					 | 
				
			||||||
        String token = request.getHeader("Authorization");
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            ThreadLocalUtil.set(JwtUtil.parseToken(token));
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            response.setStatus(401);
 | 
					 | 
				
			||||||
            return false;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
 | 
					 | 
				
			||||||
        ThreadLocalUtil.remove();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,104 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.mapper;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.pojo.Report;
 | 
					 | 
				
			||||||
import org.apache.ibatis.annotations.*;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Mapper
 | 
					 | 
				
			||||||
public interface ReportMapper {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Insert("INSERT INTO reports (username, name, selectedTime, selectedDate, license, acftType, fixstage, " +
 | 
					 | 
				
			||||||
            "fixcheck, aarcstatus, phase, wether, lightCondition, carone, cartwo, workPosition, task, plan, ats, atc, tcas, " +
 | 
					 | 
				
			||||||
            "advise, involve, tudentType, acft0Type, task0, plan0, phase0, wether0, lightCondition0, ats0, atc0, tcas0, " +
 | 
					 | 
				
			||||||
            "advise0, inputValue1, inputValue2, inputValue3, inputValue4, inputValue5, inputValue6, inputValue7, " +
 | 
					 | 
				
			||||||
            "inputValue8, inputValue9, inputValue10, inputValue11, inputValue12, inputValue13, inputValue14, inputValue15, " +
 | 
					 | 
				
			||||||
            "inputValue16, inputValue17, inputValue18, inputValue19, inputValue20, inputValue21, inputValue22, " +
 | 
					 | 
				
			||||||
            "inputValue23, inputValue100, inputValue101, inputValue102, reply) " +
 | 
					 | 
				
			||||||
            "VALUES (#{username}, #{name}, #{selectedTime}, #{selectedDate}, #{license}, #{acftType}, #{fixstage}, " +
 | 
					 | 
				
			||||||
            "#{fixcheck}, #{aarcstatus}, #{phase}, #{wether}, #{lightCondition}, #{carone}, #{cartwo}, #{workPosition}, " +
 | 
					 | 
				
			||||||
            "#{task}, #{plan}, #{ats}, #{atc}, #{tcas}, #{advise}, #{involve}, #{tudentType}, #{acft0Type}, #{task0}, " +
 | 
					 | 
				
			||||||
            "#{plan0}, #{phase0}, #{wether0}, #{lightCondition0}, #{ats0}, #{atc0}, #{tcas0}, #{advise0}, " +
 | 
					 | 
				
			||||||
            "#{inputValue1}, #{inputValue2}, #{inputValue3}, #{inputValue4}, #{inputValue5}, #{inputValue6}, " +
 | 
					 | 
				
			||||||
            "#{inputValue7}, #{inputValue8}, #{inputValue9}, #{inputValue10}, #{inputValue11}, #{inputValue12}, " +
 | 
					 | 
				
			||||||
            "#{inputValue13}, #{inputValue14}, #{inputValue15}, #{inputValue16}, #{inputValue17}, #{inputValue18}, " +
 | 
					 | 
				
			||||||
            "#{inputValue19}, #{inputValue20}, #{inputValue21}, #{inputValue22}, #{inputValue23}, #{inputValue100}, " +
 | 
					 | 
				
			||||||
            "#{inputValue101}, #{inputValue102}, #{reply})")
 | 
					 | 
				
			||||||
    void add(Report report);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Delete("DELETE FROM reports WHERE id = #{id}")
 | 
					 | 
				
			||||||
    void deleteById(Long id);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Select("select * from reports where name=#{name}")
 | 
					 | 
				
			||||||
    ArrayList<Report> findByName(String name);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Select("select * from reports")
 | 
					 | 
				
			||||||
    ArrayList<Report> list();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Select("select * from reports where id=#{id}")
 | 
					 | 
				
			||||||
    Report findByID(Integer id);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Update("UPDATE reports SET " +
 | 
					 | 
				
			||||||
            "name = #{name}, " +
 | 
					 | 
				
			||||||
            "selectedTime = #{selectedTime}, " +
 | 
					 | 
				
			||||||
            "selectedDate = #{selectedDate}, " +
 | 
					 | 
				
			||||||
            "license = #{license}, " +
 | 
					 | 
				
			||||||
            "acftType = #{acftType}, " +
 | 
					 | 
				
			||||||
            "fixstage = #{fixstage}, " +
 | 
					 | 
				
			||||||
            "fixcheck = #{fixcheck}, " +
 | 
					 | 
				
			||||||
            "aarcstatus = #{aarcstatus}, " +
 | 
					 | 
				
			||||||
            "phase = #{phase}, " +
 | 
					 | 
				
			||||||
            "wether = #{wether}, " +
 | 
					 | 
				
			||||||
            "lightCondition = #{lightCondition}, " +
 | 
					 | 
				
			||||||
            "carone = #{carone}, " +
 | 
					 | 
				
			||||||
            "cartwo = #{cartwo}, " +
 | 
					 | 
				
			||||||
            "workPosition = #{workPosition}, " +
 | 
					 | 
				
			||||||
            "task = #{task}, " +
 | 
					 | 
				
			||||||
            "plan = #{plan}, " +
 | 
					 | 
				
			||||||
            "ats = #{ats}, " +
 | 
					 | 
				
			||||||
            "atc = #{atc}, " +
 | 
					 | 
				
			||||||
            "tcas = #{tcas}, " +
 | 
					 | 
				
			||||||
            "advise = #{advise}, " +
 | 
					 | 
				
			||||||
            "involve = #{involve}, " +
 | 
					 | 
				
			||||||
            "tudentType = #{tudentType}, " +
 | 
					 | 
				
			||||||
            "acft0Type = #{acft0Type}, " +
 | 
					 | 
				
			||||||
            "task0 = #{task0}, " +
 | 
					 | 
				
			||||||
            "plan0 = #{plan0}, " +
 | 
					 | 
				
			||||||
            "phase0 = #{phase0}, " +
 | 
					 | 
				
			||||||
            "wether0 = #{wether0}, " +
 | 
					 | 
				
			||||||
            "lightCondition0 = #{lightCondition0}, " +
 | 
					 | 
				
			||||||
            "ats0 = #{ats0}, " +
 | 
					 | 
				
			||||||
            "atc0 = #{atc0}, " +
 | 
					 | 
				
			||||||
            "tcas0 = #{tcas0}, " +
 | 
					 | 
				
			||||||
            "advise0 = #{advise0}, " +
 | 
					 | 
				
			||||||
            "inputValue1 = #{inputValue1}, " +
 | 
					 | 
				
			||||||
            "inputValue2 = #{inputValue2}, " +
 | 
					 | 
				
			||||||
            "inputValue3 = #{inputValue3}, " +
 | 
					 | 
				
			||||||
            "inputValue4 = #{inputValue4}, " +
 | 
					 | 
				
			||||||
            "inputValue5 = #{inputValue5}, " +
 | 
					 | 
				
			||||||
            "inputValue6 = #{inputValue6}, " +
 | 
					 | 
				
			||||||
            "inputValue7 = #{inputValue7}, " +
 | 
					 | 
				
			||||||
            "inputValue8 = #{inputValue8}, " +
 | 
					 | 
				
			||||||
            "inputValue9 = #{inputValue9}, " +
 | 
					 | 
				
			||||||
            "inputValue10 = #{inputValue10}, " +
 | 
					 | 
				
			||||||
            "inputValue11 = #{inputValue11}, " +
 | 
					 | 
				
			||||||
            "inputValue12 = #{inputValue12}, " +
 | 
					 | 
				
			||||||
            "inputValue13 = #{inputValue13}, " +
 | 
					 | 
				
			||||||
            "inputValue14 = #{inputValue14}, " +
 | 
					 | 
				
			||||||
            "inputValue15 = #{inputValue15}, " +
 | 
					 | 
				
			||||||
            "inputValue16 = #{inputValue16}, " +
 | 
					 | 
				
			||||||
            "inputValue17 = #{inputValue17}, " +
 | 
					 | 
				
			||||||
            "inputValue18 = #{inputValue18}, " +
 | 
					 | 
				
			||||||
            "inputValue19 = #{inputValue19}, " +
 | 
					 | 
				
			||||||
            "inputValue20 = #{inputValue20}, " +
 | 
					 | 
				
			||||||
            "inputValue21 = #{inputValue21}, " +
 | 
					 | 
				
			||||||
            "inputValue22 = #{inputValue22}, " +
 | 
					 | 
				
			||||||
            "inputValue23 = #{inputValue23}, " +
 | 
					 | 
				
			||||||
            "inputValue100 = #{inputValue100}, " +
 | 
					 | 
				
			||||||
            "inputValue101 = #{inputValue101}, " +
 | 
					 | 
				
			||||||
            "inputValue102 = #{inputValue102}, " +
 | 
					 | 
				
			||||||
            "reply = #{reply} " +
 | 
					 | 
				
			||||||
            "WHERE id = #{id}")
 | 
					 | 
				
			||||||
    void update(Integer id,Report report);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,18 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.mapper;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.pojo.User;
 | 
					 | 
				
			||||||
import org.apache.ibatis.annotations.Insert;
 | 
					 | 
				
			||||||
import org.apache.ibatis.annotations.Mapper;
 | 
					 | 
				
			||||||
import org.apache.ibatis.annotations.Select;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Mapper
 | 
					 | 
				
			||||||
public interface UserMapper {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Select("select * from users where username = #{username}")
 | 
					 | 
				
			||||||
    User findByUsername(String username);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Insert("INSERT INTO users (username, password, create_time, update_time) " +
 | 
					 | 
				
			||||||
            "VALUES (#{username}, #{md5Password}, NOW(), NOW())")
 | 
					 | 
				
			||||||
    void register(String username, String md5Password);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,14 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.pojo;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
 | 
					 | 
				
			||||||
import lombok.Data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Data
 | 
					 | 
				
			||||||
public class Image {
 | 
					 | 
				
			||||||
    private Integer id; //图片id
 | 
					 | 
				
			||||||
    private String image; //图片url
 | 
					 | 
				
			||||||
    private String link; //图片跳转链接
 | 
					 | 
				
			||||||
    private String content; //图片文本
 | 
					 | 
				
			||||||
    @JsonIgnore
 | 
					 | 
				
			||||||
    private String category; //图片类别,图片用在什么地方
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,68 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.pojo;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import lombok.Data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Data
 | 
					 | 
				
			||||||
public class Report {
 | 
					 | 
				
			||||||
    private Integer id;
 | 
					 | 
				
			||||||
    private String username;
 | 
					 | 
				
			||||||
    private String name;
 | 
					 | 
				
			||||||
    private String selectedTime;
 | 
					 | 
				
			||||||
    private String selectedDate;
 | 
					 | 
				
			||||||
    private String license;
 | 
					 | 
				
			||||||
    private String acftType;
 | 
					 | 
				
			||||||
    private String fixstage;
 | 
					 | 
				
			||||||
    private String fixcheck;
 | 
					 | 
				
			||||||
    private String aarcstatus;
 | 
					 | 
				
			||||||
    private String phase;
 | 
					 | 
				
			||||||
    private String wether;
 | 
					 | 
				
			||||||
    private String lightCondition;
 | 
					 | 
				
			||||||
    private String carone;
 | 
					 | 
				
			||||||
    private String cartwo;
 | 
					 | 
				
			||||||
    private String workPosition;
 | 
					 | 
				
			||||||
    private String task;
 | 
					 | 
				
			||||||
    private String plan;
 | 
					 | 
				
			||||||
    private String ats;
 | 
					 | 
				
			||||||
    private String atc;
 | 
					 | 
				
			||||||
    private String tcas;
 | 
					 | 
				
			||||||
    private String advise;
 | 
					 | 
				
			||||||
    private String involve;
 | 
					 | 
				
			||||||
    private String tudentType;
 | 
					 | 
				
			||||||
    private String acft0Type;
 | 
					 | 
				
			||||||
    private String task0;
 | 
					 | 
				
			||||||
    private String plan0;
 | 
					 | 
				
			||||||
    private String phase0;
 | 
					 | 
				
			||||||
    private String wether0;
 | 
					 | 
				
			||||||
    private String lightCondition0;
 | 
					 | 
				
			||||||
    private String ats0;
 | 
					 | 
				
			||||||
    private String atc0;
 | 
					 | 
				
			||||||
    private String tcas0;
 | 
					 | 
				
			||||||
    private String advise0;
 | 
					 | 
				
			||||||
    private String inputValue1;
 | 
					 | 
				
			||||||
    private String inputValue2;
 | 
					 | 
				
			||||||
    private String inputValue3;
 | 
					 | 
				
			||||||
    private String inputValue4;
 | 
					 | 
				
			||||||
    private String inputValue5;
 | 
					 | 
				
			||||||
    private String inputValue6;
 | 
					 | 
				
			||||||
    private String inputValue7;
 | 
					 | 
				
			||||||
    private String inputValue8;
 | 
					 | 
				
			||||||
    private String inputValue9;
 | 
					 | 
				
			||||||
    private String inputValue10;
 | 
					 | 
				
			||||||
    private String inputValue11;
 | 
					 | 
				
			||||||
    private String inputValue12;
 | 
					 | 
				
			||||||
    private String inputValue13;
 | 
					 | 
				
			||||||
    private String inputValue14;
 | 
					 | 
				
			||||||
    private String inputValue15;
 | 
					 | 
				
			||||||
    private String inputValue16;
 | 
					 | 
				
			||||||
    private String inputValue17;
 | 
					 | 
				
			||||||
    private String inputValue18;
 | 
					 | 
				
			||||||
    private String inputValue19;
 | 
					 | 
				
			||||||
    private String inputValue20;
 | 
					 | 
				
			||||||
    private String inputValue21;
 | 
					 | 
				
			||||||
    private String inputValue22;
 | 
					 | 
				
			||||||
    private String inputValue23;
 | 
					 | 
				
			||||||
    private String inputValue100;
 | 
					 | 
				
			||||||
    private String inputValue101;
 | 
					 | 
				
			||||||
    private String inputValue102;
 | 
					 | 
				
			||||||
    private String reply;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,31 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.pojo;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//统一响应结果
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import lombok.AllArgsConstructor;
 | 
					 | 
				
			||||||
import lombok.Data;
 | 
					 | 
				
			||||||
import lombok.NoArgsConstructor;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@NoArgsConstructor
 | 
					 | 
				
			||||||
@AllArgsConstructor
 | 
					 | 
				
			||||||
@Data
 | 
					 | 
				
			||||||
public class Result<T> {
 | 
					 | 
				
			||||||
    private Integer code;//业务状态码  0-成功  1-失败
 | 
					 | 
				
			||||||
    private String message;//提示信息
 | 
					 | 
				
			||||||
    private T data;//响应数据
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //快速返回操作成功响应结果(带响应数据)
 | 
					 | 
				
			||||||
    public static <E> Result<E> success(E data) {
 | 
					 | 
				
			||||||
        return new Result<>(0, "操作成功", data);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //快速返回操作成功响应结果
 | 
					 | 
				
			||||||
    public static Result success() {
 | 
					 | 
				
			||||||
        return new Result(0, "操作成功", null);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static Result error(String message) {
 | 
					 | 
				
			||||||
        return new Result(1, message, null);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,17 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.pojo;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
 | 
					 | 
				
			||||||
import lombok.Data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.time.LocalDateTime;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Data
 | 
					 | 
				
			||||||
public class User {
 | 
					 | 
				
			||||||
    private Integer id;//主键ID
 | 
					 | 
				
			||||||
    private String username;//用户名
 | 
					 | 
				
			||||||
    @JsonIgnore
 | 
					 | 
				
			||||||
    private String password;//密码
 | 
					 | 
				
			||||||
    private Integer permissions;
 | 
					 | 
				
			||||||
    private LocalDateTime createTime;//创建时间
 | 
					 | 
				
			||||||
    private LocalDateTime updateTime;//更新时间
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,17 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.service;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.pojo.Report;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public interface ReportService {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void add(Report form);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ArrayList<Report> list(String name);
 | 
					 | 
				
			||||||
    ArrayList<Report> list();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Report findByID(Integer id);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void reply(Integer id, String reply);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,10 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.service;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.pojo.User;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public interface UserService {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    User findByUsername(String username);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void register(String username, String password);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,46 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.service.impl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.mapper.ReportMapper;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.pojo.Report;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.service.ReportService;
 | 
					 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Service
 | 
					 | 
				
			||||||
public class ReportServiceImpl implements ReportService {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Autowired
 | 
					 | 
				
			||||||
    ReportMapper reportMapper;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void add(Report form) {
 | 
					 | 
				
			||||||
        reportMapper.add(form);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public ArrayList<Report> list(String name){
 | 
					 | 
				
			||||||
        return reportMapper.findByName(name);
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public ArrayList<Report> list(){
 | 
					 | 
				
			||||||
        return reportMapper.list();
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public Report findByID(Integer id) {
 | 
					 | 
				
			||||||
        return reportMapper.findByID(id);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void reply(Integer id,String reply) {
 | 
					 | 
				
			||||||
        Report report = reportMapper.findByID(id);
 | 
					 | 
				
			||||||
        report.setReply(reply);
 | 
					 | 
				
			||||||
        reportMapper.update(id, report);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,29 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.service.impl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.mapper.UserMapper;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.pojo.User;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.service.UserService;
 | 
					 | 
				
			||||||
import com.sa.unsafeincidents.utils.Md5Util;
 | 
					 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Service
 | 
					 | 
				
			||||||
public class UserServiceImpl implements UserService {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Autowired
 | 
					 | 
				
			||||||
    UserMapper userMapper;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public User findByUsername(String username) {
 | 
					 | 
				
			||||||
        return userMapper.findByUsername(username);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public void register(String username, String password) {
 | 
					 | 
				
			||||||
        String md5Password = Md5Util.getMD5String(password);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        userMapper.register(username,md5Password);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,30 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.utils;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.auth0.jwt.JWT;
 | 
					 | 
				
			||||||
import com.auth0.jwt.algorithms.Algorithm;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.Date;
 | 
					 | 
				
			||||||
import java.util.Map;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class JwtUtil {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static final String KEY = "sa";
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	//接收业务数据,生成token并返回
 | 
					 | 
				
			||||||
    public static String genToken(Map<String, Object> claims) {
 | 
					 | 
				
			||||||
        return JWT.create()
 | 
					 | 
				
			||||||
                .withClaim("claims", claims)
 | 
					 | 
				
			||||||
                .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12))
 | 
					 | 
				
			||||||
                .sign(Algorithm.HMAC256(KEY));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	//接收token,验证token,并返回业务数据
 | 
					 | 
				
			||||||
    public static Map<String, Object> parseToken(String token) {
 | 
					 | 
				
			||||||
        return JWT.require(Algorithm.HMAC256(KEY))
 | 
					 | 
				
			||||||
                .build()
 | 
					 | 
				
			||||||
                .verify(token)
 | 
					 | 
				
			||||||
                .getClaim("claims")
 | 
					 | 
				
			||||||
                .asMap();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,26 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents.utils;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * ThreadLocal 工具类
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
@SuppressWarnings("all")
 | 
					 | 
				
			||||||
public class ThreadLocalUtil {
 | 
					 | 
				
			||||||
    //提供ThreadLocal对象,
 | 
					 | 
				
			||||||
    private static final ThreadLocal THREAD_LOCAL = new ThreadLocal();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //根据键获取值
 | 
					 | 
				
			||||||
    public static <T> T get(){
 | 
					 | 
				
			||||||
        return (T) THREAD_LOCAL.get();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
    //存储键值对
 | 
					 | 
				
			||||||
    public static void set(Object value){
 | 
					 | 
				
			||||||
        THREAD_LOCAL.set(value);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //清除ThreadLocal 防止内存泄漏
 | 
					 | 
				
			||||||
    public static void remove(){
 | 
					 | 
				
			||||||
        THREAD_LOCAL.remove();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,11 +0,0 @@
 | 
				
			|||||||
server:
 | 
					 | 
				
			||||||
  port: 8080
 | 
					 | 
				
			||||||
spring:
 | 
					 | 
				
			||||||
  datasource:
 | 
					 | 
				
			||||||
    driver-class-name: com.mysql.cj.jdbc.Driver
 | 
					 | 
				
			||||||
    url: jdbc:mysql://localhost:3306/unsafeincidents
 | 
					 | 
				
			||||||
    username: root
 | 
					 | 
				
			||||||
    password: 200408
 | 
					 | 
				
			||||||
mybatis:
 | 
					 | 
				
			||||||
  configuration:
 | 
					 | 
				
			||||||
    map-underscore-to-camel-case: true
 | 
					 | 
				
			||||||
@ -1,6 +0,0 @@
 | 
				
			|||||||
<html>
 | 
					 | 
				
			||||||
<body>
 | 
					 | 
				
			||||||
<h1>hello word!!!</h1>
 | 
					 | 
				
			||||||
<p>this is a html page</p>
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
@ -1,13 +0,0 @@
 | 
				
			|||||||
package com.sa.unsafeincidents;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.junit.jupiter.api.Test;
 | 
					 | 
				
			||||||
import org.springframework.boot.test.context.SpringBootTest;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@SpringBootTest
 | 
					 | 
				
			||||||
class UnsafeincidentsApplicationTests {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    void contextLoads() {
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue