Commit 74ed3217 by LJM

已对账账单

parent dc3e69c0
......@@ -55,6 +55,12 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe649;</span>
<div class="name">账单管理</div>
<div class="code-name">&amp;#xe649;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe73c;</span>
<div class="name">寄售管理</div>
<div class="code-name">&amp;#xe73c;</div>
......@@ -222,9 +228,9 @@
<pre><code class="language-css"
>@font-face {
font-family: 'iconfont';
src: url('iconfont.woff2?t=1735546528948') format('woff2'),
url('iconfont.woff?t=1735546528948') format('woff'),
url('iconfont.ttf?t=1735546528948') format('truetype');
src: url('iconfont.woff2?t=1735796431398') format('woff2'),
url('iconfont.woff?t=1735796431398') format('woff'),
url('iconfont.ttf?t=1735796431398') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
......@@ -251,6 +257,15 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont iconzhangdanguanli"></span>
<div class="name">
账单管理
</div>
<div class="code-name">.iconzhangdanguanli
</div>
</li>
<li class="dib">
<span class="icon iconfont iconjishouguanli"></span>
<div class="name">
寄售管理
......@@ -504,6 +519,14 @@
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconzhangdanguanli"></use>
</svg>
<div class="name">账单管理</div>
<div class="code-name">#iconzhangdanguanli</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconjishouguanli"></use>
</svg>
<div class="name">寄售管理</div>
......
@font-face {
font-family: "iconfont"; /* Project id 2537242 */
src: url('iconfont.woff2?t=1735546528948') format('woff2'),
url('iconfont.woff?t=1735546528948') format('woff'),
url('iconfont.ttf?t=1735546528948') format('truetype');
src: url('iconfont.woff2?t=1735796431398') format('woff2'),
url('iconfont.woff?t=1735796431398') format('woff'),
url('iconfont.ttf?t=1735796431398') format('truetype');
}
.iconfont {
......@@ -13,6 +13,10 @@
-moz-osx-font-smoothing: grayscale;
}
.iconzhangdanguanli:before {
content: "\e649";
}
.iconjishouguanli:before {
content: "\e73c";
}
......
......@@ -6,6 +6,13 @@
"description": "猎芯云芯系统前端",
"glyphs": [
{
"icon_id": "25187246",
"name": "账单管理",
"font_class": "zhangdanguanli",
"unicode": "e649",
"unicode_decimal": 58953
},
{
"icon_id": "28357630",
"name": "寄售管理",
"font_class": "jishouguanli",
......
......@@ -40,6 +40,8 @@ const ConsignmentRecallDetail = resolve => require(['@/views/consignmentManageme
const BatchRecall = resolve => require(['@/views/consignmentManagement/batchRecall.vue'], resolve);
const ConsignmentContract = resolve => require(['@/views/consignmentManagement/consignmentContract.vue'], resolve);
const InOutStockLog = resolve => require(['@/views/consignmentManagement/inOutStockLog.vue'], resolve);
const ReconciledBill = resolve => require(['@/views/billManagement/reconciledBill.vue'], resolve);
const AllPayableBills = resolve => require(['@/views/billManagement/allPayableBills.vue'], resolve);
const routes = [
{path: '/', name: 'Index', meta: {title: '概况'}, component: Home},
......@@ -80,6 +82,8 @@ const routes = [
{path: '/consignmentRecallDetail', name: 'consignmentRecallDetail', meta: {title: '寄售召回单详情'}, component: ConsignmentRecallDetail},
{path: '/consignmentContract', name: 'consignmentContract', meta: {title: '寄售合同'}, component: ConsignmentContract},
{path: '/inOutStockLog', name: 'inOutStockLog', meta: {title: '进出库日志'}, component: InOutStockLog},
{path: '/reconciledBill', name: 'reconciledBill', meta: {title: '已对账账单'}, component: ReconciledBill},
{path: '/allPayableBills', name: 'allPayableBills', meta: {title: '全部应付单:'}, component: AllPayableBills},
{path: '*', redirect: '/'}
]
......
......@@ -49,4 +49,21 @@ export default {
index === 0 ? true : item.purchases > array[index - 1].purchases
);
},
/**
* 新窗口打开
* @param url
*/
openNewWindow: function (url) {
var a = document.createElement("a");
if (a.click) { // 判断是否支持click方法
a.href = url;
a.target = '_blank';
a.style.display = 'none'; // 隐藏不必要的元素
document.body.appendChild(a);
a.click(); // 触发链接点击事件
document.body.removeChild(a);
} else { // click方法不可用时使用window.location.href跳转
window.location.href = url;
}
}
}
<template>
<div class="pagex">
<div class="section-page">
<!--搜索区-->
<el-form :inline="true" :model="formParam" ref="formParam" label-width="80px">
<el-form-item label="型号" prop="goods_name">
<el-autocomplete v-model="formParam.goods_name" :trigger-on-focus="false" @keyup.enter.native="onSubmit" :fetch-suggestions="querySearchAsync" placeholder="请输入型号" clearable></el-autocomplete>
</el-form-item>
<el-form-item label="类型" prop="types">
<el-select v-model="formParam.types" placeholder="全部" clearable multiple>
<el-option label="全部" value=""></el-option>
<el-option label="寄售入库" value="1"></el-option>
<el-option label="寄售退货入库" value="2"></el-option>
<el-option label="寄售出库" value="3"></el-option>
<el-option label="寄售召回出库" value="4"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">搜索</el-button>
<el-button @click="resetForm('formParam')">重置</el-button>
</el-form-item>
</el-form>
<!--列表区-->
<div class="data-box">
<el-table :data="list" border max-height="600" @selection-change="handleSelectionChange">
<el-table-column type="index" label="序号" width="50" align="center" fixed></el-table-column>
<el-table-column prop="goods_name" label="型号" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="brand_name" label="标准品牌" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="wms_sn" label="单号" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="type_val" label="类型" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="stock_num" label="数量" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="warehouse_name" label="仓库" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="date_code" label="D/C" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="supplier_name" label="供应商" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="log_time" label="出入库时间" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 20, 50, 100, 200]" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"></el-pagination>
</div>
</div>
<Menu></Menu>
</div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Autocomplete, Button, DatePicker, Descriptions, DescriptionsItem, Dialog, Divider, Dropdown, DropdownItem, DropdownMenu, Form, FormItem, Input, Link, Message, MessageBox, Option, Pagination, Popover, Select, Table, TableColumn, Tag, Tooltip} from 'element-ui'
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm;
Vue.use(Button).use(Link).use(Form).use(Select).use(Option).use(Input).use(FormItem).use(Dialog).use(Tooltip).use(Autocomplete).use(Popover).use(Tag).use(Divider);
Vue.use(DatePicker).use(Dropdown).use(DropdownMenu).use(DropdownItem).use(TableColumn).use(Table).use(Pagination).use(Descriptions).use(DescriptionsItem);
export default {
name: "allPayableBills",
data() {
return {
multipleSelection: [],
total: 0,
page: 1,
limit: 10,
list: [],
formParam: {
goods_name: '',
types: []
}
};
},
created() {
this.getData()
},
methods: {
getData() {
const params = {
...this.formParam,
types: this.formParam.types?.join(',') || ''
};
this.$http('GET', "/api/consignmentWmsLog/getConsignmentWmsLogList", params).then(res => {
if (res.code === 0) {
this.list = res.data.list || [];
this.total = Number(res.data.total) || 0;
} else {
this.$message({
message: res.msg,
type: 'error'
});
}
})
},
/**
* 型号监听
* @param queryString
* @param cb
*/
querySearchAsync(queryString, cb) {
if (!queryString) {
cb([]);
return;
}
this.$http('GET', "/api/search/getspu", {spu_name: queryString}).then(res => {
if (res.code == 0 && res.data.list?.length) {
const arr = res.data.list.map(item => ({
value: item.spu_name
}));
cb(arr);
} else {
cb([]);
}
}).catch(() => {
cb([]);
});
},
/**
* 搜索
*/
onSubmit() {
this.page = 1;
this.getData();
},
/**
* 重置表单
* @param formName
*/
resetForm(formName) {
this.formParam.date = '';
this.$refs[formName].resetFields();
},
/**
* 列表分页条数筛选监听
* @param val
*/
handleSizeChange(val) {
this.limit = val;
this.getData();
},
/**
* 列表分页输入页码监听
* @param val
*/
handleCurrentChange(val) {
this.page = val;
this.getData();
},
/**
* chebox 选择监听
* @param val
*/
handleSelectionChange(val) {
this.multipleSelection = val;
}
},
components: {
Menu
}
};
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="pagex">
<div class="section-page">
<!--搜索区-->
<el-form :inline="true" :model="formParam" ref="formParam" label-width="80px">
<el-form-item label="账单号" prop="bill_sn">
<el-input v-model="formParam.bill_sn" placeholder="请输入账单号" @keyup.enter.native="submit" clearable></el-input>
</el-form-item>
<el-form-item label="型号" prop="goods_name">
<el-autocomplete v-model="formParam.goods_name" :trigger-on-focus="false" @keyup.enter.native="onSubmit" :fetch-suggestions="querySearchAsync" placeholder="请输入型号" clearable></el-autocomplete>
</el-form-item>
<el-form-item label="创建时间" prop="create_time">
<el-date-picker v-model="formParam.create_time" align="right" type="date" placeholder="请选择创建时间" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">搜索</el-button>
<el-button @click="resetForm('formParam')">重置</el-button>
</el-form-item>
</el-form>
<!--操作区-->
<div class="operation-area row verCenter bothSide">
<div class="operation-button row verCenter">
<el-button type="primary" @click="exportVerifiedBill()">导出账单</el-button>
</div>
</div>
<!--列表区-->
<div class="data-box">
<el-table :data="list" border max-height="600" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="40" align="center" fixed></el-table-column>
<el-table-column type="index" label="序号" width="50" align="center" fixed></el-table-column>
<el-table-column prop="bill_sn" label="账单号" width="120" :show-overflow-tooltip="true" align="center">
<template slot-scope="scope">
<el-link type="primary" :underline="false" @click="$router.push({path: '/consignmentRecallDetail', query: {bill_id: scope.row.bill_id}})" style="font-size: 12px;">{{ scope.row.bill_sn }}</el-link>
</template>
</el-table-column>
<el-table-column prop="bill_name" label="账单名称" min-width="170" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="total_amount" label="应付总金额" width="120" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="unpaid_amount" label="未付总金额" width="120" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="paid_amount" label="已付总金额" width="120" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="paying_amount" label="付款中总金额" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="contact_name" label="对接人" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="create_name" label="创建人" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="create_time" label="创建时间" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="create_type" label="创建方式" width="80" :show-overflow-tooltip="true" align="center"></el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 20, 50, 100, 200]" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"></el-pagination>
</div>
</div>
<Menu></Menu>
</div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Autocomplete, Button, DatePicker, Descriptions, DescriptionsItem, Dialog, Divider, Dropdown, DropdownItem, DropdownMenu, Form, FormItem, Input, Link, Message, MessageBox, Option, Pagination, Popover, Select, Table, TableColumn, Tag, Tooltip} from 'element-ui'
import {NODE_ENVS} from "@/ajax";
import Tool from "@/tool";
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm;
Vue.use(Button).use(Link).use(Form).use(Select).use(Option).use(Input).use(FormItem).use(Dialog).use(Tooltip).use(Autocomplete).use(Popover).use(Tag).use(Divider);
Vue.use(DatePicker).use(Dropdown).use(DropdownMenu).use(DropdownItem).use(TableColumn).use(Table).use(Pagination).use(Descriptions).use(DescriptionsItem);
export default {
name: "reconciledBill",
data() {
return {
multipleSelection: [],
total: 0,
page: 1,
limit: 10,
list: [],
formParam: {
bill_sn: '',
goods_name: '',
create_time: ''
}
};
},
created() {
this.getData()
},
methods: {
getData() {
this.$http('GET', "/api/bill/getVerifiedBillList", this.formParam).then(res => {
if (res.code === 0) {
this.list = res.data.list || [];
this.total = Number(res.data.total) || 0;
} else {
this.$message({
message: res.msg,
type: 'error'
});
}
})
},
/**
* 型号监听
* @param queryString
* @param cb
*/
querySearchAsync(queryString, cb) {
if (!queryString) {
cb([]);
return;
}
this.$http('GET', "/api/search/getspu", {spu_name: queryString}).then(res => {
if (res.code == 0 && res.data.list?.length) {
const arr = res.data.list.map(item => ({
value: item.spu_name
}));
cb(arr);
} else {
cb([]);
}
}).catch(() => {
cb([]);
});
},
/**
* 搜索
*/
onSubmit() {
this.page = 1;
this.getData();
},
/**
* 重置表单
* @param formName
*/
resetForm(formName) {
this.formParam.date = '';
this.$refs[formName].resetFields();
},
/**
* 列表分页条数筛选监听
* @param val
*/
handleSizeChange(val) {
this.limit = val;
this.getData();
},
/**
* 列表分页输入页码监听
* @param val
*/
handleCurrentChange(val) {
this.page = val;
this.getData();
},
/**
* chebox 选择监听
* @param val
*/
handleSelectionChange(val) {
this.multipleSelection = val;
},
/**
* 已对账账单-导出(待采购系统确认)
*/
exportVerifiedBill() {
let bill_id = this.multipleSelection.map(item => item.bill_id).join(',');
let url = NODE_ENVS + '/api/bill/exportVerifiedBill?bill_id=' + bill_id + '&token=' + Tool.getCookie('token');
Tool.openNewWindow(url);
}
},
components: {
Menu
}
};
</script>
<style scoped>
</style>
\ No newline at end of file
......@@ -7,7 +7,7 @@
<el-autocomplete v-model="formParam.goods_name" :trigger-on-focus="false" @keyup.enter.native="onSubmit" :fetch-suggestions="querySearchAsync" placeholder="请输入型号" clearable></el-autocomplete>
</el-form-item>
<el-form-item label="类型" prop="types">
<el-select v-model="formParam.types" placeholder="全部" clearable multiple collapse-tags>
<el-select v-model="formParam.types" placeholder="全部" clearable multiple>
<el-option label="全部" value=""></el-option>
<el-option label="寄售入库" value="1"></el-option>
<el-option label="寄售退货入库" value="2"></el-option>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment