update code
parent
9cf1d824c7
commit
2564638487
|
@ -3,49 +3,62 @@
|
|||
<el-row>
|
||||
<el-col :span="8">
|
||||
<span style="color: #409eff;">
|
||||
{{ costType==11? '工程进度款支付明细':'支付明细'}}
|
||||
{{ costType == 11 ? '工程进度款支付明细' : '支付明细' }}
|
||||
</span>
|
||||
</el-col>
|
||||
<el-col :span="16" style="text-align: right;">
|
||||
<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':'')">
|
||||
<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>
|
||||
<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>
|
||||
</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>
|
||||
<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>
|
||||
<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-col>
|
||||
</el-row>
|
||||
<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>
|
||||
<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'" @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>
|
||||
<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>
|
||||
<span class="sp-unit">万元</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-button style="margin-left: 12px;" size="mini" @click="doDelete(it, idx,dept)">删除</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div> </div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -53,10 +66,12 @@
|
|||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
prj:null,
|
||||
costType:11,
|
||||
dataList: []
|
||||
return {
|
||||
prj: null,
|
||||
costType: 11,
|
||||
dataList: [],
|
||||
depts: [],
|
||||
tabName: ""
|
||||
};
|
||||
},
|
||||
|
||||
|
@ -65,84 +80,148 @@ export default {
|
|||
},
|
||||
|
||||
methods: {
|
||||
doDelete(row,idx){
|
||||
this.$confirm('确定删除此行数据??', '提示', { type: 'warning' }).then(()=>{
|
||||
this.dataList.splice(idx,1);
|
||||
doDelete(row, idx,dept) {
|
||||
this.$confirm('确定删除此行数据??', '提示', { type: 'warning' }).then(() => {
|
||||
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);
|
||||
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.depts);
|
||||
},
|
||||
doAdd() {
|
||||
this.dataList.push({
|
||||
costType:this.costType,
|
||||
money: '',
|
||||
money2: '',
|
||||
money3: '',
|
||||
projectId:this.prj.id,
|
||||
date1: undefined,
|
||||
isErr:true
|
||||
});
|
||||
},
|
||||
init(d,prj,costType){
|
||||
this.costType=costType;
|
||||
this.prj=prj;
|
||||
if(d.length==0){
|
||||
this.doAdd();
|
||||
}else{
|
||||
this.dataList=d.map(it=>{
|
||||
let obj={...it}
|
||||
obj.isErr=false;
|
||||
return obj;
|
||||
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
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
checkData(){
|
||||
let flag1= this.dataList.filter(d=>d.isErr).length==0;
|
||||
if(!flag1){
|
||||
this.$message.error("请填写数据!");
|
||||
return false;
|
||||
}
|
||||
flag1=this.dataList.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;
|
||||
if(!flag1){
|
||||
this.$message.error("挂账金额不能为负数!");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
init(d, prj, costType, depts) {
|
||||
this.costType = costType;
|
||||
this.prj = prj;
|
||||
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);
|
||||
}
|
||||
|
||||
},
|
||||
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 = datas.filter(d => d.money * 1 < 0).length == 0;
|
||||
if (!flag1) {
|
||||
this.$message.error("金额不能为负数!");
|
||||
return false;
|
||||
}
|
||||
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{
|
||||
.el-row{
|
||||
line-height: 36px;
|
||||
padding:0px 10px;
|
||||
&.row-1{
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
.el-form-item {
|
||||
margin-bottom: 2px !important;
|
||||
margin-top:2px !important;
|
||||
}
|
||||
&.is-error{
|
||||
.txt-error{
|
||||
.el-input__inner{
|
||||
border:solid 1px red;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.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 {
|
||||
border: solid 1px red;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -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: [],
|
||||
};
|
||||
},
|
||||
|
||||
|
@ -139,9 +141,12 @@ export default {
|
|||
costSafetyChange(datas) {
|
||||
let m2sum = 0;
|
||||
let m3sum = 0;
|
||||
datas.forEach(d => {
|
||||
m2sum += d.money2;
|
||||
m3sum += d.money3;
|
||||
datas.forEach(d => {
|
||||
let tmps=d.dataList12;
|
||||
tmps.forEach(it=>{
|
||||
m2sum += it.money2;
|
||||
m3sum += it.money3;
|
||||
});
|
||||
});
|
||||
this.form.safety2.money = m2sum;
|
||||
this.form.safety3.money = m3sum;
|
||||
|
@ -149,21 +154,33 @@ export default {
|
|||
handleClick(tab, event) {
|
||||
},
|
||||
checkData() {
|
||||
if (!this.$refs.costContract.checkData()) {
|
||||
this.activeName = "second";
|
||||
return false;
|
||||
}
|
||||
if (!this.$refs.costSafety.checkData()) {
|
||||
this.activeName = "third";
|
||||
return false;
|
||||
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;
|
||||
}
|
||||
if (!this.$refs.costSafety.checkData()) {
|
||||
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;
|
||||
|
@ -214,7 +231,7 @@ export default {
|
|||
|
||||
},
|
||||
loadData(init) {
|
||||
listByProjectId(this.prj.id).then((d) => {
|
||||
listByProjectId(this.prj.id).then((d) => {
|
||||
let tmps = (d.data || []).map(it => {
|
||||
it.money = it.money ? it.money / 10000.0 : 0;
|
||||
it.money2 = it.money2 ? it.money2 / 10000.0 : 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.loadData(true);
|
||||
this.loadSub(() => {
|
||||
this.loadData(true);
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue