合同档案

product
杨世强 2 years ago
parent dc58975994
commit a4a5fcecdf

5
.idea/.gitignore vendored

@ -0,0 +1,5 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/SC-MOM.iml" filepath="$PROJECT_DIR$/.idea/SC-MOM.iml" />
</modules>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -0,0 +1,561 @@
<template>
<view class="jnpf-wrap jnpf-wrap-form" v-if="!loading">
<u-form :model="dataForm" :rules="rules" ref="dataForm" :errorType="['toast']"
label-position="left" label-align="right" :label-width="labelwidth" class="jnpf-form">
<u-form-item
label="合同类型 " prop="contracttype" >
<u-input v-model="dataForm.contracttype"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="合同编码" prop="contractcode" >
<u-input v-model="dataForm.contractcode"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="合同名称" prop="contractname" >
<u-input v-model="dataForm.contractname"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="合同状态" prop="status" >
<jnpf-select v-model="dataForm.status"
placeholder="请选择" :props="statusProps" :options="statusOptions" :style='{"width":"100%"}'>
</jnpf-select>
</u-form-item>
<u-form-item
label="开标日期" prop="bidopeningdate" >
<jnpf-select v-model="dataForm.bidopeningdate"
placeholder="请选择" :props="bidopeningdateProps" :options="bidopeningdateOptions" :style='{"width":"100%"}'>
</jnpf-select>
</u-form-item>
<u-form-item
label="开始日期" prop="startdate" >
<jnpf-select v-model="dataForm.startdate"
placeholder="请选择" :props="startdateProps" :options="startdateOptions" :style='{"width":"100%"}'>
</jnpf-select>
</u-form-item>
<u-form-item
label="审核日期" prop="auditdate" >
<u-input v-model="dataForm.auditdate"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="供货完成日期" prop="completiondate" >
<u-input v-model="dataForm.completiondate"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="关闭日期" prop="closingdate" >
<u-input v-model="dataForm.closingdate"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="回款周期(日)" prop="collectioncycle" >
<u-input v-model="dataForm.collectioncycle"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="签订日期" prop="signingdate" >
<u-input v-model="dataForm.signingdate"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="截止日期" prop="enddate" >
<u-input v-model="dataForm.enddate"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="供应商/客户编" prop="code" >
<u-input v-model="dataForm.code"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="供应商/客户名" prop="name" >
<u-input v-model="dataForm.name"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="对方合同号" prop="contractno" >
<u-input v-model="dataForm.contractno"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="币种 " prop="currency" >
<u-input v-model="dataForm.currency"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="数量" prop="num" >
<u-input v-model="dataForm.num"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="金额" prop="amount" >
<u-input v-model="dataForm.amount"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="库存组织" prop="organization" >
<u-input v-model="dataForm.organization"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="备注" prop="remark" >
<u-input v-model="dataForm.remark"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="合同分类 " prop="classification" >
<u-input v-model="dataForm.classification"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="申报日期" prop="declarationdate" >
<u-input v-model="dataForm.declarationdate"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="部门名称" prop="deptname" >
<u-input v-model="dataForm.deptname"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="录入人" prop="creatorusername" >
<u-input v-model="dataForm.creatorusername"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<view prop="activephvpra">
<u-tabs :is-scroll="false" :list="activephvpraData" name="title" :current="activephvpraCurrent" @change="activephvpra"/>
<view>
<view v-if="0 == activephvpraCurrent">
<view class="jnpf-table" >
<view class="jnpf-table-item" v-for="(item,i) in dataForm.jg_contract_item0List" :key="i">
<view class="jnpf-table-item-title u-flex u-row-between">
<text class="jnpf-table-item-title-num">({{i+1}})</text>
<view class="jnpf-table-item-title-action" v-if="dataForm.jg_contract_item0List.length>1" @click="deljg_contract_item0List(i)"></view>
</view>
<u-form-item
label="物料编码" >
<u-input v-model="dataForm.jg_contract_item0List[i].materialcode"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="物料名称" >
<u-input v-model="dataForm.jg_contract_item0List[i].materialname"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="规格型号" >
<u-input v-model="dataForm.jg_contract_item0List[i].specification"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="单位 " >
<u-input v-model="dataForm.jg_contract_item0List[i].unit"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="数量" >
<u-input v-model="dataForm.jg_contract_item0List[i].num"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="单价" >
<u-input v-model="dataForm.jg_contract_item0List[i].price"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="金额" >
<u-input v-model="dataForm.jg_contract_item0List[i].amount"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="税率 " >
<u-input v-model="dataForm.jg_contract_item0List[i].rate"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="不含税单价" >
<u-input v-model="dataForm.jg_contract_item0List[i].notprice"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="不含税金额" >
<u-input v-model="dataForm.jg_contract_item0List[i].notamount"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
<u-form-item
label="备注" >
<u-input v-model="dataForm.jg_contract_item0List[i].remark"
placeholder="请输入" :style='{"width":"100%"}'>
</u-input>
</u-form-item>
</view>
<view class="jnpf-table-addBtn" @click="addjg_contract_item0List" >
<u-icon name="plus" color="#2979ff"></u-icon>
</view>
</view>
</view>
<view v-if="1 == activephvpraCurrent">
<view class="jnpf-table" >
<view class="jnpf-table-item" v-for="(item,i) in dataForm.jg_contract_item1List" :key="i">
<view class="jnpf-table-item-title u-flex u-row-between">
<text class="jnpf-table-item-title-num">({{i+1}})</text>
<view class="jnpf-table-item-title-action" v-if="dataForm.jg_contract_item1List.length>1" @click="deljg_contract_item1List(i)"></view>
</view>
<u-form-item
label="附件内容" >
<jnpf-file v-model="dataForm.jg_contract_item1List[i].enclosure"
:list="dataForm.jg_contract_item1List[i].enclosure" sizeUnit="MB" :fileSize="5" :limit="9" >
</jnpf-file>
</u-form-item>
</view>
<view class="jnpf-table-addBtn" @click="addjg_contract_item1List" >
<u-icon name="plus" color="#2979ff"></u-icon>
</view>
</view>
</view>
</view>
</view>
</u-form>
<view class="buttom-actions" v-if="jurisdictionType != 'btn_detail'" >
<u-button class="buttom-btn" @click="resetForm"></u-button>
<u-button class="buttom-btn" type="primary" @click="submitForm" :loading="btnLoading">保存</u-button>
</view>
</view>
</template>
<script>
import {
getDictionaryDataSelector,
getDataInterfaceRes
} from '@/api/common'
import request from '@/utils/request'
export default {
data(){
return{
btnLoading: false,
loading: false,
text: '提示:测试文本',
dataForm:{
c_id:"",
contracttype : '',
contractcode : '',
contractname : '',
status : "",
bidopeningdate : "",
startdate : "",
auditdate : '',
completiondate : '',
closingdate : '',
collectioncycle : '',
signingdate : '',
enddate : '',
code : '',
name : '',
contractno : '',
currency : '',
num : '',
amount : '',
organization : '',
remark : '',
classification : '',
declarationdate : '',
deptname : '',
creatorusername : '',
jg_contract_item0List:[],
jg_contract_item1List:[],
},
rules:{
contractcode: [
],
},
statusOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
statusProps:{"label":"fullName","value":"id"},
bidopeningdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
bidopeningdateProps:{"label":"fullName","value":"id"},
startdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
startdateProps:{"label":"fullName","value":"id"},
activephvpraCurrent:1,
activephvpraData:[
{
title: "物料明细"
},
{
title: "附件详情"
},
],
labelwidth:100*1.5,
menuId:'',
jurisdictionType:'',
ruleList:{
},
}
},
onLoad(option) {
this.jurisdictionType = option.jurisdictionType
this.menuId=option.menuId
this.dataForm.c_id = option.id || ''
let _title = ""
if(option.jurisdictionType =='btn_edit'){
_title = "编辑"
}
if(option.jurisdictionType =='btn_detail'){
_title = "详情"
}
if(option.jurisdictionType =='btn_add'){
_title = "新增"
}
uni.setNavigationBarTitle({
title: _title
})
this.selfInit()
this.dataAll()
this.initData()
},
onReady() {
this.$refs.dataForm.setRules(this.rules);
},
watch:{
dataForm: {
handler(val, oldVal) {
this.jg_contract_item0()
this.jg_contract_item1()
},
deep: true
}
},
methods:{
checkChildRule() {
let title = [];
for (let k in this.ruleList) {
let num = k.split("-");
let childKey = num[0];
num.forEach((model, i) => {
if (i == 1) {
let childData = this.dataForm[childKey]
childData.forEach((child, i) => {
if (child[model] instanceof Array) {
if (child[model].length == 0) {
title.push(this.ruleList[k])
}
} else {
if (!child[model]) {
title.push(this.ruleList[k])
}
}
})
}
})
}
if (title.length > 0) {
return title[0]
}
},
resetForm(){
uni.navigateBack()
},
dataAll(){
},
jg_contract_item0(){
let table = this.dataForm.jg_contract_item0List
let summaryField =[]
let summaryFieldName ={}
let data ={}
for (let i in summaryField) {
let map = {}
let val = 0
for (let j = 0; j < table.length; j++) {
let summary = table[j][summaryField[i]];
if (summary) {
let data = isNaN(summary) ? 0 : Number(summary)
val += data
}
}
map.id = summaryField[i];
map.name = summaryFieldName[summaryField[i]];
map.val = val;
data[summaryField[i]]=map;
}
return data;
},
jg_contract_item1(){
let table = this.dataForm.jg_contract_item1List
let summaryField =[]
let summaryFieldName ={}
let data ={}
for (let i in summaryField) {
let map = {}
let val = 0
for (let j = 0; j < table.length; j++) {
let summary = table[j][summaryField[i]];
if (summary) {
let data = isNaN(summary) ? 0 : Number(summary)
val += data
}
}
map.id = summaryField[i];
map.name = summaryFieldName[summaryField[i]];
map.val = val;
data[summaryField[i]]=map;
}
return data;
},
activephvpra(index) {
this.activephvpraCurrent = index;
},
initData(){
this.$nextTick(function(){
if (this.dataForm.c_id) {
this.loading = true
request({
url: '/api/example/Jg_contract/'+this.dataForm.c_id,
method: 'get',
}).then(res => {
this.dataInfo(res.data)
this.loading = false
})
}
})
},
submitForm(){
var _data = this.dataList()
this.$refs.dataForm.validate(valid => {
if (!valid) return
if (!!this.checkChildRule()) return
this.$u.toast(
this.checkChildRule()
)
this.btnLoading = true
if (this.dataForm.c_id) {
request({
url: '/api/example/Jg_contract/' + this.dataForm.c_id,
method: 'put',
data: _data,
}).then(res => {
uni.showToast({
title: res.msg,
complete: () => {
setTimeout(() => {
this.btnLoading = false
uni.$emit('refresh')
uni.navigateBack()
}, 1500)
}
})
}).catch(() => {
this.btnLoading = false
})
}else {
request({
url: '/api/example/Jg_contract/',
method: 'post',
data: _data,
}).then(res => {
uni.showToast({
title: res.msg,
complete: () => {
setTimeout(() => {
this.btnLoading = false
uni.$emit('refresh')
uni.navigateBack()
}, 1500)
}
})
}).catch(() => {
this.btnLoading = false
})
}
});
},
selfInit() {
this.addjg_contract_item0List()
this.addjg_contract_item1List()
this.$store.commit('base/UPDATE_RELATION_DATA', {})
},
addjg_contract_item0List(){
let item = {
materialcode:undefined,
materialname:undefined,
specification:undefined,
unit:undefined,
num:undefined,
price:undefined,
amount:undefined,
rate:undefined,
notprice:undefined,
notamount:undefined,
remark:undefined,
}
this.dataForm.jg_contract_item0List.push(item)
},
deljg_contract_item0List(index) {
this.dataForm.jg_contract_item0List.splice(index, 1);
},
addjg_contract_item1List(){
let item = {
enclosure:[],
}
this.dataForm.jg_contract_item1List.push(item)
},
deljg_contract_item1List(index) {
this.dataForm.jg_contract_item1List.splice(index, 1);
},
dataList(){
var _data = JSON.parse(JSON.stringify(this.dataForm));
for(let i=0;i<_data.jg_contract_item0List.length;i++){
var _list = _data.jg_contract_item0List[i];
}
for(let i=0;i<_data.jg_contract_item1List.length;i++){
var _list = _data.jg_contract_item1List[i];
_list.enclosure = JSON.stringify(_list.enclosure)
}
return _data;
},
dataInfo(dataAll){
let _dataAll =dataAll
for(let i=0;i<_dataAll.jg_contract_item0List.length;i++){
var _list = _dataAll.jg_contract_item0List[i];
}
for(let i=0;i<_dataAll.jg_contract_item1List.length;i++){
var _list = _dataAll.jg_contract_item1List[i];
_list.enclosure = JSON.parse(_list.enclosure)
}
this.dataForm=_dataAll
},
},
}
</script>

@ -0,0 +1,261 @@
<template>
<view class="dynamicModel-list-v">
<view class="head-warp com-dropdown">
<u-dropdown class="u-dropdown" ref="uDropdown" @close="closeData">
<u-dropdown-item title="排序">
<view class="dropdown-slot-content">
<view class="dropdown-slot-content-main">
<u-cell-group>
<u-cell-item @click="cellClick(item)" :arrow="false" :title="item.label"
v-for="(item, index) in sortOptions" :key="index" :title-style="{color: sortValue == item.value ? '#2979ff' : '#606266' }">
<u-icon v-if="sortValue == item.value" name="checkbox-mark" color="#2979ff" size="32"></u-icon>
</u-cell-item>
</u-cell-group>
</view>
</view>
</u-dropdown-item>
<u-dropdown-item title="筛选" >
<view class="dropdown-slot-content">
<view class="dropdown-slot-content-main search-main">
<view class="u-p-l-32 u-p-r-32 search-form">
<u-form :model="searchForm" ref="searchForm" :errorType="['toast']" label-position="left" label-width="150">
</u-form>
</view>
<view class="buttom-actions">
<u-button class="buttom-btn" @click="reset"></u-button>
<u-button class="buttom-btn" type="primary" @click="closeDropdown"></u-button>
</view>
<view class="dropdown-slot-bg" @click="$refs.uDropdown.close()"></view>
</view>
</view>
</u-dropdown-item>
</u-dropdown>
</view>
<view class="list-warp">
<mescroll-uni ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :fixed="false" :down="downOption" :up="upOption">
<view class="list">
<view class="list-box" v-for="(item, index) in list" :key="item.prop">
<u-swipe-action :index="index" @click="handleClick" @open="open" :options="options" @content-click="goDetail(item.c_id,item.flowState)">
<view class="item">
</view>
</u-swipe-action>
</view>
</view>
</mescroll-uni>
</view>
<view class="com-addBtn" @click="addPage()" >
<u-icon name="plus" size="60" color="#fff" />
</view>
</view>
</template>
<script>
import resources from '@/libs/resources.js'
import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
import {
getDictionaryDataSelector,
getDataInterfaceRes
} from '@/api/common'
import request from '@/utils/request'
export default {
mixins: [MescrollMixin],
data() {
return {
sortValue: '',
searchForm: {
},
downOption: {
use: true,
auto: false
},
upOption: {
page: {
num: 0,
size: 20,
time: null,
},
empty: {
use: true,
icon: resources.message.nodata,
tip: "暂无数据",
fixed: true,
top: "300rpx",
zIndex: 5,
},
textNoMore: '没有更多数据',
toTop: {
bottom: 250
}
},
statusOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
statusProps:{"label":"fullName","value":"id"},
bidopeningdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
bidopeningdateProps:{"label":"fullName","value":"id"},
startdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
startdateProps:{"label":"fullName","value":"id"},
list: [],
listQuery: {
sort: 'desc',
sidx: '',
keyword: '',
json: ''
},
options: [
{
text: '删除',
style: {
backgroundColor: '#dd524d'
}
},
],
sortOptions:[
],
menuId:'',
}
},
onLoad(e){
this.menuId = e.menuId
uni.$on('refresh', () => {
this.list = [];
this.mescroll.resetUpScroll();
})
this.dataAll()
},
onUnload() {
uni.$off('refresh')
},
methods:{
dataAll(){
},
closeData(e){
if(e==1){
// this.reset()
}
},
upCallback(page) {
// for(let i in this.searchForm){
// if(!this.searchForm[i]){
// delete this.searchForm[i]
// }
// }
const query = {
currentPage: page.num,
pageSize: page.size,
menuId : this.menuId,
...this.listQuery,
...this.searchForm
}
request({
url: '/api/example/Jg_contract/getList',
method: 'post',
data: query,
}).then(res => {
let _list = this.dataList(res.data);
this.mescroll.endSuccess(res.data.list.length);
if (page.num == 1) this.list = [];
const list = _list.map(o => ({
show: false,
...o
}));
this.list = this.list.concat(_list);
}).catch(() => {
this.mescroll.endErr();
})
},
handleClick(index, index1) {
const item = this.list[index]
request({
url: '/api/example/Jg_contract/' + item.c_id,
method: 'delete'
}).then(res => {
uni.showToast({
title: res.msg,
complete: () => {
this.$u.toast(res.msg)
this.list.splice(index, 1)
if (!this.list.length) this.mescroll.showEmpty()
}
})
})
},
open(index) {
this.list[index].show = true;
this.list.map((val, idx) => {
if (index != idx) this.list[idx].show = false;
})
},
search() {
if (this.isPreview == '1') return
this.searchTimer && clearTimeout(this.searchTimer)
this.searchTimer = setTimeout(() => {
this.list = [];
this.mescroll.resetUpScroll();
}, 300)
},
goDetail(id, status) {
let btnType = ''
let btnList = []
btnList.push('btn_edit')
if(btnList.includes('btn_detail')){
btnType = "btn_detail"
}
if(btnList.includes('btn_edit')){
btnType = "btn_edit"
}
if(!btnType) return
this.jumPage(id, status,btnType)
},
addPage() {
this.jumPage()
},
jumPage(id, status,btnType){
if (!id && !status) btnType = 'btn_add'
uni.navigateTo({
url: id?'./form?menuId='+this.menuId+'&jurisdictionType='+btnType+'&id=' + id:'./form?menuId='+this.menuId+'&jurisdictionType='+btnType
})
},
cellClick(item) {
if (this.sortValue === item.value) return
this.listQuery.sort = item.sort
this.listQuery.sidx = item.sidx
this.sortValue = item.value
this.$refs.uDropdown.close();
this.$nextTick(() => {
this.list = [];
this.mescroll.resetUpScroll();
})
},
reset() {
this.$refs.searchForm.resetFields()
},
closeDropdown() {
this.$refs.uDropdown.close();
this.$nextTick(() => {
this.list = [];
this.mescroll.resetUpScroll();
})
},
dataList(data){
let _list =[]
for(let i=0;i<data.list.length;i++){
let _data = data.list[i]
_list.push(_data)
}
return _list;
},
},
}
</script>
<style lang="scss">
page {
background-color: #f0f2f6;
height: 100%;
/* #ifdef MP-ALIPAY */
position: absolute;
top: 0;
left: 0;
width: 100%;
/* #endif */
}
</style>

@ -0,0 +1,346 @@
<template>
<transition name="el-zoom-in-center">
<div class="JNPF-preview-main">
<div class="JNPF-common-page-header">
<el-page-header @back="goBack"
content="详情"/>
<div class="options">
<el-button @click="goBack"> </el-button>
</div>
</div>
<el-row :gutter="15" class=" main" :style="{margin: '0 auto',width: '100%'}">
<el-form ref="elForm" :model="dataForm" size="small" label-width="100px" label-position="right" >
<template v-if="!loading">
<el-col :span="8" >
<el-form-item label="合同类型 "
prop="contracttype" >
<p>{{dataForm.contracttype}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="合同编码"
prop="contractcode" >
<p>{{dataForm.contractcode}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="合同名称"
prop="contractname" >
<p>{{dataForm.contractname}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="合同状态"
prop="status" >
<p>{{ dataForm.status | dynamicText(statusOptions) }} </p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="开标日期"
prop="bidopeningdate" >
<p>{{ dataForm.bidopeningdate | dynamicText(bidopeningdateOptions) }} </p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="开始日期"
prop="startdate" >
<p>{{ dataForm.startdate | dynamicText(startdateOptions) }} </p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="审核日期"
prop="auditdate" >
<p>{{dataForm.auditdate}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="供货完成日期"
prop="completiondate" >
<p>{{dataForm.completiondate}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="关闭日期"
prop="closingdate" >
<p>{{dataForm.closingdate}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="回款周期(日)"
prop="collectioncycle" >
<p>{{dataForm.collectioncycle}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="签订日期"
prop="signingdate" >
<p>{{dataForm.signingdate}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="截止日期"
prop="enddate" >
<p>{{dataForm.enddate}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="供应商/客户编"
prop="code" >
<p>{{dataForm.code}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="供应商/客户名"
prop="name" >
<p>{{dataForm.name}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="对方合同号"
prop="contractno" >
<p>{{dataForm.contractno}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="币种 "
prop="currency" >
<p>{{dataForm.currency}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="数量"
prop="num" >
<p>{{dataForm.num}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="金额"
prop="amount" >
<p>{{dataForm.amount}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="库存组织"
prop="organization" >
<p>{{dataForm.organization}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="备注"
prop="remark" >
<p>{{dataForm.remark}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="合同分类 "
prop="classification" >
<p>{{dataForm.classification}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="申报日期"
prop="declarationdate" >
<p>{{dataForm.declarationdate}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="部门名称"
prop="deptname" >
<p>{{dataForm.deptname}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="录入人"
prop="creatorusername" >
<p>{{dataForm.creatorusername}}</p>
</el-form-item>
</el-col>
<el-col :span="24">
<el-tabs v-model="activejlljvq" tab-position="top" class="mb-20">
<el-tab-pane label="物料明细">
<el-col :span="24" >
<el-form-item label-width="0">
<div class="JNPF-common-title">
<h2></h2>
</div>
<el-table :data="dataForm.jg_contract_item0List" size='mini' >
<el-table-column type="index" width="50" label="序号" align="center" />
<el-table-column prop="materialcode" label="物料编码">
<template slot-scope="scope">
<p>{{scope.row.materialcode}}</p>
</template>
</el-table-column>
<el-table-column prop="materialname" label="物料名称">
<template slot-scope="scope">
<p>{{scope.row.materialname}}</p>
</template>
</el-table-column>
<el-table-column prop="specification" label="规格型号">
<template slot-scope="scope">
<p>{{scope.row.specification}}</p>
</template>
</el-table-column>
<el-table-column prop="unit" label="单位 ">
<template slot-scope="scope">
<p>{{scope.row.unit}}</p>
</template>
</el-table-column>
<el-table-column prop="num" label="数量">
<template slot-scope="scope">
<p>{{scope.row.num}}</p>
</template>
</el-table-column>
<el-table-column prop="price" label="单价">
<template slot-scope="scope">
<p>{{scope.row.price}}</p>
</template>
</el-table-column>
<el-table-column prop="amount" label="金额">
<template slot-scope="scope">
<p>{{scope.row.amount}}</p>
</template>
</el-table-column>
<el-table-column prop="rate" label="税率 ">
<template slot-scope="scope">
<p>{{scope.row.rate}}</p>
</template>
</el-table-column>
<el-table-column prop="notprice" label="不含税单价">
<template slot-scope="scope">
<p>{{scope.row.notprice}}</p>
</template>
</el-table-column>
<el-table-column prop="notamount" label="不含税金额">
<template slot-scope="scope">
<p>{{scope.row.notamount}}</p>
</template>
</el-table-column>
<el-table-column prop="remark" label="备注">
<template slot-scope="scope">
<p>{{scope.row.remark}}</p>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-col>
</el-tab-pane >
<el-tab-pane label="附件详情">
<el-col :span="24" >
<el-form-item label-width="0">
<div class="JNPF-common-title">
<h2></h2>
</div>
<el-table :data="dataForm.jg_contract_item1List" size='mini' >
<el-table-column type="index" width="50" label="序号" align="center" />
<el-table-column prop="enclosure" label="附件内容">
<template slot-scope="scope">
<JNPF-UploadFz v-model="scope.row.enclosure"
disabled
detailed :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" >
</JNPF-UploadFz>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-col>
</el-tab-pane >
</el-tabs>
</el-col>
</template>
</el-form>
</el-row>
</div>
</transition>
</template>
<script>
import request from '@/utils/request'
import PrintBrowse from '@/components/PrintBrowse'
import jnpf from '@/utils/jnpf'
export default {
components: {PrintBrowse},
props: [],
data() {
return {
visible: false,
loading: false,
printBrowseVisible: false,
printId: '',
dataForm: {
c_id :'',
contracttype : '',
contractcode : '',
contractname : '',
status : "",
bidopeningdate : "",
startdate : "",
auditdate : '',
completiondate : '',
closingdate : '',
collectioncycle : '',
signingdate : '',
enddate : '',
code : '',
name : '',
contractno : '',
currency : '',
num : '',
amount : '',
organization : '',
remark : '',
classification : '',
declarationdate : '',
deptname : '',
creatorusername : '',
jg_contract_item0List:[],
jg_contract_item1List:[],
},
activejlljvq:'1',
statusOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
bidopeningdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
startdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
}
},
computed: {},
watch: {},
created() {
},
mounted() {},
methods: {
dataInfo(dataAll){
let _dataAll =dataAll
for(let i=0;i<_dataAll.jg_contract_item0List.length;i++){
var _list = _dataAll.jg_contract_item0List[i];
}
for(let i=0;i<_dataAll.jg_contract_item1List.length;i++){
var _list = _dataAll.jg_contract_item1List[i];
_list.enclosure = _list.enclosure? JSON.parse(_list.enclosure):[]
}
this.dataForm = _dataAll
},
goBack() {
this.$emit('refresh')
},
init(id) {
this.dataForm.c_id = id || 0;
this.visible = true;
this.$nextTick(() => {
if(this.dataForm.c_id){
this.loading = true
request({
url: '/api/example/Jg_contract/detail/'+this.dataForm.c_id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)
this.loading = false
})
}
})
},
},
}
</script>

@ -0,0 +1,68 @@
<template>
<el-dialog title="导出数据" :close-on-click-modal="false" :visible.sync="visible"
class="JNPF-dialog JNPF-dialog_center" lock-scroll width="600px">
<el-form label-position="top" label-width="80px">
<el-form-item label="数据选择">
<el-radio-group v-model="type">
<el-radio :label="0">当前页面数据</el-radio>
<el-radio :label="1">全部页面数据</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="导出字段">
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll"
@change="handleCheckAllChange">全选</el-checkbox>
<el-checkbox-group v-model="columns" @change="handleCheckedChange">
<el-checkbox v-for="item in columnList" :label="item.prop" :key="item.prop">
{{item.label}}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="visible=false"> </el-button>
<el-button type="primary" @click="downLoad"> </el-button>
</span>
</el-dialog>
</template>
<script>
export default {
data() {
return {
visible: false,
btnLoading: false,
type: 0,
columns: [],
checkAll: true,
isIndeterminate: false,
columnList: []
}
},
methods: {
init(columnList) {
this.visible = true
this.checkAll = true
this.isIndeterminate = false
this.columnList = columnList
this.columns = columnList.map(o => o.prop)
},
handleCheckAllChange(val) {
this.columns = val ? this.columnList.map(o => o.prop) : [];
this.isIndeterminate = false;
},
handleCheckedChange(value) {
let checkedCount = value.length;
this.checkAll = checkedCount === this.columnList.length;
this.isIndeterminate = checkedCount > 0 && checkedCount < this.columnList.length;
},
downLoad() {
this.$emit('download', { dataType: this.type, selectKey: this.columns.join(',') })
}
}
}
</script>
<style lang="scss" scoped>
>>> .el-dialog__body {
padding: 20px !important;
}
</style>

@ -0,0 +1,574 @@
<template>
<transition name="el-zoom-in-center">
<div class="JNPF-preview-main">
<div class="JNPF-common-page-header">
<el-page-header @back="goBack"
:content="!dataForm.c_id ? '新建' : isDetail ? '详情':'编辑'"/>
<div class="options">
<el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail"> </el-button>
<el-button @click="goBack"> </el-button>
</div>
</div>
<el-row :gutter="15" class=" main" :style="{margin: '0 auto',width: '100%'}">
<el-form ref="elForm" :model="dataForm" :rules="rules" size="small" label-width="100px" label-position="right" >
<template v-if="!loading">
<el-col :span="8" >
<el-form-item label="合同类型 "
prop="contracttype" >
<el-input v-model="dataForm.contracttype"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="合同编码"
prop="contractcode" >
<el-input v-model="dataForm.contractcode"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="合同名称"
prop="contractname" >
<el-input v-model="dataForm.contractname"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="合同状态"
prop="status" >
<el-select v-model="dataForm.status"
placeholder="请选择" clearable :style='{"width":"100%"}'>
<el-option v-for="(item, index) in statusOptions" :key="index" :label="item.fullName" :value="item.id" :disabled="item.disabled" ></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="开标日期"
prop="bidopeningdate" >
<el-select v-model="dataForm.bidopeningdate"
placeholder="请选择" clearable :style='{"width":"100%"}'>
<el-option v-for="(item, index) in bidopeningdateOptions" :key="index" :label="item.fullName" :value="item.id" :disabled="item.disabled" ></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="开始日期"
prop="startdate" >
<el-select v-model="dataForm.startdate"
placeholder="请选择" clearable :style='{"width":"100%"}'>
<el-option v-for="(item, index) in startdateOptions" :key="index" :label="item.fullName" :value="item.id" :disabled="item.disabled" ></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="审核日期"
prop="auditdate" >
<el-input v-model="dataForm.auditdate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="供货完成日期"
prop="completiondate" >
<el-input v-model="dataForm.completiondate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="关闭日期"
prop="closingdate" >
<el-input v-model="dataForm.closingdate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="回款周期(日)"
prop="collectioncycle" >
<el-input v-model="dataForm.collectioncycle"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="签订日期"
prop="signingdate" >
<el-input v-model="dataForm.signingdate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="截止日期"
prop="enddate" >
<el-input v-model="dataForm.enddate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="供应商/客户编"
prop="code" >
<el-input v-model="dataForm.code"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="供应商/客户名"
prop="name" >
<el-input v-model="dataForm.name"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="对方合同号"
prop="contractno" >
<el-input v-model="dataForm.contractno"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="币种 "
prop="currency" >
<el-input v-model="dataForm.currency"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="数量"
prop="num" >
<el-input v-model="dataForm.num"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="金额"
prop="amount" >
<el-input v-model="dataForm.amount"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="库存组织"
prop="organization" >
<el-input v-model="dataForm.organization"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="备注"
prop="remark" >
<el-input v-model="dataForm.remark"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="合同分类 "
prop="classification" >
<el-input v-model="dataForm.classification"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="申报日期"
prop="declarationdate" >
<el-input v-model="dataForm.declarationdate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="部门名称"
prop="deptname" >
<el-input v-model="dataForm.deptname"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="录入人"
prop="creatorusername" >
<el-input v-model="dataForm.creatorusername"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-tabs v-model="activejlljvq" tab-position="top" class="mb-20">
<el-tab-pane label="物料明细">
<el-col :span="24" >
<el-form-item label-width="0">
<div class="JNPF-common-title">
<h2></h2>
</div>
<el-table :data="dataForm.jg_contract_item0List" size='mini' >
<el-table-column type="index" width="50" label="序号" align="center" />
<el-table-column prop="materialcode" label="物料编码">
<template slot-scope="scope">
<el-input v-model="scope.row.materialcode"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="materialname" label="物料名称">
<template slot-scope="scope">
<el-input v-model="scope.row.materialname"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="specification" label="规格型号">
<template slot-scope="scope">
<el-input v-model="scope.row.specification"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="unit" label="单位 ">
<template slot-scope="scope">
<el-input v-model="scope.row.unit"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="num" label="数量">
<template slot-scope="scope">
<el-input v-model="scope.row.num"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="price" label="单价">
<template slot-scope="scope">
<el-input v-model="scope.row.price"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="amount" label="金额">
<template slot-scope="scope">
<el-input v-model="scope.row.amount"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="rate" label="税率 ">
<template slot-scope="scope">
<el-input v-model="scope.row.rate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="notprice" label="不含税单价">
<template slot-scope="scope">
<el-input v-model="scope.row.notprice"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="notamount" label="不含税金额">
<template slot-scope="scope">
<el-input v-model="scope.row.notamount"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="remark" label="备注">
<template slot-scope="scope">
<el-input v-model="scope.row.remark"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="50" >
<template slot-scope="scope">
<el-button size="mini" type="text" class="JNPF-table-delBtn" @click="deljg_contract_item0List(scope.$index)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="table-actions" @click="addjg_contract_item0List()">
<el-button type="text" icon="el-icon-plus">添加</el-button>
</div>
</el-form-item>
</el-col>
</el-tab-pane >
<el-tab-pane label="附件详情">
<el-col :span="24" >
<el-form-item label-width="0">
<div class="JNPF-common-title">
<h2></h2>
</div>
<el-table :data="dataForm.jg_contract_item1List" size='mini' >
<el-table-column type="index" width="50" label="序号" align="center" />
<el-table-column prop="enclosure" label="附件内容">
<template slot-scope="scope">
<JNPF-UploadFz v-model="scope.row.enclosure"
:fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" >
</JNPF-UploadFz>
</template>
</el-table-column>
<el-table-column label="操作" width="50" >
<template slot-scope="scope">
<el-button size="mini" type="text" class="JNPF-table-delBtn" @click="deljg_contract_item1List(scope.$index)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="table-actions" @click="addjg_contract_item1List()">
<el-button type="text" icon="el-icon-plus">添加</el-button>
</div>
</el-form-item>
</el-col>
</el-tab-pane >
</el-tabs>
</el-col>
</template>
</el-form>
</el-row>
</div>
</transition>
</template>
<script>
import request from '@/utils/request'
import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
export default {
components: {},
props: [],
data() {
return {
visible: false,
loading: false,
isDetail: false,
dataForm: {
contracttype : '',
contractcode : '',
contractname : '',
status : "",
bidopeningdate : "",
startdate : "",
auditdate : '',
completiondate : '',
closingdate : '',
collectioncycle : '',
signingdate : '',
enddate : '',
code : '',
name : '',
contractno : '',
currency : '',
num : '',
amount : '',
organization : '',
remark : '',
classification : '',
declarationdate : '',
deptname : '',
creatorusername : '',
jg_contract_item0List:[],
jg_contract_item1List:[],
},
activejlljvq:'1',
rules:
{
contractcode: [
],
},
statusOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
bidopeningdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
startdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
}
},
computed: {},
watch: {},
created() {
},
mounted() {},
methods: {
jg_contract_item0Exist() {
let isOk = true;
for(let i=0;i<this.dataForm.jg_contract_item0List.length;i++){
const e = this.dataForm.jg_contract_item0List[i];
}
return isOk;
},
jg_contract_item1Exist() {
let isOk = true;
for(let i=0;i<this.dataForm.jg_contract_item1List.length;i++){
const e = this.dataForm.jg_contract_item1List[i];
}
return isOk;
},
goBack() {
this.$emit('refresh')
},
clearData(data){
for (let key in data) {
if (data[key] instanceof Array) {
data[key] = [];
} else if (data[key] instanceof Object) {
this.clearData(data[key]);
} else {
data[key] = "";
}
}
},
init(id, isDetail) {
this.dataForm.c_id = id || 0;
this.visible = true;
this.isDetail = isDetail || false;
this.$nextTick(() => {
this.$refs['elForm'].resetFields();
if(this.dataForm.c_id){
this.loading = true
request({
url: '/api/example/Jg_contract/'+this.dataForm.c_id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)
this.loading = false
});
}else{
this.clearData(this.dataForm)
}
});
this.$store.commit('generator/UPDATE_RELATION_DATA', {})
},
//
dataFormSubmit() {
this.$refs['elForm'].validate((valid) => {
if (valid) {
if (!this.jg_contract_item0Exist()) return
if (!this.jg_contract_item1Exist()) return
this.request()
}
})
},
request() {
var _data =this.dataList()
if (!this.dataForm.c_id) {
request({
url: '/api/example/Jg_contract',
method: 'post',
data: _data
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
this.visible = false
this.$emit('refresh', true)
}
})
})
}else{
request({
url: '/api/example/Jg_contract/'+this.dataForm.c_id,
method: 'PUT',
data: _data
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
this.visible = false
this.$emit('refresh', true)
}
})
})
}
},
addjg_contract_item0List(){
let item = {
materialcode:undefined,
materialname:undefined,
specification:undefined,
unit:undefined,
num:undefined,
price:undefined,
amount:undefined,
rate:undefined,
notprice:undefined,
notamount:undefined,
remark:undefined,
}
this.dataForm.jg_contract_item0List.push(item)
},
deljg_contract_item0List(index) {
this.dataForm.jg_contract_item0List.splice(index, 1);
},
addjg_contract_item1List(){
let item = {
enclosure:undefined,
}
this.dataForm.jg_contract_item1List.push(item)
},
deljg_contract_item1List(index) {
this.dataForm.jg_contract_item1List.splice(index, 1);
},
dataList(){
var _data = JSON.parse(JSON.stringify(this.dataForm));
for(let i=0;i<_data.jg_contract_item0List.length;i++){
var _list = _data.jg_contract_item0List[i];
}
for(let i=0;i<_data.jg_contract_item1List.length;i++){
var _list = _data.jg_contract_item1List[i];
_list.enclosure = JSON.stringify(_list.enclosure)
}
return _data;
},
dataInfo(dataAll){
let _dataAll =dataAll
for(let i=0;i<_dataAll.jg_contract_item0List.length;i++){
var _list = _dataAll.jg_contract_item0List[i];
}
for(let i=0;i<_dataAll.jg_contract_item1List.length;i++){
var _list = _dataAll.jg_contract_item1List[i];
_list.enclosure = JSON.parse(_list.enclosure)
}
this.dataForm = _dataAll
},
},
}
</script>

@ -0,0 +1,281 @@
<template>
<div class="JNPF-common-layout">
<div class="JNPF-common-layout-center">
<el-row class="JNPF-common-search-box" :gutter="16">
<el-form @submit.native.prevent>
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div class="JNPF-common-layout-main JNPF-flex-main">
<div class="JNPF-common-head">
<div>
<el-button type="primary" icon="el-icon-plus" @click="addOrUpdateHandle()">
</el-button>
<el-button type="text" icon="el-icon-download" @click="exportData()" >导出
</el-button>
<el-button type="text" icon="el-icon-delete" @click="handleBatchRemoveDel()" >批量删除
</el-button>
</div>
<div class="JNPF-common-head-right">
<el-tooltip effect="dark" content="刷新" placement="top">
<el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon" :underline="false"
@click="reset()"/>
</el-tooltip>
<screenfull isContainer/>
</div>
</div>
<JNPF-table v-loading="listLoading" :data="list" @sort-change='sortChange' has-c @selection-change="handleSelectionChange">
<el-table-column prop="contractcode" label="合同编码" width="0" align="left"
/>
<el-table-column prop="contractname" label="合同名称" width="0" align="left"
/>
<el-table-column prop="contractno" label="对方合同号" width="0" align="left"
/>
<el-table-column prop="contracttype" label="合同类型 " width="0" align="left"
/>
<el-table-column prop="classification" label="合同分类 " width="0" align="left"
/>
<el-table-column prop="declarationdate" label="申报日期" width="0" align="left"
/>
<el-table-column prop="name" label="供应商/客户名" width="0" align="left"
/>
<el-table-column prop="num" label="数量" width="0" align="left"
/>
<el-table-column prop="amount" label="金额" width="0" align="left"
/>
<el-table-column prop="deptname" label="部门名称" width="0" align="left"
/>
<el-table-column prop="remark" label="备注" width="0" align="left"
/>
<el-table-column prop="creatorusername" label="录入人" width="0" align="left"
/>
<el-table-column label="合同状态" width="0" prop="status" algin="left"
>
<template slot-scope="scope">
{{ scope.row.status | dynamicText(statusOptions) }}
</template>
</el-table-column>
<el-table-column label="操作" fixed="right"
width="150" >
<template slot-scope="scope">
<el-button type="text"
@click="addOrUpdateHandle(scope.row.c_id)" >编辑
</el-button>
<el-button type="text" class="JNPF-table-delBtn" @click="handleDel(scope.row.c_id)">
</el-button>
<el-button type="text"
@click="goDetail(scope.row.c_id)">详情
</el-button>
</template>
</el-table-column>
</JNPF-table>
<pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize" @pagination="initData"/>
</div>
</div>
<JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh"/>
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download"/>
<Detail v-if="detailVisible" ref="Detail" @refresh="detailVisible=false"/>
</div>
</template>
<script>
import request from '@/utils/request'
import {getDictionaryDataSelector} from '@/api/systemData/dictionary'
import JNPFForm from './Form'
import ExportBox from './ExportBox'
import {getDataInterfaceRes} from '@/api/systemData/dataInterface'
import Detail from './Detail'
export default {
components: {JNPFForm, ExportBox,Detail},
data() {
return {
detailVisible: false,
query: {
},
treeProps: {
children: 'children',
label: 'fullName',
value: 'id'
},
list: [],
listLoading: true,
multipleSelection: [], total: 0,
listQuery: {
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "",
},
formVisible: false,
exportBoxVisible: false,
columnList: [
{prop: 'contractcode', label: '合同编码'},
{prop: 'contractname', label: '合同名称'},
{prop: 'contractno', label: '对方合同号'},
{prop: 'contracttype', label: '合同类型 '},
{prop: 'classification', label: '合同分类 '},
{prop: 'declarationdate', label: '申报日期'},
{prop: 'name', label: '供应商/客户名'},
{prop: 'num', label: '数量'},
{prop: 'amount', label: '金额'},
{prop: 'deptname', label: '部门名称'},
{prop: 'remark', label: '备注'},
{prop: 'creatorusername', label: '录入人'},
{prop: 'status', label: '合同状态'},
],
statusOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
statusProps:{"label":"fullName","value":"id"},
bidopeningdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
bidopeningdateProps:{"label":"fullName","value":"id"},
startdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
startdateProps:{"label":"fullName","value":"id"},
}
},
computed: {
menuId() {
return this.$route.meta.modelId || ''
}
},
created() {
this.initData()
},
methods: {
goDetail(id){
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(id)
})
},
sortChange({column, prop, order}) {
this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
this.listQuery.sidx = !order ? '' : prop
this.initData()
},
initData() {
this.listLoading = true;
let _query = {
...this.listQuery,
...this.query,
menuId:this.menuId
};
request({
url: `/api/example/Jg_contract/getList`,
method: 'post',
data: _query
}).then(res => {
var _list =[];
for(let i=0;i<res.data.list.length;i++){
let _data = res.data.list[i];
_list.push(_data)
}
this.list = _list
this.total = res.data.pagination.total
this.listLoading = false
})
},
handleDel(id) {
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/example/Jg_contract/${id}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
}).catch(() => {
});
},
handleSelectionChange(val) {
const res = val.map(item => item.c_id)
this.multipleSelection = res
},
handleBatchRemoveDel() {
if (!this.multipleSelection.length) {
this.$message({
type: 'error',
message: '请选择一条数据',
duration: 1500,
})
return
}
const ids = this.multipleSelection.join()
this.$confirm('您确定要删除这些数据吗, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/example/Jg_contract/batchRemove/${ids}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
}).catch(() => {
})
},
addOrUpdateHandle(id, isDetail) {
this.formVisible = true
this.$nextTick(() => {
this.$refs.JNPFForm.init(id, isDetail)
})
},
exportData() {
this.exportBoxVisible = true
this.$nextTick(() => {
this.$refs.ExportBox.init(this.columnList)
})
},
download(data) {
let query = {...data, ...this.listQuery, ...this.query,menuId:this.menuId}
request({
url: `/api/example/Jg_contract/Actions/Export`,
method: 'GET',
data: query
}).then(res => {
if (!res.data.url) return
this.jnpf.downloadFile(res.data.url)
this.$refs.ExportBox.visible = false
this.exportBoxVisible = false
})
},
search() {
this.listQuery = {
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "",
}
this.initData()
},
refresh(isrRefresh) {
this.formVisible = false
if (isrRefresh) this.reset()
},
reset() {
for (let key in this.query) {
this.query[key] = undefined
}
this.search()
}
}
}
</script>

@ -0,0 +1,486 @@
package jnpf.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import jnpf.base.ActionResult;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import jnpf.base.UserInfo;
import jnpf.base.vo.DownloadVO;
import jnpf.config.ConfigValueUtil;
import jnpf.exception.DataException;
import org.springframework.transaction.annotation.Transactional;
import jnpf.base.entity.ProvinceEntity;
import jnpf.model.jg_contract.*;
import jnpf.model.jg_contract.Jg_contractPagination;
import jnpf.entity.*;
import jnpf.entity.Jg_contract_item0Entity;
import jnpf.entity.Jg_contract_item1Entity;
import jnpf.util.*;
import jnpf.base.util.*;
import jnpf.base.vo.ListVO;
import jnpf.util.context.SpringContext;
import cn.hutool.core.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
import lombok.Cleanup;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import jnpf.entity.Jg_contractEntity;
import jnpf.service.Jg_contractService;
import jnpf.entity.Jg_contract_item0Entity;
import jnpf.service.Jg_contract_item0Service;
import jnpf.entity.Jg_contract_item1Entity;
import jnpf.service.Jg_contract_item1Service;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import jnpf.util.GeneraterSwapUtil;
import java.util.*;
import jnpf.util.file.UploadUtil;
import jnpf.util.enums.FileTypeEnum;
/**
*
* jg_contract
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-01-04
*/
@Slf4j
@RestController
@Api(tags = "合同档案" , value = "example")
@RequestMapping("/api/example/Jg_contract")
public class Jg_contractController {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@Autowired
private ConfigValueUtil configValueUtil;
@Autowired
private UserProvider userProvider;
@Autowired
private Jg_contractService jg_contractService;
@Autowired
private Jg_contract_item0Service jg_contract_item0Service;
@Autowired
private Jg_contract_item1Service jg_contract_item1Service;
/**
*
*
* @param jg_contractPagination
* @return
*/
@PostMapping("/getList")
public ActionResult list(@RequestBody Jg_contractPagination jg_contractPagination)throws IOException{
List<Jg_contractEntity> list= jg_contractService.getList(jg_contractPagination);
//处理id字段转名称若无需转或者为空可删除
for(Jg_contractEntity entity:list){
}
List<Jg_contractListVO> listVO=JsonUtil.getJsonToList(list,Jg_contractListVO.class);
for(Jg_contractListVO jg_contractVO:listVO){
}
PageListVO vo=new PageListVO();
vo.setList(listVO);
PaginationVO page=JsonUtil.getJsonToBean(jg_contractPagination,PaginationVO.class);
vo.setPagination(page);
return ActionResult.success(vo);
}
/**
*
*
* @param jg_contractCrForm
* @return
*/
@PostMapping
@Transactional
public ActionResult create(@RequestBody @Valid Jg_contractCrForm jg_contractCrForm) throws DataException {
String mainId =RandomUtil.uuId();
UserInfo userInfo=userProvider.get();
Jg_contractEntity entity = JsonUtil.getJsonToBean(jg_contractCrForm, Jg_contractEntity.class);
entity.setC_id(mainId);
jg_contractService.save(entity);
List<Jg_contract_item0Entity> Jg_contract_item0List = JsonUtil.getJsonToList(jg_contractCrForm.getJg_contract_item0List(),Jg_contract_item0Entity.class);
for(Jg_contract_item0Entity entitys : Jg_contract_item0List){
entitys.setC_id(RandomUtil.uuId());
entitys.setIId(entity.getCId());
jg_contract_item0Service.save(entitys);
}
List<Jg_contract_item1Entity> Jg_contract_item1List = JsonUtil.getJsonToList(jg_contractCrForm.getJg_contract_item1List(),Jg_contract_item1Entity.class);
for(Jg_contract_item1Entity entitys : Jg_contract_item1List){
entitys.setV_id(RandomUtil.uuId());
entitys.setCId(entity.getCId());
jg_contract_item1Service.save(entitys);
}
return ActionResult.success("创建成功");
}
/**
*
*
* @return
*/
@ApiOperation("模板下载")
@GetMapping("/templateDownload")
public ActionResult<DownloadVO> TemplateDownload(){
UserInfo userInfo=userProvider.get();
DownloadVO vo=DownloadVO.builder().build();
try{
vo.setName("职员信息.xlsx");
vo.setUrl(UploaderUtil.uploaderFile("/api/Common/DownloadModel?encryption=" ,userInfo.getId()+"#"+"职员信息.xlsx"+"#"+"Temporary"));
}catch(Exception e){
log.error("信息导出Excel错误:{}" ,e.getMessage());
}
return ActionResult.success(vo);
}
/**
* Excel
*
* @return
*/
@ApiOperation("导出Excel")
@GetMapping("/Actions/Export")
public ActionResult Export(Jg_contractPaginationExportModel jg_contractPaginationExportModel) throws IOException {
if (StringUtil.isEmpty(jg_contractPaginationExportModel.getSelectKey())){
return ActionResult.fail("请选择导出字段");
}
Jg_contractPagination jg_contractPagination=JsonUtil.getJsonToBean(jg_contractPaginationExportModel, Jg_contractPagination.class);
List<Jg_contractEntity> list= jg_contractService.getTypeList(jg_contractPagination,jg_contractPaginationExportModel.getDataType());
//处理id字段转名称若无需转或者为空可删除
for(Jg_contractEntity entity:list){
}
List<Jg_contractListVO> listVO=JsonUtil.getJsonToList(list,Jg_contractListVO.class);
for(Jg_contractListVO jg_contractVO:listVO){
}
//转换为map输出
List<Map<String, Object>>mapList=JsonUtil.getJsonToListMap(JsonUtil.getObjectToStringDateFormat(listVO,"yyyy-MM-dd HH:mm:ss"));
String[]keys=!StringUtil.isEmpty(jg_contractPaginationExportModel.getSelectKey())?jg_contractPaginationExportModel.getSelectKey().split(","):new String[0];
UserInfo userInfo=userProvider.get();
DownloadVO vo=this.creatModelExcel(configValueUtil.getTemporaryFilePath(),mapList,keys,userInfo);
return ActionResult.success(vo);
}
//导出表格
public DownloadVO creatModelExcel(String path,List<Map<String, Object>>list,String[]keys,UserInfo userInfo){
DownloadVO vo=DownloadVO.builder().build();
List<ExcelExportEntity> entitys=new ArrayList<>();
if(keys.length>0){
for(String key:keys){
switch(key){
case "contracttype" :
entitys.add(new ExcelExportEntity("合同类型 " ,"contracttype"));
break;
case "contractcode" :
entitys.add(new ExcelExportEntity("合同编码" ,"contractcode"));
break;
case "contractname" :
entitys.add(new ExcelExportEntity("合同名称" ,"contractname"));
break;
case "status" :
entitys.add(new ExcelExportEntity("合同状态" ,"status"));
break;
case "bidopeningdate" :
entitys.add(new ExcelExportEntity("开标日期" ,"bidopeningdate"));
break;
case "startdate" :
entitys.add(new ExcelExportEntity("开始日期" ,"startdate"));
break;
case "auditdate" :
entitys.add(new ExcelExportEntity("审核日期" ,"auditdate"));
break;
case "completiondate" :
entitys.add(new ExcelExportEntity("供货完成日期" ,"completiondate"));
break;
case "closingdate" :
entitys.add(new ExcelExportEntity("关闭日期" ,"closingdate"));
break;
case "collectioncycle" :
entitys.add(new ExcelExportEntity("回款周期(日)" ,"collectioncycle"));
break;
case "signingdate" :
entitys.add(new ExcelExportEntity("签订日期" ,"signingdate"));
break;
case "enddate" :
entitys.add(new ExcelExportEntity("截止日期" ,"enddate"));
break;
case "code" :
entitys.add(new ExcelExportEntity("供应商/客户编" ,"code"));
break;
case "name" :
entitys.add(new ExcelExportEntity("供应商/客户名" ,"name"));
break;
case "contractno" :
entitys.add(new ExcelExportEntity("对方合同号" ,"contractno"));
break;
case "currency" :
entitys.add(new ExcelExportEntity("币种 " ,"currency"));
break;
case "num" :
entitys.add(new ExcelExportEntity("数量" ,"num"));
break;
case "amount" :
entitys.add(new ExcelExportEntity("金额" ,"amount"));
break;
case "organization" :
entitys.add(new ExcelExportEntity("库存组织" ,"organization"));
break;
case "remark" :
entitys.add(new ExcelExportEntity("备注" ,"remark"));
break;
case "classification" :
entitys.add(new ExcelExportEntity("合同分类 " ,"classification"));
break;
case "declarationdate" :
entitys.add(new ExcelExportEntity("申报日期" ,"declarationdate"));
break;
case "deptname" :
entitys.add(new ExcelExportEntity("部门名称" ,"deptname"));
break;
case "creatorusername" :
entitys.add(new ExcelExportEntity("录入人" ,"creatorusername"));
break;
default:
break;
}
}
}
ExportParams exportParams = new ExportParams(null, "表单信息");
exportParams.setType(ExcelType.XSSF);
try{
@Cleanup Workbook workbook = new HSSFWorkbook();
if (entitys.size()>0){
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, list);
}
String name = "表单信息" + DateUtil.dateNow("yyyyMMdd") + "_" + RandomUtil.uuId() + ".xlsx";
String fileName = configValueUtil.getTemporaryFilePath() + name;
@Cleanup FileOutputStream output = new FileOutputStream(XSSEscape.escapePath(fileName));
workbook.write(output);
//上传文件
UploadUtil.uploadFile(configValueUtil.getFileType(), fileName, FileTypeEnum.TEMPORARY, name);
vo.setName(name);
vo.setUrl(UploaderUtil.uploaderFile(userInfo.getId() + "#" + name + "#" + "Temporary"));
} catch (Exception e) {
log.error("信息导出Excel错误:{}", e.getMessage());
e.printStackTrace();
}
return vo;
}
/**
*
*
* @param ids
* @return
*/
@DeleteMapping("/batchRemove/{ids}")
@Transactional
public ActionResult batchRemove(@PathVariable("ids") String ids){
String[] idList = ids.split(",");
int i =0;
for (String allId : idList){
this.delete(allId);
i++;
}
if (i == 0 ){
return ActionResult.fail("删除失败");
}
return ActionResult.success("删除成功");
}
/**
*
*
* @param id
* @return
*/
@GetMapping("/{id}")
public ActionResult<Jg_contractInfoVO> info(@PathVariable("id") String id){
Jg_contractEntity entity= jg_contractService.getInfo(id);
Jg_contractInfoVO vo=JsonUtil.getJsonToBean(entity, Jg_contractInfoVO.class);
//子表
List<Jg_contract_item0Entity> Jg_contract_item0List = jg_contractService.GetJg_contract_item0List(id);
for(Jg_contract_item0Entity jg_contract_item0Entity : Jg_contract_item0List){
}
vo.setJg_contract_item0List(JsonUtil.getJsonToList(Jg_contract_item0List,Jg_contract_item0Model.class ));
List<Jg_contract_item1Entity> Jg_contract_item1List = jg_contractService.GetJg_contract_item1List(id);
for(Jg_contract_item1Entity jg_contract_item1Entity : Jg_contract_item1List){
}
vo.setJg_contract_item1List(JsonUtil.getJsonToList(Jg_contract_item1List,Jg_contract_item1Model.class ));
//副表
return ActionResult.success(vo);
}
/**
* ()
*
* @param id
* @return
*/
@GetMapping("/detail/{id}")
public ActionResult<Jg_contractInfoVO> detailInfo(@PathVariable("id") String id){
Jg_contractEntity entity= jg_contractService.getInfo(id);
Jg_contractInfoVO vo=JsonUtil.getJsonToBean(entity, Jg_contractInfoVO.class);
//子表数据转换
List<Jg_contract_item0Entity> jg_contract_item0List = jg_contractService.GetJg_contract_item0List(id);
List<Jg_contract_item0Model> jg_contract_item0ModelList = JsonUtil.getJsonToList(jg_contract_item0List,Jg_contract_item0Model.class);
for(Jg_contract_item0Model jg_contract_item0Model : jg_contract_item0ModelList){
}
vo.setJg_contract_item0List(jg_contract_item0ModelList);
List<Jg_contract_item1Entity> jg_contract_item1List = jg_contractService.GetJg_contract_item1List(id);
List<Jg_contract_item1Model> jg_contract_item1ModelList = JsonUtil.getJsonToList(jg_contract_item1List,Jg_contract_item1Model.class);
for(Jg_contract_item1Model jg_contract_item1Model : jg_contract_item1ModelList){
jg_contract_item1Model.setEnclosure(generaterSwapUtil.getFileNameInJson(jg_contract_item1Model.getEnclosure()));
}
vo.setJg_contract_item1List(jg_contract_item1ModelList);
//附表数据转换
//添加到详情表单对象中
return ActionResult.success(vo);
}
/**
*
*
* @param id
* @return
*/
@PutMapping("/{id}")
@Transactional
public ActionResult update(@PathVariable("id") String id,@RequestBody @Valid Jg_contractUpForm jg_contractUpForm) throws DataException {
UserInfo userInfo=userProvider.get();
Jg_contractEntity entity= jg_contractService.getInfo(id);
if(entity!=null){
Jg_contractEntity subentity=JsonUtil.getJsonToBean(jg_contractUpForm, Jg_contractEntity.class);
jg_contractService.update(id, subentity);
QueryWrapper<Jg_contract_item0Entity> Jg_contract_item0queryWrapper = new QueryWrapper<>();
Jg_contract_item0queryWrapper.lambda().eq(Jg_contract_item0Entity::getIId, entity.getCId());
jg_contract_item0Service.remove(Jg_contract_item0queryWrapper);
List<Jg_contract_item0Entity> Jg_contract_item0List = JsonUtil.getJsonToList(jg_contractUpForm.getJg_contract_item0List(),Jg_contract_item0Entity.class);
for(Jg_contract_item0Entity entitys : Jg_contract_item0List){
entitys.setC_id(RandomUtil.uuId());
entitys.setIId(entity.getCId());
jg_contract_item0Service.save(entitys);
}
QueryWrapper<Jg_contract_item1Entity> Jg_contract_item1queryWrapper = new QueryWrapper<>();
Jg_contract_item1queryWrapper.lambda().eq(Jg_contract_item1Entity::getCId, entity.getCId());
jg_contract_item1Service.remove(Jg_contract_item1queryWrapper);
List<Jg_contract_item1Entity> Jg_contract_item1List = JsonUtil.getJsonToList(jg_contractUpForm.getJg_contract_item1List(),Jg_contract_item1Entity.class);
for(Jg_contract_item1Entity entitys : Jg_contract_item1List){
entitys.setV_id(RandomUtil.uuId());
entitys.setCId(entity.getCId());
jg_contract_item1Service.save(entitys);
}
return ActionResult.success("更新成功");
}else{
return ActionResult.fail("更新失败,数据不存在");
}
}
/**
*
*
* @param id
* @return
*/
@DeleteMapping("/{id}")
@Transactional
public ActionResult delete(@PathVariable("id") String id){
Jg_contractEntity entity= jg_contractService.getInfo(id);
if(entity!=null){
jg_contractService.delete(entity);
QueryWrapper<Jg_contract_item0Entity> queryWrapperJg_contract_item0=new QueryWrapper<>();
queryWrapperJg_contract_item0.lambda().eq(Jg_contract_item0Entity::getIId,entity.getCId());
jg_contract_item0Service.remove(queryWrapperJg_contract_item0);
QueryWrapper<Jg_contract_item1Entity> queryWrapperJg_contract_item1=new QueryWrapper<>();
queryWrapperJg_contract_item1.lambda().eq(Jg_contract_item1Entity::getCId,entity.getCId());
jg_contract_item1Service.remove(queryWrapperJg_contract_item1);
}
return ActionResult.success("删除成功");
}
}

@ -0,0 +1,138 @@
package jnpf.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
import java.math.BigDecimal;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
*
*
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-01-04
*/
@Data
@TableName("jg_contract")
public class Jg_contractEntity {
@TableId("C_ID")
private Integer cId;
@TableField("F_CREATORUSERID")
private Integer creatoruserid;
@TableField("F_CREATORUSERNAME")
private String creatorusername;
@TableField("F_CREATORTIME")
private Date creatortime;
@TableField("F_LASTMODIFYUSERID")
private Integer lastmodifyuserid;
@TableField("F_LASTMODIFYUSERNAME")
private String lastmodifyusername;
@TableField("F_LASTMODIFYTIME")
private Date lastmodifytime;
@TableField("F_DELETEUSERID")
private Integer deleteuserid;
@TableField("F_DELETEUSERNAME")
private String deleteusername;
@TableField("F_DELETETIME")
private Date deletetime;
@TableField("F_DELETEMARK")
private String deletemark;
@TableField("Z_ID")
private Integer zId;
@TableField("F_ID")
private Integer id;
@TableField("CONTRACTCODE")
private String contractcode;
@TableField("CONTRACTNAME")
private String contractname;
@TableField("CONTRACTNO")
private String contractno;
@TableField("CONTRACTTYPE")
private String contracttype;
@TableField("CLASSIFICATION")
private String classification;
@TableField("DECLARATIONDATE")
private Date declarationdate;
@TableField("CODE")
private String code;
@TableField("NAME")
private String name;
@TableField("NUM")
private BigDecimal num;
@TableField("AMOUNT")
private BigDecimal amount;
@TableField("DEPTCODE")
private String deptcode;
@TableField("DEPTNAME")
private String deptname;
@TableField("STATUS")
private String status;
@TableField("BIDOPENINGDATE")
private Date bidopeningdate;
@TableField("STARTDATE")
private Date startdate;
@TableField("AUDITDATE")
private Date auditdate;
@TableField("COMPLETIONDATE")
private Date completiondate;
@TableField("CLOSINGDATE")
private Date closingdate;
@TableField("COLLECTIONCYCLE")
private Integer collectioncycle;
@TableField("SIGNINGDATE")
private Date signingdate;
@TableField("ENDDATE")
private Date enddate;
@TableField("CURRENCY")
private String currency;
@TableField("ORGANIZATION")
private String organization;
@TableField("REMARK")
private String remark;
}

@ -0,0 +1,105 @@
package jnpf.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
*
*
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-01-04
*/
@Data
@TableName("jg_contract_item0")
public class Jg_contract_item0Entity {
@TableId("C_ID")
private Integer cId;
@TableField("F_CREATORUSERID")
private Integer creatoruserid;
@TableField("F_CREATORUSERNAME")
private String creatorusername;
@TableField("F_CREATORTIME")
private Date creatortime;
@TableField("F_LASTMODIFYUSERID")
private Integer lastmodifyuserid;
@TableField("F_LASTMODIFYUSERNAME")
private String lastmodifyusername;
@TableField("F_LASTMODIFYTIME")
private Date lastmodifytime;
@TableField("F_DELETEUSERID")
private Integer deleteuserid;
@TableField("F_DELETEUSERNAME")
private String deleteusername;
@TableField("F_DELETETIME")
private Date deletetime;
@TableField("F_DELETEMARK")
private String deletemark;
@TableField("Z_ID")
private Integer zId;
@TableField("F_ID")
private Integer id;
@TableField("MATERIALCODE")
private String materialcode;
@TableField("MATERIALNAME")
private String materialname;
@TableField("SPECIFICATION")
private String specification;
@TableField("UNIT")
private String unit;
@TableField("NUM")
private BigDecimal num;
@TableField("PRICE")
private BigDecimal price;
@TableField("AMOUNT")
private BigDecimal amount;
@TableField("RATE")
private String rate;
@TableField("NOTAMOUNT")
private BigDecimal notamount;
@TableField("NOTPRICE")
private BigDecimal notprice;
@TableField("REMARK")
private String remark;
@TableField("I_ID")
private Integer iId;
}

@ -0,0 +1,70 @@
package jnpf.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
*
*
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-01-04
*/
@Data
@TableName("jg_contract_item1")
public class Jg_contract_item1Entity {
@TableId("V_ID")
private Integer vId;
@TableField("F_CREATORUSERID")
private Integer creatoruserid;
@TableField("F_CREATORUSERNAME")
private String creatorusername;
@TableField("F_CREATORTIME")
private Date creatortime;
@TableField("F_LASTMODIFYUSERID")
private Integer lastmodifyuserid;
@TableField("F_LASTMODIFYUSERNAME")
private String lastmodifyusername;
@TableField("F_LASTMODIFYTIME")
private Date lastmodifytime;
@TableField("F_DELETEUSERID")
private Integer deleteuserid;
@TableField("F_DELETEUSERNAME")
private String deleteusername;
@TableField("F_DELETETIME")
private Date deletetime;
@TableField("F_DELETEMARK")
private String deletemark;
@TableField("Z_ID")
private Integer zId;
@TableField("F_ID")
private Integer id;
@TableField("ENCLOSURE")
private String enclosure;
@TableField("C_ID")
private String cId;
}

@ -0,0 +1,17 @@
package jnpf.mapper;
import jnpf.entity.Jg_contractEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
*
* jg_contract
* V3.2.0
* LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-01-04
*/
public interface Jg_contractMapper extends BaseMapper<Jg_contractEntity> {
}

@ -0,0 +1,17 @@
package jnpf.mapper;
import jnpf.entity.Jg_contract_item0Entity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
*
* jg_contract_item0
* V3.2.0
* LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-01-04
*/
public interface Jg_contract_item0Mapper extends BaseMapper<Jg_contract_item0Entity> {
}

@ -0,0 +1,17 @@
package jnpf.mapper;
import jnpf.entity.Jg_contract_item1Entity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
*
* jg_contract_item1
* V3.2.0
* LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-01-04
*/
public interface Jg_contract_item1Mapper extends BaseMapper<Jg_contract_item1Entity> {
}

@ -0,0 +1,128 @@
package jnpf.model.jg_contract;
import jnpf.model.jg_contract.Jg_contract_item0Model;
import jnpf.model.jg_contract.Jg_contract_item1Model;
import lombok.Data;
import java.util.List;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
*
*
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-01-04
*/
@Data
public class Jg_contractCrForm {
/** 合同类型 **/
@JsonProperty("contracttype")
private String contracttype;
/** 合同编码 **/
@JsonProperty("contractcode")
private String contractcode;
/** 合同名称 **/
@JsonProperty("contractname")
private String contractname;
/** 合同状态 **/
@JsonProperty("status")
private String status;
/** 开标日期 **/
@JsonProperty("bidopeningdate")
private String bidopeningdate;
/** 开始日期 **/
@JsonProperty("startdate")
private String startdate;
/** 审核日期 **/
@JsonProperty("auditdate")
private String auditdate;
/** 供货完成日期 **/
@JsonProperty("completiondate")
private String completiondate;
/** 关闭日期 **/
@JsonProperty("closingdate")
private String closingdate;
/** 回款周期(日) **/
@JsonProperty("collectioncycle")
private String collectioncycle;
/** 签订日期 **/
@JsonProperty("signingdate")
private String signingdate;
/** 截止日期 **/
@JsonProperty("enddate")
private String enddate;
/** 供应商/客户编 **/
@JsonProperty("code")
private String code;
/** 供应商/客户名 **/
@JsonProperty("name")
private String name;
/** 对方合同号 **/
@JsonProperty("contractno")
private String contractno;
/** 币种 **/
@JsonProperty("currency")
private String currency;
/** 数量 **/
@JsonProperty("num")
private String num;
/** 金额 **/
@JsonProperty("amount")
private String amount;
/** 库存组织 **/
@JsonProperty("organization")
private String organization;
/** 备注 **/
@JsonProperty("remark")
private String remark;
/** 合同分类 **/
@JsonProperty("classification")
private String classification;
/** 申报日期 **/
@JsonProperty("declarationdate")
private String declarationdate;
/** 部门名称 **/
@JsonProperty("deptname")
private String deptname;
/** 录入人 **/
@JsonProperty("creatorusername")
private String creatorusername;
/** 子表数据 **/
@JsonProperty("jg_contract_item0List")
private List<Jg_contract_item0Model> jg_contract_item0List;
/** 子表数据 **/
@JsonProperty("jg_contract_item1List")
private List<Jg_contract_item1Model> jg_contract_item1List;
}

@ -0,0 +1,130 @@
package jnpf.model.jg_contract;
import jnpf.model.jg_contract.Jg_contract_item0Model;
import jnpf.model.jg_contract.Jg_contract_item1Model;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
*
*
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-01-04
*/
@Data
public class Jg_contractInfoVO{
/** 主键 **/
@JsonProperty("c_id")
private String c_id;
/** 合同类型 **/
@JsonProperty("contracttype")
private String contracttype;
/** 合同编码 **/
@JsonProperty("contractcode")
private String contractcode;
/** 合同名称 **/
@JsonProperty("contractname")
private String contractname;
/** 合同状态 **/
@JsonProperty("status")
private String status;
/** 开标日期 **/
@JsonProperty("bidopeningdate")
private String bidopeningdate;
/** 开始日期 **/
@JsonProperty("startdate")
private String startdate;
/** 审核日期 **/
@JsonProperty("auditdate")
private String auditdate;
/** 供货完成日期 **/
@JsonProperty("completiondate")
private String completiondate;
/** 关闭日期 **/
@JsonProperty("closingdate")
private String closingdate;
/** 回款周期(日) **/
@JsonProperty("collectioncycle")
private String collectioncycle;
/** 签订日期 **/
@JsonProperty("signingdate")
private String signingdate;
/** 截止日期 **/
@JsonProperty("enddate")
private String enddate;
/** 供应商/客户编 **/
@JsonProperty("code")
private String code;
/** 供应商/客户名 **/
@JsonProperty("name")
private String name;
/** 对方合同号 **/
@JsonProperty("contractno")
private String contractno;
/** 币种 **/
@JsonProperty("currency")
private String currency;
/** 数量 **/
@JsonProperty("num")
private String num;
/** 金额 **/
@JsonProperty("amount")
private String amount;
/** 库存组织 **/
@JsonProperty("organization")
private String organization;
/** 备注 **/
@JsonProperty("remark")
private String remark;
/** 合同分类 **/
@JsonProperty("classification")
private String classification;
/** 申报日期 **/
@JsonProperty("declarationdate")
private String declarationdate;
/** 部门名称 **/
@JsonProperty("deptname")
private String deptname;
/** 录入人 **/
@JsonProperty("creatorusername")
private String creatorusername;
/** 子表数据 **/
@JsonProperty("jg_contract_item0List")
private List<Jg_contract_item0Model> jg_contract_item0List;
/** 子表数据 **/
@JsonProperty("jg_contract_item1List")
private List<Jg_contract_item1Model> jg_contract_item1List;
}

@ -0,0 +1,21 @@
package jnpf.model.jg_contract;
import lombok.Data;
import java.util.Date;
import jnpf.base.Pagination;
import java.util.List;
/**
*
*
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-01-04
*/
@Data
public class Jg_contractListQuery extends Pagination {
/**
* id
*/
private String menuId;
}

@ -0,0 +1,147 @@
package jnpf.model.jg_contract;
import lombok.Data;
import java.sql.Time;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.math.BigDecimal;
/**
*
*
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-01-04
*/
@Data
public class Jg_contractListVO{
/** 主键 */
private String c_id;
/** 合同类型 **/
@JsonProperty("contracttype")
private String contracttype;
/** 合同编码 **/
@JsonProperty("contractcode")
private String contractcode;
/** 合同名称 **/
@JsonProperty("contractname")
private String contractname;
/** 合同状态 **/
@JsonProperty("status")
private String status;
/** 开标日期 **/
@JsonProperty("bidopeningdate")
private String bidopeningdate;
/** 开始日期 **/
@JsonProperty("startdate")
private String startdate;
/** 审核日期 **/
@JsonProperty("auditdate")
private String auditdate;
/** 供货完成日期 **/
@JsonProperty("completiondate")
private String completiondate;
/** 关闭日期 **/
@JsonProperty("closingdate")
private String closingdate;
/** 回款周期(日) **/
@JsonProperty("collectioncycle")
private String collectioncycle;
/** 签订日期 **/
@JsonProperty("signingdate")
private String signingdate;
/** 截止日期 **/
@JsonProperty("enddate")
private String enddate;
/** 供应商/客户编 **/
@JsonProperty("code")
private String code;
/** 供应商/客户名 **/
@JsonProperty("name")
private String name;
/** 对方合同号 **/
@JsonProperty("contractno")
private String contractno;
/** 币种 **/
@JsonProperty("currency")
private String currency;
/** 数量 **/
@JsonProperty("num")
private String num;
/** 金额 **/
@JsonProperty("amount")
private String amount;
/** 库存组织 **/
@JsonProperty("organization")
private String organization;
/** 备注 **/
@JsonProperty("remark")
private String remark;
/** 合同分类 **/
@JsonProperty("classification")
private String classification;
/** 申报日期 **/
@JsonProperty("declarationdate")
private String declarationdate;
/** 部门名称 **/
@JsonProperty("deptname")
private String deptname;
/** 录入人 **/
@JsonProperty("creatorusername")
private String creatorusername;
}

@ -0,0 +1,22 @@
package jnpf.model.jg_contract;
import lombok.Data;
import jnpf.base.Pagination;
import java.util.List;
/**
*
*
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-01-04
*/
@Data
public class Jg_contractPagination extends Pagination {
/**
* id
*/
private String menuId;
}

@ -0,0 +1,23 @@
package jnpf.model.jg_contract;
import lombok.Data;
import jnpf.base.Pagination;
import java.util.*;
/**
*
*
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-01-04
*/
@Data
public class Jg_contractPaginationExportModel extends Pagination {
private String selectKey;
private String json;
private String dataType;
}

@ -0,0 +1,154 @@
package jnpf.model.jg_contract;
import jnpf.model.jg_contract.Jg_contract_item0Model;
import jnpf.model.jg_contract.Jg_contract_item1Model;
import lombok.Data;
import java.util.List;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
*
*
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-01-04
*/
@Data
public class Jg_contractUpForm{
/** 主键 */
private String c_id;
/** 合同类型 **/
@JsonProperty("contracttype")
private String contracttype;
/** 合同编码 **/
@JsonProperty("contractcode")
private String contractcode;
/** 合同名称 **/
@JsonProperty("contractname")
private String contractname;
/** 合同状态 **/
@JsonProperty("status")
private String status;
/** 开标日期 **/
@JsonProperty("bidopeningdate")
private String bidopeningdate;
/** 开始日期 **/
@JsonProperty("startdate")
private String startdate;
/** 审核日期 **/
@JsonProperty("auditdate")
private String auditdate;
/** 供货完成日期 **/
@JsonProperty("completiondate")
private String completiondate;
/** 关闭日期 **/
@JsonProperty("closingdate")
private String closingdate;
/** 回款周期(日) **/
@JsonProperty("collectioncycle")
private String collectioncycle;
/** 签订日期 **/
@JsonProperty("signingdate")
private String signingdate;
/** 截止日期 **/
@JsonProperty("enddate")
private String enddate;
/** 供应商/客户编 **/
@JsonProperty("code")
private String code;
/** 供应商/客户名 **/
@JsonProperty("name")
private String name;
/** 对方合同号 **/
@JsonProperty("contractno")
private String contractno;
/** 币种 **/
@JsonProperty("currency")
private String currency;
/** 数量 **/
@JsonProperty("num")
private String num;
/** 金额 **/
@JsonProperty("amount")
private String amount;
/** 库存组织 **/
@JsonProperty("organization")
private String organization;
/** 备注 **/
@JsonProperty("remark")
private String remark;
/** 合同分类 **/
@JsonProperty("classification")
private String classification;
/** 申报日期 **/
@JsonProperty("declarationdate")
private String declarationdate;
/** 部门名称 **/
@JsonProperty("deptname")
private String deptname;
/** 录入人 **/
@JsonProperty("creatorusername")
private String creatorusername;
/** 子表数据 **/
@JsonProperty("jg_contract_item0List")
private List<Jg_contract_item0Model> jg_contract_item0List;
/** 子表数据 **/
@JsonProperty("jg_contract_item1List")
private List<Jg_contract_item1Model> jg_contract_item1List;
}

@ -0,0 +1,66 @@
package jnpf.model.Jg_contract;
import lombok.Data;
import java.util.List;
import java.util.Date;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.alibaba.fastjson.annotation.JSONField;
/**
*
*
* V3.2.0
* : LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-01-04
*/
@Data
public class Jg_contract_item0Model {
/** 物料编码 **/
@JsonProperty("materialcode")
private String materialcode;
/** 物料名称 **/
@JsonProperty("materialname")
private String materialname;
/** 规格型号 **/
@JsonProperty("specification")
private String specification;
/** 单位 **/
@JsonProperty("unit")
private String unit;
/** 数量 **/
@JsonProperty("num")
private String num;
/** 单价 **/
@JsonProperty("price")
private String price;
/** 金额 **/
@JsonProperty("amount")
private String amount;
/** 税率 **/
@JsonProperty("rate")
private String rate;
/** 不含税单价 **/
@JsonProperty("notprice")
private String notprice;
/** 不含税金额 **/
@JsonProperty("notamount")
private String notamount;
/** 备注 **/
@JsonProperty("remark")
private String remark;
}

@ -0,0 +1,26 @@
package jnpf.model.Jg_contract;
import lombok.Data;
import java.util.List;
import java.util.Date;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.alibaba.fastjson.annotation.JSONField;
/**
*
*
* V3.2.0
* : LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-01-04
*/
@Data
public class Jg_contract_item1Model {
/** 附件内容 **/
@JsonProperty("enclosure")
private String enclosure;
}

@ -0,0 +1,40 @@
package jnpf.service;
import jnpf.entity.Jg_contract_item0Entity;
import jnpf.service.Jg_contract_item0Service;
import jnpf.entity.Jg_contract_item1Entity;
import jnpf.service.Jg_contract_item1Service;
import jnpf.entity.Jg_contractEntity;
import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.model.jg_contract.Jg_contractPagination;
import java.util.*;
/**
*
* jg_contract
* V3.2.0
* LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-01-04
*/
public interface Jg_contractService extends IService<Jg_contractEntity> {
List<Jg_contractEntity> getList(Jg_contractPagination jg_contractPagination);
List<Jg_contractEntity> getTypeList(Jg_contractPagination jg_contractPagination,String dataType);
Jg_contractEntity getInfo(String c_id);
void delete(Jg_contractEntity entity);
void create(Jg_contractEntity entity);
boolean update( String c_id, Jg_contractEntity entity);
// 子表方法
List<Jg_contract_item0Entity> GetJg_contract_item0List(String id);
List<Jg_contract_item1Entity> GetJg_contract_item1List(String id);
//列表子表数据方法
}

@ -0,0 +1,15 @@
package jnpf.service;
import jnpf.entity.Jg_contract_item0Entity;
import com.baomidou.mybatisplus.extension.service.IService;
/**
*
* jg_contract_item0
* V3.2.0
* LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-01-04
*/
public interface Jg_contract_item0Service extends IService<Jg_contract_item0Entity> {
}

@ -0,0 +1,15 @@
package jnpf.service;
import jnpf.entity.Jg_contract_item1Entity;
import com.baomidou.mybatisplus.extension.service.IService;
/**
*
* jg_contract_item1
* V3.2.0
* LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-01-04
*/
public interface Jg_contract_item1Service extends IService<Jg_contract_item1Entity> {
}

@ -0,0 +1,302 @@
package jnpf.service.impl;
import jnpf.entity.*;
import jnpf.mapper.Jg_contractMapper;
import jnpf.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.util.RandomUtil;
import java.math.BigDecimal;
import cn.hutool.core.util.ObjectUtil;
import jnpf.permission.model.authorize.AuthorizeConditionModel;
import jnpf.model.jg_contract.Jg_contractPagination;
import jnpf.permission.service.AuthorizeService;
import java.lang.reflect.Field;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.stream.Collectors;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.text.SimpleDateFormat;
import jnpf.util.*;
import java.util.*;
/**
*
* jg_contract
* V3.2.0
* LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-01-04
*/
@Service
public class Jg_contractServiceImpl extends ServiceImpl<Jg_contractMapper, Jg_contractEntity> implements Jg_contractService{
@Autowired
private UserProvider userProvider;
@Autowired
private AuthorizeService authorizeService;
@Autowired
private Jg_contract_item0Service jg_contract_item0Service;
@Autowired
private Jg_contract_item1Service jg_contract_item1Service;
@Override
public List<Jg_contractEntity> getList(Jg_contractPagination jg_contractPagination){
String userId=userProvider.get().getUserId();
List<String> AllIdList =new ArrayList();
int total=0;
int jg_contractNum =0;
QueryWrapper<Jg_contractEntity> jg_contractQueryWrapper=new QueryWrapper<>();
int jg_contract_item0Num =0;
QueryWrapper<Jg_contract_item0Entity> jg_contract_item0QueryWrapper=new QueryWrapper<>();
int jg_contract_item1Num =0;
QueryWrapper<Jg_contract_item1Entity> jg_contract_item1QueryWrapper=new QueryWrapper<>();
boolean pcPermission = false;
boolean appPermission = false;
boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc");
if(isPc && pcPermission){
if (!userProvider.get().getIsAdministrator()){
Object jg_contractObj=authorizeService.getCondition(new AuthorizeConditionModel(jg_contractQueryWrapper,jg_contractPagination.getMenuId(),"jg_contract"));
if (ObjectUtil.isEmpty(jg_contractObj)){
return new ArrayList<>();
} else {
jg_contractQueryWrapper = (QueryWrapper<Jg_contractEntity>)jg_contractObj;
jg_contractNum++;
}
Object jg_contract_item0Obj=authorizeService.getCondition(new AuthorizeConditionModel(jg_contract_item0QueryWrapper,jg_contractPagination.getMenuId(),"jg_contract_item0"));
if (ObjectUtil.isEmpty(jg_contract_item0Obj)){
return new ArrayList<>();
} else {
jg_contract_item0QueryWrapper = (QueryWrapper<Jg_contract_item0Entity>)jg_contract_item0Obj;
jg_contract_item0Num++;
}
Object jg_contract_item1Obj=authorizeService.getCondition(new AuthorizeConditionModel(jg_contract_item1QueryWrapper,jg_contractPagination.getMenuId(),"jg_contract_item1"));
if (ObjectUtil.isEmpty(jg_contract_item1Obj)){
return new ArrayList<>();
} else {
jg_contract_item1QueryWrapper = (QueryWrapper<Jg_contract_item1Entity>)jg_contract_item1Obj;
jg_contract_item1Num++;
}
}
}
if(!isPc && appPermission){
if (!userProvider.get().getIsAdministrator()){
Object jg_contractObj=authorizeService.getCondition(new AuthorizeConditionModel(jg_contractQueryWrapper,jg_contractPagination.getMenuId(),"jg_contract"));
if (ObjectUtil.isEmpty(jg_contractObj)){
return new ArrayList<>();
} else {
jg_contractQueryWrapper = (QueryWrapper<Jg_contractEntity>)jg_contractObj;
jg_contractNum++;
}
Object jg_contract_item0Obj=authorizeService.getCondition(new AuthorizeConditionModel(jg_contract_item0QueryWrapper,jg_contractPagination.getMenuId(),"jg_contract_item0"));
if (ObjectUtil.isEmpty(jg_contract_item0Obj)){
return new ArrayList<>();
} else {
jg_contract_item0QueryWrapper = (QueryWrapper<Jg_contract_item0Entity>)jg_contract_item0Obj;
jg_contract_item0Num++;
}
Object jg_contract_item1Obj=authorizeService.getCondition(new AuthorizeConditionModel(jg_contract_item1QueryWrapper,jg_contractPagination.getMenuId(),"jg_contract_item1"));
if (ObjectUtil.isEmpty(jg_contract_item1Obj)){
return new ArrayList<>();
} else {
jg_contract_item1QueryWrapper = (QueryWrapper<Jg_contract_item1Entity>)jg_contract_item1Obj;
jg_contract_item1Num++;
}
}
}
if(AllIdList.size()>0){
jg_contractQueryWrapper.lambda().in(Jg_contractEntity::getC_id, AllIdList);
}
//排序
if(StringUtil.isEmpty(jg_contractPagination.getSidx())){
jg_contractQueryWrapper.lambda().orderByDesc(Jg_contractEntity::getC_id);
}else{
try {
String sidx = jg_contractPagination.getSidx();
Jg_contractEntity jg_contractEntity = new Jg_contractEntity();
Field declaredField = jg_contractEntity.getClass().getDeclaredField(sidx);
declaredField.setAccessible(true);
String value = declaredField.getAnnotation(TableField.class).value();
jg_contractQueryWrapper="asc".equals(jg_contractPagination.getSort().toLowerCase())?jg_contractQueryWrapper.orderByAsc(value):jg_contractQueryWrapper.orderByDesc(value);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
if((total>0 && AllIdList.size()>0) || total==0){
Page<Jg_contractEntity> page=new Page<>(jg_contractPagination.getCurrentPage(), jg_contractPagination.getPageSize());
IPage<Jg_contractEntity> userIPage=this.page(page, jg_contractQueryWrapper);
return jg_contractPagination.setData(userIPage.getRecords(),userIPage.getTotal());
}else{
List<Jg_contractEntity> list = new ArrayList();
return jg_contractPagination.setData(list, list.size());
}
}
@Override
public List<Jg_contractEntity> getTypeList(Jg_contractPagination jg_contractPagination,String dataType){
String userId=userProvider.get().getUserId();
List<String> AllIdList =new ArrayList();
int total=0;
int jg_contractNum =0;
QueryWrapper<Jg_contractEntity> jg_contractQueryWrapper=new QueryWrapper<>();
int jg_contract_item0Num =0;
QueryWrapper<Jg_contract_item0Entity> jg_contract_item0QueryWrapper=new QueryWrapper<>();
int jg_contract_item1Num =0;
QueryWrapper<Jg_contract_item1Entity> jg_contract_item1QueryWrapper=new QueryWrapper<>();
boolean pcPermission = false;
boolean appPermission = false;
boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc");
if(isPc && pcPermission){
if (!userProvider.get().getIsAdministrator()){
Object jg_contractObj=authorizeService.getCondition(new AuthorizeConditionModel(jg_contractQueryWrapper,jg_contractPagination.getMenuId(),"jg_contract"));
if (ObjectUtil.isEmpty(jg_contractObj)){
return new ArrayList<>();
} else {
jg_contractQueryWrapper = (QueryWrapper<Jg_contractEntity>)jg_contractObj;
jg_contractNum++;
}
Object jg_contract_item0Obj=authorizeService.getCondition(new AuthorizeConditionModel(jg_contract_item0QueryWrapper,jg_contractPagination.getMenuId(),"jg_contract_item0"));
if (ObjectUtil.isEmpty(jg_contract_item0Obj)){
return new ArrayList<>();
} else {
jg_contract_item0QueryWrapper = (QueryWrapper<Jg_contract_item0Entity>)jg_contract_item0Obj;
jg_contract_item0Num++;
}
Object jg_contract_item1Obj=authorizeService.getCondition(new AuthorizeConditionModel(jg_contract_item1QueryWrapper,jg_contractPagination.getMenuId(),"jg_contract_item1"));
if (ObjectUtil.isEmpty(jg_contract_item1Obj)){
return new ArrayList<>();
} else {
jg_contract_item1QueryWrapper = (QueryWrapper<Jg_contract_item1Entity>)jg_contract_item1Obj;
jg_contract_item1Num++;
}
}
}
if(!isPc && appPermission){
if (!userProvider.get().getIsAdministrator()){
Object jg_contractObj=authorizeService.getCondition(new AuthorizeConditionModel(jg_contractQueryWrapper,jg_contractPagination.getMenuId(),"jg_contract"));
if (ObjectUtil.isEmpty(jg_contractObj)){
return new ArrayList<>();
} else {
jg_contractQueryWrapper = (QueryWrapper<Jg_contractEntity>)jg_contractObj;
jg_contractNum++;
}
Object jg_contract_item0Obj=authorizeService.getCondition(new AuthorizeConditionModel(jg_contract_item0QueryWrapper,jg_contractPagination.getMenuId(),"jg_contract_item0"));
if (ObjectUtil.isEmpty(jg_contract_item0Obj)){
return new ArrayList<>();
} else {
jg_contract_item0QueryWrapper = (QueryWrapper<Jg_contract_item0Entity>)jg_contract_item0Obj;
jg_contract_item0Num++;
}
Object jg_contract_item1Obj=authorizeService.getCondition(new AuthorizeConditionModel(jg_contract_item1QueryWrapper,jg_contractPagination.getMenuId(),"jg_contract_item1"));
if (ObjectUtil.isEmpty(jg_contract_item1Obj)){
return new ArrayList<>();
} else {
jg_contract_item1QueryWrapper = (QueryWrapper<Jg_contract_item1Entity>)jg_contract_item1Obj;
jg_contract_item1Num++;
}
}
}
if(AllIdList.size()>0){
jg_contractQueryWrapper.lambda().in(Jg_contractEntity::getC_id, AllIdList);
}
//排序
if(StringUtil.isEmpty(jg_contractPagination.getSidx())){
jg_contractQueryWrapper.lambda().orderByDesc(Jg_contractEntity::getC_id);
}else{
try {
String sidx = jg_contractPagination.getSidx();
Jg_contractEntity jg_contractEntity = new Jg_contractEntity();
Field declaredField = jg_contractEntity.getClass().getDeclaredField(sidx);
declaredField.setAccessible(true);
String value = declaredField.getAnnotation(TableField.class).value();
jg_contractQueryWrapper="asc".equals(jg_contractPagination.getSort().toLowerCase())?jg_contractQueryWrapper.orderByAsc(value):jg_contractQueryWrapper.orderByDesc(value);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
if("0".equals(dataType)){
if((total>0 && AllIdList.size()>0) || total==0){
Page<Jg_contractEntity> page=new Page<>(jg_contractPagination.getCurrentPage(), jg_contractPagination.getPageSize());
IPage<Jg_contractEntity> userIPage=this.page(page, jg_contractQueryWrapper);
return jg_contractPagination.setData(userIPage.getRecords(),userIPage.getTotal());
}else{
List<Jg_contractEntity> list = new ArrayList();
return jg_contractPagination.setData(list, list.size());
}
}else{
return this.list(jg_contractQueryWrapper);
}
}
@Override
public Jg_contractEntity getInfo(String c_id){
QueryWrapper<Jg_contractEntity> queryWrapper=new QueryWrapper<>();
queryWrapper.lambda().eq(Jg_contractEntity::getC_id,c_id);
return this.getOne(queryWrapper);
}
@Override
public void create(Jg_contractEntity entity){
this.save(entity);
}
@Override
public boolean update(String c_id, Jg_contractEntity entity){
entity.setC_id(c_id);
return this.updateById(entity);
}
@Override
public void delete(Jg_contractEntity entity){
if(entity!=null){
this.removeById(entity.getC_id());
}
}
//子表方法
@Override
public List<Jg_contract_item0Entity> GetJg_contract_item0List(String id){
QueryWrapper<Jg_contract_item0Entity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(Jg_contract_item0Entity::getIId, id);
return jg_contract_item0Service.list(queryWrapper);
}
@Override
public List<Jg_contract_item1Entity> GetJg_contract_item1List(String id){
QueryWrapper<Jg_contract_item1Entity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(Jg_contract_item1Entity::getCId, id);
return jg_contract_item1Service.list(queryWrapper);
}
//列表子表数据方法
}

@ -0,0 +1,41 @@
package jnpf.service.impl;
import jnpf.entity.*;
import jnpf.mapper.Jg_contract_item0Mapper;
import jnpf.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.util.RandomUtil;
import java.math.BigDecimal;
import cn.hutool.core.util.ObjectUtil;
import jnpf.permission.model.authorize.AuthorizeConditionModel;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.text.SimpleDateFormat;
import jnpf.util.*;
import java.util.*;
/**
*
* jg_contract_item0
* V3.2.0
* LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-01-04
*/
@Service
public class Jg_contract_item0ServiceImpl extends ServiceImpl<Jg_contract_item0Mapper, Jg_contract_item0Entity> implements Jg_contract_item0Service{
}

@ -0,0 +1,41 @@
package jnpf.service.impl;
import jnpf.entity.*;
import jnpf.mapper.Jg_contract_item1Mapper;
import jnpf.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.util.RandomUtil;
import java.math.BigDecimal;
import cn.hutool.core.util.ObjectUtil;
import jnpf.permission.model.authorize.AuthorizeConditionModel;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.text.SimpleDateFormat;
import jnpf.util.*;
import java.util.*;
/**
*
* jg_contract_item1
* V3.2.0
* LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-01-04
*/
@Service
public class Jg_contract_item1ServiceImpl extends ServiceImpl<Jg_contract_item1Mapper, Jg_contract_item1Entity> implements Jg_contract_item1Service{
}

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="jnpf.mapper.Jg_contractMapper">
</mapper>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="jnpf.mapper.Jg_contract_item0Mapper">
</mapper>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="jnpf.mapper.Jg_contract_item1Mapper">
</mapper>

@ -0,0 +1,346 @@
<template>
<transition name="el-zoom-in-center">
<div class="JNPF-preview-main">
<div class="JNPF-common-page-header">
<el-page-header @back="goBack"
content="详情"/>
<div class="options">
<el-button @click="goBack"> </el-button>
</div>
</div>
<el-row :gutter="15" class=" main" :style="{margin: '0 auto',width: '100%'}">
<el-form ref="elForm" :model="dataForm" size="small" label-width="100px" label-position="right" >
<template v-if="!loading">
<el-col :span="8" >
<el-form-item label="合同类型 "
prop="contracttype" >
<p>{{dataForm.contracttype}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="合同编码"
prop="contractcode" >
<p>{{dataForm.contractcode}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="合同名称"
prop="contractname" >
<p>{{dataForm.contractname}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="合同状态"
prop="status" >
<p>{{ dataForm.status | dynamicText(statusOptions) }} </p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="开标日期"
prop="bidopeningdate" >
<p>{{ dataForm.bidopeningdate | dynamicText(bidopeningdateOptions) }} </p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="开始日期"
prop="startdate" >
<p>{{ dataForm.startdate | dynamicText(startdateOptions) }} </p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="审核日期"
prop="auditdate" >
<p>{{dataForm.auditdate}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="供货完成日期"
prop="completiondate" >
<p>{{dataForm.completiondate}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="关闭日期"
prop="closingdate" >
<p>{{dataForm.closingdate}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="回款周期(日)"
prop="collectioncycle" >
<p>{{dataForm.collectioncycle}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="签订日期"
prop="signingdate" >
<p>{{dataForm.signingdate}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="截止日期"
prop="enddate" >
<p>{{dataForm.enddate}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="供应商/客户编"
prop="code" >
<p>{{dataForm.code}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="供应商/客户名"
prop="name" >
<p>{{dataForm.name}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="对方合同号"
prop="contractno" >
<p>{{dataForm.contractno}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="币种 "
prop="currency" >
<p>{{dataForm.currency}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="数量"
prop="num" >
<p>{{dataForm.num}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="金额"
prop="amount" >
<p>{{dataForm.amount}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="库存组织"
prop="organization" >
<p>{{dataForm.organization}}</p>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="备注"
prop="remark" >
<p>{{dataForm.remark}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="合同分类 "
prop="classification" >
<p>{{dataForm.classification}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="申报日期"
prop="declarationdate" >
<p>{{dataForm.declarationdate}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="部门名称"
prop="deptname" >
<p>{{dataForm.deptname}}</p>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="录入人"
prop="creatorusername" >
<p>{{dataForm.creatorusername}}</p>
</el-form-item>
</el-col>
<el-col :span="24">
<el-tabs v-model="activejlljvq" tab-position="top" class="mb-20">
<el-tab-pane label="物料明细">
<el-col :span="24" >
<el-form-item label-width="0">
<div class="JNPF-common-title">
<h2></h2>
</div>
<el-table :data="dataForm.jg_contract_item0List" size='mini' >
<el-table-column type="index" width="50" label="序号" align="center" />
<el-table-column prop="materialcode" label="物料编码">
<template slot-scope="scope">
<p>{{scope.row.materialcode}}</p>
</template>
</el-table-column>
<el-table-column prop="materialname" label="物料名称">
<template slot-scope="scope">
<p>{{scope.row.materialname}}</p>
</template>
</el-table-column>
<el-table-column prop="specification" label="规格型号">
<template slot-scope="scope">
<p>{{scope.row.specification}}</p>
</template>
</el-table-column>
<el-table-column prop="unit" label="单位 ">
<template slot-scope="scope">
<p>{{scope.row.unit}}</p>
</template>
</el-table-column>
<el-table-column prop="num" label="数量">
<template slot-scope="scope">
<p>{{scope.row.num}}</p>
</template>
</el-table-column>
<el-table-column prop="price" label="单价">
<template slot-scope="scope">
<p>{{scope.row.price}}</p>
</template>
</el-table-column>
<el-table-column prop="amount" label="金额">
<template slot-scope="scope">
<p>{{scope.row.amount}}</p>
</template>
</el-table-column>
<el-table-column prop="rate" label="税率 ">
<template slot-scope="scope">
<p>{{scope.row.rate}}</p>
</template>
</el-table-column>
<el-table-column prop="notprice" label="不含税单价">
<template slot-scope="scope">
<p>{{scope.row.notprice}}</p>
</template>
</el-table-column>
<el-table-column prop="notamount" label="不含税金额">
<template slot-scope="scope">
<p>{{scope.row.notamount}}</p>
</template>
</el-table-column>
<el-table-column prop="remark" label="备注">
<template slot-scope="scope">
<p>{{scope.row.remark}}</p>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-col>
</el-tab-pane >
<el-tab-pane label="附件详情">
<el-col :span="24" >
<el-form-item label-width="0">
<div class="JNPF-common-title">
<h2></h2>
</div>
<el-table :data="dataForm.jg_contract_item1List" size='mini' >
<el-table-column type="index" width="50" label="序号" align="center" />
<el-table-column prop="enclosure" label="附件内容">
<template slot-scope="scope">
<JNPF-UploadFz v-model="scope.row.enclosure"
disabled
detailed :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" >
</JNPF-UploadFz>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-col>
</el-tab-pane >
</el-tabs>
</el-col>
</template>
</el-form>
</el-row>
</div>
</transition>
</template>
<script>
import request from '@/utils/request'
import PrintBrowse from '@/components/PrintBrowse'
import jnpf from '@/utils/jnpf'
export default {
components: {PrintBrowse},
props: [],
data() {
return {
visible: false,
loading: false,
printBrowseVisible: false,
printId: '',
dataForm: {
c_id :'',
contracttype : '',
contractcode : '',
contractname : '',
status : "",
bidopeningdate : "",
startdate : "",
auditdate : '',
completiondate : '',
closingdate : '',
collectioncycle : '',
signingdate : '',
enddate : '',
code : '',
name : '',
contractno : '',
currency : '',
num : '',
amount : '',
organization : '',
remark : '',
classification : '',
declarationdate : '',
deptname : '',
creatorusername : '',
jg_contract_item0List:[],
jg_contract_item1List:[],
},
activejlljvq:'1',
statusOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
bidopeningdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
startdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
}
},
computed: {},
watch: {},
created() {
},
mounted() {},
methods: {
dataInfo(dataAll){
let _dataAll =dataAll
for(let i=0;i<_dataAll.jg_contract_item0List.length;i++){
var _list = _dataAll.jg_contract_item0List[i];
}
for(let i=0;i<_dataAll.jg_contract_item1List.length;i++){
var _list = _dataAll.jg_contract_item1List[i];
_list.enclosure = _list.enclosure? JSON.parse(_list.enclosure):[]
}
this.dataForm = _dataAll
},
goBack() {
this.$emit('refresh')
},
init(id) {
this.dataForm.c_id = id || 0;
this.visible = true;
this.$nextTick(() => {
if(this.dataForm.c_id){
this.loading = true
request({
url: '/api/example/Jg_contract/detail/'+this.dataForm.c_id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)
this.loading = false
})
}
})
},
},
}
</script>

@ -0,0 +1,68 @@
<template>
<el-dialog title="导出数据" :close-on-click-modal="false" :visible.sync="visible"
class="JNPF-dialog JNPF-dialog_center" lock-scroll width="600px">
<el-form label-position="top" label-width="80px">
<el-form-item label="数据选择">
<el-radio-group v-model="type">
<el-radio :label="0">当前页面数据</el-radio>
<el-radio :label="1">全部页面数据</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="导出字段">
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll"
@change="handleCheckAllChange">全选</el-checkbox>
<el-checkbox-group v-model="columns" @change="handleCheckedChange">
<el-checkbox v-for="item in columnList" :label="item.prop" :key="item.prop">
{{item.label}}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="visible=false"> </el-button>
<el-button type="primary" @click="downLoad"> </el-button>
</span>
</el-dialog>
</template>
<script>
export default {
data() {
return {
visible: false,
btnLoading: false,
type: 0,
columns: [],
checkAll: true,
isIndeterminate: false,
columnList: []
}
},
methods: {
init(columnList) {
this.visible = true
this.checkAll = true
this.isIndeterminate = false
this.columnList = columnList
this.columns = columnList.map(o => o.prop)
},
handleCheckAllChange(val) {
this.columns = val ? this.columnList.map(o => o.prop) : [];
this.isIndeterminate = false;
},
handleCheckedChange(value) {
let checkedCount = value.length;
this.checkAll = checkedCount === this.columnList.length;
this.isIndeterminate = checkedCount > 0 && checkedCount < this.columnList.length;
},
downLoad() {
this.$emit('download', { dataType: this.type, selectKey: this.columns.join(',') })
}
}
}
</script>
<style lang="scss" scoped>
>>> .el-dialog__body {
padding: 20px !important;
}
</style>

@ -0,0 +1,574 @@
<template>
<transition name="el-zoom-in-center">
<div class="JNPF-preview-main">
<div class="JNPF-common-page-header">
<el-page-header @back="goBack"
:content="!dataForm.c_id ? '新建' : isDetail ? '详情':'编辑'"/>
<div class="options">
<el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail"> </el-button>
<el-button @click="goBack"> </el-button>
</div>
</div>
<el-row :gutter="15" class=" main" :style="{margin: '0 auto',width: '100%'}">
<el-form ref="elForm" :model="dataForm" :rules="rules" size="small" label-width="100px" label-position="right" >
<template v-if="!loading">
<el-col :span="8" >
<el-form-item label="合同类型 "
prop="contracttype" >
<el-input v-model="dataForm.contracttype"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="合同编码"
prop="contractcode" >
<el-input v-model="dataForm.contractcode"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="合同名称"
prop="contractname" >
<el-input v-model="dataForm.contractname"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="合同状态"
prop="status" >
<el-select v-model="dataForm.status"
placeholder="请选择" clearable :style='{"width":"100%"}'>
<el-option v-for="(item, index) in statusOptions" :key="index" :label="item.fullName" :value="item.id" :disabled="item.disabled" ></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="开标日期"
prop="bidopeningdate" >
<el-select v-model="dataForm.bidopeningdate"
placeholder="请选择" clearable :style='{"width":"100%"}'>
<el-option v-for="(item, index) in bidopeningdateOptions" :key="index" :label="item.fullName" :value="item.id" :disabled="item.disabled" ></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="开始日期"
prop="startdate" >
<el-select v-model="dataForm.startdate"
placeholder="请选择" clearable :style='{"width":"100%"}'>
<el-option v-for="(item, index) in startdateOptions" :key="index" :label="item.fullName" :value="item.id" :disabled="item.disabled" ></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="审核日期"
prop="auditdate" >
<el-input v-model="dataForm.auditdate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="供货完成日期"
prop="completiondate" >
<el-input v-model="dataForm.completiondate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="关闭日期"
prop="closingdate" >
<el-input v-model="dataForm.closingdate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="回款周期(日)"
prop="collectioncycle" >
<el-input v-model="dataForm.collectioncycle"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="签订日期"
prop="signingdate" >
<el-input v-model="dataForm.signingdate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="截止日期"
prop="enddate" >
<el-input v-model="dataForm.enddate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="供应商/客户编"
prop="code" >
<el-input v-model="dataForm.code"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="供应商/客户名"
prop="name" >
<el-input v-model="dataForm.name"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="对方合同号"
prop="contractno" >
<el-input v-model="dataForm.contractno"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="币种 "
prop="currency" >
<el-input v-model="dataForm.currency"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="数量"
prop="num" >
<el-input v-model="dataForm.num"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="金额"
prop="amount" >
<el-input v-model="dataForm.amount"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="库存组织"
prop="organization" >
<el-input v-model="dataForm.organization"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-form-item label="备注"
prop="remark" >
<el-input v-model="dataForm.remark"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="合同分类 "
prop="classification" >
<el-input v-model="dataForm.classification"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="申报日期"
prop="declarationdate" >
<el-input v-model="dataForm.declarationdate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="部门名称"
prop="deptname" >
<el-input v-model="dataForm.deptname"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" >
<el-form-item label="录入人"
prop="creatorusername" >
<el-input v-model="dataForm.creatorusername"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-tabs v-model="activejlljvq" tab-position="top" class="mb-20">
<el-tab-pane label="物料明细">
<el-col :span="24" >
<el-form-item label-width="0">
<div class="JNPF-common-title">
<h2></h2>
</div>
<el-table :data="dataForm.jg_contract_item0List" size='mini' >
<el-table-column type="index" width="50" label="序号" align="center" />
<el-table-column prop="materialcode" label="物料编码">
<template slot-scope="scope">
<el-input v-model="scope.row.materialcode"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="materialname" label="物料名称">
<template slot-scope="scope">
<el-input v-model="scope.row.materialname"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="specification" label="规格型号">
<template slot-scope="scope">
<el-input v-model="scope.row.specification"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="unit" label="单位 ">
<template slot-scope="scope">
<el-input v-model="scope.row.unit"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="num" label="数量">
<template slot-scope="scope">
<el-input v-model="scope.row.num"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="price" label="单价">
<template slot-scope="scope">
<el-input v-model="scope.row.price"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="amount" label="金额">
<template slot-scope="scope">
<el-input v-model="scope.row.amount"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="rate" label="税率 ">
<template slot-scope="scope">
<el-input v-model="scope.row.rate"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="notprice" label="不含税单价">
<template slot-scope="scope">
<el-input v-model="scope.row.notprice"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="notamount" label="不含税金额">
<template slot-scope="scope">
<el-input v-model="scope.row.notamount"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column prop="remark" label="备注">
<template slot-scope="scope">
<el-input v-model="scope.row.remark"
placeholder="请输入" clearable :style='{"width":"100%"}'>
</el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="50" >
<template slot-scope="scope">
<el-button size="mini" type="text" class="JNPF-table-delBtn" @click="deljg_contract_item0List(scope.$index)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="table-actions" @click="addjg_contract_item0List()">
<el-button type="text" icon="el-icon-plus">添加</el-button>
</div>
</el-form-item>
</el-col>
</el-tab-pane >
<el-tab-pane label="附件详情">
<el-col :span="24" >
<el-form-item label-width="0">
<div class="JNPF-common-title">
<h2></h2>
</div>
<el-table :data="dataForm.jg_contract_item1List" size='mini' >
<el-table-column type="index" width="50" label="序号" align="center" />
<el-table-column prop="enclosure" label="附件内容">
<template slot-scope="scope">
<JNPF-UploadFz v-model="scope.row.enclosure"
:fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" >
</JNPF-UploadFz>
</template>
</el-table-column>
<el-table-column label="操作" width="50" >
<template slot-scope="scope">
<el-button size="mini" type="text" class="JNPF-table-delBtn" @click="deljg_contract_item1List(scope.$index)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="table-actions" @click="addjg_contract_item1List()">
<el-button type="text" icon="el-icon-plus">添加</el-button>
</div>
</el-form-item>
</el-col>
</el-tab-pane >
</el-tabs>
</el-col>
</template>
</el-form>
</el-row>
</div>
</transition>
</template>
<script>
import request from '@/utils/request'
import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
export default {
components: {},
props: [],
data() {
return {
visible: false,
loading: false,
isDetail: false,
dataForm: {
contracttype : '',
contractcode : '',
contractname : '',
status : "",
bidopeningdate : "",
startdate : "",
auditdate : '',
completiondate : '',
closingdate : '',
collectioncycle : '',
signingdate : '',
enddate : '',
code : '',
name : '',
contractno : '',
currency : '',
num : '',
amount : '',
organization : '',
remark : '',
classification : '',
declarationdate : '',
deptname : '',
creatorusername : '',
jg_contract_item0List:[],
jg_contract_item1List:[],
},
activejlljvq:'1',
rules:
{
contractcode: [
],
},
statusOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
bidopeningdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
startdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
}
},
computed: {},
watch: {},
created() {
},
mounted() {},
methods: {
jg_contract_item0Exist() {
let isOk = true;
for(let i=0;i<this.dataForm.jg_contract_item0List.length;i++){
const e = this.dataForm.jg_contract_item0List[i];
}
return isOk;
},
jg_contract_item1Exist() {
let isOk = true;
for(let i=0;i<this.dataForm.jg_contract_item1List.length;i++){
const e = this.dataForm.jg_contract_item1List[i];
}
return isOk;
},
goBack() {
this.$emit('refresh')
},
clearData(data){
for (let key in data) {
if (data[key] instanceof Array) {
data[key] = [];
} else if (data[key] instanceof Object) {
this.clearData(data[key]);
} else {
data[key] = "";
}
}
},
init(id, isDetail) {
this.dataForm.c_id = id || 0;
this.visible = true;
this.isDetail = isDetail || false;
this.$nextTick(() => {
this.$refs['elForm'].resetFields();
if(this.dataForm.c_id){
this.loading = true
request({
url: '/api/example/Jg_contract/'+this.dataForm.c_id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)
this.loading = false
});
}else{
this.clearData(this.dataForm)
}
});
this.$store.commit('generator/UPDATE_RELATION_DATA', {})
},
//
dataFormSubmit() {
this.$refs['elForm'].validate((valid) => {
if (valid) {
if (!this.jg_contract_item0Exist()) return
if (!this.jg_contract_item1Exist()) return
this.request()
}
})
},
request() {
var _data =this.dataList()
if (!this.dataForm.c_id) {
request({
url: '/api/example/Jg_contract',
method: 'post',
data: _data
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
this.visible = false
this.$emit('refresh', true)
}
})
})
}else{
request({
url: '/api/example/Jg_contract/'+this.dataForm.c_id,
method: 'PUT',
data: _data
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
this.visible = false
this.$emit('refresh', true)
}
})
})
}
},
addjg_contract_item0List(){
let item = {
materialcode:undefined,
materialname:undefined,
specification:undefined,
unit:undefined,
num:undefined,
price:undefined,
amount:undefined,
rate:undefined,
notprice:undefined,
notamount:undefined,
remark:undefined,
}
this.dataForm.jg_contract_item0List.push(item)
},
deljg_contract_item0List(index) {
this.dataForm.jg_contract_item0List.splice(index, 1);
},
addjg_contract_item1List(){
let item = {
enclosure:undefined,
}
this.dataForm.jg_contract_item1List.push(item)
},
deljg_contract_item1List(index) {
this.dataForm.jg_contract_item1List.splice(index, 1);
},
dataList(){
var _data = JSON.parse(JSON.stringify(this.dataForm));
for(let i=0;i<_data.jg_contract_item0List.length;i++){
var _list = _data.jg_contract_item0List[i];
}
for(let i=0;i<_data.jg_contract_item1List.length;i++){
var _list = _data.jg_contract_item1List[i];
_list.enclosure = JSON.stringify(_list.enclosure)
}
return _data;
},
dataInfo(dataAll){
let _dataAll =dataAll
for(let i=0;i<_dataAll.jg_contract_item0List.length;i++){
var _list = _dataAll.jg_contract_item0List[i];
}
for(let i=0;i<_dataAll.jg_contract_item1List.length;i++){
var _list = _dataAll.jg_contract_item1List[i];
_list.enclosure = JSON.parse(_list.enclosure)
}
this.dataForm = _dataAll
},
},
}
</script>

@ -0,0 +1,281 @@
<template>
<div class="JNPF-common-layout">
<div class="JNPF-common-layout-center">
<el-row class="JNPF-common-search-box" :gutter="16">
<el-form @submit.native.prevent>
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div class="JNPF-common-layout-main JNPF-flex-main">
<div class="JNPF-common-head">
<div>
<el-button type="primary" icon="el-icon-plus" @click="addOrUpdateHandle()">
</el-button>
<el-button type="text" icon="el-icon-download" @click="exportData()" >导出
</el-button>
<el-button type="text" icon="el-icon-delete" @click="handleBatchRemoveDel()" >批量删除
</el-button>
</div>
<div class="JNPF-common-head-right">
<el-tooltip effect="dark" content="刷新" placement="top">
<el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon" :underline="false"
@click="reset()"/>
</el-tooltip>
<screenfull isContainer/>
</div>
</div>
<JNPF-table v-loading="listLoading" :data="list" @sort-change='sortChange' has-c @selection-change="handleSelectionChange">
<el-table-column prop="contractcode" label="合同编码" width="0" align="left"
/>
<el-table-column prop="contractname" label="合同名称" width="0" align="left"
/>
<el-table-column prop="contractno" label="对方合同号" width="0" align="left"
/>
<el-table-column prop="contracttype" label="合同类型 " width="0" align="left"
/>
<el-table-column prop="classification" label="合同分类 " width="0" align="left"
/>
<el-table-column prop="declarationdate" label="申报日期" width="0" align="left"
/>
<el-table-column prop="name" label="供应商/客户名" width="0" align="left"
/>
<el-table-column prop="num" label="数量" width="0" align="left"
/>
<el-table-column prop="amount" label="金额" width="0" align="left"
/>
<el-table-column prop="deptname" label="部门名称" width="0" align="left"
/>
<el-table-column prop="remark" label="备注" width="0" align="left"
/>
<el-table-column prop="creatorusername" label="录入人" width="0" align="left"
/>
<el-table-column label="合同状态" width="0" prop="status" algin="left"
>
<template slot-scope="scope">
{{ scope.row.status | dynamicText(statusOptions) }}
</template>
</el-table-column>
<el-table-column label="操作" fixed="right"
width="150" >
<template slot-scope="scope">
<el-button type="text"
@click="addOrUpdateHandle(scope.row.c_id)" >编辑
</el-button>
<el-button type="text" class="JNPF-table-delBtn" @click="handleDel(scope.row.c_id)">
</el-button>
<el-button type="text"
@click="goDetail(scope.row.c_id)">详情
</el-button>
</template>
</el-table-column>
</JNPF-table>
<pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize" @pagination="initData"/>
</div>
</div>
<JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh"/>
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download"/>
<Detail v-if="detailVisible" ref="Detail" @refresh="detailVisible=false"/>
</div>
</template>
<script>
import request from '@/utils/request'
import {getDictionaryDataSelector} from '@/api/systemData/dictionary'
import JNPFForm from './Form'
import ExportBox from './ExportBox'
import {getDataInterfaceRes} from '@/api/systemData/dataInterface'
import Detail from './Detail'
export default {
components: {JNPFForm, ExportBox,Detail},
data() {
return {
detailVisible: false,
query: {
},
treeProps: {
children: 'children',
label: 'fullName',
value: 'id'
},
list: [],
listLoading: true,
multipleSelection: [], total: 0,
listQuery: {
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "",
},
formVisible: false,
exportBoxVisible: false,
columnList: [
{prop: 'contractcode', label: '合同编码'},
{prop: 'contractname', label: '合同名称'},
{prop: 'contractno', label: '对方合同号'},
{prop: 'contracttype', label: '合同类型 '},
{prop: 'classification', label: '合同分类 '},
{prop: 'declarationdate', label: '申报日期'},
{prop: 'name', label: '供应商/客户名'},
{prop: 'num', label: '数量'},
{prop: 'amount', label: '金额'},
{prop: 'deptname', label: '部门名称'},
{prop: 'remark', label: '备注'},
{prop: 'creatorusername', label: '录入人'},
{prop: 'status', label: '合同状态'},
],
statusOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
statusProps:{"label":"fullName","value":"id"},
bidopeningdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
bidopeningdateProps:{"label":"fullName","value":"id"},
startdateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],
startdateProps:{"label":"fullName","value":"id"},
}
},
computed: {
menuId() {
return this.$route.meta.modelId || ''
}
},
created() {
this.initData()
},
methods: {
goDetail(id){
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(id)
})
},
sortChange({column, prop, order}) {
this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
this.listQuery.sidx = !order ? '' : prop
this.initData()
},
initData() {
this.listLoading = true;
let _query = {
...this.listQuery,
...this.query,
menuId:this.menuId
};
request({
url: `/api/example/Jg_contract/getList`,
method: 'post',
data: _query
}).then(res => {
var _list =[];
for(let i=0;i<res.data.list.length;i++){
let _data = res.data.list[i];
_list.push(_data)
}
this.list = _list
this.total = res.data.pagination.total
this.listLoading = false
})
},
handleDel(id) {
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/example/Jg_contract/${id}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
}).catch(() => {
});
},
handleSelectionChange(val) {
const res = val.map(item => item.c_id)
this.multipleSelection = res
},
handleBatchRemoveDel() {
if (!this.multipleSelection.length) {
this.$message({
type: 'error',
message: '请选择一条数据',
duration: 1500,
})
return
}
const ids = this.multipleSelection.join()
this.$confirm('您确定要删除这些数据吗, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/example/Jg_contract/batchRemove/${ids}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
}).catch(() => {
})
},
addOrUpdateHandle(id, isDetail) {
this.formVisible = true
this.$nextTick(() => {
this.$refs.JNPFForm.init(id, isDetail)
})
},
exportData() {
this.exportBoxVisible = true
this.$nextTick(() => {
this.$refs.ExportBox.init(this.columnList)
})
},
download(data) {
let query = {...data, ...this.listQuery, ...this.query,menuId:this.menuId}
request({
url: `/api/example/Jg_contract/Actions/Export`,
method: 'GET',
data: query
}).then(res => {
if (!res.data.url) return
this.jnpf.downloadFile(res.data.url)
this.$refs.ExportBox.visible = false
this.exportBoxVisible = false
})
},
search() {
this.listQuery = {
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "",
}
this.initData()
},
refresh(isrRefresh) {
this.formVisible = false
if (isrRefresh) this.reset()
},
reset() {
for (let key in this.query) {
this.query[key] = undefined
}
this.search()
}
}
}
</script>
Loading…
Cancel
Save