Merge pull request 'yyw提交' (#17) from yyw into master

Reviewed-on: #17
This commit is contained in:
vivanlina 2025-09-29 10:37:17 +00:00
commit e8dd81080e
10 changed files with 125 additions and 99 deletions

View File

@ -66,14 +66,14 @@
<div class="huibox"> <div class="huibox">
<div> <div>
打款前总实际订单金额{{itemInfo.total_amount}} 打款前总实际订单金额<span>{{itemInfo.total_amount}}</span>
总实际已支付金额{{itemInfo.has_paid_amount}} 总实际已支付金额<span>{{itemInfo.has_paid_amount}}</span>
总实际未支付金额{{ ((itemInfo.total_amount * 100 - itemInfo.has_paid_amount * 100) / 100).toFixed(2) }} 总实际未支付金额<span>{{ ((itemInfo.total_amount * 100 - itemInfo.has_paid_amount * 100) / 100).toFixed(2) }}</span>
</div> </div>
<div> <div>
打款后总实际订单金额{{real_total_amount}} 打款后总实际订单金额<span>{{real_total_amount}}</span>
总实际已支付金额{{ ((itemInfo.has_paid_amount * 100 + total_amount * 100) / 100).toFixed(2) }} 总实际已支付金额<span>{{ ((itemInfo.has_paid_amount * 100 + total_amount * 100) / 100).toFixed(2) }}</span>
总实际未支付金额{{ ((real_total_amount * 100 - itemInfo.has_paid_amount * 100 - total_amount * 100) / 100).toFixed(2) }} 总实际未支付金额<span>{{ ((real_total_amount * 100 - itemInfo.has_paid_amount * 100 - total_amount * 100) / 100).toFixed(2) }}</span>
</div> </div>
</div> </div>
</div> </div>
@ -295,5 +295,9 @@ export default {
padding: 15px; padding: 15px;
line-height: 30px; line-height: 30px;
border-left: 3px solid #3c8dbc; border-left: 3px solid #3c8dbc;
span{
font-weight: 600;
color: #f00;
}
} }
</style> </style>

View File

@ -16,7 +16,7 @@
<el-option v-for="it in supplierList" :key="it.id" :label="it.supplier_name" :value="it.id" /> <el-option v-for="it in supplierList" :key="it.id" :label="it.supplier_name" :value="it.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<template v-if="Type == 1"> <!-- <template v-if="Type == 1">
<el-form-item label="商品信息:"> <el-form-item label="商品信息:">
<el-table :data="itemInfo.products" style="width: 100%;margin-top: 15px;" border> <el-table :data="itemInfo.products" style="width: 100%;margin-top: 15px;" border>
<el-table-column label="商品名称" prop="goods.title" /> <el-table-column label="商品名称" prop="goods.title" />
@ -57,7 +57,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
</template> </template> -->
<div v-for="(item, index) in logsList" :key="item.id"> <div v-for="(item, index) in logsList" :key="item.id">
<div v-if="item.extend && item.extend.purchaseOrder"> <div v-if="item.extend && item.extend.purchaseOrder">
@ -150,14 +150,14 @@
<div style="padding: 20px 0;color: #f00;">合计申请打款金额{{item.amount}}</div> <div style="padding: 20px 0;color: #f00;">合计申请打款金额{{item.amount}}</div>
<div class="huibox"> <div class="huibox">
<div> <div>
打款前总实际订单金额{{item.extend.before_amount}} 打款前总实际订单金额<span>{{item.extend.before_amount}}</span>
总实际已支付金额{{item.extend.purchaseOrder.has_paid_amount}} 总实际已支付金额<span>{{item.extend.purchaseOrder.has_paid_amount}}</span>
总实际未支付金额{{ ((item.extend.before_amount * 100 - item.extend.purchaseOrder.has_paid_amount * 100) / 100).toFixed(2) }} 总实际未支付金额<span>{{ ((item.extend.before_amount * 100 - item.extend.purchaseOrder.has_paid_amount * 100) / 100).toFixed(2) }}</span>
</div> </div>
<div> <div>
打款后总实际订单金额{{item.extend.purchaseOrder.total_amount}} 打款后总实际订单金额<span>{{item.extend.purchaseOrder.total_amount}}</span>
总实际已支付金额{{ ((item.extend.purchaseOrder.has_paid_amount * 100 + item.amount * 100) / 100).toFixed(2) }} 总实际已支付金额<span>{{ ((item.extend.purchaseOrder.has_paid_amount * 100 + item.amount * 100) / 100).toFixed(2) }}</span>
总实际未支付金额{{ ((item.extend.purchaseOrder.total_amount * 100 - item.extend.purchaseOrder.has_paid_amount * 100 - item.amount * 100) / 100).toFixed(2) }} 总实际未支付金额<span>{{ ((item.extend.purchaseOrder.total_amount * 100 - item.extend.purchaseOrder.has_paid_amount * 100 - item.amount * 100) / 100).toFixed(2) }}</span>
</div> </div>
</div> </div>
</template> </template>
@ -396,6 +396,16 @@ export default {
padding: 15px; padding: 15px;
line-height: 30px; line-height: 30px;
margin-bottom: 20px; margin-bottom: 20px;
span{
font-weight: 600;
color: #f00;
}
}
.sumbox{
span{
font-weight: 600;
color: #f00;
}
} }
.blue{ .blue{
color: #1989fa; color: #1989fa;

View File

@ -202,6 +202,7 @@ import { DeleteFilled, Search } from "@element-plus/icons"
import { reactive, toRefs, watch } from 'vue' import { reactive, toRefs, watch } from 'vue'
import { get, post } from '@/api/request' import { get, post } from '@/api/request'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { useStore } from 'vuex'
export default { export default {
components: { DeleteFilled, Search }, components: { DeleteFilled, Search },
@ -322,12 +323,20 @@ export default {
ElMessage({ type: 'success', message: '操作成功' }) ElMessage({ type: 'success', message: '操作成功' })
closeDialog() closeDialog()
context.emit('refresh') context.emit('refresh')
getWaitNum()
data.btnloading = false data.btnloading = false
}).catch(() => { }).catch(() => {
data.btnloading = false data.btnloading = false
}) })
} }
const $store = useStore()
const getWaitNum = () => {
get(`/api/board/waitToBeDone`).then((res) => {
$store.dispatch('setWaitNum', res.waitApproval)
})
}
function clearForm() { function clearForm() {
data.itemInfo = {} data.itemInfo = {}
data.feesList = [] data.feesList = []
@ -510,7 +519,8 @@ export default {
removeFee, removeFee,
openGoods, openGoods,
blurInput, blurInput,
getSumData getSumData,
getWaitNum
} }
} }
} }

View File

@ -2,79 +2,16 @@ import { createStore } from 'vuex'
export default createStore({ export default createStore({
state: { state: {
msgNum: 0, watiNum: 0
orderNum: 0,
noticeNum: 0,
workNum: 0,
tousuNum: 0,
annNum: 0,
orderType: '',
orderId: '',
workId: '',
msgDialog: false
}, },
mutations: { mutations: {
SET_MSGNUM: (state, num) => { SET_WAITNUM: (state, num) => {
state.msgNum = num state.watiNum = num
}, }
SET_ORDERNUM: (state, num) => {
state.orderNum = num
},
SET_NOTICENUM: (state, num) => {
state.noticeNum = num
},
SET_WORKNUM: (state, num) => {
state.workNum = num
},
SET_TOUSUNUM: (state, num) => {
state.tousuNum = num
},
SET_ORDERTYPE: (state, val) => {
state.orderType = val
},
SET_ORDERID: (state, val) => {
state.orderId = val
},
SET_WORKID: (state, val) => {
state.workId = val
},
SET_MSGDIALOG: (state, flag) => {
state.msgDialog = flag
},
SET_ANNNUM: (state, num) => {
state.annNum = num
},
}, },
actions: { actions: {
setMsgNum({ commit }, num) { setWaitNum({ commit }, num) {
commit('SET_MSGNUM', num) commit('SET_WAITNUM', num)
},
setOrderNum({ commit }, num) {
commit('SET_ORDERNUM', num)
},
setNoticeNum({ commit }, num) {
commit('SET_NOTICENUM', num)
},
setWorkNum({ commit }, num) {
commit('SET_WORKNUM', num)
},
setTousuNum({ commit }, num) {
commit('SET_TOUSUNUM', num)
},
setOrderType({ commit }, val) {
commit('SET_ORDERTYPE', val)
},
setOrderId({ commit }, val) {
commit('SET_ORDERID', val)
},
setWorkId({ commit }, val) {
commit('SET_WORKID', val)
},
setMsgDialog({ commit }, flag) {
commit('SET_MSGDIALOG', flag)
},
setAnnNum({ commit }, num) {
commit('SET_ANNNUM', num)
} }
}, },
modules: { modules: {

View File

@ -13,13 +13,11 @@ import { get } from "@/api/request"
export default { export default {
setup() { setup() {
const data = reactive({ const data = reactive({
numTotal: {} numTotal: 0
}) })
const fetchData = () => { const fetchData = () => {
// get(`/api/admin/home`).then((res) => {
// data.numTotal = res.data
// })
} }
onMounted(() => { onMounted(() => {

View File

@ -75,6 +75,7 @@
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { get, post } from "@/api/request" import { get, post } from "@/api/request"
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { useStore } from 'vuex'
export default { export default {
components: { components: {
@ -160,14 +161,23 @@
}) })
} }
const $store = useStore()
const getWaitNum = () => {
get(`/api/board/waitToBeDone`).then((res) => {
$store.dispatch('setWaitNum', res.waitApproval)
})
}
onMounted(async () => { onMounted(async () => {
data.menuData = JSON.parse(localStorage.getItem('menusList')) data.menuData = JSON.parse(localStorage.getItem('menusList'))
getWaitNum()
}) })
return { return {
...toRefs(data), ...toRefs(data),
handleCommand, handleCommand,
commitModify commitModify,
getWaitNum
} }
} }
} }

View File

@ -4,7 +4,10 @@
<div class="icon" v-if="menu.parent_id == 0"> <div class="icon" v-if="menu.parent_id == 0">
<img v-if="menu.icon" :src="menu.icon"> <img v-if="menu.icon" :src="menu.icon">
</div> </div>
<template #title><span :class="menu.parent_id == 0 ? 'span' : ''">{{menu.title}}</span></template> <template #title>
<span :class="menu.parent_id == 0 ? 'span' : ''">{{menu.title}}</span>
<span class="tag" v-if="menu.uri == '/purchase/waitapproval'">{{ watiNum }}</span>
</template>
</el-menu-item> </el-menu-item>
<el-sub-menu :index="menu.uri" v-else popper-class="popper-meun"> <el-sub-menu :index="menu.uri" v-else popper-class="popper-meun">
<template #title> <template #title>
@ -19,12 +22,30 @@
</template> </template>
<script> <script>
import { reactive, toRefs, watch, onMounted } from 'vue'
import { useStore } from 'vuex'
export default { export default {
props: { props: {
menuData: Array menuData: Array
}, },
setup() { setup() {
return {} const data = reactive({
watiNum: 0
})
const $store = useStore()
watch(() => $store.state.watiNum, (val, old) => {
data.watiNum = val
})
onMounted(() => {
data.watiNum = $store.state.watiNum
})
return {
...toRefs(data)
}
} }
} }
</script> </script>
@ -55,4 +76,14 @@ export default {
position: relative; position: relative;
z-index: 10; z-index: 10;
} }
.tag{
background-color: #f00;
padding: 2px 4px;
line-height: normal;
color: #fff;
position: relative;
border-radius: 5px;
font-size: 12px;
margin: -9px 0 0 2px;
}
</style> </style>

View File

@ -5,6 +5,14 @@
<span class="span">ID</span> <span class="span">ID</span>
<div class="right"><el-input v-model="filter.id" class="wid100" clearable></el-input></div> <div class="right"><el-input v-model="filter.id" class="wid100" clearable></el-input></div>
</div> </div>
<div class="row">
<span class="span">商品名称</span>
<div class="right">
<el-select v-model="filter.product_id" placeholder="请选择" clearable filterable class="wid100">
<el-option v-for="it in goodskuList" :key="it.id" :label="it.title" :value="it.id" />
</el-select>
</div>
</div>
<div class="row"> <div class="row">
<span class="span">供应商名称</span> <span class="span">供应商名称</span>
<div class="right"> <div class="right">
@ -233,9 +241,16 @@ export default {
allGoodsList: [], allGoodsList: [],
curId: 0, curId: 0,
current_instance_id: 0, current_instance_id: 0,
showDetail: false showDetail: false,
goodskuList: [],
}) })
function getGoodskuList() {
get(`/api/all/goods`).then((res) => {
data.goodskuList = res.data
})
}
function handleSearch() { function handleSearch() {
data.page = 1 data.page = 1
fetchData() fetchData()
@ -347,6 +362,7 @@ export default {
getWarehouseList() getWarehouseList()
getSuppliersList() getSuppliersList()
getAllGoodsList() getAllGoodsList()
getGoodskuList()
}) })
return { return {
@ -366,7 +382,8 @@ export default {
toBalancePayment, toBalancePayment,
openLogs, openLogs,
toInvoice, toInvoice,
handleView handleView,
getGoodskuList
} }
} }
} }

View File

@ -57,9 +57,9 @@
<el-form-item label="开户银行支行名称:"> <el-form-item label="开户银行支行名称:">
<el-input v-model="itemInfo.bank_name" clearable placeholder="请输入银行开户名"></el-input> <el-input v-model="itemInfo.bank_name" clearable placeholder="请输入银行开户名"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="开户银行所在地地址:"> <!-- <el-form-item label="开户银行所在地地址:">
<el-input v-model="itemInfo.bank_address" clearable placeholder="请输入开户银行所在地地址"></el-input> <el-input v-model="itemInfo.bank_address" clearable placeholder="请输入开户银行所在地地址"></el-input>
</el-form-item> </el-form-item> -->
</el-form> </el-form>
<template #footer> <template #footer>

View File

@ -36,9 +36,9 @@
</div> </div>
<el-card shadow="never"> <el-card shadow="never">
<div class="opaBox"> <!-- <div class="opaBox">
<el-button type="primary" @click="showAdd = true"><el-icon><Plus /></el-icon>&nbsp;新增</el-button> <el-button type="primary" @click="showAdd = true"><el-icon><Plus /></el-icon>&nbsp;新增</el-button>
</div> </div> -->
<el-table :data="tableData" style="width: 100%" border v-loading="loading"> <el-table :data="tableData" style="width: 100%" border v-loading="loading">
<el-table-column prop="id" label="ID" width="80" align="center" /> <el-table-column prop="id" label="ID" width="80" align="center" />
<el-table-column prop="purchase_order_id" label="采购单ID" width="100" align="center" /> <el-table-column prop="purchase_order_id" label="采购单ID" width="100" align="center" />
@ -123,7 +123,7 @@ import { get, post } from "@/api/request"
import { Search, Plus, Edit, ZoomIn, Delete, Stamp } from '@element-plus/icons' import { Search, Plus, Edit, ZoomIn, Delete, Stamp } from '@element-plus/icons'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import approvalDetail from '@/components/approval/detail.vue' import approvalDetail from '@/components/approval/detail.vue'
import { useStore } from 'vuex'
export default { export default {
components: { components: {
Search, Plus, Edit, ZoomIn, Delete, Stamp, approvalDetail Search, Plus, Edit, ZoomIn, Delete, Stamp, approvalDetail
@ -210,6 +210,14 @@ export default {
ElMessage.success('审批成功') ElMessage.success('审批成功')
data.showDialog = false data.showDialog = false
fetchData() fetchData()
getWaitNum()
})
}
const $store = useStore()
const getWaitNum = () => {
get(`/api/board/waitToBeDone`).then((res) => {
$store.dispatch('setWaitNum', res.waitApproval)
}) })
} }
@ -224,7 +232,8 @@ export default {
handleSizeChange, handleSizeChange,
fetchData, fetchData,
toApproval, toApproval,
commitApproval commitApproval,
getWaitNum
} }
} }
} }