update code

dev_xds
haha 2024-04-24 00:26:19 +08:00
parent 9cf1d824c7
commit 2564638487
4 changed files with 260 additions and 125 deletions

View File

@ -10,42 +10,55 @@
<el-button type="success" @click="doAdd"></el-button>
</el-col>
</el-row>
<div style="padding: 0px; border:solid 1px #ccc;border-radius: 4px;margin-top:4px;max-height: calc(100vh - 360px);overflow-y: auto;" class="scroll data-list">
<el-row v-for="(it, idx) in dataList" :key="idx" :class="'row-'+idx%2+(it.isErr?' is-error':'')">
<div style="padding: 10px; border:solid 1px #ccc;border-radius: 4px;margin-top:4px;max-height: calc(100vh - 360px);overflow-y: auto;"
class="scroll data-list">
<el-tabs type="border-card" v-model="tabName">
<el-tab-pane :label="dept.deptName" :name="'d' + dept.deptId" v-for="(dept, index) in depts"
:key="dept.deptId">
<el-row v-for="(it, idx) in dept['dataList' + costType]" :key="idx" class="datalist-row"
:class="'row-' + idx % 2 + (it.isErr ? ' is-error' : '')">
<el-col :span="2">
{{ idx + 1 }}
</el-col>
<el-col :span="5">
<el-form-item label="申请金额">
<el-input-number style="width: 130px;" :precision="4" @input="chkRowData(it)" v-model="it.money" :class="it.money>0?'':'txt-error'" placeholder="申请金额">
<el-input-number style="width: 130px;" :precision="4" @input="chkRowData(it)"
v-model="it.money" :class="it.money > 0 ? '' : 'txt-error'" placeholder="申请金额">
</el-input-number>
<span class="sp-unit">万元</span>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="申请日期">
<el-date-picker style="width: 140px;" v-model="it.date1" type="date" placeholder="申请日期" :class="it.date1?'':' txt-error'">
<el-date-picker style="width: 140px;" v-model="it.date1" type="date" placeholder="申请日期"
:class="it.date1 ? '' : ' txt-error'" @input="chkRowData(it)">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="支付金额">
<el-input-number style="width: 130px;" :precision="4" @input="chkRowData(it)" v-model="it.money2" placeholder="支付金额" >
<el-input-number style="width: 130px;" :precision="4" @input="chkRowData(it)"
v-model="it.money2" placeholder="支付金额">
</el-input-number>
<span class="sp-unit">万元</span>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="挂账金额" :class="it.money3 < 0 ? 'txt-error' : 'is-ok'">
<el-input-number style="width: 130px;" :precision="4" v-model="it.money3" disabled placeholder="挂账金额" >
<el-input-number style="width: 130px;" :precision="4" v-model="it.money3" disabled
placeholder="挂账金额">
</el-input-number>
<span class="sp-unit">万元</span>
</el-form-item>
</el-col>
<el-col :span="2">
<el-button size="mini" @click="doDelete(it,idx)"></el-button>
<el-button style="margin-left: 12px;" size="mini" @click="doDelete(it, idx,dept)">删除</el-button>
</el-col>
</el-row>
<div>&nbsp;</div>
</el-tab-pane>
</el-tabs>
</div>
</div>
</template>
@ -56,7 +69,9 @@ export default {
return {
prj: null,
costType: 11,
dataList: []
dataList: [],
depts: [],
tabName: ""
};
},
@ -65,74 +80,138 @@ export default {
},
methods: {
doDelete(row,idx){
doDelete(row, idx,dept) {
this.$confirm('确定删除此行数据??', '提示', { type: 'warning' }).then(() => {
this.dataList.splice(idx,1);
dept['dataList'+this.costType].splice(idx, 1);
});
},
chkRowData(row) {
row.money3 = row.money * 1 - row.money2 * 1;
row.isErr = (row.money * 1 + row.money2 * 1) == 0 || !row.date1;
this.$emit("change",this.dataList);
this.$emit("change", this.depts);
},
doAdd() {
this.dataList.push({
let deptId = this.tabName.substr(1);
let tmps = this.depts.filter(d => d.deptId == deptId);
if (tmps.length > 0) {
tmps[0]['dataList' + this.costType].push({
costType: this.costType,
money: '',
money2: '',
money3: '',
projectId: this.prj.id,
deptId: +deptId,
date1: undefined,
isErr: true
});
}
},
init(d,prj,costType){
init(d, prj, costType, depts) {
this.costType = costType;
this.prj = prj;
if(d.length==0){
this.doAdd();
}else{
this.dataList=d.map(it=>{
let obj={...it}
this.depts = depts.map(it => {
let dataList = d.filter(item => item.deptId == it.deptId).map(item => {
let obj = { ...item }
obj.isErr = false;
return obj;
});
it["dataList" + this.costType] = dataList;
return it;
});
if (depts.length > 0) {
setTimeout(() => {
this.tabName = "d" + depts[0].deptId;
}, 400);
}
},
checkData(){
let flag1= this.dataList.filter(d=>d.isErr).length==0;
getDataList(){
let tmps=[];
this.depts.forEach(it=>{
let datas=it["dataList"+this.costType];
datas.forEach(item=>{
tmps.push(item);
})
});
return tmps;
},
checkActiveTabData() {
//tab
let deptId = this.tabName.substr(1);
let tmps = this.depts.filter(d => d.deptId == deptId);
if (tmps.length > 0) {
let datas = tmps[0]["dataList" + this.costType];
return this.checkDataList(datas);
}
return true;
},
checkDataList(datas){
let flag1 = datas.filter(d => d.isErr).length == 0;
if (!flag1) {
this.$message.error("请填写数据!");
return false;
}
flag1=this.dataList.filter(d=>d.money*1<0).length==0;
flag1 = datas.filter(d => d.money * 1 < 0).length == 0;
if (!flag1) {
this.$message.error("金额不能为负数!");
return false;
}
flag1=this.dataList.filter(d=>d.money3*1<0).length==0;
flag1 = datas.filter(d => d.money3 * 1 < 0).length == 0;
if (!flag1) {
this.$message.error("挂账金额不能为负数!");
return false;
}
return true;
},
checkData() {
if (!this.checkActiveTabData()) {
return false;
}
for(let i=0;i<this.depts.length;i++){
let dept=this.depts[i];
if('d'+dept.deptId!=this.tabName){
let datas = dept["dataList" + this.costType];
if(!this.checkDataList(datas)){
this.tabName='d'+dept.deptId;
return false;
}
}
}
return true;
}
},
};
</script>
<style lang="scss">
.cost-contract {
.data-list {
.datalist-row {
* {
font-size: 12px;
}
}
.el-row {
line-height: 36px;
padding: 0px 10px;
&.row-1 {
background-color: #eeeeee;
}
.el-form-item {
margin-bottom: 2px !important;
margin-top: 2px !important;
.el-input__inner {
height: 28px;
line-height: 28px;
}
}
&.is-error {
.txt-error {
.el-input__inner {

View File

@ -11,7 +11,8 @@
<el-form ref="form" label-width="100px">
<el-tabs type="card" v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="总投资" name="first">
<el-form-item label="总投资" class="w400" :class="form.totalInv.money * 1 < 0 ? 'txt-error' : ''">
<el-form-item label="总投资" class="w400"
:class="form.totalInv.money * 1 < 0 ? 'txt-error' : ''">
<el-input-number :precision="4" v-model="form.totalInv.money" placeholder="请输入总投资">
</el-input-number>
<span class="sp-unit">万元</span>
@ -127,6 +128,7 @@ export default {
contract: [],//
safety: [],//
loading: false,
depts: [],
};
},
@ -140,8 +142,11 @@ export default {
let m2sum = 0;
let m3sum = 0;
datas.forEach(d => {
m2sum += d.money2;
m3sum += d.money3;
let tmps=d.dataList12;
tmps.forEach(it=>{
m2sum += it.money2;
m3sum += it.money3;
});
});
this.form.safety2.money = m2sum;
this.form.safety3.money = m3sum;
@ -149,6 +154,16 @@ export default {
handleClick(tab, event) {
},
checkData() {
if(this.activeName == 'third'){
if (!this.$refs.costSafety.checkData()) {
this.activeName = "third";
return false;
}
if (!this.$refs.costContract.checkData()) {
this.activeName = "second";
return false;
}
}else{
if (!this.$refs.costContract.checkData()) {
this.activeName = "second";
return false;
@ -157,13 +172,15 @@ export default {
this.activeName = "third";
return false;
}
}
return true;
},
doSave() {
if (!this.checkData()) {
return;
}
let objs = this.oldData.filter(d => d.costType != 11 && d.costType != 12).map(it => {
let obj = { ...it };
obj.money = obj.money ? obj.money * 10000 : 0;
@ -173,14 +190,14 @@ export default {
this.$message.error("请检查,金额不能为负数!");
return;
}
let contractObjs = this.$refs.costContract.dataList.map(it => {
let contractObjs = this.$refs.costContract.getDataList().map(it => {
let obj = { ...it };
obj.money = obj.money ? obj.money * 10000 : 0;
obj.money2 = obj.money2 ? obj.money2 * 10000 : 0;
obj.date1 = this.$dt(obj.date1).format("YYYY-MM-DD");
return obj;
});
let safetyObjs = this.$refs.costSafety.dataList.map(it => {
let safetyObjs = this.$refs.costSafety.getDataList().map(it => {
let obj = { ...it };
obj.money = obj.money ? obj.money * 10000 : 0;
obj.money2 = obj.money2 ? obj.money2 * 10000 : 0;
@ -254,8 +271,8 @@ export default {
setTimeout(() => {
this.$refs.costYear.init(this.yearInv, this.prj);
this.$refs.costMonth.init(this.monthInv, this.prj);
this.$refs.costContract.init(this.contract, this.prj, 11);
this.$refs.costSafety.init(this.safety, this.prj, 12);
this.$refs.costContract.init(this.contract, this.prj, 11, this.depts);
this.$refs.costSafety.init(this.safety, this.prj, 12, this.depts);
}, 400)
});
},
@ -272,11 +289,26 @@ export default {
tmps.push(obj);
return obj;
},
loadSub(cb) {
this.$api.publics.queryUnitList({
projectId: this.prj.id,
unitTypes: "2".split(","),
}).then((d) => {
this.depts = (d.rows || []).map(it => {
it.dataList11 = [];
it.dataList12 = [];
return it;
});
cb && cb();
});
},
show(prj) {
this.prj = prj;
this.title = prj.projectName;
this.isOpen = true;
this.loadSub(() => {
this.loadData(true);
});
},
},
};

View File

@ -29,6 +29,25 @@ public class SurProjectCostOutput extends BaseEntity
@Excel(name = "金额")
private Long money;
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
private String deptName;
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
private Long deptId;
/** 年份 */
@Excel(name = "年份")
private Long year;

View File

@ -20,16 +20,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="money2" column="money2" />
<result property="date1" column="date1" />
<result property="date2" column="date2" />
<result property="deptId" column="deptId"/>
</resultMap>
<sql id="selectSurProjectCostOutputVo">
select id, project_id, money, year, month, cost_type, remark, is_del, create_by, create_time, update_by, update_time,money2,date1,date2 from sur_project_cost_output
select id, project_id, money, year, month, cost_type, remark, is_del, create_by, create_time, update_by, update_time,money2,date1,date2,deptId from sur_project_cost_output
</sql>
<select id="selectSurProjectCostOutputList" parameterType="SurProjectCostOutput" resultMap="SurProjectCostOutputResult">
<include refid="selectSurProjectCostOutputVo"/>
<where>
<if test="projectId != null "> and project_id = #{projectId}</if>
<if test="deptId != null "> and deptId = #{deptId}</if>
<if test="money != null "> and money = #{money}</if>
<if test="year != null "> and year = #{year}</if>
<if test="month != null "> and month = #{month}</if>
@ -63,6 +65,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="money2 != null">money2,</if>
<if test="date1 != null">date1,</if>
<if test="date2 != null">date2,</if>
<if test="deptId != null">deptId,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectId != null">#{projectId},</if>
@ -79,6 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="money2 != null">#{money2},</if>
<if test="date1 != null">#{date1},</if>
<if test="date2 != null">#{date2},</if>
<if test="deptId != null">#{deptId},</if>
</trim>
</insert>
@ -99,6 +103,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="money2 != null">money2 = #{money2},</if>
<if test="date1 != null">date1 = #{date1},</if>
<if test="date2 != null">date2 = #{date2},</if>
<if test="deptId != null">deptId = #{deptId},</if>
</trim>
where id = #{id}
</update>