Kaynağa Gözat

消息通知

seimin 8 ay önce
ebeveyn
işleme
f29605c150

+ 1 - 1
proxy.conf.json

@@ -1,6 +1,6 @@
1 1
 {
2 2
   "/service": {
3
-		"target": "http://192.168.3.108",
3
+		"target": "http://192.168.4.105",
4 4
     "logLevel": "debug",
5 5
     "changeOrigin": true,
6 6
     "pathRewrite": {

+ 97 - 0
src/app/components/configurationCenter/configuration-message/configuration-message.component.html

@@ -0,0 +1,97 @@
1
+<div class="content priority">
2
+  <div class="contentInner">
3
+    <div class="list-template" id="wechatTable">
4
+      <div class="list-template__content">
5
+        <div class="list-template__bottom">
6
+          <nz-table class="list-template__nzTable" [nzData]="messageList" nzSize="middle" [nzShowPagination]="false"
7
+            [nzLoading]="loading1" [nzScroll]="{ y: tableHeight + 'px' }">
8
+            <thead>
9
+              <tr class="thead">
10
+                <th nzWidth="5%">序号</th>
11
+                <th nzWidth="20%">通知描述</th>
12
+                <th nzWidth="20%">被通知人</th>
13
+                <th nzWidth="20%">通知模式</th>
14
+                <th nzWidth="20%">是否开启</th>
15
+                <th nzWidth="15%">操作</th>
16
+              </tr>
17
+            </thead>
18
+            <tbody>
19
+              <tr *ngFor="let data of messageList;let i = index">
20
+                <td>{{i + 1}}</td>
21
+                <td>{{data.noticeNode}}</td>
22
+                <td>{{data.noticeDetails}}</td>
23
+                <td>
24
+                  {{data.messageStationFlag == 1 ? '站内消息' : ''}}
25
+                  {{data.shortMessageFlag == 1 ? '短信' : ''}}
26
+                  {{data.wechatMessageFlag ==1 ? '微信' : ''}}
27
+                </td>
28
+                <td>{{data.flag ==1 ? '是' : '否'}}</td>
29
+                <td>
30
+                  <div class="coop">
31
+                    <span (click)="edit(data)">编辑</span>
32
+                  </div>
33
+                </td>
34
+              </tr>
35
+            </tbody>
36
+          </nz-table>
37
+        </div>
38
+      </div>
39
+    </div>
40
+  </div>
41
+</div>
42
+
43
+<!-- 新增/编辑模态框 -->
44
+<div class="save display_flex justify-content_flex-center align-items_center add" *ngIf="modalMessage">
45
+  <div class="modalBody">
46
+    <div class="title">{{modelName}}<i class="icon_transport transport-guanbi" (click)="hideMessageModal()"></i></div>
47
+    <div class="content">
48
+      <div class="message_head">
49
+        <span class="head_item">流程描述:{{ editData.noticeNode }}</span>
50
+        <span class="head_item">被通知人:{{ editData.noticeDetails }}</span>
51
+        <span class="head_item">
52
+          <ng-container  *ngIf="editData.noticeRule !== 'no'&&(editData.noticeCode == 'user_receive_overresp' || editData.noticeCode == 'manager_receive_overresp')">
53
+            <i class="icon_transport transport-required red"></i>逾期响应时长<nz-input-number class="inputNumber" nzSize="small" [(ngModel)]="editData.noticeRule"></nz-input-number>分钟
54
+          </ng-container>
55
+          <ng-container  *ngIf="editData.noticeRule !== 'no'&&(editData.noticeCode == 'user_doing_overresp' || editData.noticeCode == 'manager_doing_overresp')">
56
+            <i class="icon_transport transport-required red"></i>解决时长剩余<nz-input-number class="inputNumber" nzSize="small" [(ngModel)]="editData.noticeRule"></nz-input-number>%
57
+          </ng-container>
58
+        </span>
59
+      </div>
60
+      <div class="message_tab">
61
+        <div class="tab" *ngFor="let item of tabs;let i = index;" (click)="selectTab(i)" [ngClass]="{ active: i == currentIndex }">
62
+          <label nz-checkbox [(ngModel)]="item.checkboxFlag" (ngModelChange)="selectThis($event, i)"></label><span class="ml8">{{item.tabName}}</span>
63
+        </div>
64
+      </div>
65
+      <div class="message_body">
66
+        <div class="message_body_list" *ngFor="let item of tabs;let i = index;" [hidden]="i != currentIndex">
67
+          <div class="message_body_list_title" *ngIf="!(i == 1)">
68
+            <span>通知标题:</span><input nz-input placeholder="请输入通知标题" [(ngModel)]="item.processTitle" [disabled]="item.disable" />
69
+          </div>
70
+          <div class="message_body_list_body">
71
+            <span>通知内容:</span><textarea class="wd" rows="10" nz-input placeholder="请输入通知内容" [(ngModel)]="item.processContent" [disabled]="item.disable"></textarea>
72
+          </div>
73
+          <div class="message_body_list_configure">
74
+            <span style="visibility: hidden">变量名称:</span>
75
+            <p>备注:[$变量名称$]可添加<em *ngFor="let v of varArr;let first = first;let last = last;"><span (click)="writeIn(item, v, $event, 'processContent')">{{v}}</span><i *ngIf="!last">、</i><i *ngIf="last">。</i></em></p>
76
+          </div>
77
+          <div class="message_body_list_title">
78
+            <span><i class="icon_transport transport-required red"></i>是否开启:</span>
79
+            <nz-radio-group [(ngModel)]="editData.flag">
80
+              <label nz-radio [nzValue]="true">是</label>
81
+              <label nz-radio [nzValue]="false">否</label>
82
+            </nz-radio-group>
83
+          </div>
84
+        </div>
85
+      </div>
86
+    </div>
87
+    <div class=" display_flex justify-content_flex-center">
88
+      <button nzType="primary" nz-button (click)="submitMessageForm()" [nzLoading]="btnLoading">确认</button>
89
+      <button class="btn cancel" nz-button nzType="default" (click)="hideMessageModal()">取消</button>
90
+    </div>
91
+  </div>
92
+</div>
93
+
94
+<!-- 操作成功/失败提示框 -->
95
+<app-prompt-modal *ngIf="promptModalShow" [content]="promptContent" [success]="ifSuccess" [show]="promptModalShow"
96
+  [info]="promptInfo">
97
+</app-prompt-modal>

+ 322 - 0
src/app/components/configurationCenter/configuration-message/configuration-message.component.less

@@ -0,0 +1,322 @@
1
+@import "../../../../../src/theme.less";
2
+:host {
3
+  height: 100%;
4
+  display: flex;
5
+  flex-direction: column;
6
+  justify-content: space-between;
7
+  background-color: #F0F2F5;
8
+  .list-template__nzTable,
9
+  .list-template__bottom{
10
+    padding: 0!important;
11
+    border: none!important;
12
+    background: #fff!important;
13
+  }
14
+  .list-template{
15
+    width: 100%!important;
16
+    height: 100%!important;
17
+  }
18
+  .content{
19
+    flex: 1;
20
+    min-height: 0;
21
+    display: flex;
22
+    flex-direction: column;
23
+    justify-content: space-between;
24
+    border: 1px solid #EEF3F9;
25
+    &.priority{
26
+      margin: 24px 64px 0;
27
+      background-color: #fff;
28
+      .contentInner{
29
+        padding: 24px;
30
+        border: 1px solid #E8EBEF;
31
+      }
32
+    }
33
+    .contentItem{
34
+      padding: 4px 16px;
35
+      cursor: pointer;
36
+      overflow: hidden;
37
+      text-overflow: ellipsis;
38
+      white-space: nowrap;
39
+      &.active{
40
+        color: @primary-color;
41
+        background-color: #F0F6ED;
42
+        border-radius: 4px;
43
+      }
44
+    }
45
+    .contentInner{
46
+      flex: 1;
47
+      display: flex;
48
+      justify-content: space-between;
49
+      align-items: center;
50
+      padding: 0 16px;
51
+      gap: 16px;
52
+      .contentHead{
53
+        height: 45px;
54
+        display: flex;
55
+        justify-content: space-between;
56
+        align-items: center;
57
+        gap: 16px;
58
+        padding: 0 16px;
59
+        font-size: 16px;
60
+        font-weight: bold;
61
+        border-bottom: 1px solid #D9D9D9;
62
+        .title{
63
+          overflow: hidden;
64
+          text-overflow: ellipsis;
65
+          white-space: nowrap;
66
+        }
67
+        .btns{
68
+          flex-shrink: 0;
69
+        }
70
+      }
71
+      .contentBody{
72
+        padding: 0 8px;
73
+        margin: 4px 0;
74
+        flex: 1;
75
+      }
76
+      .address{
77
+        flex: 1;
78
+        height: 100%;
79
+        background: #FFFFFF;
80
+        border: 1px solid #E8EBEF;
81
+        display: flex;
82
+        flex-direction: column;
83
+        width: 0;
84
+      }
85
+      .addressAssign{
86
+        flex: 3;
87
+        height: 100%;
88
+        background: #FFFFFF;
89
+        border: 1px solid #E8EBEF;
90
+        display: flex;
91
+        flex-direction: column;
92
+        width: 0;
93
+      }
94
+      .list-template__searchItem {
95
+        margin-bottom: 16px;
96
+        .label {
97
+          color: #333;
98
+          display: inline-block;
99
+          width: 70px;
100
+          text-align-last: justify;
101
+          text-align: justify;
102
+          &.label--big {
103
+            width: 100px;
104
+          }
105
+        }
106
+        .formItem {
107
+          width: 135px;
108
+        }
109
+      }
110
+    }
111
+    .contentBtns{
112
+      margin-bottom: 16px;
113
+      display: flex;
114
+      justify-content: center;
115
+      align-items: center;
116
+    }
117
+  }
118
+
119
+  .save {
120
+    position: fixed;
121
+    left: 0;
122
+    top: 0;
123
+    width: 100%;
124
+    height: 100%;
125
+    background: rgba(0, 0, 0, 0.4);
126
+    z-index: 99;
127
+
128
+    .tips{
129
+      margin-bottom: 16px!important;
130
+    }
131
+
132
+    .modalBody {
133
+      width: 350px;
134
+      background: #fff;
135
+      border-radius: 5px;
136
+      padding: 10px 20px;
137
+      color: #333;
138
+
139
+      .title {
140
+        width: 100%;
141
+        text-align: center;
142
+        font-size: 18px;
143
+        position: relative;
144
+
145
+        i {
146
+          position: absolute;
147
+          right: 0;
148
+          top: 0;
149
+          font-size: 20px;
150
+          color: #666;
151
+          cursor: pointer;
152
+          padding: 0 5px;
153
+        }
154
+      }
155
+
156
+      .content {
157
+        width: 310px;
158
+        background: #f9fafb;
159
+        border: 1px solid #e5e9ed;
160
+        border-radius: 5px;
161
+        overflow: hidden;
162
+        margin-top: 12px;
163
+        padding: 16px 0;
164
+
165
+        .busyList{
166
+          display: flex;
167
+          margin-bottom: 8px;
168
+          .busyContent{
169
+            margin-right: 8px;
170
+            flex: 1;
171
+          }
172
+        }
173
+
174
+        & > div {
175
+          text-align: center;
176
+          margin: 0;
177
+
178
+          &.icon {
179
+            // margin-top: 17px;
180
+
181
+            i {
182
+              color: #34b349;
183
+              font-size: 30px !important;
184
+
185
+              &.transport-wenhao {
186
+                color: #f5a523;
187
+              }
188
+
189
+              &.transport-shibai {
190
+                color: #ff3a52;
191
+              }
192
+            }
193
+          }
194
+
195
+          &.defeat {
196
+            color: #333;
197
+            font-size: 14px;
198
+          }
199
+
200
+          &:nth-child(3) {
201
+            font-size: 14px;
202
+            color: #666;
203
+          }
204
+        }
205
+        .workAssignmentTips {
206
+          font-size: 12px;
207
+        }
208
+      }
209
+
210
+      button {
211
+        margin-top: 10px;
212
+
213
+        &.btn {
214
+          margin-left: 8px;
215
+        }
216
+      }
217
+    }
218
+
219
+    // 新增
220
+    &.add {
221
+      .transport-required{
222
+        font-size: 10px;
223
+        margin-right: 4px;
224
+        position: relative;
225
+        bottom: 2px;
226
+      }
227
+      .modalBody {
228
+        width: 926px;
229
+        height: auto;
230
+
231
+        .content {
232
+          display: block;
233
+          width: 100%;
234
+          height: auto;
235
+          padding: 0;
236
+          max-height: 600px;
237
+          overflow-y: auto;
238
+          border: 1px solid #E9E9E9;
239
+
240
+          .message_head{
241
+            height: 50px;
242
+            padding: 0 24px;
243
+            display: flex;
244
+            justify-content: space-between;
245
+            align-items: center;
246
+            .head_item{
247
+              flex: 1;
248
+              &:first-of-type{
249
+                text-align: left;
250
+              }
251
+              &:last-of-type{
252
+                text-align: right;
253
+              }
254
+              .inputNumber{
255
+                width: 62px;
256
+                margin-left: 2px;
257
+                margin-right: 5px;
258
+              }
259
+            }
260
+          }
261
+
262
+          .message_tab{
263
+            height: 56px;
264
+            display: flex;
265
+            border-top: 1px solid #E9E9E9;
266
+            .tab{
267
+              height: 100%;
268
+              flex: 1;
269
+              display: flex;
270
+              justify-content: center;
271
+              align-items: center;
272
+              cursor: pointer;
273
+              &.active{
274
+                color: @primary-color;
275
+                background-color: #EEEEEE;
276
+              }
277
+            }
278
+          }
279
+
280
+          .message_body{
281
+            border-top: 1px solid #E9E9E9;
282
+            width: 300%;
283
+            display: flex;
284
+            .message_body_list{
285
+              width: 884px;
286
+              padding: 16px;
287
+              .message_body_list_title{
288
+                display: flex;
289
+                margin-top: 0;
290
+                align-items: center;
291
+                span{
292
+                  flex-shrink: 0;
293
+                }
294
+              }
295
+              .message_body_list_body{
296
+                display: flex;
297
+                margin-top: 16px;
298
+                line-height: 32px;
299
+                span{
300
+                  flex-shrink: 0;
301
+                }
302
+              }
303
+              .message_body_list_configure{
304
+                display: flex;
305
+                text-align: left;
306
+                margin-top: 8px;
307
+                span{
308
+                  flex-shrink: 0;
309
+                }
310
+                em{
311
+                  font-style: normal;
312
+                  color: @primary-color;
313
+                  cursor: pointer;
314
+                }
315
+              }
316
+            }
317
+          }
318
+        }
319
+      }
320
+    }
321
+  }
322
+}

+ 281 - 0
src/app/components/configurationCenter/configuration-message/configuration-message.component.ts

@@ -0,0 +1,281 @@
1
+import { Component, OnInit } from "@angular/core";
2
+import { ActivatedRoute } from "@angular/router";
3
+import { MainService } from "../../../services/main.service";
4
+import { ToolService } from 'src/app/services/tool.service';
5
+import { NzMessageService } from 'ng-zorro-antd';
6
+
7
+@Component({
8
+  selector: "app-configuration-message",
9
+  templateUrl: "./configuration-message.component.html",
10
+  styleUrls: ["./configuration-message.component.less"],
11
+})
12
+export class ConfigurationMessageComponent implements OnInit {
13
+  constructor(
14
+    private route: ActivatedRoute,
15
+    private mainService: MainService,
16
+    private tool: ToolService,
17
+    private message: NzMessageService,
18
+  ) {}
19
+
20
+  coopData: any = {}; //当前操作列
21
+  currentHospital; //当前院区
22
+
23
+  ngOnInit() {
24
+    this.currentHospital = this.tool.getCurrentHospital();
25
+    setTimeout(() => {
26
+      this.tableHeight = document.querySelector('#wechatTable').clientHeight - 8 - document.querySelector('#wechatTable .thead').clientHeight;
27
+    }, 0)
28
+    this.getList();
29
+  }
30
+
31
+  // 新增弹框
32
+  modelName = ""; //模态框名称
33
+  modalMessage: boolean = false; //新增/编辑模态框
34
+  add: boolean; //true:新增;false:编辑
35
+  //关闭新增/编辑弹框
36
+  hideMessageModal() {
37
+    this.modalMessage = false;
38
+  }
39
+
40
+  // 选项卡
41
+  //tabName: 名称,processTitle:标题, processContent: 内容, checkboxFlag: checkbox是否选中,,disable:遮罩是否显示
42
+  tabs = []
43
+
44
+  //变量参数
45
+  varArr = [
46
+    "[$报修单号$]",
47
+    "[$报修科室$]",
48
+    "[$报修时间$]",
49
+    "[$报修人$]",
50
+    "[$详细地址$]",
51
+    "[$不受理时间$]",
52
+    "[$不受理原因$]",
53
+    "[$故障描述$]",
54
+    "[$服务台人员$]",
55
+    "[$受理时间$]",
56
+    "[$事件单号$]",
57
+    "[$地点$]",
58
+    "[$区域$]",
59
+    "[$学工号$]",
60
+    "[$联系人电话$]",
61
+    "[$受理人$]",
62
+    "[$受理人电话$]",
63
+    "[$处理人$]",
64
+    "[$处理人电话$]",
65
+    "[$指派人$]",
66
+    "[$转派人$]",
67
+    "[$延期原因$]",
68
+    "[$进入系统$]",
69
+    "[$回访满意度$]",
70
+    "[$回访备注$]",
71
+    "[$回访处理结果$]",
72
+    "[$评价满意度$]",
73
+    "[$评价内容$]",
74
+  ];
75
+
76
+  // 写入
77
+  writeIn(tab, content, event, type){
78
+    console.log(event);
79
+    var element = event.target.parentElement.parentElement.parentElement.previousElementSibling.children[1];
80
+    if (element.selectionStart || element.selectionStart == '0') {
81
+        var startPos = element.selectionStart;
82
+        var endPos = element.selectionEnd;
83
+        tab[type] = element.value.substring(0, startPos) + content + element.value.substring(endPos);
84
+        element.focus();
85
+        setTimeout(() => {
86
+          element.setSelectionRange(startPos + content.length, startPos + content.length);
87
+        },0)
88
+    } else {
89
+        var val = element.value + content;
90
+        tab[type] = val;
91
+        element.focus();
92
+    }
93
+  }
94
+
95
+  // 编辑
96
+  currentIndex = 0;
97
+  editData:any = {};
98
+  edit(data) {
99
+    console.log(data);
100
+    this.modelName = "编辑";
101
+    this.add = false;
102
+    this.modalMessage = true;
103
+
104
+    this.coopData = data;
105
+    this.editData = {
106
+        id: data.id,//id
107
+        noticeCode: data.noticeCode,
108
+        noticeRule: data.noticeRule === undefined ? 'no' : data.noticeRule,//通知规则,数字
109
+        noticeNode: data.noticeNode,//流程节点
110
+        processName: data.processName,//报修流程或者事件流程
111
+        noticeState: data.noticeState,//状态
112
+        noticeDetails: data.noticeDetails,//被通知人
113
+        noticeProcess: data.noticeProcess,//1为报修流程、2为事件流程
114
+        messageStationContent: data.messageStationContent,//站内消息通知内容
115
+        shortMessageContent: data.shortMessageContent,//短信通知内容
116
+        wechatMessageContent: data.wechatMessageContent,//微信通知内容
117
+        messageStationFlag: data.messageStationFlag == 1 ? true : false,//站内消息是否开启
118
+        shortMessageFlag: data.shortMessageFlag == 1 ? true : false,//短信是否开启
119
+        wechatMessageFlag: data.wechatMessageFlag == 1 ? true : false,//微信是否开启
120
+        messageStationTitle: data.messageStationTitle,//站内消息标题
121
+        wechatMessageTitle: data.wechatMessageTitle,//微信标题
122
+        flag: data.flag == 1 ? true : false//总开关是否开启,0为关闭,1为开启
123
+    };
124
+
125
+    this.tabs = [
126
+      {
127
+        tabName: "站内消息",
128
+        processTitle: this.editData.messageStationTitle,
129
+        processContent: this.editData.messageStationContent,
130
+        checkboxFlag: this.editData.messageStationFlag,
131
+        disable: !this.editData.messageStationFlag
132
+      },
133
+      {
134
+          tabName: "短信",
135
+          processTitle: '',
136
+          processContent: this.editData.shortMessageContent,
137
+          checkboxFlag: this.editData.shortMessageFlag,
138
+          disable: !this.editData.shortMessageFlag
139
+      },
140
+      {
141
+          tabName: "微信",
142
+          processTitle: this.editData.wechatMessageTitle,
143
+          processContent: this.editData.wechatMessageContent,
144
+          checkboxFlag: this.editData.wechatMessageFlag,
145
+          disable: !this.editData.wechatMessageFlag
146
+      }
147
+    ];
148
+
149
+    this.currentIndex = 0;
150
+  }
151
+
152
+  //tab页面切换
153
+  selectTab(index) {
154
+    this.currentIndex = index;
155
+  };
156
+
157
+  //checkbox选中或者取消
158
+  selectThis(e, index) {
159
+    //遮罩切换
160
+    this.tabs[index].disable = !this.tabs[index].checkboxFlag;
161
+    //所有checkbox有一个选中,总开关开启
162
+    this.editData.flag = this.tabs.some(function (v) {
163
+        return v.checkboxFlag;
164
+    });
165
+};
166
+
167
+  // 新增/编辑表单提交
168
+  btnLoading: boolean = false; //提交按钮loading状态
169
+  submitMessageForm(): void {
170
+    this.btnLoading = true;
171
+    var filterArr = this.tabs.filter(item => {
172
+      return item.checkboxFlag;
173
+    });
174
+    for (var i = 0; i < filterArr.length; i++) {
175
+        if (filterArr[i].processContent == '') {
176
+            alert("通知内容【" + filterArr[i].tabName + "】不能为空!");
177
+            return;
178
+        } else {
179
+            var nowArr = [...new Set([...(filterArr[i].processContent.match(/\[\$[^\$\[\]]*?\$\]/g) || []), ...this.varArr])];
180
+            if (nowArr.length !== this.varArr.length) {
181
+                alert("【" + filterArr[i].tabName + "】请填写有效的变量名称!");
182
+                return;
183
+            }
184
+        }
185
+    }
186
+    let postData:any = {};
187
+    //请求参数处理(是否有输入数字控件)
188
+    if (this.editData.noticeRule !== 'no') {
189
+        postData = {
190
+            // "messageManager": {
191
+                "id": this.editData.id,
192
+                "noticeRule": this.editData.noticeRule,
193
+                "messageStationFlag": this.tabs[0].checkboxFlag ? 1 : 0,
194
+                "messageStationTitle": this.tabs[0].processTitle,
195
+                "messageStationContent": this.tabs[0].processContent,
196
+                "shortMessageFlag": this.tabs[1].checkboxFlag ? 1 : 0,
197
+                "shortMessageContent": this.tabs[1].processContent,
198
+                "wechatMessageFlag": this.tabs[2].checkboxFlag ? 1 : 0,
199
+                "wechatMessageTitle": this.tabs[2].processTitle,
200
+                "wechatMessageContent": this.tabs[2].processContent,
201
+                "flag": this.editData.flag ? 1 : 0
202
+            // }
203
+        };
204
+    } else {
205
+        postData = {
206
+            // "messageManager": {
207
+                "id": this.editData.id,
208
+                "messageStationFlag": this.tabs[0].checkboxFlag ? 1 : 0,
209
+                "messageStationTitle": this.tabs[0].processTitle,
210
+                "messageStationContent": this.tabs[0].processContent,
211
+                "shortMessageFlag": this.tabs[1].checkboxFlag ? 1 : 0,
212
+                "shortMessageContent": this.tabs[1].processContent,
213
+                "wechatMessageFlag": this.tabs[2].checkboxFlag ? 1 : 0,
214
+                "wechatMessageTitle": this.tabs[2].processTitle,
215
+                "wechatMessageContent": this.tabs[2].processContent,
216
+                "flag": this.editData.flag ? 1 : 0
217
+            // }
218
+        };
219
+    }
220
+    // 关闭模态窗口并传递一个结果
221
+    postData = Object.assign({}, this.coopData, postData);
222
+    this.mainService
223
+      .simplePost("updData", "messageManager", postData)
224
+      .subscribe((result) => {
225
+        this.btnLoading = false;
226
+        this.hideMessageModal();
227
+        let msg = "";
228
+        if (this.add) {
229
+          msg = "新增";
230
+        } else {
231
+          msg = "修改";
232
+        }
233
+        if (result.status == 200) {
234
+          this.showPromptModal(msg, true, '');
235
+        } else {
236
+          this.showPromptModal(msg, false, result.msg);
237
+        }
238
+      });
239
+  }
240
+
241
+  // 获取列表
242
+  loading1:boolean = false;
243
+  messageList: any[] = []; //表格数据
244
+  tableHeight:number = 0;
245
+  getList() {
246
+    let data = {
247
+      idx: 0,
248
+      sum: 9999,
249
+      messageManager: {
250
+        "noticeProcess": 1
251
+      },
252
+    };
253
+    this.loading1 = true;
254
+    this.mainService
255
+      .getFetchDataList("simple/data", "messageManager", data)
256
+      .subscribe((data) => {
257
+        this.loading1 = false;
258
+        if (data.status == 200) {
259
+          this.messageList = data.list || [];
260
+        }else{
261
+          this.message.error(data.msg || "请求数据失败");
262
+        }
263
+      });
264
+  }
265
+
266
+  // 展示信息提示框(con:提示信息,success:操作是否成功,promptInfo:操作结果提示信息)
267
+  promptContent: string; //操作提示框提示信息
268
+  ifSuccess: boolean; //操作成功/失败
269
+  promptInfo: string; //操作结果提示信息
270
+  promptModalShow: boolean; //操作提示框是否展示
271
+  showPromptModal(con, success, promptInfo?) {
272
+    this.promptModalShow = false;
273
+    this.promptContent = con;
274
+    this.ifSuccess = success;
275
+    this.promptInfo = promptInfo;
276
+    setTimeout(() => {
277
+      this.promptModalShow = true;
278
+    }, 100);
279
+    this.getList();
280
+  }
281
+}

+ 4 - 0
src/app/views/incident-config/incident-config.component.html

@@ -20,6 +20,10 @@
20 20
   <ng-container *ngIf="activeTagId === 3">
21 21
     <app-configuration-dictionary></app-configuration-dictionary>
22 22
   </ng-container>
23
+  <!-- 消息通知 -->
24
+  <ng-container *ngIf="activeTagId === 4">
25
+    <app-configuration-message></app-configuration-message>
26
+  </ng-container>
23 27
 </div>
24 28
 
25 29
 

+ 1 - 0
src/app/views/incident-config/incident-config.component.ts

@@ -16,6 +16,7 @@ export class IncidentConfigComponent implements OnInit, AfterViewInit {
16 16
     { id: 1, name: '故障现象',},
17 17
     { id: 2, name: '优先级',},
18 18
     { id: 3, name: '数据字典',},
19
+    { id: 4, name: '消息通知',},
19 20
   ];
20 21
 
21 22
   ngOnInit(): void {}

+ 2 - 0
src/app/views/incident-config/incident-config.module.ts

@@ -7,6 +7,7 @@ import { ShareModule } from 'src/app/share/share.module';
7 7
 import { ConfigurationCategoryComponent } from 'src/app/components/configurationCenter/configuration-category/configuration-category.component';
8 8
 import { ConfigurationPriorityComponent } from 'src/app/components/configurationCenter/configuration-priority/configuration-priority.component';
9 9
 import { ConfigurationDictionaryComponent } from 'src/app/components/configurationCenter/configuration-dictionary/configuration-dictionary.component';
10
+import { ConfigurationMessageComponent } from 'src/app/components/configurationCenter/configuration-message/configuration-message.component';
10 11
 
11 12
 
12 13
 @NgModule({
@@ -15,6 +16,7 @@ import { ConfigurationDictionaryComponent } from 'src/app/components/configurati
15 16
     ConfigurationCategoryComponent,
16 17
     ConfigurationPriorityComponent,
17 18
     ConfigurationDictionaryComponent,
19
+    ConfigurationMessageComponent,
18 20
   ],
19 21
   imports: [
20 22
     CommonModule,

+ 0 - 4
src/app/views/other-config/other-config.module.ts

@@ -5,16 +5,12 @@ import { OtherConfigRoutingModule } from './other-config-routing.module';
5 5
 import { OtherConfigComponent } from './other-config.component';
6 6
 import { ShareModule } from 'src/app/share/share.module';
7 7
 import { ConfigurationWechatComponent } from 'src/app/components/configurationCenter/configuration-wechat/configuration-wechat.component';
8
-// import { ConfigurationPriorityComponent } from 'src/app/components/configurationCenter/configuration-priority/configuration-priority.component';
9
-// import { ConfigurationDictionaryComponent } from 'src/app/components/configurationCenter/configuration-dictionary/configuration-dictionary.component';
10 8
 
11 9
 
12 10
 @NgModule({
13 11
   declarations: [
14 12
     OtherConfigComponent,
15 13
     ConfigurationWechatComponent,
16
-    // ConfigurationPriorityComponent,
17
-    // ConfigurationDictionaryComponent,
18 14
   ],
19 15
   imports: [
20 16
     CommonModule,

+ 26 - 49
src/assets/iconfont/demo_index.html

@@ -55,6 +55,12 @@
55 55
           <ul class="icon_lists dib-box">
56 56
           
57 57
             <li class="dib">
58
+              <span class="icon icon_transport">&#xe606;</span>
59
+                <div class="name">星号</div>
60
+                <div class="code-name">&amp;#xe606;</div>
61
+              </li>
62
+          
63
+            <li class="dib">
58 64
               <span class="icon icon_transport">&#xe76e;</span>
59 65
                 <div class="name">第三方</div>
60 66
                 <div class="code-name">&amp;#xe76e;</div>
@@ -73,12 +79,6 @@
73 79
               </li>
74 80
           
75 81
             <li class="dib">
76
-              <span class="icon icon_transport">&#xe768;</span>
77
-                <div class="name">第三方服务</div>
78
-                <div class="code-name">&amp;#xe768;</div>
79
-              </li>
80
-          
81
-            <li class="dib">
82 82
               <span class="icon icon_transport">&#xe689;</span>
83 83
                 <div class="name">快速报修</div>
84 84
                 <div class="code-name">&amp;#xe689;</div>
@@ -517,12 +517,6 @@
517 517
               </li>
518 518
           
519 519
             <li class="dib">
520
-              <span class="icon icon_transport">&#xe606;</span>
521
-                <div class="name">星号</div>
522
-                <div class="code-name">&amp;#xe606;</div>
523
-              </li>
524
-          
525
-            <li class="dib">
526 520
               <span class="icon icon_transport">&#xe61b;</span>
527 521
                 <div class="name">空白页-暂无漏接诊单</div>
528 522
                 <div class="code-name">&amp;#xe61b;</div>
@@ -828,9 +822,9 @@
828 822
 <pre><code class="language-css"
829 823
 >@font-face {
830 824
   font-family: 'icon_transport';
831
-  src: url('iconfont.woff2?t=1722669597007') format('woff2'),
832
-       url('iconfont.woff?t=1722669597007') format('woff'),
833
-       url('iconfont.ttf?t=1722669597007') format('truetype');
825
+  src: url('iconfont.woff2?t=1722826184082') format('woff2'),
826
+       url('iconfont.woff?t=1722826184082') format('woff'),
827
+       url('iconfont.ttf?t=1722826184082') format('truetype');
834 828
 }
835 829
 </code></pre>
836 830
           <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@@ -857,6 +851,15 @@
857 851
         <ul class="icon_lists dib-box">
858 852
           
859 853
           <li class="dib">
854
+            <span class="icon icon_transport transport-required"></span>
855
+            <div class="name">
856
+              星号
857
+            </div>
858
+            <div class="code-name">.transport-required
859
+            </div>
860
+          </li>
861
+          
862
+          <li class="dib">
860 863
             <span class="icon icon_transport transport-disanfang"></span>
861 864
             <div class="name">
862 865
               第三方
@@ -884,15 +887,6 @@
884 887
           </li>
885 888
           
886 889
           <li class="dib">
887
-            <span class="icon icon_transport transport-disanfangfuwu"></span>
888
-            <div class="name">
889
-              第三方服务
890
-            </div>
891
-            <div class="code-name">.transport-disanfangfuwu
892
-            </div>
893
-          </li>
894
-          
895
-          <li class="dib">
896 890
             <span class="icon icon_transport transport-kuaisubaoxiu"></span>
897 891
             <div class="name">
898 892
               快速报修
@@ -1550,15 +1544,6 @@
1550 1544
           </li>
1551 1545
           
1552 1546
           <li class="dib">
1553
-            <span class="icon icon_transport transport-required"></span>
1554
-            <div class="name">
1555
-              星号
1556
-            </div>
1557
-            <div class="code-name">.transport-required
1558
-            </div>
1559
-          </li>
1560
-          
1561
-          <li class="dib">
1562 1547
             <span class="icon icon_transport transport-yunzhuanzhentongjiicon-"></span>
1563 1548
             <div class="name">
1564 1549
               空白页-暂无漏接诊单
@@ -2019,6 +2004,14 @@
2019 2004
           
2020 2005
             <li class="dib">
2021 2006
                 <svg class="icon svg-icon" aria-hidden="true">
2007
+                  <use xlink:href="#transport-required"></use>
2008
+                </svg>
2009
+                <div class="name">星号</div>
2010
+                <div class="code-name">#transport-required</div>
2011
+            </li>
2012
+          
2013
+            <li class="dib">
2014
+                <svg class="icon svg-icon" aria-hidden="true">
2022 2015
                   <use xlink:href="#transport-disanfang"></use>
2023 2016
                 </svg>
2024 2017
                 <div class="name">第三方</div>
@@ -2043,14 +2036,6 @@
2043 2036
           
2044 2037
             <li class="dib">
2045 2038
                 <svg class="icon svg-icon" aria-hidden="true">
2046
-                  <use xlink:href="#transport-disanfangfuwu"></use>
2047
-                </svg>
2048
-                <div class="name">第三方服务</div>
2049
-                <div class="code-name">#transport-disanfangfuwu</div>
2050
-            </li>
2051
-          
2052
-            <li class="dib">
2053
-                <svg class="icon svg-icon" aria-hidden="true">
2054 2039
                   <use xlink:href="#transport-kuaisubaoxiu"></use>
2055 2040
                 </svg>
2056 2041
                 <div class="name">快速报修</div>
@@ -2635,14 +2620,6 @@
2635 2620
           
2636 2621
             <li class="dib">
2637 2622
                 <svg class="icon svg-icon" aria-hidden="true">
2638
-                  <use xlink:href="#transport-required"></use>
2639
-                </svg>
2640
-                <div class="name">星号</div>
2641
-                <div class="code-name">#transport-required</div>
2642
-            </li>
2643
-          
2644
-            <li class="dib">
2645
-                <svg class="icon svg-icon" aria-hidden="true">
2646 2623
                   <use xlink:href="#transport-yunzhuanzhentongjiicon-"></use>
2647 2624
                 </svg>
2648 2625
                 <div class="name">空白页-暂无漏接诊单</div>

+ 7 - 11
src/assets/iconfont/iconfont.css

@@ -1,8 +1,8 @@
1 1
 @font-face {
2 2
   font-family: "icon_transport"; /* Project id 4543613 */
3
-  src: url('iconfont.woff2?t=1722669597007') format('woff2'),
4
-       url('iconfont.woff?t=1722669597007') format('woff'),
5
-       url('iconfont.ttf?t=1722669597007') format('truetype');
3
+  src: url('iconfont.woff2?t=1722826184082') format('woff2'),
4
+       url('iconfont.woff?t=1722826184082') format('woff'),
5
+       url('iconfont.ttf?t=1722826184082') format('truetype');
6 6
 }
7 7
 
8 8
 .icon_transport {
@@ -13,6 +13,10 @@
13 13
   -moz-osx-font-smoothing: grayscale;
14 14
 }
15 15
 
16
+.transport-required:before {
17
+  content: "\e606";
18
+}
19
+
16 20
 .transport-disanfang:before {
17 21
   content: "\e76e";
18 22
 }
@@ -25,10 +29,6 @@
25 29
   content: "\e635";
26 30
 }
27 31
 
28
-.transport-disanfangfuwu:before {
29
-  content: "\e768";
30
-}
31
-
32 32
 .transport-kuaisubaoxiu:before {
33 33
   content: "\e689";
34 34
 }
@@ -321,10 +321,6 @@
321 321
   content: "\e62f";
322 322
 }
323 323
 
324
-.transport-required:before {
325
-  content: "\e606";
326
-}
327
-
328 324
 .transport-yunzhuanzhentongjiicon-:before {
329 325
   content: "\e61b";
330 326
 }

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 1
src/assets/iconfont/iconfont.js


+ 7 - 14
src/assets/iconfont/iconfont.json

@@ -6,6 +6,13 @@
6 6
   "description": "",
7 7
   "glyphs": [
8 8
     {
9
+      "icon_id": "20719696",
10
+      "name": "星号",
11
+      "font_class": "required",
12
+      "unicode": "e606",
13
+      "unicode_decimal": 58886
14
+    },
15
+    {
9 16
       "icon_id": "4561786",
10 17
       "name": "第三方",
11 18
       "font_class": "disanfang",
@@ -27,13 +34,6 @@
27 34
       "unicode_decimal": 58933
28 35
     },
29 36
     {
30
-      "icon_id": "39599292",
31
-      "name": "第三方服务",
32
-      "font_class": "disanfangfuwu",
33
-      "unicode": "e768",
34
-      "unicode_decimal": 59240
35
-    },
36
-    {
37 37
       "icon_id": "18856229",
38 38
       "name": "快速报修",
39 39
       "font_class": "kuaisubaoxiu",
@@ -545,13 +545,6 @@
545 545
       "unicode_decimal": 58927
546 546
     },
547 547
     {
548
-      "icon_id": "2817690",
549
-      "name": "星号",
550
-      "font_class": "required",
551
-      "unicode": "e606",
552
-      "unicode_decimal": 58886
553
-    },
554
-    {
555 548
       "icon_id": "5260595",
556 549
       "name": "空白页-暂无漏接诊单",
557 550
       "font_class": "yunzhuanzhentongjiicon-",

BIN
src/assets/iconfont/iconfont.ttf


BIN
src/assets/iconfont/iconfont.woff


BIN
src/assets/iconfont/iconfont.woff2


+ 16 - 0
src/common.less

@@ -146,6 +146,22 @@
146 146
   flex-wrap: wrap;
147 147
 }
148 148
 
149
+.wd{
150
+  word-break: break-all;
151
+}
152
+// list模板样式 end
153
+
154
+// 滚动条样式
155
+::-webkit-scrollbar {
156
+  width: 8px;
157
+  height: 8px;
158
+}
159
+
160
+::-webkit-scrollbar-thumb {
161
+
162
+
163
+}
164
+
149 165
 // button
150 166
 @lg-btn-height: 52px;
151 167
 @default-btn-height: 34px;