瀏覽代碼

故障处理添加引入知识库关联

maotao 11 月之前
父節點
當前提交
effa186269

+ 5 - 0
http/api.js

@@ -202,3 +202,8 @@ export function api_sj(){
202
 export function api_incidentCategoryConsumable(data){
202
 export function api_incidentCategoryConsumable(data){
203
   return post("/user/data/fetchDataList/incidentCategoryConsumable", data);
203
   return post("/user/data/fetchDataList/incidentCategoryConsumable", data);
204
 }
204
 }
205
+
206
+// 获取知识库列表
207
+export function api_getSolution(data){
208
+  return post("/solution/fetchDataList/solution", data);
209
+}

+ 16 - 9
pages.json

@@ -166,15 +166,22 @@
166
         }
166
         }
167
       }
167
       }
168
     },
168
     },
169
-    {
170
-      "path": "pages/searchUser/searchUser",
171
-      "style": {
172
-        "h5": {
173
-          "titleNView": false
174
-        },
175
-        "enablePullDownRefresh": true
176
-      }
177
-    }
169
+   {
170
+     "path": "pages/repository/repository",
171
+     "style": {
172
+       "h5": {
173
+         "titleNView": false
174
+       }
175
+     }
176
+   },
177
+	 {
178
+	   "path": "pages/repositoryDetails/repositoryDetails",
179
+	   "style": {
180
+	     "h5": {
181
+	       "titleNView": false
182
+	     }
183
+	   }
184
+	 }
178
   ],
185
   ],
179
   "globalStyle": {
186
   "globalStyle": {
180
     "navigationBarTextStyle": "black",
187
     "navigationBarTextStyle": "black",

+ 1 - 1
pages/categoryOne/categoryOne.vue

@@ -62,7 +62,7 @@
62
 
62
 
63
     let postData = {
63
     let postData = {
64
       idx: dataInfo.idx,
64
       idx: dataInfo.idx,
65
-      sum: 20,
65
+      sum: 9999,
66
       incidentcategory: {
66
       incidentcategory: {
67
         selectType: 'one',
67
         selectType: 'one',
68
       }
68
       }

+ 51 - 4
pages/handler/handler.vue

@@ -76,8 +76,14 @@
76
       <!-- 故障处理 -->
76
       <!-- 故障处理 -->
77
       <template v-if="dataInfo.tabActiveValue === 'doing' && !isInSummaryOrder">
77
       <template v-if="dataInfo.tabActiveValue === 'doing' && !isInSummaryOrder">
78
         <view class="form_item column" v-if="dataInfo.category.hasSimple != 1">
78
         <view class="form_item column" v-if="dataInfo.category.hasSimple != 1">
79
-          <view class="title"><text class="required newicon newicon-bitian"></text>解决方案:</view>
80
-          <uni-easyinput class="value" type="textarea" v-model="dataInfo.handleDescription" placeholder="请输入解决方案" :class="{formRed: isSubmit && !dataInfo.handleDescription.trim()}" />
79
+          <view class="title title-width">
80
+						<text class="required newicon newicon-bitian"></text>
81
+						<view class="title-fl-sb">
82
+							解决方案:
83
+							<view @click="importRep('malfunction')" class="import-rep">引入知识库({{dataInfo.introduceCount}})</view>
84
+						</view>	
85
+					</view>
86
+          <uni-easyinput id="scheme" class="value" type="textarea" v-model="dataInfo.handleDescription" placeholder="请输入解决方案" :class="{formRed: isSubmit && !dataInfo.handleDescription.trim()}" />
81
         </view>
87
         </view>
82
         <view class="form_item" v-if="dataInfo.category.hasSimple != 1">
88
         <view class="form_item" v-if="dataInfo.category.hasSimple != 1">
83
           <view class="title"><text class="required newicon newicon-bitian"></text>故障现象:</view>
89
           <view class="title"><text class="required newicon newicon-bitian"></text>故障现象:</view>
@@ -212,8 +218,12 @@
212
     category: {},//故障现象
218
     category: {},//故障现象
213
     synergetic: [],//协同人员
219
     synergetic: [],//协同人员
214
     isSummaryNext: false,//汇总单-下一步
220
     isSummaryNext: false,//汇总单-下一步
221
+		introduceCount :0
215
   })
222
   })
216
   
223
   
224
+	// 知识库id
225
+	const solutionId = ref(null)
226
+	
217
   // 是否提交
227
   // 是否提交
218
   const isSubmit = ref(false)
228
   const isSubmit = ref(false)
219
   
229
   
@@ -300,6 +310,13 @@
300
     })
310
     })
301
   }
311
   }
302
   
312
   
313
+	// 引入知识库
314
+	function importRep(type){
315
+		uni.navigateTo({
316
+		  url: `/pages/repository/repository?incidentId=${dataInfo.incidentId}&operateType=${type}`
317
+		})
318
+	}
319
+	
303
   // 选择故障现象
320
   // 选择故障现象
304
   function selectCategory(){
321
   function selectCategory(){
305
     handlerStore.setHandlerData(dataInfo, 'handler');
322
     handlerStore.setHandlerData(dataInfo, 'handler');
@@ -675,8 +692,8 @@
675
   function handlerOrder(){
692
   function handlerOrder(){
676
     let postData = {
693
     let postData = {
677
       incident: dataInfo.incidentData,
694
       incident: dataInfo.incidentData,
695
+			solutionId:solutionId.value
678
     }
696
     }
679
-    
680
     postData.incident.handleDescription = dataInfo.handleDescription;
697
     postData.incident.handleDescription = dataInfo.handleDescription;
681
     postData.incident.handleCategory = {id: dataInfo.handleCategory};
698
     postData.incident.handleCategory = {id: dataInfo.handleCategory};
682
     postData.incident.closecode = {id: dataInfo.closecode};
699
     postData.incident.closecode = {id: dataInfo.closecode};
@@ -825,8 +842,23 @@
825
     })
842
     })
826
   }
843
   }
827
   
844
   
845
+	// 获取文本内容
846
+	function getHtml(html) {
847
+	  const tempDiv = document.createElement('div');
848
+	  tempDiv.innerHTML = html;
849
+	  return tempDiv.textContent || tempDiv.innerText || '';
850
+	}
851
+	
828
   onLoad((option) => {
852
   onLoad((option) => {
829
-    dataInfo.incidentId = option.incidentId;
853
+		if(option.type&&decodeURIComponent(option.type=='rep')){
854
+			let handleDescription = decodeURIComponent(option.handleDescription)
855
+			solutionId.value = JSON.parse(decodeURIComponent(option.solutionId))
856
+			dataInfo.introduceCount = decodeURIComponent(option.introduceCount!="undefined"?option.introduceCount:0)
857
+			if(handleDescription!='undefined'){
858
+				dataInfo.handleDescription = getHtml(handleDescription);
859
+			}
860
+		}
861
+    dataInfo.incidentId = JSON.parse(decodeURIComponent(option.incidentId))
830
     dataInfo.isSummaryNext = option.isSummaryNext == 1;
862
     dataInfo.isSummaryNext = option.isSummaryNext == 1;
831
     getIncidentDetail();
863
     getIncidentDetail();
832
   })
864
   })
@@ -958,9 +990,24 @@
958
         height: auto;
990
         height: auto;
959
         flex-direction: column;
991
         flex-direction: column;
960
         align-items: flex-start;
992
         align-items: flex-start;
993
+				.import-rep{
994
+					padding: 5rpx 10rpx;
995
+					border-radius: 50rpx;
996
+					background: #d1fcd5;
997
+					color: #49b856;
998
+					font-size: 24rpx;
999
+				}
961
         .title{
1000
         .title{
962
           margin-right: 0;
1001
           margin-right: 0;
963
         }
1002
         }
1003
+				.title-width{
1004
+					width: 100%;
1005
+				}
1006
+				.title-fl-sb{
1007
+					display: flex;
1008
+					justify-content: space-between;
1009
+					width: 100%;
1010
+				}
964
         .value{
1011
         .value{
965
           margin-top: 10rpx;
1012
           margin-top: 10rpx;
966
           padding-left: 20rpx;
1013
           padding-left: 20rpx;

+ 4 - 0
pages/incidentDetail/incidentDetail.vue

@@ -110,6 +110,10 @@
110
             <text class="name">协同人:</text>
110
             <text class="name">协同人:</text>
111
             <text class="value">{{dataInfo.incidentData.synergetic && dataInfo.incidentData.synergetic.length ? dataInfo.incidentData.synergetic.map(v => v.name).join(',') : '无'}}</text>
111
             <text class="value">{{dataInfo.incidentData.synergetic && dataInfo.incidentData.synergetic.length ? dataInfo.incidentData.synergetic.map(v => v.name).join(',') : '无'}}</text>
112
           </view>
112
           </view>
113
+					<view class="deital_item">
114
+					  <text class="name">引用知识库:</text>
115
+					  <text class="value">{{dataInfo.incidentData.solutionNo?dataInfo.incidentData.solutionNo:'未引用'}}</text>
116
+					</view>
113
         </view>
117
         </view>
114
       </template>
118
       </template>
115
 
119
 

+ 211 - 0
pages/repository/repository.vue

@@ -0,0 +1,211 @@
1
+<template>
2
+  <view class="categoryOne">
3
+    <view class="body" v-if="dataInfo.list.length">
4
+      <view class="body_item ellipsis" v-for="data in dataInfo.list" :key="data.id">
5
+				<view @click="toCategoryTwo(data)">
6
+					<view class="title">{{data.title}}</view>
7
+					<view class="content">
8
+						<view v-html="data.content"></view>
9
+					</view>
10
+					<view class="sign">
11
+						<view>引入次数:{{data.introduceCount}}</view>
12
+						<view>{{data.createtime}}</view>
13
+					</view>
14
+				</view>
15
+				<view class="btn-style">
16
+					<button @click="importData(data)" @touchmove.stop.prevent type="default" class="primaryButton btn">引入</button>
17
+				</view>
18
+      </view>
19
+    </view>
20
+    <view class="zanwu" v-else>
21
+      <text class="newicon newicon-zanwu"></text>
22
+    </view>
23
+  </view>
24
+</template>
25
+
26
+<script setup>
27
+  import { ref, reactive} from 'vue'
28
+  import { onLoad, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app'
29
+  import { api_getSolution } from "@/http/api.js"
30
+  import { defaultColor } from '@/static/js/theme.js'
31
+  import { useSetTitle } from '@/share/useSetTitle.js'
32
+  import { useLoginUserStore } from '@/stores/loginUser'
33
+  import { useGoBack } from '@/share/useGoBack.js'
34
+  
35
+  useSetTitle();
36
+  const loginUserStore = useLoginUserStore();
37
+  const { goBack }  = useGoBack();
38
+  
39
+	// 操作类型
40
+	const operateType = ref(null)
41
+	
42
+  // 主题颜色
43
+  const primaryColor = ref(defaultColor)
44
+  
45
+  // 数据
46
+  const dataInfo = reactive({
47
+    list: [],//工单列表
48
+    idx: 0,//页码
49
+    hasMore: true,//是否有更多数据
50
+    incidentId: undefined,//事件ID
51
+  })
52
+  
53
+  // 跳转知识库详情
54
+  function toCategoryTwo(data){
55
+    uni.navigateTo({
56
+      url: `/pages/repositoryDetails/repositoryDetails?incidentId=${dataInfo.incidentId}
57
+			&solutionnumber=${data.solutionnumber}&operateType=${operateType.value}`
58
+    })
59
+  }
60
+	
61
+  // 引入
62
+	function importData(data){
63
+		let url = null
64
+		if(operateType.value=='malfunction'){ //故障处理
65
+			url = '/pages/handler/handler'
66
+		}else if(operateType.value=='reissue'){ //补单
67
+			url = '/pages/handler/handler'
68
+		}
69
+		uni.navigateTo({
70
+		  url: `${url}?incidentId=${encodeURIComponent(JSON.stringify(dataInfo.incidentId))}
71
+			&handleDescription=${encodeURIComponent(data.content)}&solutionId=${encodeURIComponent(JSON.stringify(data.id))}&isSummaryNext=1&type=${encodeURIComponent('rep')}
72
+			&introduceCount=${encodeURIComponent(data.introduceCount)}`
73
+		})
74
+	}
75
+	
76
+  // 获取列表信息
77
+  function getList(idx){
78
+    uni.showLoading({
79
+      title: "加载中",
80
+      mask: true,
81
+    });
82
+    
83
+    dataInfo.idx = idx === undefined ? dataInfo.idx : idx;
84
+    if(dataInfo.idx === 0){
85
+      dataInfo.list = [];
86
+    }
87
+
88
+    let postData = {
89
+      idx: dataInfo.idx,
90
+      sum: 20,
91
+      solution: {
92
+        selectType:"",
93
+				keySearch:"",
94
+				keywords:"",
95
+				solutionType:{id:""},
96
+				status:{id:72},
97
+				createUser:{name:""},
98
+				dutyId:1,
99
+				tabType:"publish"
100
+      }
101
+    }
102
+    
103
+    api_getSolution(postData).then(res => {
104
+      uni.hideLoading();
105
+      uni.stopPullDownRefresh();
106
+      if(res.status == 200){
107
+        let list = res.list || [];
108
+        if(list.length){
109
+          dataInfo.hasMore = true;
110
+          dataInfo.list = dataInfo.idx === 0 ? list : dataInfo.list.concat(list);
111
+        }else{
112
+          dataInfo.hasMore = false;
113
+        }
114
+      }else{
115
+        uni.showToast({
116
+          icon: 'none',
117
+          title: res.msg || '请求数据失败!'
118
+        });
119
+      }
120
+    })
121
+  }
122
+  
123
+  onLoad((option) => {
124
+    dataInfo.incidentId = option.incidentId;
125
+		operateType.value = option.operateType;
126
+    getList(0);
127
+  })
128
+  
129
+  onPullDownRefresh(() => {
130
+    getList(0)
131
+  })
132
+  
133
+  onReachBottom(() => {
134
+    dataInfo.idx += 1;
135
+    if (dataInfo.hasMore) {
136
+      getList(); // 当触底时加载更多数据
137
+    }
138
+  })
139
+</script>
140
+
141
+<style lang="scss" scoped>
142
+.categoryOne{
143
+  display: flex;
144
+  flex-direction: column;
145
+  justify-content: space-between;
146
+  .head{
147
+    height: 88rpx;
148
+    display: flex;
149
+    align-items: center;
150
+    padding: 0 24rpx;
151
+    position: fixed;
152
+    z-index: 99;
153
+    width: 100%;
154
+    box-sizing: border-box;
155
+    background: #fff;
156
+    font-size: 26rpx;
157
+    color: $uni-primary;
158
+  }
159
+  .body{
160
+    font-size: 30rpx;
161
+    .body_item{
162
+      border-bottom: 8rpx solid #DEDEDE;
163
+			.title{
164
+				font-weight: 600;
165
+				padding: 24rpx;
166
+				border-bottom: 1rpx solid #DEDEDE;
167
+			}
168
+			.content{
169
+				color: #6A6A6A;
170
+				font-size: 24rpx;
171
+				padding: 24rpx;
172
+				border-bottom: 1rpx solid #DEDEDE;
173
+				view{
174
+					display: -webkit-box;
175
+					overflow: hidden;
176
+					-webkit-box-orient: vertical;
177
+					-webkit-line-clamp: 3;
178
+					text-overflow: ellipsis;
179
+					white-space: initial;
180
+				}
181
+			}
182
+			.sign{
183
+				display: flex;
184
+				justify-content: space-between;
185
+				padding: 24rpx 24rpx 0 24rpx;
186
+				font-size: 26rpx;
187
+			}
188
+			.btn-style{
189
+				padding: 24rpx;
190
+			}
191
+    }
192
+  }
193
+  .zanwu{
194
+    margin-bottom: 140rpx;
195
+    margin-top: 88rpx;
196
+    display: flex;
197
+    justify-content: center;
198
+    .newicon-zanwu{
199
+      font-size: 256rpx;
200
+      color: #D6D6D6;
201
+      margin-top: 140rpx;
202
+    }
203
+  }
204
+  .foot_common_btns{
205
+    position: fixed;
206
+    left: 0;
207
+    bottom: 0;
208
+    background-color: #fff;
209
+  }
210
+}
211
+</style>

+ 205 - 0
pages/repositoryDetails/repositoryDetails.vue

@@ -0,0 +1,205 @@
1
+<template>
2
+  <view class="box">
3
+    <view class="head">{{dataInfo.data.title}}</view>
4
+    <view class="sign">
5
+			<text>引入次数:{{dataInfo.data.introduceCount}}</text>
6
+			<text>版本号:{{dataInfo.data.visionNumber}}</text>
7
+			<text>{{dataInfo.data.createtime}}</text>
8
+		</view>
9
+		<view class="theme">{{mutiCategory}}</view>
10
+		<view class="content" v-html="dataInfo.data.content"></view>
11
+		<view class="file-list" v-for="item in dataInfo.fileData" :key="item">
12
+			<view class="file-item" @click="downloadFile(item)">{{item.name}}</view>
13
+			<text class="newicon newicon-xiazai" @click="downloadFile(item)"></text>
14
+		</view>
15
+		<button @click="importData" type="default" class="primaryButton btn btn-style">引入</button>
16
+  </view>
17
+</template>
18
+
19
+<script setup>
20
+  import { ref, reactive} from 'vue'
21
+  import { onLoad } from '@dcloudio/uni-app'
22
+  import { api_getSolution, api_listAttachment} from "@/http/api.js"
23
+  import { useSetTitle } from '@/share/useSetTitle.js'
24
+  import { useLoginUserStore } from '@/stores/loginUser'
25
+  import { useGoBack } from '@/share/useGoBack.js'
26
+  
27
+  useSetTitle();
28
+  const loginUserStore = useLoginUserStore();
29
+  const { goBack }  = useGoBack();
30
+  
31
+  // 故障类型
32
+  const mutiCategory = ref(null)
33
+  
34
+	// 操作类型
35
+	const operateType = ref(null)
36
+	
37
+  // 数据
38
+  const dataInfo = reactive({
39
+    data: [],//数据
40
+    incidentId: undefined,//事件ID
41
+		solutionnumber:undefined,
42
+		fileData:[] //附件数据
43
+  })
44
+  
45
+  // 下载附件
46
+  function downloadFile(item){
47
+    console.log(666,item)
48
+		// 下载文件资源到本地
49
+		uni.downloadFile({
50
+			url: item.previewUrl,  // 后端返回的线上文件路径
51
+			success: function(res) {
52
+				if (res.statusCode === 200) {
53
+					// 文件到本地
54
+					uni.saveFile({
55
+						tempFilePath: res.tempFilePath, //临时路径
56
+						success: function(data) {
57
+							uni.showToast({
58
+								icon: 'none',
59
+								mask: true,
60
+								title: '保存成功',
61
+								duration: 2000
62
+							})
63
+							//ios手机直接打开文件,手动存储文件到手机,Android手机从根目录创建文件夹,保存文件并改名
64
+							setTimeout(() => {
65
+								//打开文档查看
66
+								uni.openDocument({
67
+									filePath: data.savedFilePath,
68
+									success: function(ress) {
69
+										console.log("成功打开文件")
70
+									},
71
+									fail() {
72
+										console.log("打开文件失败")
73
+									}
74
+								})
75
+							}, 1000)
76
+						}
77
+					})
78
+					console.log('下载成功');
79
+				}
80
+			},
81
+			fail: function(res) {
82
+				console.log(res.errMsg);
83
+			},
84
+			complete: function(res) {
85
+				console.log(res.statusCode);
86
+			},
87
+			progress: function(res) {
88
+				console.log('下载进度' + res.progress);
89
+			}
90
+		});
91
+  }
92
+  
93
+	// 引入
94
+	function importData(){
95
+		let url = null
96
+		if(operateType.value=='malfunction'){ //故障处理
97
+			url = '/pages/handler/handler'
98
+		}else if(operateType.value=='reissue'){ //补单
99
+			url = '/pages/handler/handler'
100
+		}
101
+		uni.navigateTo({
102
+		  url: `${url}?incidentId=${encodeURIComponent(JSON.stringify(dataInfo.incidentId))}
103
+			&handleDescription=${encodeURIComponent(dataInfo.data.content)}&solutionId=${encodeURIComponent(JSON.stringify(dataInfo.data.id))}
104
+			&isSummaryNext=1&type=${encodeURIComponent('rep')}&introduceCount=${encodeURIComponent(dataInfo.data.introduceCount)}`
105
+		})
106
+	}
107
+	
108
+	// 获取附件
109
+	function getHandlerImgs(type,id){
110
+	  uni.showLoading({
111
+	    title: "加载中",
112
+	    mask: true,
113
+	  });
114
+	  api_listAttachment(type, id).then(res => {
115
+	    uni.hideLoading();
116
+			dataInfo.fileData = res.data
117
+	  })
118
+	}
119
+	
120
+  // 获取列表信息
121
+  function getList(){
122
+    uni.showLoading({
123
+      title: "加载中",
124
+      mask: true,
125
+    });
126
+    
127
+    let postData = {
128
+      idx: dataInfo.idx,
129
+      sum: 20,
130
+      solution: {
131
+        solutionnumber: dataInfo.solutionnumber,
132
+      }
133
+    }
134
+    
135
+    api_getSolution(postData).then(res => {
136
+      uni.hideLoading();
137
+      if(res.status == 200){
138
+        let list = res.list || [];
139
+        dataInfo.data = list[0]
140
+				mutiCategory.value = list[0].category.mutiCategory
141
+				getHandlerImgs('knowledge',list[0].id)
142
+      }else{
143
+        uni.showToast({
144
+          icon: 'none',
145
+          title: res.msg || '请求数据失败!'
146
+        });
147
+      }
148
+    })
149
+  }
150
+  
151
+  onLoad((option) => {
152
+    dataInfo.incidentId = option.incidentId;
153
+		dataInfo.solutionnumber = option.solutionnumber 
154
+		operateType.value = option.operateType;
155
+    getList();
156
+  })
157
+
158
+</script>
159
+
160
+<style lang="scss" scoped>
161
+.box{
162
+  padding: 24rpx;
163
+  .head{
164
+    color: #000;
165
+    font-size: 32rpx;
166
+		font-weight: 600;
167
+  }
168
+  .sign{
169
+    color: #686868;
170
+    font-size: 24rpx;
171
+		padding: 24rpx 0;
172
+    text{
173
+      margin-right: 40rpx;
174
+    }
175
+  }
176
+  .theme{
177
+    font-size: 26rpx;
178
+		color: #49b856;
179
+		padding: 0 0 24rpx 0;
180
+  }
181
+	.content{
182
+		padding-bottom: 24rpx;
183
+		border-bottom: 1px solid #eee;
184
+		overflow-y: scroll;
185
+	}
186
+  .file-list{
187
+    display: flex;
188
+		margin-bottom: 10rpx;
189
+		margin-top: 24rpx;
190
+		.file-item{
191
+			color: #00aaff;
192
+			text-decoration: underline;
193
+		}
194
+		text{
195
+			margin-left: 15rpx;
196
+			margin-top: 8rpx;
197
+		}
198
+  }
199
+	.btn-style{
200
+		position: fixed;
201
+		bottom: 40rpx;
202
+		width: 93%; 
203
+	}
204
+}
205
+</style>

+ 49 - 3
static/font/demo_index.html

@@ -55,6 +55,18 @@
55
           <ul class="icon_lists dib-box">
55
           <ul class="icon_lists dib-box">
56
           
56
           
57
             <li class="dib">
57
             <li class="dib">
58
+              <span class="icon newicon">&#xe660;</span>
59
+                <div class="name">上传</div>
60
+                <div class="code-name">&amp;#xe660;</div>
61
+              </li>
62
+          
63
+            <li class="dib">
64
+              <span class="icon newicon">&#xe60e;</span>
65
+                <div class="name">下载</div>
66
+                <div class="code-name">&amp;#xe60e;</div>
67
+              </li>
68
+          
69
+            <li class="dib">
58
               <span class="icon newicon">&#xe640;</span>
70
               <span class="icon newicon">&#xe640;</span>
59
                 <div class="name">11</div>
71
                 <div class="name">11</div>
60
                 <div class="code-name">&amp;#xe640;</div>
72
                 <div class="code-name">&amp;#xe640;</div>
@@ -210,9 +222,9 @@
210
 <pre><code class="language-css"
222
 <pre><code class="language-css"
211
 >@font-face {
223
 >@font-face {
212
   font-family: 'newicon';
224
   font-family: 'newicon';
213
-  src: url('iconfont.woff2?t=1713576883104') format('woff2'),
214
-       url('iconfont.woff?t=1713576883104') format('woff'),
215
-       url('iconfont.ttf?t=1713576883104') format('truetype');
225
+  src: url('iconfont.woff2?t=1718174994993') format('woff2'),
226
+       url('iconfont.woff?t=1718174994993') format('woff'),
227
+       url('iconfont.ttf?t=1718174994993') format('truetype');
216
 }
228
 }
217
 </code></pre>
229
 </code></pre>
218
           <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
230
           <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@@ -239,6 +251,24 @@
239
         <ul class="icon_lists dib-box">
251
         <ul class="icon_lists dib-box">
240
           
252
           
241
           <li class="dib">
253
           <li class="dib">
254
+            <span class="icon newicon newicon-shangchuan"></span>
255
+            <div class="name">
256
+              上传
257
+            </div>
258
+            <div class="code-name">.newicon-shangchuan
259
+            </div>
260
+          </li>
261
+          
262
+          <li class="dib">
263
+            <span class="icon newicon newicon-xiazai"></span>
264
+            <div class="name">
265
+              下载
266
+            </div>
267
+            <div class="code-name">.newicon-xiazai
268
+            </div>
269
+          </li>
270
+          
271
+          <li class="dib">
242
             <span class="icon newicon newicon-icon-test"></span>
272
             <span class="icon newicon newicon-icon-test"></span>
243
             <div class="name">
273
             <div class="name">
244
               11
274
               11
@@ -474,6 +504,22 @@
474
           
504
           
475
             <li class="dib">
505
             <li class="dib">
476
                 <svg class="icon svg-icon" aria-hidden="true">
506
                 <svg class="icon svg-icon" aria-hidden="true">
507
+                  <use xlink:href="#newicon-shangchuan"></use>
508
+                </svg>
509
+                <div class="name">上传</div>
510
+                <div class="code-name">#newicon-shangchuan</div>
511
+            </li>
512
+          
513
+            <li class="dib">
514
+                <svg class="icon svg-icon" aria-hidden="true">
515
+                  <use xlink:href="#newicon-xiazai"></use>
516
+                </svg>
517
+                <div class="name">下载</div>
518
+                <div class="code-name">#newicon-xiazai</div>
519
+            </li>
520
+          
521
+            <li class="dib">
522
+                <svg class="icon svg-icon" aria-hidden="true">
477
                   <use xlink:href="#newicon-icon-test"></use>
523
                   <use xlink:href="#newicon-icon-test"></use>
478
                 </svg>
524
                 </svg>
479
                 <div class="name">11</div>
525
                 <div class="name">11</div>

+ 11 - 3
static/font/iconfont.css

@@ -1,8 +1,8 @@
1
 @font-face {
1
 @font-face {
2
   font-family: "newicon"; /* Project id 4304860 */
2
   font-family: "newicon"; /* Project id 4304860 */
3
-  src: url('iconfont.woff2?t=1713576883104') format('woff2'),
4
-       url('iconfont.woff?t=1713576883104') format('woff'),
5
-       url('iconfont.ttf?t=1713576883104') format('truetype');
3
+  src: url('iconfont.woff2?t=1718174994993') format('woff2'),
4
+       url('iconfont.woff?t=1718174994993') format('woff'),
5
+       url('iconfont.ttf?t=1718174994993') format('truetype');
6
 }
6
 }
7
 
7
 
8
 .newicon {
8
 .newicon {
@@ -13,6 +13,14 @@
13
   -moz-osx-font-smoothing: grayscale;
13
   -moz-osx-font-smoothing: grayscale;
14
 }
14
 }
15
 
15
 
16
+.newicon-shangchuan:before {
17
+  content: "\e660";
18
+}
19
+
20
+.newicon-xiazai:before {
21
+  content: "\e60e";
22
+}
23
+
16
 .newicon-icon-test:before {
24
 .newicon-icon-test:before {
17
   content: "\e640";
25
   content: "\e640";
18
 }
26
 }

File diff suppressed because it is too large
+ 1 - 1
static/font/iconfont.js


+ 14 - 0
static/font/iconfont.json

@@ -6,6 +6,20 @@
6
   "description": "",
6
   "description": "",
7
   "glyphs": [
7
   "glyphs": [
8
     {
8
     {
9
+      "icon_id": "1301374",
10
+      "name": "上传",
11
+      "font_class": "shangchuan",
12
+      "unicode": "e660",
13
+      "unicode_decimal": 58976
14
+    },
15
+    {
16
+      "icon_id": "11833563",
17
+      "name": "下载",
18
+      "font_class": "xiazai",
19
+      "unicode": "e60e",
20
+      "unicode_decimal": 58894
21
+    },
22
+    {
9
       "icon_id": "5598925",
23
       "icon_id": "5598925",
10
       "name": "11",
24
       "name": "11",
11
       "font_class": "icon-test",
25
       "font_class": "icon-test",

二進制
static/font/iconfont.ttf


二進制
static/font/iconfont.woff


二進制
static/font/iconfont.woff2