From 801770456ae3750a44e0989b0025a98ccbad24e6 Mon Sep 17 00:00:00 2001
From: bob <bob.zhang@highdatas.com>
Date: 星期四, 13 八月 2020 17:13:53 +0800
Subject: [PATCH] 最新

---
 src/components/square.vue | 1284 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 1,151 insertions(+), 133 deletions(-)

diff --git a/src/components/square.vue b/src/components/square.vue
index 6b0f9ba..b764377 100644
--- a/src/components/square.vue
+++ b/src/components/square.vue
@@ -7,146 +7,703 @@
 						<el-input v-model="formInline.title" placeholder="鏍囬"></el-input>
 					</el-form-item>
 					
-					<el-form-item label="鎻忚堪">
-						<el-input v-model="formInline.desp" placeholder="鎻忚堪"></el-input>
-					</el-form-item>
+				<!-- 	<el-form-item label="鎻忚堪">
+						<el-input v-model="formInline.desc" placeholder="鎻忚堪"></el-input>
+					</el-form-item> -->
 					
 					<el-form-item >
-						<el-button type="primary" @click="query_">鏌ヨ</el-button>
+						<el-button type="primary" @click="query_(true)">鏌ヨ</el-button>
 						<el-button type="info" @click="empty_">閲嶇疆</el-button>
+					</el-form-item>
+					
+					<el-form-item label="鎺掑簭">
+						<el-select v-model="orderBy" size="mini" style="width: 100px;" @change="query_(true)" placeholder="璇烽�夋嫨">
+								<el-option
+									v-for="item in options_orderBy"
+									:key="item.value"
+									:label="item.label"
+									:value="item.value">
+								</el-option>
+							</el-select>
 					</el-form-item>
 				</el-form>
 			</el-col>
 		  <el-col :span="4" >
 			  <el-button type="primary" @click="createNew">鍒涘缓</el-button>
-			 
 			 </el-col>
 		</el-row>
 		
 
-	<div class="infinite-list-wrapper" style="overflow:auto; height: 70vh; border-top: 1px solid #c3c5c7;">
-		
-		<div class="list" v-infinite-scroll="load" infinite-scroll-disabled="disabled">
-			<div v-for="one in dataList" :key="one.id" class="list-item" @click="showItem(one)">
-				<el-row >
-				  <el-col :span="18"><div class="grid-content z_grid-content1 grid-content_text">{{one.title}}</div></el-col>
-				  <el-col :span="3"><div class="grid-content z_grid-content1 grid-content_exam">{{formatter(one.examine)}}</div></el-col>
-				  <el-col :span="3"><div class="grid-content z_grid-content1 grid-content_time">{{one.time}}</div></el-col>
+	<div ref="list_div" class="infinite-list-wrapper" style="overflow:auto; border-top: 1px solid #c3c5c7;">
+		<div v-if="isRefresh" class="list" v-infinite-scroll="load" infinite-scroll-disabled="disabled" infinite-scroll-distance="20">
+			<div v-for="one in dataList" :key="one.id" class="list-item">
+				<el-row>
+				  <el-col :span="17"><div class="grid-content z_grid-content1 grid-content_text" @click="showItem(one)">{{one.title}}</div></el-col>
+				  <el-col :span="3"><div class="grid-content z_grid-content1 grid-content_exam" @click="showLinkItem(one)">{{formatter(one)}}</div></el-col>
+				  <el-col :span="4"><div class="grid-content z_grid-content1 grid-content_time">{{formatterTime(one.createTime)}}</div></el-col>
 				</el-row>
 				
-				<el-row>
-				  <el-col :span="20"><div class="grid-content z_grid-content2">{{one.desp}}</div></el-col>
+				<el-row style="padding-left: 16px;">
+				  <el-col :span="20"><div class="grid-content z_grid-content2">{{one.comparator}}</div></el-col>
 				</el-row>
 			</div>
 		</div>
 		<p v-if="loading">鍔犺浇涓�...</p>
 		<p v-if="noMore">娌℃湁鏇村浜�</p>
 	</div>
-	<el-dialog
-	  title="璇︽儏"
-	  :visible.sync="dialogVisible"
-	  width="40%"
-	  height="40%"
-	  custom-class="handleClose">
+	
+	<el-dialog v-if="dialogFormVisible" title="鍒涘缓璇濋" :visible.sync="dialogFormVisible"  @close="closeCreate">
+		<div class="class_form_z1">
+			<el-form ref="ref_createTopic" :model="form">
+				<el-form-item label="浜虹兢" :label-width="formLabelWidth" 
+					prop="population"
+					:rules="[{required: true, message: '璇疯緭鍏ヤ汉缇�', trigger: ['blur', 'change']}]"
+					:show-message="false"
+				>
+					<el-input type="textarea" v-model="form.population" maxlength="50" show-word-limit></el-input>
+				</el-form-item>
+				<el-form-item label="骞查鎴栧洜绱�" :label-width="formLabelWidth"
+					prop="exposure"
+					:rules="[{required: true, message: '璇疯緭鍏ュ共棰勬垨鍥犵礌', trigger: ['blur', 'change']}]"
+					:show-message="false"
+				>
+					<el-input type="textarea" v-model="form.exposure" maxlength="50" show-word-limit></el-input>
+				</el-form-item>
+				<el-form-item label="瀵圭収" :label-width="formLabelWidth"
+					prop="comparator"
+					:rules="[{required: true, message: '璇疯緭鍏ュ鐓�', trigger: ['blur', 'change']}]"
+					:show-message="false"
+				>
+					<el-input type="textarea" v-model="form.comparator" maxlength="50" show-word-limit></el-input>
+				</el-form-item>
+				<el-form-item label="鐮旂┒绫诲瀷" :label-width="formLabelWidth"
+					prop="titleType"
+					:rules="[{required: true, message: '璇烽�夋嫨鐮旂┒绫诲瀷', trigger: ['blur', 'change']}]"
+					:show-message="false"
+				>
+					<el-select size="small" v-model="form.titleType" style="width: 100%;">
+						<el-option label="浜屾鐮旂┒" value="浜屾鐮旂┒"></el-option>
+						<el-option label="涓�娆$爺绌�" value="涓�娆$爺绌�"></el-option>
+					</el-select>
+				</el-form-item>
+				<el-row>
+					<el-col :span="10">
+						<el-form-item label="缁撳眬" :label-width="formLabelWidth">
+							<el-select @change="outcomesChange_" multiple size="small" v-model="form.outcomes_array" style="width: 100%;">
+								<el-option label="鏈夋晥鎬�" value="鏈夋晥鎬�"></el-option>
+								<el-option label="瀹夊叏鎬�" value="瀹夊叏鎬�"></el-option>
+								<el-option label="缁忔祹鎬�" value="缁忔祹鎬�"></el-option>
+								<el-option label="鍏跺畠" value="鍏跺畠"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="14">
+						<el-form-item v-if="form.outcomes &&  form.outcomes.indexOf('鍏跺畠') != -1" label="缁撳眬琛ュ厖" :label-width="formLabelWidth">
+							<el-input type="textarea" v-model="form.outcomesOther" style="width: 100%;" maxlength="50" show-word-limit></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				
+				<el-form-item>
+					<el-upload
+						class="upload-demo"
+						:action="uploadUrl"
+						:on-preview="handlePreview"
+						:data="form"
+						:limit="3"
+						:auto-upload='false'
+						ref="upload"
+						:on-change="onChange"
+						:on-exceed="handleExceed"
+						:on-success="uploadSuccess"
+						>
+						<el-button size="small" type="primary">閫夋嫨鏂囦欢</el-button>
+						<div slot="tip" class="el-upload__tip">涓嶈秴杩�50M</div>
+					</el-upload>
+				</el-form-item>
+			</el-form>
+		</div>
+	  <div slot="footer" class="dialog-footer" style="">
+	    <el-button @click="closeCreate">鍙� 娑�</el-button>
+	    <el-button type="primary" @click="createTopic">纭� 瀹�</el-button>
+	  </div>
+	</el-dialog>
+	
+	<el-dialog v-if="dialogVisible" title="璇︽儏" :visible.sync="dialogVisible"
+	  width="40%" height="40%" custom-class="handleClose">
 	  <span>{{selectOne.title}}</span>
 	  <el-divider></el-divider>
 	 <div style="content">
-	    <span>{{selectOne.desp}}</span>
+	    <span>{{selectOne.desc}}</span>
 	 </div>
 	 
 	  <span slot="footer" class="dialog-footer">
 		   <el-button v-if="canEdit" type="primary" @click="edit">淇敼</el-button>
-		   <el-button v-if="!selectOne.examine" type="primary" @click="addProject(selectOne)">鐢熸垚椤圭洰</el-button>
+		   <el-button v-if="!selectOne.examine" type="primary" @click="addProject_title">绔嬮璇勪及</el-button>
 	    <el-button v-if="selectOne.attachment && selectOne.attachment != ''" type="primary" @click="download(selectOne)">涓� 杞�</el-button>
 	  </span>
 	</el-dialog>
 	
-	<el-dialog title="鍒涘缓璇濋" :visible.sync="dialogFormVisible"  @close="closeCreate" >
-	  <el-form :model="form">
-	    <el-form-item label="璇濋鍚嶇О" :label-width="formLabelWidth">
-	      <el-input v-model="form.title" autocomplete="off"></el-input>
-	    </el-form-item>
-	    <el-form-item label="璇濋鍐呭" :label-width="formLabelWidth">
-	        <el-input type="textarea"  v-model="form.desp" autocomplete="off"></el-input>
-	    </el-form-item>
-		<el-upload
-		  class="upload-demo"
-		  :action="uploadUrl"
-		  :on-preview="handlePreview"
-		  :data="form"
-		  :limit="3"
-		  :auto-upload='false'
-		  ref="upload"
-			:on-change="onChange"
-		  :on-exceed="handleExceed"
-		  :on-success="uploadSuccess"
-			>
-		  <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
-		  <div slot="tip" class="el-upload__tip">涓嶈秴杩�50M</div>
-		</el-upload>
-	  </el-form>
-	  <div slot="footer" class="dialog-footer">
-	    <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
-	    <el-button type="primary" @click="createTopic">纭� 瀹�</el-button>
+	<el-dialog v-if="dialogFormTitle" title="绔嬮璇勪及" :visible.sync="dialogFormTitle" append-to-body width="850px">
+		<div class="transition-box class_substep class_form_z1" style="height: 400px; overflow-y: auto; text-align: left; margin: 0 10px;">
+			<div>
+				<el-form :show-message="false" :model="form_['title']" ref="ref_title" label-position='right' label-width="100px"  class="demo-form-inline">
+					<!-- <el-row>
+						<el-col :span="22" class="z_grid-content3">
+							<el-form-item label="棰樼洰绫诲瀷"
+								:rules="[{required: true, message: '璇烽�夋嫨', trigger: ['blur', 'change']}]"
+							>
+								<el-select size="mini"
+									@change="title_titleType"
+									v-model="form_['title'].titleType" placeholder="璇烽�夋嫨" style="width: 100%;">
+									<el-option
+										v-for="item in options_titleType"
+										:key="item.value"
+										:label="item.label"
+										:value="item.value"
+									></el-option>
+								</el-select>
+							</el-form-item>
+						</el-col>
+					</el-row>
+					<el-row v-if="form_['title'].titleType">
+						<el-col :span="22">
+							<el-form-item label="鎻忚堪" prop="titleType"
+								:rules="[{required: true, message: '璇疯緭鍏�', trigger: ['blur', 'change']}]"
+							>
+								<el-input type="textarea" v-model="form_['title'].titleInput" :placeholder="titleInput_" style="width: 100%;"></el-input>
+							</el-form-item>
+						</el-col>
+					</el-row> -->
+					<el-form-item label="浜虹兢" :label-width="formLabelWidth"
+						prop="population"
+						:rules="[{required: true, message: '璇疯緭鍏ヤ汉缇�', trigger: ['blur', 'change']}]"
+					>
+						<el-input  type="textarea" v-model="form_['title'].population" maxlength="50" show-word-limit @input="change_($event)" @change="form_change('title', 'population', 'population', null)"></el-input>
+					</el-form-item>
+					<el-form-item label="骞查鎴栧洜绱�" :label-width="formLabelWidth"
+						prop="exposure"
+						:rules="[{required: true, message: '璇疯緭鍏ュ共棰勬垨鍥犵礌', trigger: ['blur', 'change']}]"
+					>
+						<el-input  type="textarea" v-model="form_['title'].exposure" maxlength="50" show-word-limit @input="change_($event)" @change="form_change('title', 'exposure', 'exposure', null)"></el-input>
+					</el-form-item>
+					<el-form-item label="瀵圭収" :label-width="formLabelWidth"
+						prop="comparator"
+						:rules="[{required: true, message: '璇疯緭鍏ュ鐓�', trigger: ['blur', 'change']}]"
+					>
+						<el-input  type="textarea" v-model="form_['title'].comparator" maxlength="50" show-word-limit @input="change_($event)" @change="form_change('title', 'comparator', 'comparator', null)"></el-input>
+					</el-form-item>
+					<el-form-item label="鐮旂┒绫诲瀷" :label-width="formLabelWidth"
+						prop="titleType"
+						:rules="[{required: true, message: '璇烽�夋嫨鐮旂┒绫诲瀷', trigger: ['blur', 'change']}]"
+					>
+						<el-select  size="small" v-model="form_['title'].titleType" style="width: 100%;" @change="form_change('title', 'titleType', 'titleType', null)">
+							<el-option label="浜屾鐮旂┒" value="浜屾鐮旂┒"></el-option>
+							<el-option label="涓�娆$爺绌�" value="涓�娆$爺绌�"></el-option>
+						</el-select>
+					</el-form-item>
+					<el-row>
+						<el-col :span="10">
+							<el-form-item label="缁撳眬" :label-width="formLabelWidth">
+								<el-select  multiple size="small" v-model="form_['title'].outcomes_array" style="width: 100%;"  @change="form_change('title', 'outcomes', 'outcomes_array', 'arrayToStr')">
+									<el-option label="鏈夋晥鎬�" value="鏈夋晥鎬�"></el-option>
+									<el-option label="瀹夊叏鎬�" value="瀹夊叏鎬�"></el-option>
+									<el-option label="缁忔祹鎬�" value="缁忔祹鎬�"></el-option>
+									<el-option label="鍏跺畠" value="鍏跺畠"></el-option>
+								</el-select>
+							</el-form-item>
+						</el-col>
+						<el-col :span="14">
+							<el-form-item v-if="form_['title'].outcomes && form_['title'].outcomes.indexOf('鍏跺畠') != -1" label="缁撳眬琛ュ厖" :label-width="formLabelWidth">
+								<el-input type="textarea" v-model="form_['title'].outcomesOther" style="width: 100%;" @input="change_($event)" maxlength="50" show-word-limit  @change="form_change('title', 'outcomesOther', 'outcomesOther', null)"></el-input>
+							</el-form-item>
+						</el-col>
+					</el-row>
+					
+					<el-row>
+						<el-col :span="6" class="z_grid-content3">
+							<el-form-item label="鍚堝悓閲戦" prop="budget"
+								:rules="[{required: true, message: '璇疯緭鍏ラ噾棰�', trigger: ['blur', 'change']}]"
+							>
+								<el-input type="number" size="mini" v-model="form_['title'].budget" placeholder="璇疯緭鍏ラ噾棰�" style="width: 100%;"></el-input>
+							</el-form-item>
+						</el-col>
+						
+						<el-col :span="11" class="z_grid-content3">
+							<el-form-item label="璐熻矗浜�" prop="userIds" 
+								:rules="{type: 'array', required: true, message: '璇烽�夋嫨璐熻矗浜�', trigger: ['change', 'blur']}"
+							>
+								<el-cascader
+									style="width: 100%;"
+									size="mini"
+									v-model="form_['title'].userIds"
+									:options="options_users"
+									:props="{ expandTrigger: 'hover' }"
+									placeholder="璇烽�夋嫨璐熻矗浜�"
+									>
+								</el-cascader>
+							</el-form-item>
+						</el-col>
+						<el-col :span="6" class="z_grid-content3">
+							<el-form-item label="浜や粯鐗�">
+								<el-switch v-model="form_['title'].mustAttach"></el-switch>
+							</el-form-item>
+						</el-col>
+					</el-row>
+					<el-row>
+						<el-col :span="11" class="z_grid-content3">
+							<el-form-item label="寮�濮嬫棩鏈�" prop="startTime" 
+								:rules="{ required: true,  trigger: ['change', 'blur']}"
+							>
+									<el-date-picker type="date" :picker-options="pickerOptions01" size="mini" placeholder="閫夋嫨寮�濮嬫棩鏈�" v-model="form_['title'].startTime" style="width: 100%;"></el-date-picker>
+							</el-form-item>
+						</el-col>
+						<el-col :span="11" class="z_grid-content3">
+							<el-form-item label="缁撴潫鏃ユ湡" prop="endTime" 
+								:rules="{required: true,  trigger: ['change', 'blur']}"
+							>
+									<el-date-picker type="date" :picker-options="pickerOptions02" size="mini" placeholder="閫夋嫨缁撴潫鏃ユ湡" v-model="form_['title'].endTime" style="width: 100%;"></el-date-picker>
+							</el-form-item>
+						</el-col>
+					</el-row>
+					
+					<el-row>
+						<el-col :span="17" class="z_grid-content1">
+							<el-form-item label="澶囨敞璇存槑">
+								<el-input type="textarea" v-model="form_['title'].remark" style="width: 100%;" maxlength="50" show-word-limit></el-input>
+							</el-form-item>
+						</el-col>
+						<el-col :span="5" class="z_grid-content3">
+							<el-form-item label="璇█" prop="language" label-width="80px"
+							:rules="[{required: true, message: '璇烽�夋嫨', trigger: ['blur', 'change']}]"
+							>
+								<el-select size="mini" v-model="form_['title'].language" placeholder="閫夋嫨璇█" style="width: 100%;">
+									<el-option label="涓枃" value="Cn"></el-option>
+									<el-option label="鑻辨枃" value="En"></el-option>
+									<el-option label="涓嫳鏂�" value="CnEn"></el-option>
+								</el-select>
+							</el-form-item>
+						</el-col>
+					</el-row>
+					<el-row>
+						<el-col :span="4" class="z_grid-content3">
+							<el-form-item label="鏄惁鍏艰亴缂栬緫" label-width="120px">
+							<el-checkbox @change="parttimeChange('title')" v-model="form_['title'].parttime"></el-checkbox>
+							</el-form-item>
+						</el-col>
+						
+						<!-- <el-col :span="18" class="z_grid-content3">
+							<el-form-item label="鍏艰亴缂栬緫鎴愬憳" label-width="120px">
+								<el-select @change="parttimeChange_" multiple :disabled="!form_['title'].parttime" size="mini" v-model="form_['title'].parttimeUser" style="width: 100%;">
+									<el-option
+										v-for="item in options_parttimeUser"
+										:key="item.id"
+										:label="item.name"
+										:value="item.id"
+									></el-option>
+								</el-select>
+							</el-form-item>
+						</el-col> -->
+					</el-row>
+				</el-form>
+				
+				<div v-if="form_['title'].parttime" style="text-align: left;">
+					<el-button :disabled="!form_['title'].parttime" size="small" @click="addParttime('title')">鏂板鍏艰亴浜哄憳</el-button>
+					<el-table
+					  :data="form_['title'].parttimeList"
+					  :show-header="true"
+					  style="width: 100%;"
+						border
+					>
+					  <el-table-column prop="parttimeUser" label="濮撳悕" align="left" show-overflow-tooltip>
+							<template slot-scope="scope">
+							  <div>
+									<el-select disabled size="mini" v-model="scope.row.parttimeUser" style="width: 100%;">
+										<el-option
+											v-for="item in options_parttimeUser"
+											:key="item.id"
+											:label="item.name"
+											:value="item.id"
+										></el-option>
+									</el-select>
+							  </div>
+							</template>
+						</el-table-column>
+					  <el-table-column prop="parttimePay" label="璐圭敤" width="200" align="center">
+					    <template slot-scope="scope">
+					      <div>
+									<el-input-number size="small" v-model="scope.row.parttimePay" :min="1" label="鏀粯璐圭敤"></el-input-number>
+					      </div>
+					    </template>
+					  </el-table-column>
+						<el-table-column width="280" label="鎿嶄綔" align="center">
+						  <template v-slot="{row}">
+						    <el-row>
+						      <el-tooltip class="item" effect="dark" content="鍒犻櫎" placement="top">
+						        <el-button type="danger" size="mini" icon="el-icon-delete" circle @click="deleteParttime('title', row)"></el-button>
+						      </el-tooltip>
+						    </el-row>
+						  </template>
+						</el-table-column>
+					</el-table>
+				</div>
+			</div>
+		</div>
+	  <div slot="footer" class="dialog-footer" style="">
+	    <el-button @click="dialogFormTitle = false">鍙� 娑�</el-button>
+	    <el-button :loading="loading_saveFormTitle" type="primary" @click="saveFormTitle">纭� 瀹�</el-button>
+			<el-button :loading="loading_addProject" v-if="!selectOne.examine" type="success" @click="addProject">鐢熸垚椤圭洰</el-button>
 	  </div>
 	</el-dialog>
+	
+	<el-dialog v-if="dialogFormTitle2" title="绔嬮璇勪及" :visible.sync="dialogFormTitle2" width="850px">
+		<div class="transition-box class_substep class_form_z1" style="height: 400px; overflow-y: auto; text-align: left; margin: 0 10px;">
+			<div>
+				<el-form :show-message="false" :model="form_['title']" ref="ref_title" label-position='right' label-width="100px"  class="demo-form-inline">
+					<!-- <el-row>
+						<el-col :span="22" class="z_grid-content3">
+							<el-form-item label="棰樼洰绫诲瀷"
+								:rules="[{required: true, message: '璇烽�夋嫨', trigger: ['blur', 'change']}]"
+							>
+								<el-select size="mini"
+									@change="title_titleType"
+									v-model="form_['title'].titleType" placeholder="璇烽�夋嫨" style="width: 100%;">
+									<el-option
+										v-for="item in options_titleType"
+										:key="item.value"
+										:label="item.label"
+										:value="item.value"
+									></el-option>
+								</el-select>
+							</el-form-item>
+						</el-col>
+					</el-row> -->
+					<!-- <el-row v-if="form_['title'].titleType">
+						<el-col :span="22">
+							<el-form-item label="鎻忚堪" prop="titleType"
+								:rules="[{required: true, message: '璇疯緭鍏�', trigger: ['blur', 'change']}]"
+							>
+								<el-input type="textarea" v-model="form_['title'].titleInput" :placeholder="titleInput_" style="width: 100%;"></el-input>
+							</el-form-item>
+						</el-col>
+					</el-row> -->
+					<el-form-item label="浜虹兢" :label-width="formLabelWidth"
+						prop="population"
+						:rules="[{required: true, message: '璇疯緭鍏ヤ汉缇�', trigger: ['blur', 'change']}]"
+					>
+						<el-input type="textarea" v-model="form_['title'].population" maxlength="50" show-word-limit @change="form_change('title', 'population', 'population', null)"></el-input>
+					</el-form-item>
+					<el-form-item label="骞查鎴栧洜绱�" :label-width="formLabelWidth"
+						prop="exposure"
+						:rules="[{required: true, message: '璇疯緭鍏ュ共棰勬垨鍥犵礌', trigger: ['blur', 'change']}]"
+					>
+						<el-input  type="textarea" v-model="form_['title'].exposure" maxlength="50" show-word-limit @change="form_change('title', 'exposure', 'exposure', null)"></el-input>
+					</el-form-item>
+					<el-form-item label="瀵圭収" :label-width="formLabelWidth"
+						prop="comparator"
+						:rules="[{required: true, message: '璇疯緭鍏ュ鐓�', trigger: ['blur', 'change']}]"
+					>
+						<el-input  type="textarea" v-model="form_['title'].comparator" maxlength="50" show-word-limit @change="form_change('title', 'comparator', 'comparator', null)"></el-input>
+					</el-form-item>
+					<el-form-item label="鐮旂┒绫诲瀷" :label-width="formLabelWidth"
+						prop="titleType"
+						:rules="[{required: true, message: '璇烽�夋嫨鐮旂┒绫诲瀷', trigger: ['blur', 'change']}]"
+					>
+						<el-select  size="small" v-model="form_['title'].titleType" style="width: 100%;" @change="form_change('title', 'titleType', 'titleType', null)">
+							<el-option label="浜屾鐮旂┒" value="浜屾鐮旂┒"></el-option>
+							<el-option label="涓�娆$爺绌�" value="涓�娆$爺绌�"></el-option>
+						</el-select>
+					</el-form-item>
+					<el-row>
+						<el-col :span="10">
+							<el-form-item label="缁撳眬" :label-width="formLabelWidth">
+								<el-select  multiple size="small" v-model="form_['title'].outcomes_array" style="width: 100%;" @change="form_change('title', 'outcomes', 'outcomes_array', 'arrayToStr')">
+									<el-option label="鏈夋晥鎬�" value="鏈夋晥鎬�"></el-option>
+									<el-option label="瀹夊叏鎬�" value="瀹夊叏鎬�"></el-option>
+									<el-option label="缁忔祹鎬�" value="缁忔祹鎬�"></el-option>
+									<el-option label="鍏跺畠" value="鍏跺畠"></el-option>
+								</el-select>
+							</el-form-item>
+						</el-col>
+						<el-col :span="14">
+							<el-form-item v-if="form_['title'].outcomes && form_['title'].outcomes.indexOf('鍏跺畠') != -1" label="缁撳眬琛ュ厖" :label-width="formLabelWidth">
+								<el-input  type="textarea" v-model="form_['title'].outcomesOther" style="width: 100%;" maxlength="50" show-word-limit @change="form_change('title', 'outcomesOther', 'outcomesOther', null)"></el-input>
+							</el-form-item>
+						</el-col>
+					</el-row>
+					<el-row>
+						<el-col :span="6" class="z_grid-content3">
+							<el-form-item label="鍚堝悓閲戦" prop="budget"
+								:rules="[{required: true, message: '璇疯緭鍏ラ噾棰�', trigger: ['blur', 'change']}]"
+							>
+								<el-input type="number" size="mini" v-model="form_['title'].budget" placeholder="璇疯緭鍏ラ噾棰�" style="width: 100%;"></el-input>
+							</el-form-item>
+						</el-col>
+						
+						<el-col :span="11" class="z_grid-content3">
+							<el-form-item label="璐熻矗浜�" prop="userIds" 
+								:rules="{type: 'array', required: true, message: '璇烽�夋嫨璐熻矗浜�', trigger: ['change', 'blur']}"
+							>
+								<el-cascader
+									style="width: 100%;"
+									size="mini"
+									v-model="form_['title'].userIds"
+									:options="options_users"
+									:props="{ expandTrigger: 'hover' }"
+									placeholder="璇烽�夋嫨璐熻矗浜�"
+									>
+								</el-cascader>
+							</el-form-item>
+						</el-col>
+						<el-col :span="6" class="z_grid-content3">
+							<el-form-item label="浜や粯鐗�">
+								<el-switch v-model="form_['title'].mustAttach"></el-switch>
+							</el-form-item>
+						</el-col>
+					</el-row>
+					<el-row>
+						<el-col :span="11" class="z_grid-content3">
+							<el-form-item label="寮�濮嬫棩鏈�" prop="startTime" 
+								:rules="{ required: true,  trigger: ['change', 'blur']}"
+							>
+									<el-date-picker type="date" :picker-options="pickerOptions01" size="mini" placeholder="閫夋嫨寮�濮嬫棩鏈�" v-model="form_['title'].startTime" style="width: 100%;"></el-date-picker>
+							</el-form-item>
+						</el-col>
+						<el-col :span="11" class="z_grid-content3">
+							<el-form-item label="缁撴潫鏃ユ湡" prop="endTime" 
+								:rules="{required: true,  trigger: ['change', 'blur']}"
+							>
+									<el-date-picker type="date" :picker-options="pickerOptions02" size="mini" placeholder="閫夋嫨缁撴潫鏃ユ湡" v-model="form_['title'].endTime" style="width: 100%;"></el-date-picker>
+							</el-form-item>
+						</el-col>
+					</el-row>
+					
+					<el-row>
+						<el-col :span="17" class="z_grid-content1">
+							<el-form-item label="澶囨敞璇存槑">
+								<el-input type="textarea" v-model="form_['title'].remark" style="width: 100%;" maxlength="50" show-word-limit></el-input>
+							</el-form-item>
+						</el-col>
+						<el-col :span="5" class="z_grid-content3">
+							<el-form-item label="璇█" prop="language" label-width="80px"
+							:rules="[{required: true, message: '璇烽�夋嫨', trigger: ['blur', 'change']}]"
+							>
+								<el-select size="mini" v-model="form_['title'].language" placeholder="閫夋嫨璇█" style="width: 100%;">
+									<el-option label="涓枃" value="Cn"></el-option>
+									<el-option label="鑻辨枃" value="En"></el-option>
+									<el-option label="涓嫳鏂�" value="CnEn"></el-option>
+								</el-select>
+							</el-form-item>
+						</el-col>
+					</el-row>
+					
+					<el-row>
+						<el-col :span="4" class="z_grid-content3">
+							<el-form-item label="鏄惁鍏艰亴缂栬緫" label-width="120px">
+							<el-checkbox @change="parttimeChange('title')" v-model="form_['title'].parttime"></el-checkbox>
+							</el-form-item>
+						</el-col>
+						
+						<!-- <el-col :span="18" class="z_grid-content3">
+							<el-form-item label="鍏艰亴缂栬緫鎴愬憳" label-width="120px">
+								<el-select @change="parttimeChange_" multiple :disabled="!form_['title'].parttime" size="mini" v-model="form_['title'].parttimeUser" style="width: 100%;">
+									<el-option
+										v-for="item in options_parttimeUser"
+										:key="item.id"
+										:label="item.name"
+										:value="item.id"
+									></el-option>
+								</el-select>
+							</el-form-item>
+						</el-col> -->
+					</el-row>
+				</el-form>
+				<div v-if="form_['title'].parttime" style="text-align: left;">
+					<el-button :disabled="!form_['title'].parttime" size="small" @click="addParttime('title')">鏂板鍏艰亴浜哄憳</el-button>
+					<el-table
+					  :data="form_['title'].parttimeList"
+					  :show-header="true"
+					  style="width: 100%;"
+						border
+					>
+					  <el-table-column prop="parttimeUser" label="濮撳悕" align="left" show-overflow-tooltip>
+							<template slot-scope="scope">
+							  <div>
+									<el-select disabled size="mini" v-model="scope.row.parttimeUser" style="width: 100%;">
+										<el-option
+											v-for="item in options_parttimeUser"
+											:key="item.id"
+											:label="item.name"
+											:value="item.id"
+										></el-option>
+									</el-select>
+							  </div>
+							</template>
+						</el-table-column>
+					  <el-table-column prop="parttimePay" label="璐圭敤" width="200" align="center">
+					    <template slot-scope="scope">
+					      <div>
+									<el-input-number size="small" v-model="scope.row.parttimePay" :min="1" label="鏀粯璐圭敤"></el-input-number>
+					      </div>
+					    </template>
+					  </el-table-column>
+						<el-table-column width="280" label="鎿嶄綔" align="center">
+						  <template v-slot="{row}">
+						    <el-row>
+						      <el-tooltip class="item" effect="dark" content="鍒犻櫎" placement="top">
+						        <el-button type="danger" size="mini" icon="el-icon-delete" circle @click="deleteParttime('title', row)"></el-button>
+						      </el-tooltip>
+						    </el-row>
+						  </template>
+						</el-table-column>
+					</el-table>
+				</div>
+			</div>
+		</div>
+	  <div slot="footer" class="dialog-footer" style="">
+	    <el-button @click="dialogFormTitle2 = false">鍙� 娑�</el-button>
+	    <el-button :loading="loading_saveFormTitle" type="primary" @click="saveFormTitle">纭� 瀹�</el-button>
+			<el-button :loading="loading_addProject" v-if="!selectOne.examine" type="success" @click="addProject">鐢熸垚椤圭洰</el-button>
+	  </div>
+	</el-dialog>
+	
+	<el-dialog custom-class="z_master_dialog" v-if="dialog_2_2" title="鏂板鍏艰亴鎴愬憳" :visible.sync="dialog_2_2" append-to-body width="400px">
+	  <el-form ref="formParttime" :model="formInline_" class="demo-form-inline" label-position="left" label-width="90px">
+	    <el-form-item label="鎴愬憳閫夋嫨" prop="parttimeUser" 
+				:rules="{required: true, message: '璇烽�夋嫨鎴愬憳', trigger: ['change', 'blur']}"
+			>
+	      <el-select size="small" v-model="formInline_.parttimeUser" style="width: 100%;">
+	      	<el-option
+	      		v-for="item in options_parttimeU_list"
+	      		:key="item.id"
+	      		:label="item.name"
+	      		:value="item.id"
+						:disabled="item.disabled"
+	      	></el-option>
+	      </el-select>
+	    </el-form-item>
+			
+			<el-form-item label="鏀粯璐圭敤" prop="parttimePay" 
+				:rules="{required: true, message: '璇峰~鍐欒垂鐢�', trigger: ['change', 'blur']}"
+			>
+				<el-input-number size="small" v-model="formInline_.parttimePay" :min="1" label="鏀粯璐圭敤" style="width: 100%;"></el-input-number>
+	    </el-form-item>
+	  </el-form>
+	  <div slot="footer" class="dialog-footer" style="text-align: right;">
+	    <el-button type="" size="small" @click="dialog_2_2 = false">鍙� 娑�</el-button>
+	    <el-button type="primary" size="small" @click="saveparttime">淇� 瀛�</el-button>
+	  </div>
+	</el-dialog>
+	
 	<div style="width: 0px; height: 0px;">
-	  <iframe ref="frame_export" style="width: 0px; height: 0px;"></iframe>
+	  <iframe ref="frame_export" style="width: 0px; height: 0px; border: 0px;"></iframe>
 	</div>
-	<el-dialog @close="Cancel"  width="70%" top="50px" :visible.sync="dialog_1" append-to-body>
+	<el-dialog v-if="dialog_1" @close="Cancel"  width="70%" top="50px" :visible.sync="dialog_1" append-to-body>
 	  <newProject @closeNewProject="closeNewProject" v-bind:rowData="rowData" ref="newProject_"></newProject>
 	</el-dialog>
 	
-	<el-dialog @close="Cancel1"  width="70%" top="50px" :visible.sync="dialog_2" append-to-body>
+	<el-dialog  v-if="dialog_2" @close="Cancel1"  width="70%" top="50px" :visible.sync="dialog_2" append-to-body>
 	  <newProject ref="newProject1_"></newProject>
+	</el-dialog>
+	
+	<el-dialog v-if="dialogProdetail"  width="70%" top="50px" :visible.sync="dialogProdetail" append-to-body>
+	  <prodetail v-bind:rowData="rowData" ref="newProject2_"></prodetail>
 	</el-dialog>
 		</div>
 </template>
 
 <script>
 	import newProject from '../components/popup/newProject.vue'
+	import prodetail from '../components/popup/prodetail.vue'
 	export default {
 		components: {
-		  newProject
+		  newProject,
+			prodetail
 		},
 		data() {
 			return {
-				rowData:undefined,
+				pickerOptions01: {
+					disabledDate: (time) => {
+						let code = "title";
+						if(this.form_[code].endTime) {
+							return time.getTime() > this.form_[code].endTime;
+						}
+					}
+				},
+				pickerOptions02: {
+					disabledDate: (time) => {
+						let code = "title";
+						if(this.form_[code].startTime) {
+							return time.getTime() < this.form_[code].startTime;
+						}
+					}
+				},
+				
+				isRefresh: true,
+				rowData: {},
 				dialog_1: false,
 				dialog_2: false,
 				uploadUrl:"/api/api/file/topicUpload",
-				form:{},
+				form:{outcomes: ""},
+				isoutcomesOther: false,
+				form_: {
+					title: {mustAttach: true, outcomes: ""},
+				},
+				options_titleType: [
+					{
+					  value: "閽堝瀹㈡埛鎰熷叴瓒g殑棰樼洰鑼冨洿",
+					  label: "閽堝瀹㈡埛鎰熷叴瓒g殑棰樼洰鑼冨洿"
+					},
+					{
+					  value: "閽堝瀹㈡埛鏃㈠畾鐨勯鐩柟鍚�",
+					  label: "閽堝瀹㈡埛鏃㈠畾鐨勯鐩柟鍚�"
+					}
+				],
+				orderBy: "",
+				options_orderBy: [
+					{
+					  value: "title",
+					  label: "鎸夊悕绉�"
+					},
+					{
+					  value: "",
+					  label: "鎸夋椂闂�"
+					}
+				],
+				
+				titleInput_: "",
+				options_users: [],
+				
 				pageno:1,
 				total:0,
 				maxPage:0,
 				fileList: [],
 				dialogVisible: false,
+				dialogProdetail: false,
 				dialogFormVisible: false,
+				dialogFormTitle: false,
+				dialogFormTitle2: false,
 				labelPosition: "right",
 				formInline:{},
 				selectOne:{
 					title:"biaoti",
-					desp:"miaoshu",
+					desc:"miaoshu",
 					attachment:"222"
 				},
-				formLabelWidth:"40%",
-				dataList: [
-				// 	{id:1,attachment:"222",title:"鏍囬", desp:"鎻忚堪鏃跺彂鐢熺籂绾峰徃绗﹀悎鍙屾柟閰掑彑鍙戝姩鏈烘椂浠e嘲宄婚厤鐢甸棿 鍒�鐗囨満姘寸數璐规悳璞嗚厫鐨悳鐨勭湅娉曟垜閮藉彨鎵撶牬鏄寰楁壒鍙戝晢闄勫姞璐圭涓夊搴︾牬鍙戞帴鏀跺埌鍙戝湴鏂瑰氨鎼滃埌鍒板洓鐐瑰垎鍙戝伓璇诲洤", time:"12鍒嗛挓鍓�"},
-				// 	{id:1,attachment:"222",title:"11", desp:"111", time:"11111"},
-				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-				// 	{id:1,attachment:"",title:"11", desp:"111", time:"11111"},
-				 ],
+				formLabelWidth:"100px",
+				dataList: [],
+				options_parttimeUser: [],
 				loading: false,
 				
+				dialog_2_2: false,
+				formInline_: {},
+				options_parttimeU_list: [],
+				ParttimeType: "",
+				loading_saveFormTitle: false,
+				loading_addProject: false,
 			}
 		},
 		computed: {
-			
 			noMore() {
 				return this.maxPage == this.pageno 
 			},
@@ -154,42 +711,316 @@
 				return this.loading || this.noMore
 			}
 		},
+		created() {
+		  //user
+		  this.getUsers();
+			this.getPartTime();
+		},
 		mounted() {
 			this.getData();
+			let clientHeight = document.documentElement.clientHeight;
+			let tableHeight_ = clientHeight - 60 - 45 - 62;
+			this.$refs.list_div.style['height'] = tableHeight_ + "px";
 		},
 		methods: {
+			getPartTime() {
+				let me = this;
+				let url = "/api/sysRoleMapping/partTime";
+				this.$axios.get(url)
+				.then(data_ => {
+				  this.options_parttimeUser = data_.data.data;
+					
+				}).catch(error =>{
+					
+			  })
+			},
+			getUsers() {
+			  let me = this;
+			  let url = "/api/sysRoleMapping/detail";
+			  this.$axios.get(url)
+			  .then(data_ => {
+			    let list = data_.data.data;
+			    let parId = "";
+			    let obj = {};
+			    let result = [];
+			
+			    list.map(el => {
+			        obj[el.id] = el;
+			    })
+			    for(let i=0, len = list.length; i < len; i++) {
+			        let id = list[i].roleName;
+			        //璁剧疆鏄剧ず瀛楁
+			        list[i].value = list[i].id;
+			        list[i].label = list[i].name;
+			
+			        if(id == parId || !id) {
+			            if(!obj[list[i].id].children) {
+			              obj[list[i].id].children = [];
+			            }
+			            result.push(list[i]);
+			            continue;
+			        }
+			        if(obj[id].children) {
+			            obj[id].children.push(list[i]);
+			        } else {
+			            obj[id].children = [list[i]];
+			        }
+			    }
+				
+			    me.options_users = result;
+			
+			  }).catch(error =>{
+			  })
+			},
+			
 			Cancel() {
 				this.$refs.newProject_.Cancel();
-				this.dialogFormVisible = false;
+		//		this.dialogFormVisible = false;
 			},
 			Cancel1() {
 				
 			},
-			addProject(selected) {
-				let url = "/api/topic/exam/" + selected.id;
-				this.$axios.get(url)
+			
+			addProject_title() {
+				let me = this;
+				//鑾峰彇绔嬮璇勪及鏁版嵁
+			//	this.form_ = {title: {mustAttach: true},};
+				if (this.selectOne.title_status) {
+					let url = "/api/detail/get/" + this.selectOne.title_id;
+					this.$axios.get(url)
 					.then(data_ => {
-						if(data_.data.success) {
-							this.rowData = {
-								id:selected.id,
-								desp:selected.desp,
-								name:selected.title,
-								//objective:this.selected.reseachType,
-								//items:[this.$moment(this.selected.startTime).format('YYYY-MM-DD'),this.$moment(this.selected.endTime).format('YYYY-MM-DD')]
-							}
-							this.dialogFormVisible = false;
-							this.dialog_1 = true;
-						}else {
-							this.$message({message:'鍒涘缓椤圭洰澶辫触', type: 'warning'});
+						window.console.log(data_);
+						let titleObj = data_.data.data;
+						for (let itm in me.selectOne) {
+							titleObj[itm] = me.selectOne[itm];
 						}
-					}).catch(error => {
+						if (me.selectOne.outcomes) {
+							titleObj.outcomes_array = me.selectOne.outcomes.split(";");
+						}
+						me.form_ = {
+							title: titleObj
+						}
+						/* if (data_.data.data.parttimeUser) {
+							me.form_['title'].parttimeUser = data_.data.data.parttimeUser.split(";");
+						}
+						else {
+							me.form_['title'].parttimeUser = [];
+						} */
+						
+						me.form_['title'].userIds = [];
+						me.form_['title'].userIds.push(data_.data.data.roleName);
+						me.form_['title'].userIds.push(data_.data.data.userId);
+						me.dialogFormTitle = true;
 					})
+					.catch(error =>{
+						window.console.log(error);
+					})
+				}
+				else {
+					this.form_['title'] = this.selectOne;
+					this.form_['title'].mustAttach = true;
+					this.dialogFormTitle = true;
+				}
+			},
+			parttimeChange(code) {
+				if (!this.form_[code].parttime ) {
+					//this.form_[code].parttimeUser = [];
+				}
+			},
+			addParttime(code) {
+				let me = this;
+				this.ParttimeType = code;
+				this.formInline_ = {};
+				let parttimeListObj_ = {};
+				if (this.form_[code].parttimeList && this.form_[code].parttimeList.length>0) {
+					this.form_[code].parttimeList.map(e => {
+						parttimeListObj_[e.parttimeUser] = true;
+					})
+				}
+				this.options_parttimeU_list = [];
+				let parttimeUserList = this.options_parttimeUser;
+				parttimeUserList.forEach(e => {
+					let o_ = {...e};
+					if (parttimeListObj_[o_.id]) {
+						o_.disabled = true;
+					}
+					me.options_parttimeU_list.push(o_);
+				})
+				this.dialog_2_2 = true;
+			},
+			saveparttime() {
+				let is_null1 = true;
+				this.$refs.formParttime.validate((valid) => {
+					if (!valid) {
+						is_null1 = false;
+					}
+				});
+				
+				if (is_null1) {
+					if (!this.form_[this.ParttimeType].parttimeList) {
+						this.form_[this.ParttimeType].parttimeList = [];
+					}
+					this.form_[this.ParttimeType].parttimeList.push({...this.formInline_});
+					this.dialog_2_2 = false;
+				}
+			},
+			deleteParttime(code, row) {
+				const index = this.form_[code].parttimeList.findIndex(d => d.parttimeUser === row.parttimeUser);
+				this.form_[code].parttimeList.splice(index, 1);
+			},
+			
+			saveFormTitle() {
+				let me = this;
+				//淇濆瓨绔嬮璇勪及鏁版嵁
+				let form_array = [];
+				let is_null1 = true;
+				
+				let itm_k = "title";
+				let ref_k = "ref_" + itm_k;
+				this.$refs[ref_k].validate((valid) => {
+					if (!valid) {
+						is_null1 = false;
+					}
+				});
+				
+				let form_obj = {};
+				form_obj = this.form_[itm_k];
+				if (!form_obj.mustAttach) {
+					form_obj.mustAttach = false;
+				}
+				if (form_obj.startTime) {
+					form_obj.startTime = this.$moment(form_obj.startTime).format('YYYY-MM-DD');
+				}
+				if (form_obj.endTime) {
+					form_obj.endTime = this.$moment(form_obj.endTime).format('YYYY-MM-DD');
+				}
+				if (form_obj.createTime) {
+					form_obj.createTime = this.$moment(form_obj.createTime).format('YYYY-MM-DD');
+				}
+				
+				/* if (form_obj.parttimeUser && form_obj.parttimeUser.length>0) {
+					let parttimeUser_ = "";
+					for (let i = 0; i<form_obj.parttimeUser.length; i++) {
+						if (parttimeUser_ == "") {
+							parttimeUser_ = form_obj.parttimeUser[i];
+						}
+						else {
+							parttimeUser_ = parttimeUser_ + ";" + form_obj.parttimeUser[i];
+						}
+					}
+					form_obj.parttimeUser = parttimeUser_;
+				} */
+				
+				if (form_obj.userIds) {
+					let leng = form_obj.userIds.length;
+					
+					form_obj.roleName = form_obj.userIds[leng-2];
+					form_obj.userId = form_obj.userIds[leng-1];
+				}
+				form_obj.type = itm_k;
+				form_obj.parentId = this.xmId;
+				form_obj.existsObject = null;
+				if (is_null1) {
+					form_obj.dataInfoTable = "title_service";
+					me.loading_saveFormTitle = true;
+					let url = "/api/topic/saveLinkTitle/" + this.selectOne.id;
+					this.$axios.post(url, form_obj)
+					.then(data_ => {
+					  window.console.log(data_);
+						me.loading_saveFormTitle = false;
+						me.dataList = [];
+						me.pageno = 1;
+						me.getData(this.formInline);
+					})
+					.catch(error =>{
+					  window.console.log(error);
+						me.loading_saveFormTitle = false;
+					})
+				}
+			},
+			
+			addProject() {
+				let me = this;
+				let form_array = [];
+				let is_null1 = true;
+				
+				let itm_k = "title";
+				let ref_k = "ref_" + itm_k;
+				this.$refs[ref_k].validate((valid) => {
+					if (!valid) {
+						is_null1 = false;
+					}
+				});
+				
+				let form_obj = {};
+				form_obj = this.form_[itm_k];
+				if (!form_obj.mustAttach) {
+					form_obj.mustAttach = false;
+				}
+				if (form_obj.startTime) {
+					form_obj.startTime = this.$moment(form_obj.startTime).format('YYYY-MM-DD');
+				}
+				if (form_obj.endTime) {
+					form_obj.endTime = this.$moment(form_obj.endTime).format('YYYY-MM-DD');
+				}
+				if (form_obj.createTime) {
+					form_obj.createTime = this.$moment(form_obj.createTime).format('YYYY-MM-DD');
+				}
+				
+				if (form_obj.userIds) {
+					let leng = form_obj.userIds.length;
+					
+					form_obj.roleName = form_obj.userIds[leng-2];
+					form_obj.userId = form_obj.userIds[leng-1];
+				}
+				form_obj.type = itm_k;
+				form_obj.parentId = this.xmId;
+				
+				if (is_null1) {
+					form_obj.dataInfoTable = "title_service";
+					this.loading_addProject = true;
+					let url = "/api/topic/saveLinkTitle/" + this.selectOne.id;
+					
+					this.$axios.post(url, form_obj)
+					.then(data_ => {
+					  window.console.log(data_);
+						me.loading_addProject = false;
+						//SRS+骞翠唤鍚庝袱浣�+涓や綅鏈堜唤+涓や綅鏃ユ湡
+						let code_ = "SRS" + this.$moment(new Date).format('YYMMDD');
+						me.rowData = {
+							parentid: me.selectOne.id,
+							desc: me.selectOne.desc,
+							name: me.selectOne.title,
+							code: code_
+						}
+						
+						me.dialog_1 = true;
+					})
+					.catch(error =>{
+					  window.console.log(error);
+						me.loading_addProject = false;
+					})
+				}
 				
 				
+				/* this.rowData = {
+					parentid: this.selectOne.id,
+					desc: this.selectOne.desc,
+					name: this.selectOne.title,
+					//objective:this.selected.reseachType,
+					//items:[this.$moment(this.selected.startTime).format('YYYY-MM-DD'),this.$moment(this.selected.endTime).format('YYYY-MM-DD')]
+				}
+				
+				this.dialog_1 = true; */
+			//	this.dialogVisible = false;
 			},
 			closeNewProject() {
 				this.dialog_1 = false;
-				getData();
+				let me = this;
+				me.dataList = [];
+				me.pageno = 1;
+				me.getData(this.formInline, true);
+			//	this.getData();
 			},
 			download(val) {
 				if(val) {
@@ -201,6 +1032,7 @@
 			},
 			uploadSuccess() {
 				this.dialogFormVisible = false;
+				this.query_(true);
 			},
 			onChange(file, fileList) {
 				this.fileList = [];
@@ -212,9 +1044,22 @@
 			
 			createTopic() {
 				let me = this;
-				var userId = localStorage.getItem('userId');
+				//var userId = localStorage.getItem('userId');
+				let is_null1 = false;
+				this.$refs.ref_createTopic.validate((valid) => {
+				  if (valid) {
+				    is_null1 = true;
+				  } else {
+				    return false;
+				  }
+				});
+				if(!is_null1) {
+				  return
+				}
+				
+				let userId = this.$cookies.get('userId');
 				if(!userId) {
-					this.$router.push('/login');
+					this.$router.push('/login').catch(err => {err});
 				}
 				this.form.userId = userId;
 				let params = this.form;
@@ -222,14 +1067,14 @@
 				if(this.fileList.length == 0) {
 					//涓嶅甫闄勪欢
 					let url = "/api/topic/add";
-					this.$axios.get(url, {
+					this.$axios.post(url, 
 							params
-						})
+						)
 						.then(data_ => {
 							if(data_.data.success) {
-								this.$message('鍒涘缓鎴愬姛');
+								this.$message({message: '鍒涘缓鎴愬姛', type: 'success'});
 								me.dialogFormVisible = false;
-								me.getData();
+								this.query_(true);
 							}else {
 								this.$message({message:'璇濋鍒涘缓澶辫触', type: 'warning'});
 							}
@@ -239,92 +1084,252 @@
 					this.$refs.upload.submit();
 				}
 			},
-			 handleRemove(file, fileList) {
-			      },
-			      handlePreview(file) {
-			      },
-			      handleExceed(files, fileList) {
-			        this.$message.warning(`褰撳墠闄愬埗閫夋嫨 1 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${files.length + fileList.length} 涓枃浠禶);
-			      },
-			      beforeRemove(file, fileList) {
-			        return this.$confirm(`纭畾绉婚櫎 ${ file.name }锛焋);
-			      },
+			handleRemove(file, fileList) {
+			},
+			handlePreview(file) {
+			},
+			handleExceed(files, fileList) {
+				this.$message.warning(`褰撳墠闄愬埗閫夋嫨 1 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${files.length + fileList.length} 涓枃浠禶);
+			},
+			beforeRemove(file, fileList) {
+				return this.$confirm(`纭畾绉婚櫎 ${ file.name }锛焋);
+			},
 			load() {
-				
+				let me = this;
 				if(me.pageno < me.maxPage) {
 					me.pageno++;
+					this.query_(false);
 				}
-				query_();
-				
-			
 			},
 			showItem(one) {
 				this.dialogVisible = true;
 				this.selectOne = one;
 			},
+			showLinkItem(one) {
+				let me = this;
+				if(one.examine && one.link_id){
+					this.rowData = {
+						id: one.link_id,
+					}
+					this.dialogProdetail = true;
+				}
+				else if (one.title_id) {
+					this.selectOne = one;
+					let url = "/api/detail/get/" + one.title_id;
+					this.$axios.get(url)
+					.then(data_ => {
+						window.console.log(data_);
+						let titleObj = data_.data.data;
+						for (let itm in me.selectOne) {
+							titleObj[itm] = me.selectOne[itm];
+						}
+						if (me.selectOne.outcomes) {
+							titleObj.outcomes_array = me.selectOne.outcomes.split(";");
+						}
+						me.form_ = {
+							title: titleObj
+						}
+						
+						/* me.form_ = {
+							title: data_.data.data
+						} */
+						/* if (data_.data.data.parttimeUser) {
+							me.form_['title'].parttimeUser = data_.data.data.parttimeUser.split(";");
+						}
+						else {
+							me.form_['title'].parttimeUser = [];
+						} */
+						
+						me.form_['title'].userIds = [];
+						me.form_['title'].userIds.push(data_.data.data.roleName);
+						me.form_['title'].userIds.push(data_.data.data.userId);
+						me.dialogFormTitle2 = true;
+					})
+					.catch(error =>{
+						window.console.log(error);
+					})
+				}
+			},
 			createNew() {
+				this.form = {outcomes: ""};
 				this.dialogFormVisible = true;
 			},
-			formatter(exam){
-				if(exam){
+			formatter(one){
+				if(one.examine && one.link_id){
 					return "宸插叧鑱旈」鐩�";
 				}
+				else if (one.title_status) {
+					return "宸茬珛棰樿瘎浼�";
+				}
+			},
+			formatterTime(val) {
+				return this.$moment(val).format('YYYY骞碝M鏈圖D鏃� hh:mm');
 			},
 			empty_() {
 				this.formInline = {};
-				this.query_();
+				this.query_(true);
 			},
-			query_() {
-				this.getData(this.formInline, true);
+			query_(isempty) {
+				let me = this;
+				if (isempty) {
+					me.pageno = 1;
+					me.dataList = [];
+				}
+				me.getData(this.formInline, isempty);
+			//	this.getData(this.formInline, true);
 			},
 			canEdit() {
 				return this.selectOne.userId == this.userId;
 			},
 			edit(){
-				this.form = {
+				/* this.form = {
 					title: this.selectOne.title,
-					desp: this.selectOne.desp,
-					id: this.selectOne.id
-				};
+					desc: this.selectOne.desc,
+					id: this.selectOne.id,
+					outcomes: ""
+				}; */
+				this.form = this.selectOne;
+				
+				if (this.form.outcomes) {
+					this.form.outcomes_array = this.form.outcomes.split(";");
+				}
+				
 				this.dialogFormVisible = true;
 				this.dialogVisible = false;
 			},
 			closeCreate() {
 				this.dialogFormVisible = false;
-				this.getData();
+			//	this.getData();
+				let me = this;
+				me.dataList = [];
+				me.pageno = 1;
+				me.getData(this.formInline, true);
+			},
+			
+			setRefresh() {
+				this.isRefresh = false;
+				this.isRefresh = true;
 			},
 			getData(query,empty) {
-				if(empty) {
+				this.setRefresh();
+				/* if (empty) {
 					this.dataList = [];
-				}
+				} */
+				this.selectOne = {};
 				let me = this;
 				this.loading = true
 				this.loading_table = true;
-				let pageno = this.pagenum;
+				
+				me.dialogFormTitle = false;
+				me.dialogFormTitle2 = false;
+				
+				me.dialogVisible = false;
+			//	let pageno = this.pagenum;
 				let url = "/api/topic/page/" + this.pageno;
 				let params =  {};
-				if(query){
+				if(query && query.title){
 					params.title = query.title;
-					params.desp = query.desp;
+					//params.desc = query.desc;
 				}
-				this.$axios.get(url, {
+				if(this.orderBy) {
+					params.orderBy = this.orderBy;
+				}
+				this.$axios.post(url,
 						params
-					})
+					)
 					.then(data_ => {
 						if(data_.data.success) {
+							if (empty) {
+								me.dataList = [];
+							} 
 							me.dataList.push.apply(me.dataList, data_.data.data.records)
-							me.t
-							otal = data_.data.data.total;
+							me.total = data_.data.data.total;
 							me.pageno = data_.data.data.pageno;
 							me.maxPage = data_.data.data.maxPage;
-							
-							
 						}
 							me.loading = false
 					}).catch(error => {
 							me.loading = false
 					})
 			},
+			
+			//鍗曚竴浜嬩欢
+			title_titleType(val) {
+				if (val == "閽堝瀹㈡埛鎰熷叴瓒g殑棰樼洰鑼冨洿") {
+					this.titleInput_ = "涓�涓汉缇や俊鎭垨涓�涓共棰勪俊鎭�";
+				}
+				else if (val == "閽堝瀹㈡埛鏃㈠畾鐨勯鐩柟鍚�") {
+					this.titleInput_ = "鎻愪緵棰樼洰鐨� PICOS 淇℃伅";
+				}
+			},
+			
+			outcomesChange_(val) {
+				this.isoutcomesOther = false;
+				if (val.length > 0) {
+				  for (let i = 0; i< val.length; i++) {
+				    if (val[i] == "鍏跺畠" ) {
+				      this.isoutcomesOther = true;
+				    }
+						
+						if (i == 0) {
+						  this.form.outcomes = val[i];
+						}
+						else {
+							this.form.outcomes += ";" + val[i];
+						}
+				  }
+				}
+				else {
+					this.form.outcomes = "";
+				}
+			},
+			
+			change_(e){
+				this.$forceUpdate();
+			},
+			form_change(type, key, valKey, code) {
+				let val = this.form_[type][valKey];
+				if (!this.form_[type].existsObject) {
+					this.form_[type].existsObject = {};
+				}
+				if (code && code == "arrayToStr") {
+					if (val.length > 0) {
+					  for (let i = 0; i< val.length; i++) {
+					    if (i == 0) {
+					      this.form_[type].existsObject[key] = val[i];
+					    }
+							else {
+								this.form_[type].existsObject[key] += ";" + val[i];
+							}
+					  }
+					}
+					else {
+						this.form_[type].existsObject[key] = "";
+					}
+				}
+				else {
+					this.form_[type].existsObject[key] = val;
+				}
+			},
+			
+			outcomesArrayChange_(code) {
+				let val = this.form_[code].outcomes_array;
+				if (val.length > 0) {
+				  for (let i = 0; i< val.length; i++) {
+				    if (i == 0) {
+				      this.form_[code].outcomes = val[i];
+				    }
+						else {
+							this.form_[code].outcomes += ";" + val[i];
+						}
+				  }
+				}
+				else {
+					this.form_[code].outcomes = "";
+				}
+			},
+			
+			
 		}
 	}
 </script>
@@ -337,8 +1342,13 @@
 	
 	.grid-content_text {
 		font-weight: bold;
+		font-size: 14px;
 		font-style: italic;
 		color: #000;
+	}
+	.grid-content_text:hover {
+		color: #409EFF;
+		cursor:pointer;
 	}
 	.grid-content_time {
 		font-weight: bold;
@@ -348,16 +1358,23 @@
 		color: #00aaff;
 		font-size: 14px;
 	}
+	.grid-content_exam:hover {
+		font-weight: bold;
+		cursor:pointer;
+	}
+	
 	.z_grid-content1{
 	  display:table-cell;
 	  vertical-align:bottom;
-		height: 50px;
+		height: 30px;
 	}
 	.z_grid-content2{
 	  color: #83878a;
+		font-size: 14px;
 		padding: 0px;
-	  height: 40px;
-		line-height: 40px;
+		min-height: 24px;
+	  height: 24px;
+		line-height: 24px;
 		overflow: hidden;
 		text-overflow: ellipsis;
 		white-space: nowrap;
@@ -374,7 +1391,7 @@
 		
 	}
 	.list-item {
-		margin-top: 20px;
+		margin-top: 0px;
 		padding-bottom: 5px;
 		border-bottom: 1px solid #c3c5c7;
 	}
@@ -382,6 +1399,7 @@
 	.handleClose {
 		margin: 10px;
 		text-align: left;
+		margin-left: 30%;
 	}
 	.handleClose .el-dialog__body {
 		padding: 10px 20px;

--
Gitblit v1.8.0