Browse Source

2.1 研究成果管理

XMTT 7 years ago
parent
commit
97de328702

+ 236 - 0
css/model/sys/resresult.css

@ -0,0 +1,236 @@
1
@charset "utf-8";
2
.sys_result_index .tpl-btns .row {
3
    padding-left: 10px;
4
}
5
6
.sys_result_index th.opt-check {
7
    width: 35px;
8
}
9
10
.sys_result_index .table {
11
    table-layout: fixed;
12
}
13
14
.sys_result_index .number {
15
    width: 4%;
16
}
17
18
.sys_result_index .orderBy .icon-close {
19
    display: none;
20
}
21
22
.sys_result_new,.sys_result_edit{
23
    width: 55%;
24
    height: 80%;
25
    padding: 0 20px 10px;
26
}
27
28
.sys_result_new .requiredSpan,.sys_result_edit .requiredSpan{
29
    color: #ff0000;
30
    position:relative;
31
    top:2px;
32
    left: -4px;
33
}
34
35
.sys_result_new .newForm, .sys_result_edit .newForm {
36
    position: relative;
37
}
38
39
.sys_result_new .newForm .head-ctn, .sys_result_edit .newForm .head-ctn {
40
    /*position: absolute;*/
41
    top: 330px;
42
    right: 30px;
43
    width: auto;
44
    height: 190px;
45
}
46
47
.sys_result_new .orgSize.dyn-mselect .icon-drop, .sys_result_edit .orgSize.dyn-mselect .icon-drop {
48
    display: none !important;
49
}
50
51
.sys_result_new .orgSize.dyn-mselect .dd-drop, .sys_result_edit .orgSize.dyn-mselect .dd-drop {
52
    display: none !important;
53
}
54
55
.sys_result_new .orgSize.dyn-mselect .placeholder, .sys_result_edit .orgSize.dyn-mselect .placeholder {
56
    display: none !important;
57
}
58
59
.sys_result_new .newForm .head-ctn .upload-btn, .sys_result_edit .newForm .head-ctn .upload-btn {
60
    position: absolute;
61
    bottom: 10px;
62
    left: 40px;
63
    width: 110px;
64
    height: 36px;
65
    color: rgba(0, 0, 0, 1);
66
    font-size: 14px;
67
    text-align: center;
68
    border: 1px solid #555555;
69
    padding-top: 6px;
70
}
71
72
.sys_result_new .newForm .head-ctn .upload-btn i, .sys_result_edit .newForm .head-ctn .upload-btn i {
73
    font-size: 16px;
74
    color: rgb(95, 184, 120);
75
}
76
77
.sys_result_new .newForm .head-ctn img, .sys_result_edit .newForm .head-ctn img {
78
    width: 100%;
79
    height: 100%;
80
}
81
82
.sys_result_new .upload-item, .sys_result_edit .upload-item {
83
    position: absolute;
84
    width: 100%;
85
    top: 50%;
86
    transform: translateY(-50%);
87
}
88
89
.sys_result_new .upload-item .progress, .sys_result_edit .upload-item .progress {
90
    width: 1px;
91
    height: 30px;
92
    background-color: #3280FC;
93
}
94
95
.sys_result_new .webuploader-pick, .sys_result_edit .webuploader-pick {
96
    position: relative;
97
    display: inline-block;
98
    cursor: pointer;
99
    background: #00b7ee;
100
    padding: 10px 15px;
101
    color: #fff;
102
    text-align: center;
103
    border-radius: 3px;
104
    overflow: hidden;
105
}
106
107
.sys_result_new .webuploader-container, .sys_result_edit .webuploader-container {
108
    position: relative;
109
    float: left;
110
    top: 18%;
111
}
112
113
.sys_result_new .webuploader-element-invisible, .sys_result_edit .webuploader-element-invisible {
114
    position: absolute !important;
115
    clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
116
    clip: rect(1px, 1px, 1px, 1px);
117
}
118
119
.sys_result_new .webuploader-pick-hover, .sys_result_edit .webuploader-pick-hover {
120
    background: #00a2d4;
121
}
122
123
.sys_result_new .webuploader-pick-disable, .sys_result_edit .webuploader-pick-disable {
124
    opacity: 0.6;
125
    pointer-events: none;
126
}
127
128
.sys_result_new #picker, .sys_result_edit #picker {
129
    display: inline-block;
130
    line-height: 1.428571429;
131
    vertical-align: middle;
132
    margin: 0 12px 0 0;
133
}
134
135
.sys_result_new #picker .webuploader-pick, .sys_result_edit #picker .webuploader-pick {
136
    position: relative;
137
    display: block;
138
    top: 50%;
139
    margin-top: -58px;
140
}
141
142
.sys_result_new .head-ctn .thumbnail, .sys_result_edit .head-ctn .thumbnail {
143
    width: 110px;
144
    height: 110px;
145
}
146
147
.sys_result_new #uploader-demo .thumbnail img, .sys_result_edit #uploader-demo .thumbnail img {
148
    width: 100%;
149
}
150
151
.sys_result_new .uploader-list, .sys_result_edit .uploader-list {
152
    width: auto;
153
    overflow: hidden;
154
    float: left;
155
}
156
157
.sys_result_new .file-item, .sys_result_edit .file-item {
158
    /*float: left;*/
159
    position: relative;
160
    margin: 0 20px 20px 0;
161
    padding: 4px;
162
    display: table-cell;
163
}
164
165
.sys_result_new .file-item .error, .sys_result_edit .file-item .error {
166
    position: absolute;
167
    top: 4px;
168
    left: 4px;
169
    right: 4px;
170
    background: red;
171
    color: white;
172
    text-align: center;
173
    height: 20px;
174
    font-size: 14px;
175
    line-height: 23px;
176
}
177
178
.sys_result_new .file-item .info, .sys_result_edit .file-item .info {
179
    position: absolute;
180
    left: 4px;
181
    bottom: 4px;
182
    right: 4px;
183
    height: 20px;
184
    line-height: 20px;
185
    text-indent: 5px;
186
    background: rgba(0, 0, 0, 0.6);
187
    color: white;
188
    overflow: hidden;
189
    white-space: nowrap;
190
    text-overflow: ellipsis;
191
    font-size: 12px;
192
    z-index: 10;
193
}
194
195
.sys_result_new .file-item .progress, .sys_result_edit .file-item .progress {
196
    position: absolute;
197
    right: 4px;
198
    bottom: 4px;
199
    left: 4px;
200
    height: 4px;
201
    /*width: 110px;*/
202
    overflow: hidden;
203
    z-index: 15;
204
    margin: 0;
205
    padding: 0;
206
    border-radius: 0;
207
    background: transparent;
208
}
209
210
.sys_result_new .file-item .progress span, .sys_result_edit .file-item .progress span {
211
    display: block;
212
    overflow: hidden;
213
    width: 0;
214
    height: 100%;
215
    /*background: #d14 url(/images/progress.png) repeat-x;*/
216
    background: #d14;
217
    -webit-transition: width 200ms linear;
218
    -moz-transition: width 200ms linear;
219
    -o-transition: width 200ms linear;
220
    -ms-transition: width 200ms linear;
221
    transition: width 200ms linear;
222
    -webkit-animation: progressmove 2s linear infinite;
223
    -moz-animation: progressmove 2s linear infinite;
224
    -o-animation: progressmove 2s linear infinite;
225
    -ms-animation: progressmove 2s linear infinite;
226
    animation: progressmove 2s linear infinite;
227
    -webkit-transform: translateZ(0);
228
}
229
230
.sys_result_new .filelist div.file-panel span.cancel, .sys_result_edit .filelist div.file-panel span.cancel {
231
    /* background-position: -48px -24px; */
232
}
233
234
.sys_result_new .filelist div.file-panel span.cancel:hover, .sys_result_edit .filelist div.file-panel span.cancel:hover {
235
    background-position: -48px 0;
236
}

+ 5 - 0
html/login.html

@ -84,6 +84,11 @@
84 84

85 85
				});
86 86

87
				$("body").keydown(function () {
88
					if (event.keyCode == 13) {
89
                        $(".login-btn").click();
90
                    }
91
                })
87 92
			});
88 93
		</script>
89 94
	</body>

+ 3 - 3
html/model/sys/consult/msgidx.html

@ -29,7 +29,7 @@
29 29
                <th>所有者</th>
30 30
                <th>参与者</th>
31 31
                <th>最后发送时间</th>
32
                <th>最后信息内容</th>
32
                <th class="col-7">最后信息内容</th>
33 33
            </tr>
34 34
            </thead>
35 35
            <tbody>
@ -39,12 +39,12 @@
39 39
                <td>{{ownerName}}</td>
40 40
                <td>{{actorName}}</td>
41 41
                <td>{{lastTime-showDay}}</td>
42
                <td>{{lastCnt}}</td>
42
                <td class="col-7">{{lastCnt}}</td>
43 43
            </tr>
44 44
            </tbody>
45 45
            <tbody ch-dir="array.empty">
46 46
            <tr>
47
                <td class="empty-desc" colspan="4">表格暂无数据</td>
47
                <td class="empty-desc" colspan="6">表格暂无数据</td>
48 48
            </tr>
49 49
            </tbody>
50 50
        </table>

+ 107 - 0
html/model/sys/resresult/index.html

@ -0,0 +1,107 @@
1
<div class="sys_result_index" loadUri="../ajax/resResult/pq" pageSize="10" pageNo="1" pageIndex="pi">
2
    <div class="modal-ctrl">
3
        <i class="icon icon-times"></i>
4
    </div>
5
    <div class="container dt-form">
6
        <div class="row">
7
            <div class="col-1 item-caption ">成果名称</div>
8
            <div class="col-2">
9
                <div class="form-item text" defVal="" name="name"></div>
10
            </div>
11
            <div class="col-1 item-caption">研究者</div>
12
            <div class="col-2">
13
                <div class="form-item text" defVal="" name="key"></div>
14
            </div>
15
            <div class="col-1 item-caption ">录入时间</div>
16
            <div class="col-2">
17
                <div class="form-item date" defVal="" name="bt"></div>
18
            </div>
19
            <div class="col-1 item-caption center">至</div>
20
            <div class="col-2">
21
                <div class="form-item date" defVal="" name="et"></div>
22
            </div>
23
        </div>
24
        <div class="row">
25
            <div class="col-1 item-caption">所属机构</div>
26
            <div class="col-2">
27
                <div class="form-item text" defVal="" name="orgName"></div>
28
            </div>
29
            <div class="col-1 item-caption">所属部门</div>
30
            <div class="col-2">
31
                <div class="form-item text" defVal="" name="department"></div>
32
            </div>
33
            <div class="col-1 item-caption">行业领域</div>
34
            <div class="col-2">
35
                <div class="form-item text" defVal="" name="subject"></div>
36
            </div>
37
            <div class="col-1 item-caption">应用领域</div>
38
            <div class="col-2">
39
                <div class="form-item text" defVal="" name="industry"></div>
40
            </div>
41
        </div>
42
        <div class="row">
43
            <div class="col-10">
44
            </div>
45
            <div class="col-2">
46
                <div class="btn opt-query pull-right">
47
                    <i class="icon-search"></i> 查询
48
                </div>
49
            </div>
50
            <div class="col-2"></div>
51
52
        </div>
53
    </div>
54
55
    <div class="container page-split"></div>
56
    <div class="container tpl-btns">
57
        <div class="row">
58
            <div class="btn opt-new">
59
                录入
60
            </div>
61
            <div class="btn opt-edit">
62
                编辑
63
            </div>
64
            <div class="btn opt-del">
65
                删除
66
            </div>
67
        </div>
68
    </div>
69
    <div class="container dt-tpl">
70
        <table class="table table-bordered">
71
            <thead>
72
            <tr>
73
                <th class="opt-check" ><i class="icon icon-st-check"></i> </th>
74
                <th class="number">序号</th>
75
                <th>成果名称</th>
76
                <th>研发者</th>
77
                <th>所属机构</th>
78
                <th>所属部门</th>
79
                <th>行业领域</th>
80
                <th>应用领域</th>
81
                <th>成果简介</th>
82
                <th>创建时间</th>
83
            </tr>
84
            </thead>
85
            <tbody>
86
            <tr ch-dir="list">
87
                <td class="opt-check" ><i class="icon icon-st-check" resultId="{{id}}"></i></td>
88
                <td>{{pi}}</td>
89
                <td>{{name}}</td>
90
                <td class="hand-resultId" resultId="{{id}}"></td>
91
                <td>{{orgName}}</td>
92
                <td>{{department}}</td>
93
                <td>{{subject}}</td>
94
                <td>{{industry}}</td>
95
                <td class="elip">{{descp}}</td>
96
                <td>{{createTime-showDay}}</td>
97
            </tr>
98
            </tbody>
99
            <tbody ch-dir="array.empty">
100
            <tr>
101
                <td class="empty-desc" colspan="10">表格暂无数据</td>
102
            </tr>
103
            </tbody>
104
        </table>
105
    </div>
106
    <ul class="dt-pager"></ul>
107
</div>

+ 167 - 0
html/model/sys/resresult/new.html

@ -0,0 +1,167 @@
1
<div class="sys_result_new centerModal">
2
    <div class="modal-ctrl">
3
        <i class="icon icon-times"></i>
4
    </div>
5
    <div class="container newForm">
6
        <div class="row">
7
            <div class="col-2 item-caption"><span class="requiredSpan">*</span>成果名称</div>
8
            <div class="col-6">
9
                <div class="form-item text" defVal="" name="name"></div>
10
            </div>
11
        </div>
12
        <div class="row">
13
            <div class="col-2 item-caption researcher">研究者</div>
14
            <div class="col-4">
15
                <div class="form-item typeahead res" uri="../ajax/sys/professor/name?s=10&q=" name="researcher"></div>
16
            </div>
17
            <div class="col-2">
18
                <div class="btn pull-right opt-res">
19
                    <i class="icon-check"></i> 添加
20
                </div>
21
            </div>
22
        </div>
23
        <div class="row">
24
            <div class="col-2"></div>
25
            <div class="col-6">
26
                <div class="form-item dyn-mselect orgSize"  name="researcherList"></div>
27
            </div>
28
        </div>
29
        <div class="row">
30
            <div class="col-2 item-caption">技术水平</div>
31
            <div class="col-4">
32
                <div class="form-item text" name="level"></div>
33
            </div>
34
        </div>
35
        <div class="row">
36
            <div class="col-2 item-caption">所属机构</div>
37
            <div class="col-4">
38
                <div class="form-item typeahead org" uri="../ajax/sys/org/orgName?s=10&q=" name="orgName"></div>
39
            </div>
40
            <div class="col-2 item-caption">所属部门</div>
41
            <div class="col-4">
42
                <div class="form-item text" defVal="" name="department"></div>
43
            </div>
44
        </div>
45
        <div class="row">
46
            <div class="col-2 item-caption">行业领域</div>
47
            <div class="col-4">
48
                <div class="form-item typeahead sub" uri="../ajax/article/typeHotKey?s=10&q="  name="newSubject"></div>
49
            </div>
50
            <div class="col-2">
51
                <div class="btn pull-right opt-subject">
52
                    <i class="icon-check"></i> 添加
53
                </div>
54
            </div>
55
        </div>
56
        <div class="row">
57
            <div class="col-2"></div>
58
            <div class="col-6">
59
                <div class="form-item dyn-mselect orgSize"  name="subjectList"></div>
60
            </div>
61
        </div>
62
        <div class="row">
63
            <div class="col-2 item-caption">应用领域</div>
64
            <div class="col-4">
65
                <div class="form-item typeahead ind" uri="../ajax/article/typeHotKey?s=10&q=" name="newIndustry"></div>
66
            </div>
67
            <div class="col-2">
68
                <div class="btn pull-right opt-industry">
69
                    <i class="icon-check"></i> 添加
70
                </div>
71
            </div>
72
        </div>
73
        <div class="row">
74
            <div class="col-2"></div>
75
            <div class="col-6">
76
                <div class="form-item dyn-mselect orgSize"  name="industryList"></div>
77
            </div>
78
        </div>
79
        <div class="row">
80
            <div class="col-2 item-caption">成果简介</div>
81
            <div class="col-6">
82
                <div class="form-item textarea" name="descp"></div>
83
            </div>
84
        </div>
85
        <div class="row">
86
            <div class="col-2 item-caption">应用介绍</div>
87
            <div class="col-6">
88
                <div class="form-item textarea" name="applyDescp"></div>
89
            </div>
90
        </div>
91
        <div class="row">
92
            <div class="col-2 item-caption">产业化前景</div>
93
            <div class="col-6">
94
                <div class="form-item textarea" name="prospect"></div>
95
            </div>
96
        </div>
97
        <div class="row">
98
            <div class="col-2 item-caption">技术指标</div>
99
            <div class="col-6">
100
                <div class="form-item textarea" name="indicator"></div>
101
            </div>
102
        </div>
103
        <div class="row">
104
            <div class="col-2 item-caption">技术优势</div>
105
            <div class="col-6">
106
                <div class="form-item textarea" name="advantage"></div>
107
            </div>
108
        </div>
109
        <div class="row">
110
            <div class="col-2 item-caption">经济和社会效益</div>
111
            <div class="col-6">
112
                <div class="form-item textarea" name="benefit"></div>
113
            </div>
114
        </div>
115
        <div class="row">
116
            <div class="col-2 item-caption">合作备注</div>
117
            <div class="col-6">
118
                <div class="form-item textarea" name="cooperation"></div>
119
            </div>
120
        </div>
121
        <div class="row">
122
            <div class="col-2 item-caption">联系人</div>
123
            <div class="col-4">
124
                <div class="form-item text" name="linkman"></div>
125
            </div>
126
            <div class="col-2 item-caption">地址</div>
127
            <div class="col-4">
128
                <div class="form-item text" defVal="" name="addr"></div>
129
            </div>
130
        </div>
131
        <div class="row me">
132
            <div class="col-2 item-caption">邮编</div>
133
            <div class="col-4">
134
                <div class="form-item text" name="zipCode"></div>
135
            </div>
136
            <div class="col-2 item-caption">办公电话</div>
137
            <div class="col-4">
138
                <div class="form-item text" defVal="" name="tel"></div>
139
            </div>
140
        </div>
141
        <div class="row">
142
            <div class="col-2 item-caption">手机</div>
143
            <div class="col-4">
144
                <div class="form-item text" defVal="" name="mobile"></div>
145
            </div>
146
            <div class="col-2 item-caption">邮箱</div>
147
            <div class="col-4">
148
                <div class="form-item text" defVal="" name="email"></div>
149
            </div>
150
        </div>
151
        <div class="row">
152
            <div class="col-2"></div>
153
        <div class="head-ctn">
154
            <div id="fileList" class="uploader-list"></div>
155
            <div id="filePicker">选择图片</div>
156
        </div>
157
        </div>
158
        <div class="row">
159
            <div class="col-10"></div>
160
            <div class="col-2">
161
                <div class="btn pull-right opt-save">
162
                    <i class="icon-check"></i> 保存
163
                </div>
164
            </div>
165
        </div>
166
    </div>
167
</div>

+ 19 - 0
js/model/sys/article/articleModify.js

@ -1,4 +1,5 @@
1 1
$(function() {
2
    loginStatus();
2 3
    var articleId = GetQueryString("articleId");
3 4
    var experarray = [];
4 5
    var resourcesarray = [];
@ -18,6 +19,24 @@ $(function() {
18 19
    // relevantExperts();
19 20
    // relevantResources();
20 21
22
    function loginStatus() {
23
        $.ajax({
24
            type: "get",
25
            async:false,
26
            url:"/ajax/sys/user",
27
            success:function (data) {
28
                if(data.success == true) {
29
                    var userid = data.data.id;
30
                    if (userid == undefined || userid.length == 0 || userid == "null") {
31
                        location.href = "http://localhost:81/html/index.html";
32
                    }
33
                }else {
34
                    location.href = "http://localhost:81/html/index.html";
35
                }
36
            }
37
        });
38
    }
39
21 40
    function GetQueryString(name) {
22 41
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
23 42
        var r = window.location.search.substr(1).match(reg); //��ȡurl��"?"�����ַ�����ƥ��

+ 7 - 3
js/model/sys/consult/msgcnt.js

@ -12,10 +12,14 @@ spa_define(function () {
12 12
                });
13 13
                var ef = form.build(root.find(".opt-form"));
14 14
                util.get("../ajax/sys/professor/id/" + data.data.owner, null, function (owner) {
15
                    ef.val({ownerOrg: owner.orgName});
15
                    if (owner) {
16
                        ef.val({ownerOrg: owner.orgName});
17
                    }
16 18
                });
17 19
                util.get("../ajax/sys/professor/id/" + data.data.actor, null, function (actor) {
18
                    ef.val({actorOrg: actor.orgName});
20
                    if (actor) {
21
                        ef.val({actorOrg: actor.orgName});
22
                    }
19 23
                });
20 24
                ef.val(data.data);
21 25
                var cr = code.parseCode(root.find(".dt-tpl"));
@ -31,7 +35,7 @@ spa_define(function () {
31 35
                    cnt.forEach(function (item) {
32 36
                        if (item.sender == data.data.owner) {
33 37
                            item.senderName = data.data.ownerName;
34
                            item.reciverName = data.data.actorname;
38
                            item.reciverName = data.data.actorName;
35 39
                            item.right = 1;
36 40
                        } else {
37 41
                            item.senderName = data.data.actorName;

+ 1 - 1
js/model/sys/resourceinfo/index.js

@ -70,7 +70,7 @@ spa_define(function () {
70 70
                            });
71 71
                        }
72 72
                    } else {
73
                        util.alert("请选择一个用户");
73
                        util.alert("请选择一个资源");
74 74
                    }
75 75
                });
76 76
                root.find(".opt-sort-num").on("click", function() {

+ 430 - 0
js/model/sys/resresult/edit.js

@ -0,0 +1,430 @@
1
/**
2
 * Created by TT on 2017/10/23.
3
 */
4
;
5
spa_define(function () {
6
    return $.use(["spa", "util", "form", "upload"], function (spa, util, fb, upload) {
7
        return {
8
            modal: function (data) {
9
                var root = spa.findInModal(".sys_result_new");
10
                var ca = {ready: true, items: []},
11
                    ba = {ready: true, items: []};
12
                var form = fb.build(root.find(".newForm"), {
13
                    industryList: ca,
14
                    subjectList: ca,
15
                    researcherList: ba,
16
                    researcher: {
17
                        keyPressInterval: 1,
18
                        hide: function () {
19
                            this.shown = false;
20
                            this.ctn.removeClass("open");
21
                            this.lastQuerying = null;
22
                            this.lastQueryed = null;
23
                        },
24
                        select: function () {
25
                            if (this.shown) {
26
                                var item = this.menu.find(".active");
27
                                this.rv = item.attr('code');
28
                                this.caption = item.attr("caption");
29
                                var caption = this.caption.toString();
30
                                var name = caption.substr(0, caption.indexOf(","));
31
                                this.ve.val("");
32
                                var res = this.rv + "," + name;
33
                                part2(name, form.val().researcherList, res, 20);
34
                                form.val({researcherList: oJudge});
35
                                return this.hide();
36
                            }
37
                        }
38
                    },
39
                    orgName: {keyPressInterval: 1},
40
                    newSubject: {
41
                        keyPressInterval: 1,
42
                        hide: function () {
43
                            this.shown = false;
44
                            this.ctn.removeClass("open");
45
                            this.lastQuerying = null;
46
                            this.lastQueryed = null;
47
                        },
48
                        select: function () {
49
                            if (this.shown) {
50
                                var item = this.menu.find(".active");
51
                                this.rv = item.attr('code');
52
                                this.caption = item.attr("caption");
53
                                var caption = this.caption.toString();
54
                                this.ve.val("");
55
                                part(caption, form.val().subjectList, 20);
56
                                form.val({subjectList: oJudge});
57
                                return this.hide();
58
                            }
59
                        }
60
                    },
61
                    newIndustry: {
62
                        keyPressInterval: 1,
63
                        hide: function () {
64
                            this.shown = false;
65
                            this.ctn.removeClass("open");
66
                            this.lastQuerying = null;
67
                            this.lastQueryed = null;
68
                        },
69
                        select: function () {
70
                            if (this.shown) {
71
                                var item = this.menu.find(".active");
72
                                this.rv = item.attr('code');
73
                                this.caption = item.attr("caption");
74
                                var caption = this.caption.toString();
75
                                this.ve.val("");
76
                                part(caption, form.val().industryList, 20);
77
                                form.val({industryList: oJudge});
78
                                return this.hide();
79
                            }
80
                        }
81
                    }
82
                });
83
                var oValue;
84
                var oJudge;
85
                var trim = function (str) {
86
                    return str.replace(/(^\s*)|(\s*$)/g, "");
87
                };
88
                var saveBtn = root.find(".opt-save"),
89
                    headArea = root.find(".head-ctn"),
90
                    save = function () {
91
                        // console.log(form.val().researcherList);
92
                        var pic = [];
93
                        $('#fileList').find('img').each(function () {
94
                            pic.push($(this).attr("name"));
95
                        });
96
                        form.val({pic: oString(pic), researchers: form.val().researcherList});
97
                        form.val({
98
                            industry: oString(form.val().industryList),
99
                            subject: oString(form.val().subjectList)
100
                        });
101
102
                        if (form.val().name == null) {
103
                            util.alert("请输入成果名称");
104
                            return;
105
                        }
106
                        else form.doPost("../ajax/resResult/update", function () {
107
                            spa.closeModal();
108
                            if (data.hand) {
109
                                data.hand();
110
                            }
111
                            // location.reload();
112
                        }, {});
113
                    };
114
115
                util.get("../ajax/resResult/queryResearcher", {id: data.data.id}, function (res) {
116
                    if (res) {
117
                        var arr = [];
118
                        for (var m = 0; m < res.length; m++) {
119
                            var caption = res[m].name;
120
                            var code = res[m].professorId + "," + res[m].name;
121
                            ba.items.push({code: code, caption: caption});
122
                            arr.push(code);
123
                        }
124
                        form.val({researcherList: arr});
125
                    }
126
                });
127
                form.val(data.data);
128
                if (data.data.industry) {
129
                    form.val({industryList: split1(data.data.industry)});
130
                }
131
                if (data.data.subject) {
132
                    form.val({subjectList: split1(data.data.subject)});
133
                }
134
135
                var part = function (one, list, num) {
136
                    oValue = one;
137
                    oJudge = list || [];
138
                    if (oJudge.length >= num) {
139
                        util.alert("最多" + num + "个");
140
                        return;
141
                    }
142
                    var repeat,
143
                        b;
144
                    if (!oValue) {
145
                        util.alert('提示', '请先填写内容');
146
                        return;
147
                    }
148
                    if (oValue.length > 15) {
149
                        util.alert('提示', '添加内容不能超过15个字');
150
                        return;
151
                    } else {
152
                        var oValueList = oValue.split(","),
153
                            length = oValueList.length;
154
                        for (var j = 0; j < length; j++) {
155
                            for (var n = j + 1; n < oValueList.length + 1;) {
156
                                if (oValueList[j] == oValueList[n]) {
157
                                    oValueList.remove(n);
158
                                    repeat = false;
159
                                } else {
160
                                    n++;
161
                                }
162
                            }
163
                        }
164
                        for (var j = 0; j < oValueList.length;) {
165
                            for (var i = 0; i < oJudge.length; i++) {
166
                                if (oValueList[j] == oJudge[i]) {
167
                                    oValueList.remove(j);
168
                                    repeat = false;
169
                                    b = true;
170
                                }
171
                            }
172
                            if (b) {
173
                                b = false
174
                            } else j++;
175
                        }
176
                        if (repeat == false) {
177
                            util.alert('提示', '添加内容不能重复');
178
                        }
179
                        for (var m = 0; m < oValueList.length; m++) {
180
                            ca.items.push({code: oValueList[m], caption: oValueList[m]});
181
                            oJudge.push(oValueList[m]);
182
                        }
183
                    }
184
                };
185
                var part2 = function (one, list, value, num) {
186
                    oValue = one;
187
                    oJudge = list || [];
188
                    if (oJudge.length >= num) {
189
                        util.alert("最多" + num + "个");
190
                        return;
191
                    }
192
                    // var repeat,
193
                    //     b;
194
                    if (!oValue) {
195
                        util.alert('提示', '请先填写内容');
196
                        return;
197
                    }
198
                    if (oValue.length > 50) {
199
                        util.alert('提示', '添加内容不能超过50个字');
200
                        return;
201
                    } else {
202
                        // var oValueList = oValue.split(","),
203
                        //     length = oValueList.length;
204
                        // for (var j = 0; j < length; j++) {
205
                        //     for (var n = j + 1; n < oValueList.length + 1;) {
206
                        //         if (oValueList[j] == oValueList[n]) {
207
                        //             oValueList.remove(n);
208
                        //             repeat = false;
209
                        //         } else {
210
                        //             n++;
211
                        //         }
212
                        //     }
213
                        // }
214
                        // for (var j = 0; j < oValueList.length;) {
215
                        //     for (var i = 0; i < oJudge.length; i++) {
216
                        //         if (oValueList[j] == oJudge[i]) {
217
                        //             oValueList.remove(j);
218
                        //             repeat = false;
219
                        //             b = true;
220
                        //         }
221
                        //     }
222
                        //     if (b) {
223
                        //         b = false
224
                        //     } else j++;
225
                        // }
226
                        // if (repeat == false) {
227
                        //     util.alert('提示', '添加内容不能重复');
228
                        // }
229
                        // for (var m = 0; m < oValueList.length; m++) {
230
                        ba.items.push({code: value, caption: oValue});
231
                        oJudge.push(value);
232
                        // }
233
                    }
234
                };
235
236
                Array.prototype.remove = function (obj) {
237
                    for (var i = 0; i < this.length; i++) {
238
                        var temp = this[i];
239
                        if (!isNaN(obj)) {
240
                            temp = i;
241
                        }
242
                        if (temp == obj) {
243
                            for (var j = i; j < this.length; j++) {
244
                                this[j] = this[j + 1];
245
                            }
246
                            this.length = this.length - 1;
247
                        }
248
                    }
249
                };
250
251
                function split1(data) {
252
                    var index = data.split(",");
253
                    var arr = [];
254
                    for (var m = 0; m < index.length; m++) {
255
                        ca.items.push({code: index[m], caption: index[m]});
256
                        arr.push(index[m]);
257
                    }
258
                    return arr;
259
                }
260
261
                function oString(data) {
262
                    var arry = new Array();
263
                    if (data) {
264
                        for (var i = 0; i < data.length; i++) {
265
                            arry.push(data[i]);
266
                        }
267
                    }
268
                    return arry.join(",");
269
                }
270
271
                root.find(".modal-ctrl .icon-times").on("click", function () {
272
                    spa.closeModal();
273
                });
274
                root.find(".opt-industry").on("click", function () {
275
                    var ind = $(".ind").find("input");
276
                    part(trim(ind.val()), form.val().industryList, 20);
277
                    ind.val("");
278
                    form.val({newIndustry: "", industryList: oJudge});
279
                });
280
                root.find(".opt-subject").on("click", function () {
281
                    var sub = $(".sub").find("input");
282
                    part(trim(sub.val()), form.val().subjectList, 20);
283
                    sub.val("");
284
                    form.val({newSubject: "", subjectList: oJudge});
285
                });
286
                root.find(".opt-res").on("click", function () {
287
                    var res = $(".typeahead").find("input");
288
                    var value = "################################," + trim(res.val());
289
                    part2(trim(res.val()), form.val().researcherList, value, 20);
290
                    res.val("");
291
                    form.val({researcherList: oJudge});
292
                });
293
294
                var $list = $('#fileList'),
295
                    ratio = window.devicePixelRatio || 1,
296
                    thumbnailWidth = 100 * ratio,
297
                    thumbnailHeight = 100 * ratio,
298
                    uploader;
299
                uploader = WebUploader.create({
300
                    auto: true,
301
                    server: '../ajax/cachedFileUpload',
302
                    pick: '#filePicker',
303
                    duplicate: true,
304
                    // fileNumLimit:5,
305
                    // fileSingleSizeLimit: 2*1024*1024,
306
                    accept: {
307
                        title: 'Images',
308
                        extensions: 'gif,jpg,jpeg,bmp,png',
309
                        mimeTypes: 'image/jpg,image/jpeg,image/png'
310
                    }
311
                });
312
                uploader.on('fileQueued', function (file) {
313
                    if ($(".file-item").length < 5) {
314
315
                        var $li = $(
316
                                '<div id="' + file.id + '" class="file-item thumbnail">' +
317
                                '<img>' +
318
                                '</div>'
319
                            ),
320
                            $img = $li.find('img');
321
322
                        $list.append($li);
323
324
                        if ($('#fileList').find('img').length > 4) {
325
                            $('#filePicker').hide();
326
                        }
327
                    }
328
                });
329
                uploader.on('uploadSuccess', function (file, data) {
330
                    $('#' + file.id).addClass('upload-state-done');
331
                    $.ajax({
332
                        type: "post",
333
                        url: "../ajax/image/researchResult",
334
                        async: false,
335
                        data: {fn: data.data[0].cacheKey},
336
                        contentType: "application/x-www-form-urlencoded"
337
                    }).done(function (rd) {
338
                        if (rd.success) {
339
                            $('#' + file.id).find('img').attr('name', rd.data);
340
                        }
341
                    });
342
                    uploader.makeThumb(file, function (error, src) {
343
                        var $img = $("#" + file.id).find('img');
344
                        if (error) {
345
                            $img.replaceWith('<span>不能预览</span>');
346
                            return;
347
                        }
348
349
                        $img.attr('src', src);
350
                    }, thumbnailWidth, thumbnailHeight);
351
                    if ($('#fileList').find('img').length < 5) {
352
                        $('#filePicker').show();
353
                    }
354
                    if (uploader.getStats().progressNum == 0 || uploader.getStats().queueNum == 0) {
355
                        saveBtn.on("click", save);
356
                    }
357
                });
358
                uploader.on('uploadComplete', function (file) {
359
                    var $li = $('#' + file.id);
360
                    $li.find('.progress').remove();
361
                    $('<div class="file-panel">' +
362
                        '<span class="cancel icon-remove-sign">删除</span>' +
363
                        '</div>').appendTo($li);
364
                });
365
                $list.on("click", ".cancel", function () {
366
                    $(this).parent().parent().remove();
367
                    if ($('#fileList').find('img').length < 5) {
368
                        $('#filePicker').show();
369
                    }
370
                    uploader.refresh();
371
                });
372
                uploader.on('uploadProgress', function (file, percentage) {
373
                    var $li = $('#' + file.id),
374
                        $percent = $li.find('.progress span');
375
376
                    // 避免重复创建
377
                    if (!$percent.length) {
378
                        $percent = $('<p class="progress"><span></span></p>')
379
                            .appendTo($li)
380
                            .find('span');
381
                    }
382
                    $percent.css('width', percentage * 100 + '%');
383
                    $('#filePicker').hide();
384
                    saveBtn.unbind("click");
385
                });
386
                uploader.on('error', function (type) {
387
                    switch (type) {
388
                        case 'Q_EXCEED_NUM_LIMIT':
389
                            alert("错误:上传文件数量过多!");
390
                            break;
391
                        case 'Q_EXCEED_SIZE_LIMIT':
392
                            alert("错误:文件总大小超出限制!");
393
                            break;
394
                        case 'F_EXCEED_SIZE':
395
                            alert("错误:文件大小超出限制!");
396
                            break;
397
                        case 'Q_TYPE_DENIED':
398
                            alert("错误:禁止上传该类型文件!");
399
                            break;
400
                        default:
401
                            alert('错误代码:' + type);
402
                            break;
403
                    }
404
                });
405
                if (data.data.pic) {
406
                    var image = split1(data.data.pic);
407
                    for (var i = 0; i < image.length; i++) {
408
                        var $li = $(
409
                                '<div class="file-item thumbnail">' +
410
                                '<img  src="http://www.ekexiu.com/data/researchResult/" id="oimg" />' +
411
                                '</div>'
412
                            ),
413
                            $btn = $('<div class="file-panel">' +
414
                                '<span class="cancel icon-remove-sign">删除</span>' +
415
                                '</div>').appendTo($li),
416
                            $img = $li.find('img');
417
                        $list.append($li);
418
                        $img.attr('src', "http://www.ekexiu.com/data/researchResult/" + data.data.id + ".jpg");
419
                        // $img.attr('src', "../data/images/researchResult/" + image[i]);
420
                        $img.attr('name', image[i]);
421
                    }
422
                    if ($('#fileList').find('img').length > 4) {
423
                        $('#filePicker').hide();
424
                    }
425
                }
426
                saveBtn.on("click", save);
427
            }
428
        }
429
    });
430
});

+ 120 - 0
js/model/sys/resresult/index.js

@ -0,0 +1,120 @@
1
/**
2
 * Created by TT on 2017/10/20.
3
 */
4
;
5
spa_define(function () {
6
    return $.use(["spa", "pagedatagrid", "util"], function (spa, pdgf, util) {
7
        return {
8
            main: function () {
9
                var root = spa.findInMain(".sys_result_index");
10
                var pdg = pdgf.build(root);
11
                pdg.code.shell("showDay", function (env) {
12
                    if (env.cd && env.cd[this.k]) {
13
                        var day = env.cd[this.k];
14
                        return day.substring(0, 4) + "年" + day.substring(4, 6) + "月" + day.substring(6, 8) + "日  " + day.substring(8, 10) + ":" + day.substring(10, 12);
15
                    }
16
                    return "";
17
                });
18
                pdg.code.listen($.dict.doTransfer);
19
                pdg.code.listen(function(){
20
                    root.find(".hand-resultId").each(function() {
21
                        var $e = $(this);
22
                        var resultId = $e.attr("resultId");
23
                        if (resultId) {
24
                            util.get("/ajax/resResult/queryResearcher", {id: resultId}, function (data) {
25
                                $e.text(oString(data));
26
                            }, {});
27
                            $e.removeClass("hand-resultId");
28
                        }
29
                    });
30
                });
31
32
                function oString(data) {
33
                    var arry = new Array();
34
                    if (data) {
35
                        for (var i = 0; i < data.length; i++) {
36
                            arry.push(data[i].name);
37
                        }
38
                    }
39
                    return arry.join(",");
40
                }
41
42
                root.find(".opt-query").on("click", function () {
43
                    pdg.load();
44
                });
45
                pdg.load();
46
                root.find(".dt-tpl").on("click", "th.opt-check>i.icon-st-check", function () {
47
                    var $this = $(this);
48
                    $this.toggleClass("checked");
49
                    if ($this.hasClass("checked")) {
50
                        root.find(".dt-tpl td.opt-check>i.icon-st-check").addClass("checked");
51
                    } else {
52
                        root.find(".dt-tpl td.opt-check>i.icon-st-check").removeClass("checked");
53
                    }
54
                });
55
                root.find(".dt-tpl").on("click", "td.opt-check>i.icon-st-check", function () {
56
                    var $this = $(this);
57
                    $this.toggleClass("checked");
58
                });
59
                root.find(".opt-new").on("click", function() {
60
                    spa.showModal("sys_result_new", function () {
61
                        pdg.load();
62
                    });
63
                });
64
                root.find(".opt-edit").on("click", function() {
65
                    var $resultId = root.find("td.opt-check>i.checked");
66
                    if($resultId.length) {
67
                        if($resultId.length > 1) {
68
                            util.alert("只能选择一篇科研成果");
69
                        } else {
70
                            $.util.get("../ajax/resResult/id/"+$resultId.attr("resultId"),null,function(rd){
71
                                if(rd){
72
                                    spa.showModal("sys_result_edit", {
73
                                        data: rd, hand: function () {
74
                                            pdg.reload()
75
                                        }
76
                                    })
77
                                }else{
78
                                    util.alertMsg("科研成果不存在", function(){pdg.reload();});
79
                                }
80
                            },{});
81
                        }
82
                    } else {
83
                        util.alert("请选择一篇科研成果");
84
                    }
85
                });
86
                root.find(".opt-del").on("click", function() {
87
                    var $resultId = root.find("td.opt-check>i.checked");
88
                    if($resultId.length) {
89
                        if($resultId.length > 1) {
90
                            util.alert("只能选择一个科研成果");
91
                        } else {
92
                            util.boxMsg({
93
                                title: "确认删除",
94
                                content: "您是否要删除选中的科研成果?",
95
                                btns: [{
96
                                    caption: "删除",
97
                                    hand: function () {
98
                                        util.post("../ajax/resResult/delete", {id: $resultId.attr("resultId")}, function () {
99
                                            pdg.reload()
100
                                        }, {});
101
                                    }
102
                                },
103
                                    {caption: "取消"}
104
                                ]
105
                            });
106
                        }
107
                    } else {
108
                        util.alert("请选择一个科研成果");
109
                    }
110
                });
111
112
113
            }, mainDestory: function () {
114
115
            }
116
        };
117
    });
118
});
119
120

+ 377 - 0
js/model/sys/resresult/new.js

@ -0,0 +1,377 @@
1
/**
2
 * Created by TT on 2017/10/20.
3
 */
4
;
5
spa_define(function () {
6
    return $.use(["spa", "util", "form", "upload"], function (spa, util, fb, upload) {
7
        return {
8
            modal: function (data) {
9
                var root = spa.findInModal(".sys_result_new");
10
                var ca = {ready: true, items: []},
11
                    ba = {ready: true, items: []};
12
                var form = fb.build(root.find(".newForm"), {
13
                    industryList: ca,
14
                    subjectList: ca,
15
                    researcherList: ba,
16
                    researcher: {
17
                        keyPressInterval: 1,
18
                        hide: function () {
19
                            this.shown = false;
20
                            this.ctn.removeClass("open");
21
                            this.lastQuerying = null;
22
                            this.lastQueryed = null;
23
                        },
24
                        select: function () {
25
                            if (this.shown) {
26
                                var item = this.menu.find(".active");
27
                                this.rv = item.attr('code');
28
                                this.caption = item.attr("caption");
29
                                var caption = this.caption.toString();
30
                                var name = caption.substr(0, caption.indexOf(","));
31
                                this.ve.val("");
32
                                var res = this.rv + "," + name;
33
                                part2(name, form.val().researcherList, res, 20);
34
                                form.val({researcherList: oJudge});
35
                                return this.hide();
36
                            }
37
                        }
38
                    },
39
                    orgName:{keyPressInterval:1},
40
                    newSubject:{
41
                        keyPressInterval:1,
42
                        hide: function () {
43
                            this.shown = false;
44
                            this.ctn.removeClass("open");
45
                            this.lastQuerying = null;
46
                            this.lastQueryed = null;
47
                        },
48
                        select: function () {
49
                            if (this.shown) {
50
                                var item = this.menu.find(".active");
51
                                this.rv = item.attr('code');
52
                                this.caption = item.attr("caption");
53
                                var caption = this.caption.toString();
54
                                this.ve.val("");
55
                                part(caption,form.val().subjectList, 20);
56
                                form.val({subjectList: oJudge});
57
                                return this.hide();
58
                            }
59
                        }
60
                    },
61
                    newIndustry:{
62
                        keyPressInterval:1,
63
                        hide: function () {
64
                            this.shown = false;
65
                            this.ctn.removeClass("open");
66
                            this.lastQuerying = null;
67
                            this.lastQueryed = null;
68
                        },
69
                        select: function () {
70
                            if (this.shown) {
71
                                var item = this.menu.find(".active");
72
                                this.rv = item.attr('code');
73
                                this.caption = item.attr("caption");
74
                                var caption = this.caption.toString();
75
                                this.ve.val("");
76
                                part(caption,form.val().industryList, 20);
77
                                form.val({industryList: oJudge});
78
                                return this.hide();
79
                            }
80
                        }
81
                    }
82
                });
83
                var oValue;
84
                var oJudge;
85
                var trim = function (str) { //删除左右两端的空格			  
86
                    return str.replace(/(^\s*)|(\s*$)/g, "");
87
                };
88
                var saveBtn = root.find(".opt-save"),
89
                    headArea = root.find(".head-ctn"),
90
                    save = function () {
91
                        var pic = [];
92
                        $('#fileList').find('img').each(function () {
93
                            pic.push($(this).attr("name"));
94
                        });
95
                        form.val({pic: oString(pic), researchers: form.val().researcherList});
96
                        form.val({
97
                            industry: oString(form.val().industryList),
98
                            subject: oString(form.val().subjectList)
99
                        });
100
101
                        if (form.val().name == null) {
102
                            util.alert("请输入成果名称");
103
                            return;
104
                        }
105
                        else form.doPost("../ajax/resResult", function () {
106
                            spa.closeModal();
107
                            if (data) {
108
                                data();
109
                            }
110
                        }, {});
111
                    };
112
113
                var part = function (one, list, num) {
114
                    oValue = one;
115
                    oJudge = list || [];
116
                    if (oJudge.length >= num) {
117
                        util.alert("最多" + num + "个");
118
                        return;
119
                    }
120
                    var repeat,
121
                        b;
122
                    if (!oValue) {
123
                        util.alert('提示', '请先填写内容');
124
                        return;
125
                    }
126
                    if (oValue.length > 15) {
127
                        util.alert('提示', '添加内容不能超过15个字');
128
                        return;
129
                    } else {
130
                        var oValueList = oValue.split(","),
131
                            length = oValueList.length;
132
                        for (var j = 0; j < length; j++) {
133
                            for (var n = j + 1; n < oValueList.length + 1;) {
134
                                if (oValueList[j] == oValueList[n]) {
135
                                    oValueList.remove(n);
136
                                    repeat = false;
137
                                } else {
138
                                    n++;
139
                                }
140
                            }
141
                        }
142
                        for (var j = 0; j < oValueList.length;) {
143
                            for (var i = 0; i < oJudge.length; i++) {
144
                                if (oValueList[j] == oJudge[i]) {
145
                                    oValueList.remove(j);
146
                                    repeat = false;
147
                                    b = true;
148
                                }
149
                            }
150
                            if (b) {
151
                                b = false
152
                            } else j++;
153
                        }
154
                        if (repeat == false) {
155
                            util.alert('提示', '添加内容不能重复');
156
                        }
157
                        for (var m = 0; m < oValueList.length; m++) {
158
                            ca.items.push({code: oValueList[m], caption: oValueList[m]});
159
                            oJudge.push(oValueList[m]);
160
                        }
161
                    }
162
                };
163
                var part2 = function (one, list, value, num) {
164
                    oValue = one;
165
                    oJudge = list || [];
166
                    if (oJudge.length >= num) {
167
                        util.alert("最多" + num + "个");
168
                        return;
169
                    }
170
                    // var repeat,
171
                    //     b;
172
                    if (!oValue) {
173
                        util.alert('提示', '请先填写内容');
174
                        return;
175
                    }
176
                    if (oValue.length > 50) {
177
                        util.alert('提示', '添加内容不能超过50个字');
178
                        return;
179
                    } else {
180
                        // var oValueList = oValue.split(","),
181
                        //     length = oValueList.length;
182
                        // for (var j = 0; j < length; j++) {
183
                        //     for (var n = j + 1; n < oValueList.length + 1;) {
184
                        //         if (oValueList[j] == oValueList[n]) {
185
                        //             oValueList.remove(n);
186
                        //             repeat = false;
187
                        //         } else {
188
                        //             n++;
189
                        //         }
190
                        //     }
191
                        // }
192
                        // for (var j = 0; j < oValueList.length;) {
193
                        //     for (var i = 0; i < oJudge.length; i++) {
194
                        //         if (oValueList[j] == oJudge[i]) {
195
                        //             oValueList.remove(j);
196
                        //             repeat = false;
197
                        //             b = true;
198
                        //         }
199
                        //     }
200
                        //     if (b) {
201
                        //         b = false
202
                        //     } else j++;
203
                        // }
204
                        // if (repeat == false) {
205
                        //     util.alert('提示', '添加内容不能重复');
206
                        // }
207
                        // for (var m = 0; m < oValueList.length; m++) {
208
                        ba.items.push({code: value, caption: oValue});
209
                        oJudge.push(value);
210
                        // }
211
                    }
212
                };
213
214
                Array.prototype.remove = function (obj) {
215
                    for (var i = 0; i < this.length; i++) {
216
                        var temp = this[i];
217
                        if (!isNaN(obj)) {
218
                            temp = i;
219
                        }
220
                        if (temp == obj) {
221
                            for (var j = i; j < this.length; j++) {
222
                                this[j] = this[j + 1];
223
                            }
224
                            this.length = this.length - 1;
225
                        }
226
                    }
227
                };
228
229
                function oString(data) {
230
                    var arry = new Array();
231
                    if (data) {
232
                        for (var i = 0; i < data.length; i++) {
233
                            arry.push(data[i]);
234
                        }
235
                    }
236
                    return arry.join(",");
237
                }
238
239
240
                root.find(".modal-ctrl .icon-times").on("click", function () {
241
                    spa.closeModal();
242
                });
243
                root.find(".opt-industry").on("click", function () {
244
                    var ind = $(".ind").find("input");
245
                    part(trim(ind.val()), form.val().industryList, 20);
246
                    ind.val("");
247
                    form.val({newIndustry: "", industryList: oJudge});
248
                });
249
                root.find(".opt-subject").on("click", function () {
250
                    var sub = $(".sub").find("input");
251
                    part(trim(sub.val()), form.val().subjectList, 20);
252
                    sub.val("");
253
                    form.val({newSubject: "", subjectList: oJudge});
254
                });
255
                root.find(".opt-res").on("click", function () {
256
                    var res = $(".res").find("input");
257
                    var value = "################################," + trim(res.val());
258
                    part2(trim(res.val()), form.val().researcherList, value, 20);
259
                    res.val("");
260
                    form.val({researcherList: oJudge});
261
                });
262
263
                var $list = $('#fileList'),
264
                    ratio = window.devicePixelRatio || 1,
265
                    thumbnailWidth = 100 * ratio,
266
                    thumbnailHeight = 100 * ratio,
267
                    uploader;
268
                uploader = WebUploader.create({
269
                    auto: true,
270
                    server: '../ajax/cachedFileUpload',
271
                    pick: '#filePicker',
272
                    duplicate:true,
273
                    // fileNumLimit:5,
274
                    // fileSingleSizeLimit: 2*1024*1024,
275
                    accept: {
276
                        title: 'Images',
277
                        extensions: 'gif,jpg,jpeg,bmp,png',
278
                        mimeTypes: 'image/jpg,image/jpeg,image/png'
279
                    }
280
                });
281
                uploader.on('fileQueued', function (file) {
282
                    if($(".file-item").length<5) {
283
                        var $li = $(
284
                                '<div id="' + file.id + '" class="file-item thumbnail">' +
285
                                '<img>' +
286
                                '</div>'
287
                            ),
288
                            $img = $li.find('img');
289
290
                        $list.append($li);
291
292
                        if ($('#fileList').find('img').length > 4) {
293
                            $('#filePicker').hide();
294
                        }
295
                    }
296
                });
297
                uploader.on('uploadSuccess', function (file, data) {
298
                    $('#' + file.id).addClass('upload-state-done');
299
                    $.ajax({
300
                        type: "post",
301
                        url: "../ajax/image/researchResult",
302
                        async: false,
303
                        data: {fn: data.data[0].cacheKey},
304
                        contentType: "application/x-www-form-urlencoded"
305
                    }).done(function (rd) {
306
                        if (rd.success) {
307
                            $('#' + file.id).find('img').attr('name', rd.data);
308
                        }
309
                    });
310
311
                    uploader.makeThumb(file, function (error, src) {
312
                        var $img = $("#" + file.id).find('img');
313
                        if (error) {
314
                            $img.replaceWith('<span>不能预览</span>');
315
                            return;
316
                        }
317
318
                        $img.attr('src', src);
319
                    }, thumbnailWidth, thumbnailHeight);
320
321
                    if ($('#fileList').find('img').length < 5) {
322
                        $('#filePicker').show();
323
                    }
324
                    if(uploader.getStats().progressNum == 0 || uploader.getStats().queueNum == 0) {
325
                        saveBtn.on("click", save);
326
                    }
327
                });
328
                uploader.on('uploadComplete', function (file) {
329
                    var $li = $('#' + file.id);
330
                    $li.find('.progress').remove();
331
                    $('<div class="file-panel">' +
332
                        '<span class="cancel icon-remove-sign">删除</span>' +
333
                        '</div>').appendTo($li);
334
                });
335
                $list.on("click", ".cancel", function () {
336
                    $(this).parent().parent().remove();
337
                    if ($('#fileList').find('img').length < 5) {
338
                        $('#filePicker').show();
339
                    }
340
                });
341
                uploader.on('uploadProgress', function (file, percentage) {
342
                    var $li = $('#' + file.id),
343
                        $percent = $li.find('.progress span');
344
                    if (!$percent.length) {
345
                        $percent = $('<p class="progress"><span></span></p>')
346
                            .appendTo($li)
347
                            .find('span');
348
                    }
349
                    $percent.css('width', percentage * 100 + '%');
350
                    $('#filePicker').hide();
351
                    saveBtn.unbind("click");
352
                });
353
                uploader.on('error', function (type) {
354
                    switch (type) {
355
                        case 'Q_EXCEED_NUM_LIMIT':
356
                            alert("错误:上传文件数量过多!");
357
                            break;
358
                        case 'Q_EXCEED_SIZE_LIMIT':
359
                            alert("错误:文件总大小超出限制!");
360
                            break;
361
                        case 'F_EXCEED_SIZE':
362
                            alert("错误:文件大小超出限制!");
363
                            break;
364
                        case 'Q_TYPE_DENIED':
365
                            alert("错误:禁止上传该类型文件!");
366
                            break;
367
                        default:
368
                            alert('错误代码:' + type);
369
                            break;
370
                    }
371
                });
372
373
                saveBtn.on("click", save);
374
            }
375
        }
376
    });
377
});

+ 1 - 1
js/typeahead.js

@ -127,7 +127,7 @@ $.use(["jQuery", "form", "doc", "util", "dropdown", "code"], function($, form, d
127 127
				tn: "li",
128 128
				attrs: [{
129 129
					an: "code",
130
					av: pt
130
					av: pc
131 131
				}, {
132 132
					an: "caption",
133 133
					av: pt