dev_xds
姜玉琦 2024-04-10 11:57:20 +08:00
commit a9f5df0eb5
12 changed files with 208 additions and 44 deletions

View File

@ -49,7 +49,7 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://cd-cynosdbmysql-grp-9rqrhxsm.sql.tencentcdb.com:27981/yanzhu_jh_test_2024?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8
url: jdbc:mysql://cd-cynosdbmysql-grp-9rqrhxsm.sql.tencentcdb.com:27981/yanzhu_jh_test?useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root
password: Sxyanzhu@cf
# 从库数据源

View File

@ -42,3 +42,13 @@ export function delProjectCommittee(id) {
method: 'delete'
})
}
// 删除工委会管理
export function addProjectCommitteeList(list) {
return request({
url: '/project/projectCommittee/addList',
method: 'post',
data:list
})
}

View File

@ -3,7 +3,7 @@
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="期刊" prop="magid">
<el-button type="text">管理</el-button>
<el-button type="text">管理</el-button>
</el-form-item>
<el-form-item label="栏目" prop="topic">
<el-select v-model="queryParams.type" placeholder="请选择栏目" clearable>
@ -30,7 +30,7 @@
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['base:magDetail:remove']">删除</el-button>
</el-col>
<el-col :span="1.5" v-if="1==2">
<el-col :span="1.5" v-if="1 == 2">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['base:magDetail:export']">导出</el-button>
</el-col>
@ -38,19 +38,24 @@
</el-row>
<el-table v-loading="loading" :data="magDetailList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="期刊" align="center" prop="name" />
<el-table-column label="栏目" align="center" prop="topicName" />
<el-table-column label="单位" align="center" prop="deptName" />
<el-table-column label="作者" align="center" prop="authorName" />
<el-table-column label="期刊主图" align="center" prop="imageUrl">
<template slot-scope="{row}">
<el-image v-if="row.imageUrl" class="row-image" :src="$basepath + row.imageUrl + '.min.jpg'" :preview-src-list="[$basepath + row.imageUrl]"></el-image>
<el-image v-if="row.imageUrl" class="row-image" :src="$basepath + row.imageUrl + '.min.jpg'"
:preview-src-list="[$basepath + row.imageUrl]"></el-image>
</template>
</el-table-column>
<el-table-column label="标题" align="center" prop="title">
<template slot-scope="{row}">
<div class="div-txt-3">{{ row.title}}</div>
<el-popover placement="bottom-start" width="400" trigger="hover">
{{ row.title }}
<div slot="reference" class="div-txt-3" style="text-align: left;">{{ row.title }}</div>
</el-popover>
</template>
</el-table-column>
<el-table-column label="排序号" align="center" prop="ord" />
@ -119,7 +124,7 @@ import magDetailDrawer from './magDetailDrawer.vue'
export default {
dicts: ['base_mag_topic'],
name: "MagDetail",
components:{
components: {
magDetailDrawer,
},
data() {
@ -172,12 +177,12 @@ export default {
getList() {
this.loading = true;
listMagDetail(this.queryParams).then(response => {
this.magDetailList = (response.rows||[]).map(it=>{
let tmps=it.images;
if(tmps && tmps.length>0){
tmps=this.$tryToJson(tmps,[]);
if(tmps.length>0){
it.imageUrl=tmps[0];
this.magDetailList = (response.rows || []).map(it => {
let tmps = it.images;
if (tmps && tmps.length > 0) {
tmps = this.$tryToJson(tmps, []);
if (tmps.length > 0) {
it.imageUrl = tmps[0];
}
}
return it;
@ -231,11 +236,11 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
this.$refs.drawer.show(null,this.total+1);
this.$refs.drawer.show(null, this.total + 1);
},
/** 修改按钮操作 */
handleUpdate(row) {
this.$refs.drawer.show(row,this.total+1);
this.$refs.drawer.show(row, this.total + 1);
},
/** 提交按钮 */
submitForm() {
@ -277,9 +282,9 @@ export default {
};
</script>
<style lang="scss">
.mag-detail-index{
.row-image{
height:100px;
.mag-detail-index {
.row-image {
height: 100px;
}
}
</style>

View File

@ -60,8 +60,8 @@
<FileUpload @input="doImageInput" v-model="form.imageUrl" :fileSize="5" :limit="1"
:fileType="['png', 'jpg', 'jpeg']" />
</el-form-item>
<el-form-item label="" prop="content">
<editor v-model="form.content" :min-height="192" />
<el-form-item label="" prop="content" class="fi-editor">
<editor v-model="form.content"/>
</el-form-item>
</el-form>
<div class="dialog-footer" style="text-align: center;">
@ -261,5 +261,10 @@ export default {
}
}
}
.fi-editor{
.editor.ql-container{
height: 52vh !important;
}
}
}
</style>

View File

@ -1,22 +1,29 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="项目ID" prop="projectId">
<el-input v-model="queryParams.projectId" placeholder="请输入项目ID" clearable @keyup.enter.native="handleQuery" />
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="期名" prop="committeeName">
<el-input v-model="queryParams.committeeName" placeholder="请输入期名" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="成本名称" prop="costName">
<el-input v-model="queryParams.costName" placeholder="请输入成本名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="金额(万元)" prop="money">
<el-input v-model="queryParams.money" placeholder="请输入金额(万元)" clearable @keyup.enter.native="handleQuery" />
<el-form-item label="分类" prop="workingType">
<el-select v-model="queryParams.workingType" placeholder="分类" clearable>
<el-option v-for="dict in dict.type.project_working_type" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-row :gutter="10" class="mb8" v-if="1 == 2">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['project:projectCommittee:add']">新增</el-button>
@ -37,14 +44,13 @@
</el-row>
<el-table v-loading="loading" :data="projectCommitteeList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="${comment}" align="center" prop="id" />
<el-table-column label="项目ID" align="center" prop="projectId" />
<el-table-column label="分类字典project_working_type" align="center" prop="workingType" />
<el-table-column type="selection" width="55" align="center" v-if="1 == 2" />
<el-table-column label="期名" align="center" prop="committeeName" />
<el-table-column label="项目" align="center" prop="projectName" />
<el-table-column label="分类" align="center" prop="typeName" />
<el-table-column label="成本名称" align="center" prop="costName" />
<el-table-column label="金额(万元)" align="center" prop="money" />
<el-table-column label="${comment}" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" v-if="1 == 2">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['project:projectCommittee:edit']">修改</el-button>
@ -85,6 +91,7 @@
import { listProjectCommittee, getProjectCommittee, delProjectCommittee, addProjectCommittee, updateProjectCommittee } from "@/api/project/projectCommittee";
export default {
dicts: ['project_working_type'],
name: "ProjectCommittee",
data() {
return {
@ -110,7 +117,8 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
projectId: null,
projectName: null,
committeeName: null,
workingType: null,
costName: null,
money: null,

View File

@ -7,7 +7,7 @@
<el-form ref="form" label-width="120px">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane v-for="(dict, idx) in dict.type.project_working_type" :key="dict.value"
:label="dict.label" :name="'type' + dict.value">
:label="dict.label" :name="'' + dict.value">
<el-row v-for="(dataItem, index) in datas[idx]" :key="idx + '-' + index">
<el-col :span="4">
<el-form-item :label="dataItem.committeeName"></el-form-item>
@ -38,7 +38,7 @@
</div>
</template>
<script>
import { listProjectCommittee, getProjectCommittee, delProjectCommittee, addProjectCommittee, updateProjectCommittee } from "@/api/project/projectCommittee";
import { listProjectCommittee, getProjectCommittee, delProjectCommittee, addProjectCommittee, updateProjectCommittee,addProjectCommitteeList } from "@/api/project/projectCommittee";
import { listCommittee, getCommittee, delCommittee, addCommittee, updateCommittee } from "@/api/base/committee";
import axios from 'axios'
export default {
@ -49,7 +49,7 @@ export default {
isOpen: false,
projectId: 0,
prjInfo: null,
activeName: 'type1',
activeName: '1',
datas: [],
}
},
@ -61,7 +61,53 @@ export default {
return (tmp.length>0 && (costName.length==0 || money.length==0) && (type==1?costName.length==0:money.length==0)) ?"is-error":"";
},
submitForm(){
let dicts=this.dict.type.project_working_type
let tmps=dicts.filter(d=>d.value==this.activeName);
if(tmps.length==0){ return;}
let tmp=tmps[0];
let idx=dicts.indexOf(tmp);
if(idx==-1){return;}
if(!this.checkDatas(idx)){
this.$modal.msgError("请输入数据!");
return;
}
for(let i=0;i<dicts.length;i++){
if(i!=idx){
if(!this.checkDatas(i)){
this.activeName=dicts[i].value;
this.$modal.msgError("请输入数据!");
return;
}
}
}
let postData=[];
this.datas.forEach(it=>{
it.forEach(item=>{
item.money*=1;
postData.push(item);
})
});
addProjectCommitteeList(postData).then(d=>{
if(d.code==200){
this.$modal.msgSuccess("保存成功!");
this.loadData();
}else{
this.$modal.msgError("保存失败!!");
}
});
},
checkDatas(idx){
let tmps=this.datas[idx];
let isPass=true;
tmps.forEach(d=>{
let data1=d.costName||"";
let data2=d.money||""+"";
let data3=data1+data2;
if(data3.length>0 && (data1.length==0 || data2.length==0)){
isPass=false;
}
});
return isPass;
},
doCancel(){
this.isOpen=false;
@ -84,6 +130,7 @@ export default {
show(row) {
this.prjInfo = row;
this.isOpen = true;
this.activeName=this.dict.type.project_working_type.length>0?this.dict.type.project_working_type[0].value:"";
this.loadData();
},
loadData() {
@ -133,9 +180,10 @@ export default {
.el-drawer__body {
padding: 12px 24px;
.el-row{
.el-input.is-error{
.el-input.is-error{
.el-input__inner{
border:solid 1px red;
border-radius: 4px;
}
}
}
}

View File

@ -170,7 +170,7 @@
v-hasPermi="['project:assess:list']">季度考核管理</el-dropdown-item>
<el-dropdown-item command="handleBuildNode" icon="el-icon-data-analysis"
v-hasPermi="['project:build_node_data:list']">计划节点管理</el-dropdown-item>
<el-dropdown-item command="handleCommittee" icon="el-icon-s-order" v-if="1==2"
<el-dropdown-item command="handleCommittee" icon="el-icon-s-order" v-if="1==1"
v-hasPermi="['project:projectCommittee:list']">工委会管理</el-dropdown-item>
<el-dropdown-item v-if="1 == 2" command="handleDesign" icon="el-icon-orange"
v-hasPermi="['project:projectDesign:list']">设计管理</el-dropdown-item>

View File

@ -80,6 +80,16 @@ public class SurProjectWorkingCommitteeController extends BaseController
return toAjax(surProjectWorkingCommitteeService.insertSurProjectWorkingCommittee(surProjectWorkingCommittee));
}
@PreAuthorize("@ss.hasPermi('project:projectCommittee:add')")
@Log(title = "工委会管理", businessType = BusinessType.INSERT)
@PostMapping("/addList")
public AjaxResult addList(@RequestBody List<SurProjectWorkingCommittee> list)
{
return toAjax(surProjectWorkingCommitteeService.insertSurProjectWorkingCommitteeList(list));
}
/**
*
*/

View File

@ -15,6 +15,34 @@ public class SurProjectWorkingCommittee extends BaseEntity
{
private static final long serialVersionUID = 1L;
private String committeeName;
private String projectName;
private String typeName;
public String getCommitteeName() {
return committeeName;
}
public void setCommitteeName(String committeeName) {
this.committeeName = committeeName;
}
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
/** */
private Long id;
@ -36,7 +64,7 @@ public class SurProjectWorkingCommittee extends BaseEntity
/** 金额(万元) */
@Excel(name = "金额(万元)")
private Long money;
private Double money;
public void setId(Long id)
{
@ -83,12 +111,12 @@ public class SurProjectWorkingCommittee extends BaseEntity
{
return costName;
}
public void setMoney(Long money)
public void setMoney(Double money)
{
this.money = money;
}
public Long getMoney()
public Double getMoney()
{
return money;
}

View File

@ -58,4 +58,11 @@ public interface ISurProjectWorkingCommitteeService
* @return
*/
public int deleteSurProjectWorkingCommitteeById(Long id);
/**
*
* @param list
* @return
*/
public int insertSurProjectWorkingCommitteeList(List<SurProjectWorkingCommittee> list);
}

View File

@ -1,6 +1,8 @@
package com.yanzhu.jh.project.service.impl;
import java.util.List;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -95,4 +97,34 @@ public class SurProjectWorkingCommitteeServiceImpl implements ISurProjectWorking
{
return surProjectWorkingCommitteeMapper.deleteSurProjectWorkingCommitteeById(id);
}
/**
*
* @param list
* @return
*/
@Override
public int insertSurProjectWorkingCommitteeList(List<SurProjectWorkingCommittee> list) {
//有id 无costName和money的删除
//无id 有costName和money的增加
//有id 有costName和money的修改
int cnt=0;
for(SurProjectWorkingCommittee it:list){
if(it.getId()!=null && it.getId()>0){
if(StrUtil.isEmpty(it.getCostName()) && (it.getMoney()==null || it.getMoney()==0)){
deleteSurProjectWorkingCommitteeById(it.getId());
cnt++;
}else{
updateSurProjectWorkingCommittee(it);
cnt++;
}
}else{
if(StrUtil.isNotEmpty(it.getCostName()) && it.getMoney()!=null && it.getMoney()>0){
insertSurProjectWorkingCommittee(it);
cnt++;
}
}
}
return cnt;
}
}

View File

@ -16,21 +16,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="committeeName" column="committeeName" />
<result property="projectName" column="projectName" />
<result property="typeName" column="typeName" />
</resultMap>
<sql id="selectSurProjectWorkingCommitteeVo">
select id, committeeId, projectId, workingType, costName, money, remark, create_by, create_time, update_by, update_time from sur_project_working_committee
select id, committeeId, projectId, workingType, costName, money, remark, create_by, create_time, update_by, update_time
from sur_project_working_committee
</sql>
<select id="selectSurProjectWorkingCommitteeList" parameterType="SurProjectWorkingCommittee" resultMap="SurProjectWorkingCommitteeResult">
<include refid="selectSurProjectWorkingCommitteeVo"/>
select * from (
select a.*,b.name as committeeName,c.projectName,d.dict_label as typeName,b.ord,b.create_time ctime
from sur_project_working_committee a, base_working_committee b,sur_project c,sys_dict_data d
where a.committeeId=b.id and a.projectId=c.id and a.workingType=d.dict_value and d.dict_type='project_working_type'
) sur_project_working_committee
<where>
<if test="committeeId != null "> and committeeId = #{committeeId}</if>
<if test="projectId != null "> and projectId = #{projectId}</if>
<if test="workingType != null "> and workingType = #{workingType}</if>
<if test="committeeName != null and committeeName!=''"> and committeeName like concat('%',#{committeeName,jdbcType=VARCHAR},'%')</if>
<if test="projectName != null and projectName !=''"> and projectName like concat('%',#{projectName,jdbcType=VARCHAR},'%')</if>
<if test="costName != null and costName != ''"> and costName like concat('%', #{costName}, '%')</if>
<if test="money != null "> and money = #{money}</if>
</where>
ORDER BY ORD DESC,ctime DESC
</select>
<select id="selectSurProjectWorkingCommitteeById" parameterType="Long" resultMap="SurProjectWorkingCommitteeResult">