mirror of
https://git.hmsn.ink/kospo/svcm/oa.git
synced 2026-03-20 01:12:30 +09:00
func : 계약종료, 대금지급전.중 컴포넌트 데이터 분기 처리중
This commit is contained in:
@@ -121,7 +121,9 @@ function getContractDetail(){
|
|||||||
function getBilling(row){
|
function getBilling(row){
|
||||||
if(params.sessionUser.sabun == row.regSabun && (row.contStatCd == '0200' || row.contStatCd == '0300')){
|
if(params.sessionUser.sabun == row.regSabun && (row.contStatCd == '0200' || row.contStatCd == '0300')){
|
||||||
//대금지급 전
|
//대금지급 전
|
||||||
router.push({ path: '/app/documentManagementInsertUpdate', state: { key: row.contNo}})
|
|
||||||
|
const statusFlag = row.contStatCd
|
||||||
|
router.push({ path: '/app/documentManagementInsertUpdate', state: { key: row.contNo, status: statusFlag}})
|
||||||
}else if(params.sessionUser.sabun == row.regSabun && (row.contStatCd == '0400' || row.contStatCd == '0500')){
|
}else if(params.sessionUser.sabun == row.regSabun && (row.contStatCd == '0400' || row.contStatCd == '0500')){
|
||||||
//대금지급중, 대금지급완료
|
//대금지급중, 대금지급완료
|
||||||
router.push({ path: '/app/documentManagementDetail', state: { key: row.contNo}})
|
router.push({ path: '/app/documentManagementDetail', state: { key: row.contNo}})
|
||||||
|
|||||||
@@ -2,39 +2,25 @@
|
|||||||
|
|
||||||
import {getBeforeSlipDetail, saveTempSlip} from "/@src/service/slipApi.ts";
|
import {getBeforeSlipDetail, saveTempSlip} from "/@src/service/slipApi.ts";
|
||||||
import {formatDatefromStringDate} from "/@src/utils/common/comfunc.ts";
|
import {formatDatefromStringDate} from "/@src/utils/common/comfunc.ts";
|
||||||
import {ApprsList} from "/@src/utils/types.ts";
|
import {ApprsList, type iPbAtt, type Person} from "/@src/utils/types.ts";
|
||||||
import {VTabsItem} from "/@src/components/app-vuero/VCustomTabs.vue";
|
import {VTabsItem} from "/src/components/app-vuero/VCustomTabs.vue";
|
||||||
|
import {getContractDetail} from "/@src/service/contractApi.ts";
|
||||||
|
import {deletePrcsFile} from "/@src/service/priceApi.ts";
|
||||||
|
|
||||||
onBeforeMount(async ()=>{
|
onBeforeMount(async ()=>{
|
||||||
const result = await getBeforeSlipDetail(history.state.key)
|
let result;
|
||||||
|
if(history.state.status == '0200'){
|
||||||
|
// 계약종료는 contract api 결재선 추가해야 됨
|
||||||
|
result = await getContractDetail(history.state.key)
|
||||||
|
getDetailBeforeList(result)
|
||||||
|
}else if(history.state.status == '0300'){
|
||||||
|
// 대금지급 전 slip api 에서 결재선까지 받아옴
|
||||||
|
result = await getBeforeSlipDetail(history.state.key)
|
||||||
getDetailList(result)
|
getDetailList(result)
|
||||||
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
const notyf = useNotyf()
|
const notyf = useNotyf()
|
||||||
//결재선 담아오는 변수
|
|
||||||
const apprsList = ref<ApprsList>()
|
|
||||||
|
|
||||||
const getDetailList = (item) => {
|
|
||||||
console.log("getDetailList",item)
|
|
||||||
params.contNo = item.contNo
|
|
||||||
affiliationCode.value = item.bukrs//소속
|
|
||||||
params.title = item.bktxt //계약명
|
|
||||||
params.regNm = item.lifnr //계약상대자
|
|
||||||
params.place = ''// 업체명 bupla
|
|
||||||
formattedNumber.value = item.wrbtrS //공급가액
|
|
||||||
taxCode.value= item.mwskz //세금코드 ->세금계산서랑 같이 ?
|
|
||||||
currencyCode.value = item.waers //통화
|
|
||||||
params.regSdt = formatDatefromStringDate(item.bldat) //증빙일
|
|
||||||
params.regSdt2 = formatDatefromStringDate(item.budat)//전기일
|
|
||||||
params.bankl = item.bankl //계좌관리 은행코드
|
|
||||||
params.bankn = item.bankn//계좌관리 계좌번호
|
|
||||||
//taxInvoiceCode.value = item.mwskz //세금계산서 따로 연계 태워야됨 todo
|
|
||||||
// item.hkont G/L 계정
|
|
||||||
selectCostCode.value = ''//코스트센터 kostl wbs요소코드 projk
|
|
||||||
//코드
|
|
||||||
//첨부파일
|
|
||||||
params.apprList = item.zwf0011t.apprs
|
|
||||||
console.log("apprsList.value",apprsList.value)
|
|
||||||
}
|
|
||||||
|
|
||||||
const affiliationCode = ref()
|
const affiliationCode = ref()
|
||||||
const taxCode = ref('')
|
const taxCode = ref('')
|
||||||
@@ -42,23 +28,43 @@ const currencyCode = ref('KRW')
|
|||||||
const taxInvoiceCode = ref()
|
const taxInvoiceCode = ref()
|
||||||
const accountSubjectCode = ref()
|
const accountSubjectCode = ref()
|
||||||
const params = reactive({
|
const params = reactive({
|
||||||
|
//샘플 데이터 형식으로 맞춤
|
||||||
|
// https://git.hmsn.ink/kospo/svcm/api/-/blob/main/api/slip/%EC%9E%84%EC%8B%9C%EC%A0%84%ED%91%9C%EC%A0%80%EC%9E%A5.http?ref_type=heads
|
||||||
cateCd: '',
|
cateCd: '',
|
||||||
contNo: '',
|
contNo: '',
|
||||||
title: '',
|
bldat: '',
|
||||||
|
budat: '',
|
||||||
|
regSdt: '',
|
||||||
|
regSdt2: '',
|
||||||
|
//waers => currencyCode ref
|
||||||
|
bktxt: '', //계약명
|
||||||
|
lifnr: '', //계약상대자
|
||||||
|
//wrbtr => formattedNumber ref
|
||||||
|
//mwskz => taxCode ref
|
||||||
|
//gsber => affiliationCode ref
|
||||||
|
//bupla => affiliationCode ref
|
||||||
|
zterm: '',
|
||||||
|
banks: '',
|
||||||
|
bankl:'',
|
||||||
|
bankn:'',
|
||||||
|
hkont: '',
|
||||||
|
wrbtrS: '', //공급가액 체크 필요 todo
|
||||||
|
kostl: '',
|
||||||
|
projk: '',
|
||||||
|
trtGubun: '',
|
||||||
|
txBillSeq: '',
|
||||||
|
slipAtts: [],
|
||||||
|
//apprList:[], ==> apprLine 변수로 변경 // 결재선 데이터 키: 값(배열 들어감)
|
||||||
|
|
||||||
compNm: '',
|
compNm: '',
|
||||||
signDt: '',
|
signDt: '',
|
||||||
contAmt: 0,
|
contAmt: 0,
|
||||||
contStatCd: '',
|
contStatCd: '',
|
||||||
contStat: '',
|
contStat: '',
|
||||||
regsabun: '',
|
regsabun: '',
|
||||||
regNm: '',
|
|
||||||
place: '',
|
place: '',
|
||||||
regDt: '',
|
regDt: '',
|
||||||
reason: '',
|
reason: '',
|
||||||
regSdt: '',
|
|
||||||
regSdt2: '',
|
|
||||||
bankl:'',
|
|
||||||
bankn:'',
|
|
||||||
page: 1,
|
page: 1,
|
||||||
row: 10,
|
row: 10,
|
||||||
flexColumn: [
|
flexColumn: [
|
||||||
@@ -66,11 +72,50 @@ const params = reactive({
|
|||||||
{ key: 'lineclsf', label: '구분', value: {} },
|
{ key: 'lineclsf', label: '구분', value: {} },
|
||||||
{ key: 'bname', label: '사원번호', value: {} },
|
{ key: 'bname', label: '사원번호', value: {} },
|
||||||
{ key: 'abscd', label: '근태관리', value: {} },
|
{ key: 'abscd', label: '근태관리', value: {} },
|
||||||
|
{ key: 'actions', label: '동작' },
|
||||||
],
|
],
|
||||||
apprList:[],
|
|
||||||
modalColumn: [],
|
modalColumn: [],
|
||||||
})
|
})
|
||||||
|
const pbAtts = ref<iPbAtt[]>(params.slipAtts)
|
||||||
const formattedNumber = ref(0)
|
const formattedNumber = ref(0)
|
||||||
|
const apprLine = ref<VTabsItem[]>([])
|
||||||
|
const getDetailList = (item) => {
|
||||||
|
console.log("getDetailList",item)
|
||||||
|
params.contNo = item.contNo
|
||||||
|
params.regSdt = formatDatefromStringDate(item.bldat) //증빙일
|
||||||
|
params.regSdt2 = formatDatefromStringDate(item.budat)//전기일
|
||||||
|
params.place = ''// 업체명 bupla
|
||||||
|
currencyCode.value = item.waers //통화
|
||||||
|
params.bktxt = item.bktxt //계약명
|
||||||
|
params.lifnr = item.lifnr //계약상대자
|
||||||
|
formattedNumber.value = item.wrbtrS //공급가액
|
||||||
|
taxCode.value= item.mwskz //세금코드 ->세금계산서랑 같이 ?
|
||||||
|
affiliationCode.value = item.bupla//소속 gsber bupla
|
||||||
|
params.zterm = item.zterm
|
||||||
|
params.banks = item.banks
|
||||||
|
params.bankl = item.bankl //계좌관리 은행코드
|
||||||
|
params.bankn = item.bankn//계좌관리 계좌번호
|
||||||
|
//taxInvoiceCode.value = item.mwskz //세금계산서 따로 연계 태워야됨 todo
|
||||||
|
params.hkont = item.hkont //G/L 계정
|
||||||
|
selectCostCode.value = ''//코스트센터 kostl wbs요소코드 projk
|
||||||
|
params.wrbtrS = item.wrbtrS
|
||||||
|
params.kostl = item.kostl
|
||||||
|
params.projk = item.projk
|
||||||
|
params.trtGubun = item.trtGubun
|
||||||
|
params.txBillSeq = item.txBillSeq
|
||||||
|
params.slipAtts = item.slipAtts//첨부파일
|
||||||
|
console.log("params.slipAtts",params.slipAtts)
|
||||||
|
apprLine.value = item.zwf0011t.apprs
|
||||||
|
console.log("apprsList.value",apprLine.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDetailBeforeList = (item) => {
|
||||||
|
console.log("item before",item)
|
||||||
|
params.contNo = item.contNo
|
||||||
|
params.place = item.compNm// !!!!!!업체명 bupla
|
||||||
|
params.bktxt = item.title //!!!!!!계약명
|
||||||
|
params.lifnr = item.bizNo //!!!!!계약상대자
|
||||||
|
}
|
||||||
|
|
||||||
function onInput(event) {
|
function onInput(event) {
|
||||||
let onlyNumber = event.target.value.replace(/[^0-9]/g, '')
|
let onlyNumber = event.target.value.replace(/[^0-9]/g, '')
|
||||||
@@ -93,28 +138,40 @@ const createChit = async () => {
|
|||||||
try{
|
try{
|
||||||
loading.value = true
|
loading.value = true
|
||||||
const createParams = {
|
const createParams = {
|
||||||
contNo : params.contNo,
|
contNo : params.contNo, //"CONT-0000000005",
|
||||||
bldat : '20250602',//params.regSdt.replace("-",""),
|
bldat : '20250602',//params.regSdt.replace("-",""), // "20250501",
|
||||||
budat : '20250602',//params.regSdt2.replace("-",""),
|
budat : '20250610',//params.regSdt2.replace("-",""), // "20250502",
|
||||||
waers : currencyCode.value,
|
waers : "KRW", //currencyCode.value, //"KRW",
|
||||||
bktxt : params.title,
|
bktxt : params.bktxt,//"전표 생성 테스트1",
|
||||||
lifnr : params.regNm,
|
lifnr : params.lifnr, //999-99-99999",
|
||||||
wrbtr : formattedNumber.value, //수정필요
|
wrbtr : "1203", //formattedNumber.value, //!!!!!수정필요 "1203",
|
||||||
mwskz : taxCode.value,
|
mwskz : "V4", //taxCode.value, //"V4",
|
||||||
gsber : affiliationCode.value, //무슨 값인지 모름 gsber bukrs bupla
|
gsber : '1000', //affiliationCode.value, //무슨 값인지 모름 gsber bukrs bupla 같다고 함 1000
|
||||||
bupla : affiliationCode.value,
|
bupla : '1000', //affiliationCode.value, //1000
|
||||||
zterm : '', //어떤 값인지 모름
|
zterm : 'PF00', //params.zterm, //!!!!!!어떤 값인지 모름 PF00
|
||||||
banks : '' , //어떤 값인지 모름
|
banks : 'KR', //params.banks , //어떤 값인지 모름 KR
|
||||||
bankl : params.bankl,
|
bankl : '012', //params.bankl, //012
|
||||||
bankn : params.bankn,
|
bankn : '3510876657453', //params.bankn, //3510876657453
|
||||||
hkont : '',//G/L 계정
|
hkont : '5366010', //params.hkont,//G/L 계정 5366010
|
||||||
wrbtrS : formattedNumber.value,
|
wrbtrS : formattedNumber.value, //1102
|
||||||
kostl : selectCostCode.value,
|
kostl : "12330", //!!!!!!12330
|
||||||
projk : selectCostCode.value,
|
projk : selectCostCode.value, //빈값
|
||||||
trtGubun : '',//어떤 값인지 모름
|
trtGubun : '11', //params.trtGubun,//!!!!!!어떤 값인지 모름 11
|
||||||
txBillSeq : '',//어떤 값인지 모름
|
txBillSeq : '202503231', //params.txBillSeq,//!!!!!!어떤 값인지 모름 202503231
|
||||||
slipAtts: '', // 파일 업로드
|
slipAtts: pbAtts.value.map(req => ({
|
||||||
//zwf0011t : { params.apprList}
|
logiFnm: req.logiFnm,
|
||||||
|
data: req.data})),//첨부파일 데이터,
|
||||||
|
zwf0011t : {
|
||||||
|
wkftx : "결재 테스트11", //!!!!!!어떤 값인지 모름
|
||||||
|
apprs : [{
|
||||||
|
label: apprLine.value[0].label,
|
||||||
|
value: apprLine.value[0].value.map((req) => ({
|
||||||
|
lineclsf : req.lineclsf,
|
||||||
|
bname : req.bname,
|
||||||
|
abscd : req.abscd
|
||||||
|
}))
|
||||||
|
}]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
notyf.dismissAll()
|
notyf.dismissAll()
|
||||||
res = await saveTempSlip(createParams)
|
res = await saveTempSlip(createParams)
|
||||||
@@ -129,11 +186,162 @@ const createChit = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const updateChit = async () => {
|
||||||
|
let res = null
|
||||||
|
try{
|
||||||
|
loading.value = true
|
||||||
|
const createParams = {
|
||||||
|
contNo : params.contNo, //"CONT-0000000005",
|
||||||
|
bldat : '20250602',//params.regSdt.replace("-",""), // "20250501",
|
||||||
|
budat : '20250610',//params.regSdt2.replace("-",""), // "20250502",
|
||||||
|
waers : currencyCode.value, //"KRW",
|
||||||
|
bktxt : params.bktxt,//"전표 생성 테스트1",
|
||||||
|
lifnr : params.lifnr, //999-99-99999",
|
||||||
|
wrbtr : formattedNumber.value, //수정필요 "1203",
|
||||||
|
mwskz : taxCode.value, //"V4",
|
||||||
|
gsber : affiliationCode.value, //무슨 값인지 모름 gsber bukrs bupla 같다고 함 1000
|
||||||
|
bupla : affiliationCode.value, //1000
|
||||||
|
zterm : params.zterm, //어떤 값인지 모름 PF00
|
||||||
|
banks : params.banks , //어떤 값인지 모름 KR
|
||||||
|
bankl : params.bankl, //012
|
||||||
|
bankn : params.bankn, //3510876657453
|
||||||
|
hkont : params.hkont,//G/L 계정 5366010
|
||||||
|
wrbtrS : formattedNumber.value, //1102
|
||||||
|
kostl : "12330", //12330
|
||||||
|
projk : selectCostCode.value, //빈값
|
||||||
|
trtGubun : params.trtGubun,//어떤 값인지 모름 11
|
||||||
|
txBillSeq : params.txBillSeq,//어떤 값인지 모름 202503231
|
||||||
|
slipAtts: pbAtts.value.map(req => ({
|
||||||
|
logiFnm: req.logiFnm,
|
||||||
|
data: req.data})),//첨부파일 데이터,
|
||||||
|
zwf0011t : {
|
||||||
|
wkftx : "결재 테스트11", //어떤 값인지 모름
|
||||||
|
apprs : [{
|
||||||
|
label: apprLine.value[0].label,
|
||||||
|
value: apprLine.value[0].value.map((req) => ({
|
||||||
|
lineclsf : req.lineclsf,
|
||||||
|
bname : req.bname,
|
||||||
|
abscd : req.abscd
|
||||||
|
}))
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
notyf.dismissAll()
|
||||||
|
res = await saveTempSlip(createParams)
|
||||||
|
if(res.request.status == '200'){
|
||||||
|
notyf.primary('등록 되었습니다.')
|
||||||
|
router.push({path: '/app/priceManagement'})
|
||||||
|
}
|
||||||
|
}catch(e){
|
||||||
|
notyf.error(e.message)
|
||||||
|
}finally {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
const selectedTab = ref<VTabsItem[]>()
|
const selectedTab = ref<VTabsItem[]>()
|
||||||
const addTabFromRow =()=>{
|
const addTabFromRow =()=>{
|
||||||
console.log("row",row)
|
console.log("row",row)
|
||||||
console.log("row",index)
|
console.log("row",index)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const onFileClick = () => {
|
||||||
|
const input = <any> document.querySelector('.file-input')
|
||||||
|
input.click()
|
||||||
|
}
|
||||||
|
|
||||||
|
const onFileChange = (e: any) => {
|
||||||
|
Array.from(e.target.files).forEach((file: any) => {
|
||||||
|
const reader = new FileReader()
|
||||||
|
reader.onload = () => {
|
||||||
|
const result = <string>reader.result
|
||||||
|
const pbAtt = <iPbAtt>{ // todo 여기 첨부파일로 변경 필요
|
||||||
|
prcsNo: params.prcsNo,
|
||||||
|
logiFnm: file.name,
|
||||||
|
size: file.size,
|
||||||
|
data: result.split(',')[1],
|
||||||
|
}
|
||||||
|
notyf.dismissAll()
|
||||||
|
if(pbAtt.logiFnm.includes('.pdf')) { //todo 여러개 올릴 때 이슈 발생 확인 필요
|
||||||
|
pbAtts.value.push(pbAtt)
|
||||||
|
}else{
|
||||||
|
notyf.error("pdf 파일만 업로드 가능합니다.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
reader.readAsDataURL(file)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const onFilDelete = async (prcsNo: string, index: number, fileOrd: number) => {
|
||||||
|
notyf.dismissAll()
|
||||||
|
const confirmed = confirm('삭제하시겠습니까?')
|
||||||
|
if (!prcsNo) {
|
||||||
|
if (confirmed){
|
||||||
|
pbAtts.value.splice(index, 1)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (confirmed) {
|
||||||
|
await deletePrcsFile(prcsNo, fileOrd).then((res: string) => {
|
||||||
|
notyf.success(res)
|
||||||
|
pbAtts.value.splice(index, 1)
|
||||||
|
}).catch((err) => {
|
||||||
|
notyf.error('삭제 중 오류가 발생했습니다.')
|
||||||
|
console.error(err)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const onPrcsFileDownload = async (prcsNo: string, fileOrd: number, logiFnm: string) => {
|
||||||
|
const link = document.createElement('a')
|
||||||
|
link.href = `https://svcm.hmsn.ink/api/prcs/${prcsNo}/${fileOrd}` //todo
|
||||||
|
link.setAttribute('download', logiFnm)
|
||||||
|
link.setAttribute('target', '_blank')
|
||||||
|
document.body.appendChild(link)
|
||||||
|
link.click()
|
||||||
|
}
|
||||||
|
|
||||||
|
const selectUser = ref<Person[]>([])
|
||||||
|
|
||||||
|
const isDuplicate = (person: Person) =>{
|
||||||
|
console.log("value[0].value", apprLine.value)
|
||||||
|
return apprLine.value.some((p) => p.lineclsf === person.sabun)}
|
||||||
|
|
||||||
|
watch(
|
||||||
|
selectUser,
|
||||||
|
(newPersons) => {
|
||||||
|
console.log("newPersons",newPersons)
|
||||||
|
if (Array.isArray(newPersons) && newPersons.length > 0) {
|
||||||
|
const filtered = newPersons.filter((p) => !isDuplicate(p))
|
||||||
|
apprLine.value = [...apprLine.value, ...filtered]
|
||||||
|
selectUser.value = []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ deep: true }
|
||||||
|
)
|
||||||
|
|
||||||
|
const onPriceDelete = (index: number) => {
|
||||||
|
|
||||||
|
if(apprLine.value.length-1 !== params.flexColumn.length
|
||||||
|
|| (params.flexColumn.length == 8 && apprLine.value.length-1 == params.flexColumn.length))
|
||||||
|
{
|
||||||
|
apprLine.value.splice(index, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const moveUp = (index: number) => {
|
||||||
|
if (index <= 0) return
|
||||||
|
let temp = apprLine.value[index]
|
||||||
|
apprLine.value[index] = apprLine.value[index - 1]
|
||||||
|
apprLine.value[index - 1] = temp
|
||||||
|
}
|
||||||
|
|
||||||
|
const moveDown = (index: number) => {
|
||||||
|
if (index >= apprLine.value.length - 1) return
|
||||||
|
let temp = apprLine.value[index]
|
||||||
|
apprLine.value[index] = apprLine.value[index + 1]
|
||||||
|
apprLine.value[index + 1] = temp
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -172,7 +380,7 @@ const addTabFromRow =()=>{
|
|||||||
<VField>
|
<VField>
|
||||||
<VControl>
|
<VControl>
|
||||||
<input
|
<input
|
||||||
v-model="params.title"
|
v-model="params.bktxt"
|
||||||
class="input custom-text-filter"
|
class="input custom-text-filter"
|
||||||
placeholder="계약명"
|
placeholder="계약명"
|
||||||
>
|
>
|
||||||
@@ -186,7 +394,7 @@ const addTabFromRow =()=>{
|
|||||||
<VField>
|
<VField>
|
||||||
<VControl>
|
<VControl>
|
||||||
<input
|
<input
|
||||||
v-model="params.regNm"
|
v-model="params.lifnr"
|
||||||
class="input custom-text-filter"
|
class="input custom-text-filter"
|
||||||
placeholder="사업자번호"
|
placeholder="사업자번호"
|
||||||
>
|
>
|
||||||
@@ -385,7 +593,7 @@ const addTabFromRow =()=>{
|
|||||||
<VField>
|
<VField>
|
||||||
<VControl>
|
<VControl>
|
||||||
<input
|
<input
|
||||||
v-model="params.title"
|
v-model="params.bktxt"
|
||||||
class="input custom-text-filter"
|
class="input custom-text-filter"
|
||||||
placeholder="코드"
|
placeholder="코드"
|
||||||
>
|
>
|
||||||
@@ -397,9 +605,56 @@ const addTabFromRow =()=>{
|
|||||||
<tr>
|
<tr>
|
||||||
<td>첨부파일</td>
|
<td>첨부파일</td>
|
||||||
<td colspan="1">
|
<td colspan="1">
|
||||||
<VButton color="info">
|
<VField>
|
||||||
등록
|
<div class="form-label">
|
||||||
|
<div class="file has-name is-fullwidth">
|
||||||
|
<input
|
||||||
|
class="file-input hide"
|
||||||
|
type="file"
|
||||||
|
multiple
|
||||||
|
@change="(e) => onFileChange(e)"
|
||||||
|
>
|
||||||
|
<VLabel>
|
||||||
|
<VButton icon="fas fa-plus" color="info" class="file-trigger" @click="onFileClick" >
|
||||||
|
<span>파일업로드</span>
|
||||||
</VButton>
|
</VButton>
|
||||||
|
</VLabel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<VControl>
|
||||||
|
<div
|
||||||
|
v-for="(f, i) in pbAtts"
|
||||||
|
:key="f.logiFnm"
|
||||||
|
class="content estimate-file-wrapper"
|
||||||
|
>
|
||||||
|
<div class="estimate-file-name">
|
||||||
|
{{ f.logiFnm }}{{" ("}}{{Math.ceil(f.size / 1024)}}kb{{")"}}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<i class="fa fa-trash estimate-file-delete" @click="onFilDelete(f.bizNo, i, f.fileOrd)" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</VControl>
|
||||||
|
</VField>
|
||||||
|
<div class="column is-12">
|
||||||
|
<VField>
|
||||||
|
<VControl>
|
||||||
|
<div
|
||||||
|
v-for="f in params.slipAtts"
|
||||||
|
:key="f.logiFnm"
|
||||||
|
class="content estimate-file-wrapper"
|
||||||
|
>
|
||||||
|
<div class="estimate-file-name">
|
||||||
|
{{ f.logiFnm }}{{" ("}}{{Math.ceil(f.size / 1024)}}kb{{")"}}
|
||||||
|
</div>
|
||||||
|
<span>
|
||||||
|
<i class="fa fa-download estimate-file-download" @click="onPrcsFileDownload(f.prcsNo, f.fileOrd, f.logiFnm)" />
|
||||||
|
<i class="fa fa-trash estimate-file-delete" @click="onFilDelete(f.prcsNo, i, f.fileOrd)" />
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</VControl>
|
||||||
|
</VField>
|
||||||
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td colspan="5">
|
<td colspan="5">
|
||||||
<div>('준공보고서' 또는 '검수보고서' 등)</div>
|
<div>('준공보고서' 또는 '검수보고서' 등)</div>
|
||||||
@@ -411,23 +666,26 @@ const addTabFromRow =()=>{
|
|||||||
<VButton @click="createChit">전 표 생 성</VButton>
|
<VButton @click="createChit">전 표 생 성</VButton>
|
||||||
<VButton @click="cancel">취 소</VButton>
|
<VButton @click="cancel">취 소</VButton>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="column is-12">
|
||||||
|
<VUserSap v-model="selectUser" placeholder="사번이나 이름으로 검색해주세요"/>
|
||||||
|
</div>
|
||||||
<VCustomTabs
|
<VCustomTabs
|
||||||
type="boxed"
|
type="boxed"
|
||||||
v-model:selected="selectedTab"
|
v-model:selected="selectedTab"
|
||||||
:tabs="params.apprList">
|
:tabs="apprLine">
|
||||||
<template #tab-link-label="{ tab }">
|
<template #tab-link-label="{ tab }">
|
||||||
{{ tab.label }}
|
{{ tab.label }}
|
||||||
</template>
|
</template>
|
||||||
<template #tab="{ activeValue }">
|
<template #tab="{ activeValue }">
|
||||||
<div>
|
<div>
|
||||||
<ComVFlexTable
|
<ComVFlexTable
|
||||||
:data="activeValue? activeValue[0] : []"
|
:data="activeValue? activeValue : []"
|
||||||
:columns="params.flexColumn"
|
:columns="params.flexColumn"
|
||||||
:compact="true"
|
:compact="true"
|
||||||
:clickable="true"
|
:clickable="true"
|
||||||
@rowClick="addTabFromRow"
|
@rowClick="addTabFromRow"
|
||||||
>
|
>
|
||||||
<template #body-cell="{row, column}">
|
<template #body-cell="{row, column, index, value}">
|
||||||
<span v-if="column.key=='lineclsf'" class="column">
|
<span v-if="column.key=='lineclsf'" class="column">
|
||||||
<VField class="pr-1">
|
<VField class="pr-1">
|
||||||
<VCodeSelect
|
<VCodeSelect
|
||||||
@@ -444,7 +702,11 @@ const addTabFromRow =()=>{
|
|||||||
/>
|
/>
|
||||||
</VField>
|
</VField>
|
||||||
</span>
|
</span>
|
||||||
<span v-else>{{ row[column.key] }}</span>
|
<span v-else-if="column.key === 'actions'" class="flex gap-1">
|
||||||
|
<VCustomButton v-if="index != 1" @click="moveUp(index)" icon="lucide:arrow-up" />
|
||||||
|
<VCustomButton @click="moveDown(index)" icon="lucide:arrow-down" />
|
||||||
|
<VCustomButton @click="onPriceDelete(index)">{{"삭제"}}</VCustomButton>
|
||||||
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</ComVFlexTable>
|
</ComVFlexTable>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user