From 0f49a23a9d4dc7d3eb9a7309f8cd85a316cd4d97 Mon Sep 17 00:00:00 2001 From: zhangyanpeng <bob.zhang@highdatas.com> Date: 星期四, 30 四月 2020 17:39:22 +0800 Subject: [PATCH] 功能调整 --- src/components/square.vue | 593 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 556 insertions(+), 37 deletions(-) diff --git a/src/components/square.vue b/src/components/square.vue index d85423e..605ad3e 100644 --- a/src/components/square.vue +++ b/src/components/square.vue @@ -12,7 +12,7 @@ </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> @@ -41,25 +41,6 @@ <p v-if="loading">鍔犺浇涓�...</p> <p v-if="noMore">娌℃湁鏇村浜�</p> </div> - <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> - </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">鐢熸垚椤圭洰</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"> @@ -87,11 +68,285 @@ </el-upload> </el-form-item> </el-form> - <div slot="footer" class="dialog-footer"> + <div slot="footer" class="dialog-footer" style=""> <el-button @click="dialogFormVisible = false">鍙� 娑�</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> + </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_title">绔嬮璇勪及</el-button> + <el-button v-if="selectOne.attachment && selectOne.attachment != ''" type="primary" @click="download(selectOne)">涓� 杞�</el-button> + </span> + </el-dialog> + + <el-dialog v-if="dialogFormTitle" title="绔嬮璇勪及" :visible.sync="dialogFormTitle" append-to-body> + <div class="transition-box" style="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-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="浜や粯鐗�" prop="mustAttach" + :rules="[{required: true, message: '璇烽�夋嫨', trigger: ['blur', 'change']}]" + > + <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="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-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%;"></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-form> + </div> + </div> + <div slot="footer" class="dialog-footer" style=""> + <el-button @click="dialogFormTitle = false">鍙� 娑�</el-button> + <el-button type="primary" @click="saveFormTitle">纭� 瀹�</el-button> + <el-button v-if="!selectOne.examine" type="success" @click="addProject">鐢熸垚椤圭洰</el-button> + </div> + </el-dialog> + + <el-dialog v-if="dialogFormTitle2" title="绔嬮璇勪及" :visible.sync="dialogFormTitle2"> + <div class="transition-box" style="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-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="浜や粯鐗�" prop="mustAttach" + :rules="[{required: true, message: '璇烽�夋嫨', trigger: ['blur', 'change']}]" + > + <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="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-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%;"></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-form> + </div> + </div> + <div slot="footer" class="dialog-footer" style=""> + <el-button @click="dialogFormTitle2 = false">鍙� 娑�</el-button> + <el-button type="primary" @click="saveFormTitle">纭� 瀹�</el-button> + <el-button v-if="!selectOne.examine" type="success" @click="addProject">鐢熸垚椤圭洰</el-button> + </div> + </el-dialog> + <div style="width: 0px; height: 0px;"> <iframe ref="frame_export" style="width: 0px; height: 0px; border: 0px;"></iframe> </div> @@ -119,12 +374,45 @@ }, data() { return { + 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_: { + title: {mustAttach: true}, + }, + options_titleType: [ + { + value: "閽堝瀹㈡埛鎰熷叴瓒g殑棰樼洰鑼冨洿", + label: "閽堝瀹㈡埛鎰熷叴瓒g殑棰樼洰鑼冨洿" + }, + { + value: "閽堝瀹㈡埛鏃㈠畾鐨勯鐩柟鍚�", + label: "閽堝瀹㈡埛鏃㈠畾鐨勯鐩柟鍚�" + } + ], + titleInput_: "", + options_users: [], + pageno:1, total:0, maxPage:0, @@ -132,6 +420,8 @@ dialogVisible: false, dialogProdetail: false, dialogFormVisible: false, + dialogFormTitle: false, + dialogFormTitle2: false, labelPosition: "right", formInline:{}, selectOne:{ @@ -151,18 +441,23 @@ // {id:1,attachment:"",title:"11", desp:"111", time:"11111"}, // {id:1,attachment:"",title:"11", desp:"111", time:"11111"}, ], + options_parttimeUser: [], loading: false, } }, computed: { - noMore() { return this.maxPage == this.pageno }, disabled() { return this.loading || this.noMore } + }, + created() { + //user + this.getUsers(); + this.getPartTime(); }, mounted() { this.getData(); @@ -171,13 +466,169 @@ 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_title() { + let me = this; + //鑾峰彇绔嬮璇勪及鏁版嵁 + // this.form_ = {title: {mustAttach: true},}; + if (this.selectOne.titleId) { + let url = "/api/detail/get/" + this.selectOne.titleId; + this.$axios.get(url) + .then(data_ => { + window.console.log(data_); + 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.dialogFormTitle = true; + }) + .catch(error =>{ + window.console.log(error); + }) + } + else { + this.form_ = {title: {mustAttach: true}}; + this.dialogFormTitle = true; + } + }, + parttimeChange(code) { + if (!this.form_[code].parttime ) { + this.form_[code].parttimeUser = []; + } + }, + parttimeChange_() { + + }, + 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.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; + + if (is_null1) { + let url = "/api/topic/saveLinkTitle/" + this.selectOne.id; + + this.$axios.post(url, form_obj) + .then(data_ => { + window.console.log(data_); + me.dataList = []; + me.pageno = 1; + me.getData(this.formInline); + }) + .catch(error =>{ + window.console.log(error); + }) + } + }, + addProject() { this.rowData = { parentid: this.selectOne.id, @@ -188,11 +639,15 @@ } this.dialog_1 = true; - this.dialogVisible = false; + // this.dialogVisible = false; }, closeNewProject() { this.dialog_1 = false; - this.getData(); + let me = this; + me.dataList = []; + me.pageno = 1; + me.getData(this.formInline, true); + // this.getData(); }, download(val) { if(val) { @@ -256,17 +711,45 @@ if(me.pageno < me.maxPage) { me.pageno++; } - this.query_(); + this.query_(false); }, showItem(one) { this.dialogVisible = true; this.selectOne = one; }, showLinkItem(one) { - this.rowData = { - id: one.linkId, + let me = this; + if(one.examine && one.linkId){ + this.rowData = { + id: one.linkId, + } + this.dialogProdetail = true; } - this.dialogProdetail = true; + else if (one.titleId) { + this.selectOne = one; + let url = "/api/detail/get/" + one.titleId; + this.$axios.get(url) + .then(data_ => { + window.console.log(data_); + 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 = {}; @@ -276,13 +759,22 @@ if(one.examine && one.linkId){ return "宸插叧鑱旈」鐩�"; } + else if (one.titleId) { + return "宸茬珛棰樿瘎浼�"; + } }, 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; @@ -297,8 +789,12 @@ this.dialogVisible = false; }, closeCreate() { - this.dialogFormVisible = false; - this.getData(); + // this.dialogFormVisible = false; + // this.getData(); + let me = this; + me.dataList = []; + me.pageno = 1; + me.getData(this.formInline, true); }, setRefresh() { @@ -307,14 +803,22 @@ }, getData(query,empty) { this.setRefresh(); - // this.dataList = []; + /* 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 && query != {}){ + if(query && (query.title || query.desp)){ params.title = query.title; params.desp = query.desp; } @@ -323,6 +827,9 @@ }) .then(data_ => { if(data_.data.success) { + if (empty) { + me.dataList = []; + } me.dataList.push.apply(me.dataList, data_.data.data.records) me.total = data_.data.data.total; me.pageno = data_.data.data.pageno; @@ -333,6 +840,18 @@ me.loading = false }) }, + + //鍗曚竴浜嬩欢 + title_titleType(val) { + if (val == "閽堝瀹㈡埛鎰熷叴瓒g殑棰樼洰鑼冨洿") { + this.titleInput_ = "涓�涓汉缇や俊鎭垨涓�涓共棰勪俊鎭�"; + } + else if (val == "閽堝瀹㈡埛鏃㈠畾鐨勯鐩柟鍚�") { + this.titleInput_ = "鎻愪緵棰樼洰鐨� PICOS 淇℃伅"; + } + }, + + } } </script> -- Gitblit v1.8.0