This commit is contained in:
顾有鑫 2025-02-24 15:57:04 +08:00
parent 08098a0826
commit c4424f55a0
14 changed files with 1981 additions and 156 deletions

View File

@ -1,7 +1,7 @@
{ {
"name": "ktg-mes-ui", "name": "ktg-mes-ui",
"version": "3.8.2", "version": "3.8.2",
"description": "龙翔商贸一体化平台", "description": "生产管控系统",
"author": "YinJinLu", "author": "YinJinLu",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {

44
src/api/mes/cg/order.js Normal file
View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询采购订单列表
export function listOrder(query) {
return request({
url: '/md/order/list',
method: 'get',
params: query
})
}
// 查询采购订单详细
export function getOrder(id) {
return request({
url: '/md/order/' + id,
method: 'get'
})
}
// 新增采购订单
export function addOrder(data) {
return request({
url: '/md/order',
method: 'post',
data: data
})
}
// 修改采购订单
export function updateOrder(data) {
return request({
url: '/md/order',
method: 'put',
data: data
})
}
// 删除采购订单
export function delOrder(id) {
return request({
url: '/md/order/' + id,
method: 'delete'
})
}

44
src/api/mes/cg/plan.js Normal file
View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询采购计划列表
export function listPlan(query) {
return request({
url: '/md/plan/list',
method: 'get',
params: query
})
}
// 查询采购计划详细
export function getPlan(id) {
return request({
url: '/md/plan/' + id,
method: 'get'
})
}
// 新增采购计划
export function addPlan(data) {
return request({
url: '/md/plan',
method: 'post',
data: data
})
}
// 修改采购计划
export function updatePlan(data) {
return request({
url: '/md/plan',
method: 'put',
data: data
})
}
// 删除采购计划
export function delPlan(id) {
return request({
url: '/md/plan/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询询报比价列表
export function listQuotation(query) {
return request({
url: '/md/quotation/list',
method: 'get',
params: query
})
}
// 查询询报比价详细
export function getQuotation(id) {
return request({
url: '/md/quotation/' + id,
method: 'get'
})
}
// 新增询报比价
export function addQuotation(data) {
return request({
url: '/md/quotation',
method: 'post',
data: data
})
}
// 修改询报比价
export function updateQuotation(data) {
return request({
url: '/md/quotation',
method: 'put',
data: data
})
}
// 删除询报比价
export function delQuotation(id) {
return request({
url: '/md/quotation/' + id,
method: 'delete'
})
}

View File

@ -70,7 +70,7 @@ export default {
}, },
data() { data() {
return { return {
title: "龙翔商贸一体化平台", title: "生产管控系统",
logo: logoImg, logo: logoImg,
}; };
}, },

View File

@ -1,158 +1,145 @@
<template> <template>
<div class="dashboard-editor-container"> <div class="dashboard-editor-container">
<panel-group @handleSetLineChartData="handleSetLineChartData" /> <panel-group @handleSetLineChartData="handleSetLineChartData" />
<el-row :gutter="32" style="padding:16px 16px 0;margin-bottom:32px;"> <el-row :gutter="32" style="padding: 16px 16px 0; margin-bottom: 32px">
<el-card> <el-card>
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>生产进度</span> <span>生产进度</span>
</div>
<el-table
v-loading="loading"
:data="workorderList"
row-key="workorderId"
default-expand-all
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column label="工单编码" width="180" prop="workorderCode" >
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleView(scope.row)"
v-hasPermi="['mes:pro:workorder:query']"
>{{scope.row.workorderCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="订单编号" align="center" prop="sourceCode" />
<el-table-column label="工单名称" align="center" prop="workorderName" :show-overflow-tooltip="true"/>
<el-table-column label="产品编号" width="120" align="center" prop="productCode" />
<el-table-column label="产品名称" align="center" prop="productName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" width="140" align="center" prop="productSpc" :show-overflow-tooltip="true"/>
<el-table-column label="单位" width="140" align="center" prop="unitOfMeasure" />
<el-table-column label="需求日期" align="center" prop="requestDate">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.requestDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="工序进度" align="center" width="250">
<template slot-scope="scope">
<div style="display: flex;width: 100%;overflow:auto;">
<div v-for="(item, index) in scope.row.routeHomg" style="flex-shrink: 0;">
<div style="display: flex">
<div style="line-height: 70px; text-align: center;color: #5e75ff;flex-shrink:0;" v-if="index != 0">--------</div>
<div style="display: flex; flex-direction: column;margin: 0 5px">
<el-progress :height="70" :width="70" type="circle" :percentage="(item.completeNumber/item.total)*100" :color="colors"></el-progress>
<el-tooltip class="item" effect="dark" :content="item.processName" placement="bottom">
<span style="display: inline-block;width: 55px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap">{{ item.processName }}</span>
</el-tooltip>
</div>
</div>
</div>
</div>
</template>
</el-table-column>
</el-table>
</el-card>
</el-row>
<el-row style="background:#fff;padding:16px 16px 0; margin-bottom:32px;">
<line-chart :chart-data="lineChartData" />
</el-row>
<el-row :gutter="32">
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<raddar-chart />
</div> </div>
</el-col> <el-table
<el-col :xs="24" :sm="24" :lg="8"> v-loading="loading"
<div class="chart-wrapper"> :data="workorderList"
<pie-chart /> row-key="workorderId"
</div> default-expand-all
</el-col> :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
<el-col :xs="24" :sm="24" :lg="8"> >
<div class="chart-wrapper"> <el-table-column label="工单编码" width="180" prop="workorderCode">
<bar-chart /> <template slot-scope="scope">
</div> <el-button
</el-col> size="mini"
type="text"
@click="handleView(scope.row)"
v-hasPermi="['mes:pro:workorder:query']"
>{{ scope.row.workorderCode }}</el-button
>
</template>
</el-table-column>
<el-table-column label="订单编号" align="center" prop="sourceCode" />
<el-table-column
label="工单名称"
align="center"
prop="workorderName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="产品编号"
width="120"
align="center"
prop="productCode"
/>
<el-table-column
label="产品名称"
align="center"
prop="productName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="规格型号"
width="140"
align="center"
prop="productSpc"
:show-overflow-tooltip="true"
/>
<el-table-column
label="单位"
width="140"
align="center"
prop="unitOfMeasure"
/>
<el-table-column label="需求日期" align="center" prop="requestDate">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.requestDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
</el-table>
</el-card>
</el-row> </el-row>
</div> </div>
</template> </template>
<script> <script>
import {getHomeList} from "@/api/mes/pro/workorder"; import { getHomeList } from "@/api/mes/pro/workorder";
import PanelGroup from './dashboard/PanelGroup' import PanelGroup from "./dashboard/PanelGroup";
import LineChart from './dashboard/LineChart' import LineChart from "./dashboard/LineChart";
import RaddarChart from './dashboard/RaddarChart' import RaddarChart from "./dashboard/RaddarChart";
import PieChart from './dashboard/PieChart' import PieChart from "./dashboard/PieChart";
import BarChart from './dashboard/BarChart' import BarChart from "./dashboard/BarChart";
const lineChartData = { const lineChartData = {
newVisitis: { newVisitis: {
expectedData: [100, 120, 161, 134, 105, 160, 165], expectedData: [100, 120, 161, 134, 105, 160, 165],
actualData: [120, 82, 91, 154, 162, 140, 145] actualData: [120, 82, 91, 154, 162, 140, 145],
}, },
messages: { messages: {
expectedData: [200, 192, 120, 144, 160, 130, 140], expectedData: [200, 192, 120, 144, 160, 130, 140],
actualData: [180, 160, 151, 106, 145, 150, 130] actualData: [180, 160, 151, 106, 145, 150, 130],
}, },
purchases: { purchases: {
expectedData: [80, 100, 121, 104, 105, 90, 100], expectedData: [80, 100, 121, 104, 105, 90, 100],
actualData: [120, 90, 100, 138, 142, 130, 130] actualData: [120, 90, 100, 138, 142, 130, 130],
}, },
shoppings: { shoppings: {
expectedData: [130, 140, 141, 142, 145, 150, 160], expectedData: [130, 140, 141, 142, 145, 150, 160],
actualData: [120, 82, 91, 154, 162, 140, 130] actualData: [120, 82, 91, 154, 162, 140, 130],
} },
} };
export default { export default {
name: 'Index', name: "Index",
components: { components: {
PanelGroup, PanelGroup,
LineChart, LineChart,
RaddarChart, RaddarChart,
PieChart, PieChart,
BarChart BarChart,
}, },
data() { data() {
return { return {
loading: true, loading: true,
queryParams: {status:'CONFIRMED'}, queryParams: { status: "CONFIRMED" },
workorderList: [], workorderList: [],
lineChartData: lineChartData.newVisitis, lineChartData: lineChartData.newVisitis,
colors: [ colors: [
{color: '#f56c6c', percentage: 20}, { color: "#f56c6c", percentage: 20 },
{color: '#e6a23c', percentage: 40}, { color: "#e6a23c", percentage: 40 },
{color: '#5cb87a', percentage: 60}, { color: "#5cb87a", percentage: 60 },
{color: '#1989fa', percentage: 80}, { color: "#1989fa", percentage: 80 },
{color: '#6f7ad3', percentage: 100} { color: "#6f7ad3", percentage: 100 },
] ],
} };
}, },
created(){ created() {
this.getList(); this.getList();
}, },
methods: { methods: {
getList() { getList() {
this.loading = true; this.loading = true;
getHomeList(this.queryParams).then(response => { getHomeList(this.queryParams).then((response) => {
this.workorderList = response.data; this.workorderList = response.data;
this.loading = false; this.loading = false;
}); });
}, },
handleSetLineChartData(type) { handleSetLineChartData(type) {
this.lineChartData = lineChartData[type] this.lineChartData = lineChartData[type];
} },
} },
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.dashboard-editor-container { .dashboard-editor-container {
height: calc(100vh - 84px);
padding: 32px; padding: 32px;
background-color: rgb(240, 242, 245); background-color: rgb(240, 242, 245);
position: relative; position: relative;
@ -164,7 +151,7 @@ export default {
} }
} }
@media (max-width:1024px) { @media (max-width: 1024px) {
.chart-wrapper { .chart-wrapper {
padding: 8px; padding: 8px;
} }

View File

@ -1,7 +1,13 @@
<template> <template>
<div class="login"> <div class="login">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form"> <label class="title-name">府谷县龙翔商贸有限公司</label>
<h3 class="title">龙翔商贸一体化平台</h3> <el-form
ref="loginForm"
:model="loginForm"
:rules="loginRules"
class="login-form"
>
<h3 class="title">生产管控系统</h3>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input <el-input
v-model="loginForm.username" v-model="loginForm.username"
@ -9,7 +15,11 @@
auto-complete="off" auto-complete="off"
placeholder="账号" placeholder="账号"
> >
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /> <svg-icon
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="password"> <el-form-item prop="password">
@ -20,7 +30,11 @@
placeholder="密码" placeholder="密码"
@keyup.enter.native="handleLogin" @keyup.enter.native="handleLogin"
> >
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" /> <svg-icon
slot="prefix"
icon-class="password"
class="el-input__icon input-icon"
/>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="code" v-if="captchaOnOff"> <el-form-item prop="code" v-if="captchaOnOff">
@ -31,31 +45,41 @@
style="width: 63%" style="width: 63%"
@keyup.enter.native="handleLogin" @keyup.enter.native="handleLogin"
> >
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" /> <svg-icon
slot="prefix"
icon-class="validCode"
class="el-input__icon input-icon"
/>
</el-input> </el-input>
<div class="login-code"> <div class="login-code">
<img :src="codeUrl" @click="getCode" class="login-code-img"/> <img :src="codeUrl" @click="getCode" class="login-code-img" />
</div> </div>
</el-form-item> </el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> <el-checkbox
<el-form-item style="width:100%;"> v-model="loginForm.rememberMe"
style="margin: 0px 0px 25px 0px"
>记住密码</el-checkbox
>
<el-form-item style="width: 100%">
<el-button <el-button
:loading="loading" :loading="loading"
size="medium" size="medium"
type="primary" type="primary"
style="width:100%;" style="width: 100%"
@click.native.prevent="handleLogin" @click.native.prevent="handleLogin"
> >
<span v-if="!loading"> </span> <span v-if="!loading"> </span>
<span v-else> 中...</span> <span v-else> 中...</span>
</el-button> </el-button>
<div style="float: right;" v-if="register"> <div style="float: right" v-if="register">
<router-link class="link-type" :to="'/register'">立即注册</router-link> <router-link class="link-type" :to="'/register'"
>立即注册</router-link
>
</div> </div>
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 底部 --> <!-- 底部 -->
<div class="el-login-footer"> <div class="el-login-footer">
<span @click="toIPC">陕ICP备2022002135号-1</span> <span @click="toIPC">陕ICP备2022002135号-1</span>
</div> </div>
</div> </div>
@ -64,7 +88,7 @@
<script> <script>
import { getCodeImg } from "@/api/login"; import { getCodeImg } from "@/api/login";
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import { encrypt, decrypt } from '@/utils/jsencrypt' import { encrypt, decrypt } from "@/utils/jsencrypt";
export default { export default {
name: "Login", name: "Login",
@ -76,44 +100,45 @@ export default {
password: "admin123", password: "admin123",
rememberMe: false, rememberMe: false,
code: "", code: "",
uuid: "" uuid: "",
}, },
loginRules: { loginRules: {
username: [ username: [
{ required: true, trigger: "blur", message: "请输入您的账号" } { required: true, trigger: "blur", message: "请输入您的账号" },
], ],
password: [ password: [
{ required: true, trigger: "blur", message: "请输入您的密码" } { required: true, trigger: "blur", message: "请输入您的密码" },
], ],
code: [{ required: true, trigger: "change", message: "请输入验证码" }] code: [{ required: true, trigger: "change", message: "请输入验证码" }],
}, },
loading: false, loading: false,
// //
captchaOnOff: true, captchaOnOff: true,
// //
register: false, register: false,
redirect: undefined redirect: undefined,
}; };
}, },
watch: { watch: {
$route: { $route: {
handler: function(route) { handler: function (route) {
this.redirect = route.query && route.query.redirect; this.redirect = route.query && route.query.redirect;
}, },
immediate: true immediate: true,
} },
}, },
created() { created() {
this.getCode(); this.getCode();
this.getCookie(); this.getCookie();
}, },
methods: { methods: {
toIPC(){ toIPC() {
window.open("https://beian.miit.gov.cn/","_blank"); window.open("https://beian.miit.gov.cn/", "_blank");
}, },
getCode() { getCode() {
getCodeImg().then(res => { getCodeImg().then((res) => {
this.captchaOnOff = res.captchaOnOff === undefined ? true : res.captchaOnOff; this.captchaOnOff =
res.captchaOnOff === undefined ? true : res.captchaOnOff;
if (this.captchaOnOff) { if (this.captchaOnOff) {
this.codeUrl = "data:image/gif;base64," + res.img; this.codeUrl = "data:image/gif;base64," + res.img;
this.loginForm.uuid = res.uuid; this.loginForm.uuid = res.uuid;
@ -123,38 +148,46 @@ export default {
getCookie() { getCookie() {
const username = Cookies.get("username"); const username = Cookies.get("username");
const password = Cookies.get("password"); const password = Cookies.get("password");
const rememberMe = Cookies.get('rememberMe') const rememberMe = Cookies.get("rememberMe");
this.loginForm = { this.loginForm = {
username: username === undefined ? this.loginForm.username : username, username: username === undefined ? this.loginForm.username : username,
password: password === undefined ? this.loginForm.password : decrypt(password), password:
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe) password === undefined ? this.loginForm.password : decrypt(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
}; };
}, },
handleLogin() { handleLogin() {
this.$refs.loginForm.validate(valid => { this.$refs.loginForm.validate((valid) => {
if (valid) { if (valid) {
this.loading = true; this.loading = true;
if (this.loginForm.rememberMe) { if (this.loginForm.rememberMe) {
Cookies.set("username", this.loginForm.username, { expires: 30 }); Cookies.set("username", this.loginForm.username, { expires: 30 });
Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 }); Cookies.set("password", encrypt(this.loginForm.password), {
Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 }); expires: 30,
});
Cookies.set("rememberMe", this.loginForm.rememberMe, {
expires: 30,
});
} else { } else {
Cookies.remove("username"); Cookies.remove("username");
Cookies.remove("password"); Cookies.remove("password");
Cookies.remove('rememberMe'); Cookies.remove("rememberMe");
} }
this.$store.dispatch("Login", this.loginForm).then(() => { this.$store
this.$router.push({ path: this.redirect || "/" }).catch(()=>{}); .dispatch("Login", this.loginForm)
}).catch(() => { .then(() => {
this.loading = false; this.$router.push({ path: this.redirect || "/" }).catch(() => {});
if (this.captchaOnOff) { })
this.getCode(); .catch(() => {
} this.loading = false;
}); if (this.captchaOnOff) {
this.getCode();
}
});
} }
}); });
} },
} },
}; };
</script> </script>
@ -166,6 +199,13 @@ export default {
height: 100%; height: 100%;
background-image: url("../assets/images/login-background.jpg"); background-image: url("../assets/images/login-background.jpg");
background-size: cover; background-size: cover;
flex-direction: column;
}
.title-name {
font-size: 50px;
margin-bottom: 100px;
color: #1c2187;
text-shadow: 5px 5px #777;
} }
.title { .title {
margin: 0px auto 30px auto; margin: 0px auto 30px auto;

View File

@ -0,0 +1,622 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
>
<el-form-item label="采购订单编号" prop="orderNo">
<el-input
v-model="queryParams.orderNo"
placeholder="请输入采购订单编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="采购订单标题" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入采购订单标题"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="供应商名称" prop="vendorName">
<el-input
v-model="queryParams.vendorName"
placeholder="请输入供应商名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input
v-model="queryParams.materialName"
placeholder="请输入物料名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="付款方式" prop="paymentTerms">
<el-input
v-model="queryParams.paymentTerms"
placeholder="请输入付款方式"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="预期交货日期" prop="expectedDeliveryDate">
<el-date-picker
clearable
v-model="queryParams.expectedDeliveryDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择预期交货日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="实际交货日期" prop="actualDeliveryDate">
<el-date-picker
clearable
v-model="queryParams.actualDeliveryDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择实际交货日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="发起日期" prop="initiateDate">
<el-date-picker
clearable
v-model="queryParams.initiateDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发起日期"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['md:order:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['md:order:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['md:order:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['md:order:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="orderList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="采购订单编号"
align="center"
width="120"
prop="orderNo"
/>
<el-table-column
label="采购订单标题"
align="center"
width="120"
prop="title"
/>
<el-table-column
label="供应商名称"
align="center"
width="120"
prop="vendorName"
/>
<el-table-column
label="供应商联系人"
align="center"
prop="vendorContact"
width="120"
/>
<el-table-column
label="供应商联系电话"
align="center"
prop="vendorPhone"
width="120"
/>
<el-table-column label="物料名称" align="center" prop="materialName" />
<el-table-column label="物料规格" align="center" prop="specs" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="采购数量" align="center" prop="quantity" />
<el-table-column label="单价" align="center" prop="unitPrice" />
<el-table-column label="订货金额" align="center" prop="orderAmount" />
<el-table-column label="税金" align="center" prop="tax" />
<el-table-column label="总金额" align="center" prop="totalAmount" />
<el-table-column label="付款方式" align="center" prop="paymentTerms" />
<el-table-column label="付款状态" align="center" prop="paymentStatus" />
<el-table-column label="交货地址" align="center" prop="deliveryAddress" />
<el-table-column
label="预期交货日期"
align="center"
prop="expectedDeliveryDate"
width="180"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.expectedDeliveryDate, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column
label="实际交货日期"
align="center"
prop="actualDeliveryDate"
width="180"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.actualDeliveryDate, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column label="运输方式" align="center" prop="shippingMethod" />
<el-table-column label="运输费用" align="center" prop="shippingCost" />
<el-table-column label="订单状态" align="center" prop="status" />
<el-table-column
label="发起日期"
align="center"
prop="initiateDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.initiateDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="审批日期"
align="center"
prop="approvalDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.approvalDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remarks" />
<el-table-column
label="记录创建时间"
align="center"
prop="createdDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createdDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['md:order:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['md:order:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改采购订单对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="采购订单编号" prop="orderNo">
<el-input v-model="form.orderNo" placeholder="请输入采购订单编号" />
</el-form-item>
<el-form-item label="采购订单标题" prop="title">
<el-input v-model="form.title" placeholder="请输入采购订单标题" />
</el-form-item>
<el-form-item label="供应商名称" prop="vendorName">
<el-input v-model="form.vendorName" placeholder="请输入供应商名称" />
</el-form-item>
<el-form-item label="供应商联系人" prop="vendorContact">
<el-input
v-model="form.vendorContact"
placeholder="请输入供应商联系人"
/>
</el-form-item>
<el-form-item label="供应商联系电话" prop="vendorPhone">
<el-input
v-model="form.vendorPhone"
placeholder="请输入供应商联系电话"
/>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入物料名称" />
</el-form-item>
<el-form-item label="物料规格" prop="specs">
<el-input v-model="form.specs" placeholder="请输入物料规格" />
</el-form-item>
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="采购数量" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入采购数量" />
</el-form-item>
<el-form-item label="单价" prop="unitPrice">
<el-input v-model="form.unitPrice" placeholder="请输入单价" />
</el-form-item>
<el-form-item label="订货金额" prop="orderAmount">
<el-input v-model="form.orderAmount" placeholder="请输入订货金额" />
</el-form-item>
<el-form-item label="税金" prop="tax">
<el-input v-model="form.tax" placeholder="请输入税金" />
</el-form-item>
<el-form-item label="总金额" prop="totalAmount">
<el-input v-model="form.totalAmount" placeholder="请输入总金额" />
</el-form-item>
<el-form-item label="付款方式" prop="paymentTerms">
<el-input v-model="form.paymentTerms" placeholder="请输入付款方式" />
</el-form-item>
<el-form-item label="付款状态">
<el-radio-group v-model="form.paymentStatus">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="交货地址" prop="deliveryAddress">
<el-input
v-model="form.deliveryAddress"
placeholder="请输入交货地址"
/>
</el-form-item>
<el-form-item label="预期交货日期" prop="expectedDeliveryDate">
<el-date-picker
clearable
v-model="form.expectedDeliveryDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择预期交货日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="实际交货日期" prop="actualDeliveryDate">
<el-date-picker
clearable
v-model="form.actualDeliveryDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择实际交货日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="运输方式" prop="shippingMethod">
<el-input
v-model="form.shippingMethod"
placeholder="请输入运输方式"
/>
</el-form-item>
<el-form-item label="运输费用" prop="shippingCost">
<el-input v-model="form.shippingCost" placeholder="请输入运输费用" />
</el-form-item>
<el-form-item label="订单状态">
<el-radio-group v-model="form.status">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="发起日期" prop="initiateDate">
<el-date-picker
clearable
v-model="form.initiateDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发起日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="审批日期" prop="approvalDate">
<el-date-picker
clearable
v-model="form.approvalDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择审批日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input
v-model="form.remarks"
type="textarea"
placeholder="请输入内容"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listOrder,
getOrder,
delOrder,
addOrder,
updateOrder,
} from "@/api/mes/cg/order";
export default {
name: "Order",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
orderList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
orderNo: null,
title: null,
vendorId: null,
vendorName: null,
vendorContact: null,
vendorPhone: null,
materialId: null,
materialName: null,
specs: null,
unit: null,
quantity: null,
unitPrice: null,
orderAmount: null,
tax: null,
totalAmount: null,
paymentTerms: null,
paymentStatus: null,
deliveryAddress: null,
expectedDeliveryDate: null,
actualDeliveryDate: null,
shippingMethod: null,
shippingCost: null,
status: null,
initiatorId: null,
initiateDate: null,
approverId: null,
approvalDate: null,
remarks: null,
createdDate: null,
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
methods: {
/** 查询采购订单列表 */
getList() {
this.loading = true;
listOrder(this.queryParams).then((response) => {
this.orderList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
orderNo: null,
title: null,
vendorId: null,
vendorName: null,
vendorContact: null,
vendorPhone: null,
materialId: null,
materialName: null,
specs: null,
unit: null,
quantity: null,
unitPrice: null,
orderAmount: null,
tax: null,
totalAmount: null,
paymentTerms: null,
paymentStatus: "0",
deliveryAddress: null,
expectedDeliveryDate: null,
actualDeliveryDate: null,
shippingMethod: null,
shippingCost: null,
status: "0",
initiatorId: null,
initiateDate: null,
approverId: null,
approvalDate: null,
remarks: null,
createdDate: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加采购订单";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getOrder(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改采购订单";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateOrder(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addOrder(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal
.confirm('是否确认删除采购订单编号为"' + ids + '"的数据项?')
.then(function () {
return delOrder(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"md/order/export",
{
...this.queryParams,
},
`order_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -0,0 +1,556 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
>
<el-form-item label="采购计划编号" prop="planNo">
<el-input
v-model="queryParams.planNo"
placeholder="请输入采购计划编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="采购计划标题" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入采购计划标题"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发起人姓名" prop="initiatorName">
<el-input
v-model="queryParams.initiatorName"
placeholder="请输入发起人姓名"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发起时间" prop="initiateDate">
<el-date-picker
clearable
v-model="queryParams.initiateDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发起时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input
v-model="queryParams.materialName"
placeholder="请输入物料名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="供应商名称" prop="vendorName">
<el-input
v-model="queryParams.vendorName"
placeholder="请输入供应商名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="交货时间" prop="deliveryTime">
<el-date-picker
clearable
v-model="queryParams.deliveryTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择交货时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="付款方式" prop="paymentTerms">
<el-input
v-model="queryParams.paymentTerms"
placeholder="请输入付款方式"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="审批时间" prop="approvalDate">
<el-date-picker
clearable
v-model="queryParams.approvalDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择审批时间"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['md:plan:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['md:plan:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['md:plan:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['md:plan:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="planList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="采购计划编号"
align="center"
width="150"
prop="planNo"
/>
<el-table-column
label="采购计划标题"
align="center"
width="150"
prop="title"
/>
<el-table-column
label="发起人姓名"
align="center"
width="150"
prop="initiatorName"
/>
<el-table-column
label="发起时间"
align="center"
prop="initiateDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.initiateDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="物料名称" align="center" prop="materialName" />
<el-table-column label="采购数量" align="center" prop="quantity" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="规格" align="center" prop="specs" />
<el-table-column
label="供应商名称"
align="center"
width="150"
prop="vendorName"
/>
<el-table-column label="单价" align="center" prop="unitPrice" />
<el-table-column label="总价" align="center" prop="totalPrice" />
<el-table-column
label="交货时间"
align="center"
prop="deliveryTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.deliveryTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="付款方式" align="center" prop="paymentTerms" />
<el-table-column label="预算金额" align="center" prop="budgetAmount" />
<el-table-column label="实际金额" align="center" prop="actualAmount" />
<el-table-column
label="审批人姓名"
align="center"
width="150"
prop="approverName"
/>
<el-table-column
label="审批时间"
align="center"
prop="approvalDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.approvalDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="备注" align="center" prop="remarks" />
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['md:plan:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['md:plan:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改采购计划对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="采购计划编号" prop="planNo">
<el-input v-model="form.planNo" placeholder="请输入采购计划编号" />
</el-form-item>
<el-form-item label="采购计划标题" prop="title">
<el-input v-model="form.title" placeholder="请输入采购计划标题" />
</el-form-item>
<el-form-item label="发起人姓名" prop="initiatorName">
<el-input
v-model="form.initiatorName"
placeholder="请输入发起人姓名"
/>
</el-form-item>
<el-form-item label="发起时间" prop="initiateDate">
<el-date-picker
clearable
v-model="form.initiateDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发起时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入物料名称" />
</el-form-item>
<el-form-item label="采购数量" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入采购数量" />
</el-form-item>
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="规格" prop="specs">
<el-input v-model="form.specs" placeholder="请输入规格" />
</el-form-item>
<el-form-item label="供应商名称" prop="vendorName">
<el-input v-model="form.vendorName" placeholder="请输入供应商名称" />
</el-form-item>
<el-form-item label="单价" prop="unitPrice">
<el-input v-model="form.unitPrice" placeholder="请输入单价" />
</el-form-item>
<el-form-item label="总价" prop="totalPrice">
<el-input v-model="form.totalPrice" placeholder="请输入总价" />
</el-form-item>
<el-form-item label="交货时间" prop="deliveryTime">
<el-date-picker
clearable
v-model="form.deliveryTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择交货时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="付款方式" prop="paymentTerms">
<el-input v-model="form.paymentTerms" placeholder="请输入付款方式" />
</el-form-item>
<el-form-item label="预算金额" prop="budgetAmount">
<el-input v-model="form.budgetAmount" placeholder="请输入预算金额" />
</el-form-item>
<el-form-item label="实际金额" prop="actualAmount">
<el-input v-model="form.actualAmount" placeholder="请输入实际金额" />
</el-form-item>
<el-form-item label="审批人姓名" prop="approverName">
<el-input
v-model="form.approverName"
placeholder="请输入审批人姓名"
/>
</el-form-item>
<el-form-item label="审批时间" prop="approvalDate">
<el-date-picker
clearable
v-model="form.approvalDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择审批时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="状态">
<el-radio-group v-model="form.status">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input v-model="form.remarks" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listPlan,
getPlan,
delPlan,
addPlan,
updatePlan,
} from "@/api/mes/cg/plan";
export default {
name: "Plan",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
planList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
planNo: null,
title: null,
initiatorId: null,
initiatorName: null,
initiateDate: null,
materialId: null,
materialName: null,
quantity: null,
unit: null,
specs: null,
vendorId: null,
vendorName: null,
unitPrice: null,
totalPrice: null,
deliveryTime: null,
paymentTerms: null,
budgetAmount: null,
actualAmount: null,
approverId: null,
approverName: null,
approvalDate: null,
status: null,
remarks: null,
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
methods: {
/** 查询采购计划列表 */
getList() {
this.loading = true;
listPlan(this.queryParams).then((response) => {
this.planList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
planNo: null,
title: null,
initiatorId: null,
initiatorName: null,
initiateDate: null,
materialId: null,
materialName: null,
quantity: null,
unit: null,
specs: null,
vendorId: null,
vendorName: null,
unitPrice: null,
totalPrice: null,
deliveryTime: null,
paymentTerms: null,
budgetAmount: null,
actualAmount: null,
approverId: null,
approverName: null,
approvalDate: null,
status: "0",
remarks: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加采购计划";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getPlan(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改采购计划";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updatePlan(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addPlan(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal
.confirm('是否确认删除采购计划编号为"' + ids + '"的数据项?')
.then(function () {
return delPlan(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"md/plan/export",
{
...this.queryParams,
},
`plan_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -0,0 +1,488 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
>
<el-form-item label="询报比价编号" prop="inquiryNo">
<el-input
v-model="queryParams.inquiryNo"
placeholder="请输入询报比价编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="询报比价标题" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入询报比价标题"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发起人姓名" prop="initiatorName">
<el-input
v-model="queryParams.initiatorName"
placeholder="请输入发起人姓名"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发起时间" prop="initiateDate">
<el-date-picker
clearable
v-model="queryParams.initiateDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发起时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="材料名称" prop="materialName">
<el-input
v-model="queryParams.materialName"
placeholder="请输入材料名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="供应商名称" prop="vendorName">
<el-input
v-model="queryParams.vendorName"
placeholder="请输入供应商名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label=" 交货时间" prop="deliveryTime">
<el-date-picker
clearable
v-model="queryParams.deliveryTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择 交货时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="付款方式" prop="paymentTerms">
<el-input
v-model="queryParams.paymentTerms"
placeholder="请输入付款方式"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择状态"
clearable
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['md:quotation:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['md:quotation:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['md:quotation:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['md:quotation:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="quotationList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="询报比价编号" align="center" prop="inquiryNo" />
<el-table-column label="询报比价标题" align="center" prop="title" />
<el-table-column label="发起人姓名" align="center" prop="initiatorName" />
<el-table-column
label="发起时间"
align="center"
prop="initiateDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.initiateDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="材料名称" align="center" prop="materialName" />
<el-table-column label=" 需求数量" align="center" prop="quantity" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="规格" align="center" prop="specs" />
<el-table-column label="供应商名称" align="center" prop="vendorName" />
<el-table-column label="单价" align="center" prop="unitPrice" />
<el-table-column label="总价" align="center" prop="totalPrice" />
<el-table-column
label=" 交货时间"
align="center"
prop="deliveryTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.deliveryTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="付款方式" align="center" prop="paymentTerms" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="备注" align="center" prop="remarks" />
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['md:quotation:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['md:quotation:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改询报比价对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="询报比价编号" prop="inquiryNo">
<el-input v-model="form.inquiryNo" placeholder="请输入询报比价编号" />
</el-form-item>
<el-form-item label="询报比价标题" prop="title">
<el-input v-model="form.title" placeholder="请输入询报比价标题" />
</el-form-item>
<el-form-item label="发起人姓名" prop="initiatorName">
<el-input
v-model="form.initiatorName"
placeholder="请输入发起人姓名"
/>
</el-form-item>
<el-form-item label="发起时间" prop="initiateDate">
<el-date-picker
clearable
v-model="form.initiateDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发起时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="材料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入材料名称" />
</el-form-item>
<el-form-item label=" 需求数量" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入 需求数量" />
</el-form-item>
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="规格" prop="specs">
<el-input v-model="form.specs" placeholder="请输入规格" />
</el-form-item>
<el-form-item label="供应商ID" prop="vendorId">
<el-input v-model="form.vendorId" placeholder="请输入供应商ID" />
</el-form-item>
<el-form-item label="供应商名称" prop="vendorName">
<el-input v-model="form.vendorName" placeholder="请输入供应商名称" />
</el-form-item>
<el-form-item label="单价" prop="unitPrice">
<el-input v-model="form.unitPrice" placeholder="请输入单价" />
</el-form-item>
<el-form-item label="总价" prop="totalPrice">
<el-input v-model="form.totalPrice" placeholder="请输入总价" />
</el-form-item>
<el-form-item label=" 交货时间" prop="deliveryTime">
<el-date-picker
clearable
v-model="form.deliveryTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择 交货时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="付款方式" prop="paymentTerms">
<el-input v-model="form.paymentTerms" placeholder="请输入付款方式" />
</el-form-item>
<el-form-item label="状态">
<el-radio-group v-model="form.status">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input v-model="form.remarks" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listQuotation,
getQuotation,
delQuotation,
addQuotation,
updateQuotation,
} from "@/api/mes/cg/quotation";
export default {
name: "Quotation",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
quotationList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
inquiryNo: null,
title: null,
initiatorId: null,
initiatorName: null,
initiateDate: null,
materialId: null,
materialName: null,
quantity: null,
unit: null,
specs: null,
vendorId: null,
vendorName: null,
unitPrice: null,
totalPrice: null,
deliveryTime: null,
paymentTerms: null,
status: null,
remarks: null,
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
methods: {
/** 查询询报比价列表 */
getList() {
this.loading = true;
listQuotation(this.queryParams).then((response) => {
this.quotationList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
inquiryNo: null,
title: null,
initiatorId: null,
initiatorName: null,
initiateDate: null,
materialId: null,
materialName: null,
quantity: null,
unit: null,
specs: null,
vendorId: null,
vendorName: null,
unitPrice: null,
totalPrice: null,
deliveryTime: null,
paymentTerms: null,
status: "0",
remarks: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加询报比价";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getQuotation(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改询报比价";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateQuotation(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addQuotation(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal
.confirm('是否确认删除询报比价编号为"' + ids + '"的数据项?')
.then(function () {
return delQuotation(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"md/quotation/export",
{
...this.queryParams,
},
`quotation_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -17,7 +17,7 @@ export default {
"top": 10.5, "top": 10.5,
"height": 27, "height": 27,
"width": 259, "width": 259,
"title": "龙翔商贸一体化平台标签打印测试", "title": "生产管控系统标签打印测试",
"fontSize": 19, "fontSize": 19,
"fontWeight": "600", "fontWeight": "600",
"textAlign": "center", "textAlign": "center",

View File

@ -17,7 +17,7 @@ export default {
"top": 10.5, "top": 10.5,
"height": 27, "height": 27,
"width": 259, "width": 259,
"title": "龙翔商贸一体化平台标签打印测试", "title": "生产管控系统标签打印测试",
"fontSize": 19, "fontSize": 19,
"fontWeight": "600", "fontWeight": "600",
"textAlign": "center", "textAlign": "center",

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="register"> <div class="register">
<el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form"> <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
<h3 class="title">龙翔商贸一体化平台</h3> <h3 class="title">生产管控系统</h3>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号"> <el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /> <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />

View File

@ -7,7 +7,7 @@ function resolve(dir) {
const CompressionPlugin = require('compression-webpack-plugin') const CompressionPlugin = require('compression-webpack-plugin')
const name = process.env.VUE_APP_TITLE || '龙翔商贸一体化平台' // 网页标题 const name = process.env.VUE_APP_TITLE || '生产管控系统' // 网页标题
const port = process.env.port || process.env.npm_config_port || 80 // 端口 const port = process.env.port || process.env.npm_config_port || 80 // 端口