| | |
| | | <el-input v-model="formInline.name" placeholder="项目名称"></el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="研究目的"> |
| | | <el-select v-model="formInline.type" placeholder="研究目的"> |
| | | <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-form-item label="研究类型分类" label-width="100px"> |
| | | <el-select v-model="formInline.type" placeholder="研究类型分类"> |
| | | <el-option |
| | | v-for="(item,k) in options_type" |
| | | :key="k" |
| | | :label="item" |
| | | :value="item" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | |
| | | </div> |
| | | |
| | | <div style="width: 100%; text-align: left;"> |
| | | <span>统计已回款金额:{{sum_budget}}</span> |
| | | <span>统计开票金额:{{sum_budget}}</span> |
| | | <span style="margin-left: 32px;">统计已确认金额:{{sum_payMoney}}</span> |
| | | </div> |
| | | |
| | | <!-- :summary-method="getSummaries" |
| | | show-summary --> |
| | | <el-table |
| | | highlight-current-row |
| | | ref="data_table" |
| | | @current-change="tableChange" |
| | | v-loading="loading_table" |
| | | size="small" |
| | | :summary-method="getSummaries" |
| | | show-summary |
| | | :data="tableData" |
| | | :header-cell-style="{'width': '100%', 'text-align': 'center'}" |
| | | :row-class-name="tableRowClassName"> |
| | | <!-- <el-table-column type="index" width="50"> </el-table-column> --> |
| | | <el-table-column label="操作" align="center"><!-- fixed="right" --> |
| | | <template v-slot="{row}"> |
| | | <el-row> |
| | | <el-button type="primary" size="mini" @click="showDetail(row)">详情</el-button> |
| | | </el-row> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="code" label="项目号" width="120" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="name" label="项目名称" width="120" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="status" label="当前状态" width="100" align="center" :formatter="status_"></el-table-column> |
| | | <el-table-column prop="reseachType" label="研究类型" width="130"></el-table-column> |
| | | <el-table-column prop="type" label="研究类型分类" show-overflow-tooltip width="130"></el-table-column> |
| | | <el-table-column prop="totalCnt" label="服务项目数" width="100" align="center"></el-table-column> |
| | | <el-table-column prop="finishCnt" label="已完成项目" width="100" align="center"></el-table-column> |
| | | <el-table-column prop="delayCnt" label="延期项目" width="100" align="center"></el-table-column> |
| | | <el-table-column prop="totalBudget" label="合同金额" width="100" align="center"></el-table-column> |
| | | <el-table-column prop="budget" sortable label="已回款金额" width="150" align="center"> |
| | | <template v-slot="{row}"> |
| | | <div> |
| | | <el-input-number size="mini" v-model="row.budget" @change="moneyChange(row)"></el-input-number> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="budget" label="开票金额" width="150" align="center"></el-table-column> |
| | | <el-table-column prop="payMoney" label="已确认金额" width="150" align="center"></el-table-column> |
| | | <el-table-column prop="startTime" label="开始时间" width="100" align="center" :formatter="dateFormat_"></el-table-column> |
| | | <el-table-column prop="endTime" label="结束时间" width="100" align="center" :formatter="dateFormat_" ></el-table-column> |
| | | <el-table-column prop="desp" label="项目描述" show-overflow-tooltip></el-table-column> |
| | | |
| | | </el-table> |
| | | <div style="text-align: right; background-color: #fff;"> |
| | | <el-pagination |
| | |
| | | </el-pagination> |
| | | </div> |
| | | |
| | | <el-dialog title="项目详情确认" v-if="dialog_2" @close="Cancel2" width="70%" top="50px" :visible.sync="dialog_2" append-to-body> |
| | | <substepReadOnly @closeProject="closeDetail" v-bind:xmId="detailData.id" ref="newProject2_"></substepReadOnly> |
| | | <el-dialog title="付款详情" v-if="dialog_2" @close="Cancel2" width="70%" top="50px" :visible.sync="dialog_2"> |
| | | <el-table |
| | | highlight-current-row |
| | | ref="data_table2" |
| | | size="small" |
| | | :data="tableData2" |
| | | :header-cell-style="{'width': '100%', 'text-align': 'center', 'background-color': 'rgb(247, 248, 249)'}" |
| | | :row-class-name="tableRowClassName"> |
| | | <el-table-column prop="code" label="项目号" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="name" label="项目名称" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="status" label="当前状态" width="100" align="center" :formatter="status_"></el-table-column> |
| | | <el-table-column prop="totalBudget" label="合同金额" align="center"></el-table-column> |
| | | <el-table-column prop="budget" label="开票金额总计" align="center"></el-table-column> |
| | | <el-table-column prop="payMoney" label="已确认金额总计" align="center"></el-table-column> |
| | | <!-- <el-table-column prop="totalBudget" label="毛利率" align="center"></el-table-column> --> |
| | | </el-table> |
| | | |
| | | <div style="width: 100%; text-align: left; margin: 10px;"> |
| | | <el-button type="primary" size="mini" @click="addPhase">新增分期</el-button> |
| | | </div> |
| | | |
| | | <!-- @header-click="headerClick" --> |
| | | <el-table |
| | | highlight-current-row |
| | | ref="data_table3" |
| | | v-loading="loading_table3" |
| | | size="small" |
| | | :data="tableData3" |
| | | :height="300" |
| | | :header-cell-style="{'width': '100%', 'text-align': 'center', 'background-color': 'rgb(247, 248, 249)'}" |
| | | :row-class-name="tableRowClassName"> |
| | | <el-table-column prop="orderNo" label="期次" width="80" align="center"></el-table-column> |
| | | <el-table-column prop="billTime" label="开票日期" width="180" align="center"> |
| | | <template v-slot="{row}"> |
| | | <div> |
| | | <el-date-picker :disabled="row.checked" style="width: 160px;" size="mini" v-model="row.billTime" type="date" placeholder="选择日期" @change="moneyChange(row)"> |
| | | </el-date-picker> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="money" label="开票金额" width="160" align="center"> |
| | | <template v-slot="{row}"> |
| | | <div> |
| | | <el-input-number :disabled="row.checked" size="mini" v-model="row.money" @change="moneyChange(row)"></el-input-number> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="gatherTime" label="收款日期" width="180" align="center"> |
| | | <template v-slot="{row}"> |
| | | <div> |
| | | <el-date-picker :disabled="row.checked" style="width: 160px;" size="mini" v-model="row.gatherTime" type="date" placeholder="选择日期" @change="moneyChange(row)"> |
| | | </el-date-picker> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="checked" label="是否收款" align="center" :formatter="check_"></el-table-column> |
| | | <el-table-column prop="checkUserName" label="确认人" align="center"></el-table-column> |
| | | <el-table-column fixed="right" label="确认收款" width="180" align="center"> |
| | | <template v-slot="{row}"> |
| | | <el-row> |
| | | <el-button :disabled="row.checked" type="primary" size="mini" @click="confirmPhase(row)">确认收款</el-button> |
| | | <el-button :disabled="row.checked" type="danger" size="mini" @click="removePhase(row)">删除</el-button> |
| | | </el-row> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | </el-table> |
| | | |
| | | <!-- <div ref="z_dialog_buttonList" v-show="dialog_tree_node" |
| | | @mouseenter="NodePopover_isShow(true)" |
| | | @mouseleave="NodePopover_isShow(false)" |
| | | style="position: fixed; left:0px; top:0px; padding: 8px 12px; border: 1px solid rgb(233,233,233); background-color: #fff; z-index: 10;" |
| | | > |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-button style="padding: 8px; border: 0px; width: 100%; text-align: left;" icon="el-icon-delete-solid" @click="removePhase"> |
| | | 删 除</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> --> |
| | | </el-dialog> |
| | | |
| | | <el-dialog title="添加分期" v-if="dialog_1" @close="closeNewPhase" width="400px" :visible.sync="dialog_1" append-to-body> |
| | | <el-form ref="formPhase" :model="phaseForm" label-width="80px" size="mini"> |
| | | <el-form-item label="期次"> |
| | | <el-input-number size="mini" v-model="phaseForm.orderNo" style="width: 240px;"></el-input-number> |
| | | </el-form-item> |
| | | <el-form-item label="开票时间"> |
| | | <el-date-picker v-model="phaseForm.billTime" type="date" placeholder="选择日期" style="width: 240px;"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="开票金额"> |
| | | <el-input-number size="mini" v-model="phaseForm.money" style="width: 240px;"></el-input-number> |
| | | </el-form-item> |
| | | <el-form-item label="收款时间"> |
| | | <el-date-picker v-model="phaseForm.gatherTime" type="date" placeholder="选择日期" style="width: 240px;"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeNewPhase">取 消</el-button> |
| | | <el-button :loading="loading_savePhase" type="primary" @click="savePhase">保 存</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import substepReadOnly from './popup/substepReadOnly.vue'; |
| | | export default { |
| | | |
| | | components: { |
| | | substepReadOnly, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | upload_type: "", |
| | | upload_headers: {}, |
| | | upload_data: {}, |
| | | options_type:[ |
| | | "Health technology assessment (HTA)", |
| | | "Clinical practice guideline (CPG)", |
| | | "Evidence mapping", |
| | | "Overview of review", |
| | | "Scoping review", |
| | | "Rapid review", |
| | | "Systematic review", |
| | | "Rapid review", |
| | | "Randomised controlled trial (RCT)", |
| | | "Other" |
| | | ], |
| | | |
| | | pdfUrl: "", |
| | | currentPage: 1, |
| | |
| | | rowData:undefined, |
| | | detailData:undefined, |
| | | dialog_1: false, |
| | | phaseForm: {}, |
| | | loading_savePhase: false, |
| | | dialog_tree_node: false, |
| | | timer: null, |
| | | fieldObj: null, |
| | | dialog_2: false, |
| | | dialog_upload: false, |
| | | dialog_pdf: false, |
| | |
| | | selected: undefined, |
| | | labelPosition: "left", |
| | | tableData: [], |
| | | tableData2: [], |
| | | loading_table3: false, |
| | | tableData3: [], |
| | | sum_budget: 0, |
| | | sum_payMoney: 0, |
| | | userId:"", |
| | | assign:undefined, |
| | | formInline: { |
| | |
| | | }, |
| | | mounted() { //组件配置后,页面显示前。用于加载数据 |
| | | this.getData(); |
| | | this.userId = localStorage.getItem('userId'); |
| | | this.assign = localStorage.getItem('assign'); |
| | | //this.userId = localStorage.getItem('userId'); |
| | | //this.assign = localStorage.getItem('assign'); |
| | | |
| | | this.userId = this.$cookies.get('userId'); |
| | | this.assign = this.$cookies.get('assign'); |
| | | }, |
| | | methods: { |
| | | headerClick(column, event) { |
| | | this.$message({message:'点击字段', type: 'warning'}); |
| | | |
| | | clearInterval(this.timer); |
| | | this.enableTimer(); |
| | | this.clientHeight = document.documentElement.clientHeight; |
| | | let top_ = event.top; |
| | | let left_ = event.left; |
| | | |
| | | this.$refs.z_dialog_buttonList.style.top = top_ + "px"; //- el_h/2 |
| | | this.$refs.z_dialog_buttonList.style.left = left_ + 32 + "px"; |
| | | |
| | | this.dialog_tree_node= true; |
| | | this.fieldObj = column; |
| | | }, |
| | | |
| | | enableTimer() { |
| | | this.timer = setInterval(()=>{ |
| | | this.dialog_tree_node = false; |
| | | clearInterval(this.timer); |
| | | },1000); |
| | | }, |
| | | |
| | | NodePopover_isShow(isShow) { |
| | | if (isShow) { |
| | | clearInterval(this.timer); |
| | | this.dialog_tree_node = true; |
| | | } |
| | | else { |
| | | this.enableTimer(); |
| | | } |
| | | }, |
| | | |
| | | Cancel2() { |
| | | this.dialog_2 = false; |
| | | //this.closeDetail(); |
| | | this.query_(); |
| | | }, |
| | | closeDetail() { |
| | | this.dialog_2 = false; |
| | | //this.detailData = undefined; |
| | | }, |
| | | showDetail() { |
| | | if(!this.selected || !this.selected.id){ |
| | | showDetail(row) { |
| | | if(!row.id){ |
| | | this.$message({message:'请选中一个项目', type: 'warning'}); |
| | | return; |
| | | } |
| | | this.tableData2 = []; |
| | | this.tableData2.push(row); |
| | | this.getPhase(); |
| | | this.dialog_2 = true; |
| | | }, |
| | | |
| | | tableChange(val) { |
| | | if (!val) { |
| | | val = {}; |
| | |
| | | pageSize: this.pagesize, |
| | | isRun: true |
| | | }; |
| | | if(this.assign) { |
| | | if(this.assign == "true") { |
| | | params.userId = this.userId; |
| | | } |
| | | if(query){ |
| | |
| | | .then(data_ => { |
| | | window.console.log(data_); |
| | | let clientHeight = document.documentElement.clientHeight; |
| | | let tableHeight_ = clientHeight - 60 - 20 - 60 - 62 - 48 - 48 - 20; |
| | | let tableHeight_ = clientHeight - 60 - 20 - 60 - 62 - 48 - 20; |
| | | this.$refs.data_table.$el.getElementsByClassName('el-table__body-wrapper')[0].style['height'] = tableHeight_ - 10 + "px";// - header_height |
| | | this.$refs.data_table.$el.getElementsByClassName('el-table__body-wrapper')[0].style['min-height'] = tableHeight_ - 10 + "px"; |
| | | this.$refs.data_table.$el.getElementsByClassName('el-table__body-wrapper')[0].style['overflow'] = "overlay"; |
| | |
| | | this.tableData = data_.data.data.datas.records; //给tableData赋值 |
| | | this.total = data_.data.data.datas.total; |
| | | this.sum_budget = data_.data.data.budget ? data_.data.data.budget : 0; |
| | | this.sum_payMoney = data_.data.data.payMoney ? data_.data.data.payMoney : 0; |
| | | |
| | | this.loading_table = false; |
| | | }).catch(error => { |
| | | // console.log(error); |
| | |
| | | }, |
| | | onSubmit() { |
| | | query_(); |
| | | }, |
| | | |
| | | moneyChange(row) { |
| | | let me = this; |
| | | let url = "/api/scheme/save/" + row.id; |
| | | let params = { |
| | | budget: row.budget, |
| | | } |
| | | |
| | | this.getUrl(url, params, function(data_) { |
| | | me.query_(); |
| | | }) |
| | | }, |
| | | |
| | | getSummaries(param) { |
| | |
| | | return "已结束"; |
| | | } |
| | | }, |
| | | |
| | | check_(row, colum, val ,index){ |
| | | if (val) { |
| | | return "是"; |
| | | } |
| | | else{ |
| | | return "否"; |
| | | } |
| | | }, |
| | | finishFotmat(row, colum, val ,index) { |
| | | if(val) { |
| | | return "已结束"; |
| | |
| | | return "进行中"; |
| | | } |
| | | }, |
| | | addProject() { |
| | | this.dialog_1 = true; |
| | | this.rowData = {}; |
| | | }, |
| | | editProject() { |
| | | if(!this.selected || this.selected.status == "finish"){ |
| | | |
| | | this.$message({message:'请选中一条未完成的项目', type: 'warning'}); |
| | | }else { |
| | | this.rowData = { |
| | | id:this.selected.id, |
| | | desp:this.selected.desp, |
| | | name: this.selected.name, |
| | | beginDate: this.selected.beginDate, |
| | | endDate: this.selected.endDate, |
| | | objective:this.selected.reseachType, |
| | | items:[this.$moment(this.selected.startTime).format('YYYY-MM-DD'),this.$moment(this.selected.endTime).format('YYYY-MM-DD')] |
| | | |
| | | getPhase() { |
| | | let me = this; |
| | | let url = "/api/scheme/bill/getByParent/" + me.tableData2[0].id; |
| | | me.loading_table3 = true; |
| | | me.tableData3 = []; |
| | | this.getUrl(url, null, function(data_) { |
| | | me.loading_table3 = false; |
| | | if (data_.data.data) { |
| | | me.tableData3 = data_.data.data; |
| | | } |
| | | this.dialog_1 = true; |
| | | } |
| | | |
| | | |
| | | else { |
| | | me.tableData3 = []; |
| | | } |
| | | }) |
| | | me.$emit("refreshDrawer"); |
| | | }, |
| | | closeNewProject() { |
| | | |
| | | confirmPhase(row) { |
| | | let me = this; |
| | | let url = "/api/scheme/bill/check/" + row.id; |
| | | |
| | | let params = { |
| | | user: this.userId |
| | | } |
| | | this.getUrl(url, params, function(data_) { |
| | | me.tableData2[0].payMoney = data_.data.data.payMoney; |
| | | row.checked = true; |
| | | me.$emit("refreshDrawer"); |
| | | }) |
| | | }, |
| | | |
| | | removePhase(row) { |
| | | let me = this; |
| | | let url = "/api/scheme/bill/delById/" + row.id; |
| | | |
| | | this.getUrl(url, null, function(data_) { |
| | | me.tableData2[0].budget = data_.data.data.budget; |
| | | me.getPhase(); |
| | | }) |
| | | }, |
| | | |
| | | moneyChange(row) { |
| | | let me = this; |
| | | let url = "/api/scheme/bill/addOrUpdate"; |
| | | |
| | | let params = {...row}; |
| | | params.parentId = me.tableData2[0].id; |
| | | this.postUrl(url, params, function(data_) { |
| | | me.tableData2[0].budget = data_.data.data.budget; |
| | | }) |
| | | }, |
| | | |
| | | addPhase(row) { |
| | | this.dialog_1 = true; |
| | | this.phaseForm = { |
| | | orderNo: this.tableData3.length + 1 |
| | | }; |
| | | }, |
| | | |
| | | savePhase() { |
| | | let me = this; |
| | | let url = "/api/scheme/bill/addOrUpdate"; |
| | | me.loading_savePhase = true; |
| | | let params = {...this.phaseForm}; |
| | | params.parentId = me.tableData2[0].id; |
| | | |
| | | this.postUrl(url, params, function(data_) { |
| | | me.tableData2[0].budget = data_.data.data.budget; |
| | | me.loading_savePhase = false; |
| | | me.dialog_1 = false; |
| | | me.getPhase(); |
| | | }) |
| | | }, |
| | | closeNewPhase() { |
| | | this.dialog_1 = false; |
| | | query_(); |
| | | }, |
| | | |
| | | getUrl(url, params, callback){ |