修改BOM、预警管理
This commit is contained in:
parent
c77131aa5e
commit
9161fa358e
14
src/api/model/early.js
Normal file
14
src/api/model/early.js
Normal file
@ -0,0 +1,14 @@
|
||||
import config from "@/config";
|
||||
import http from "@/utils/request";
|
||||
|
||||
export default {
|
||||
earlyWarn:{
|
||||
list:{
|
||||
url: `${config.API_URL}/spare.parts.water.level.warning.list`,
|
||||
name: "备件水位预警管理列表",
|
||||
get: async function (params) {
|
||||
return await http.post(this.url, params);
|
||||
},
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -39,6 +39,13 @@ export default {
|
||||
post: async function (data) {
|
||||
return await http.post(this.url, data);
|
||||
},
|
||||
},
|
||||
free:{
|
||||
url: `${config.API_URL}/mail.free.list`,
|
||||
name: "获取邮件免蜜链接",
|
||||
post: async function (data) {
|
||||
return await http.post(this.url, data);
|
||||
},
|
||||
}
|
||||
},
|
||||
k3:{
|
||||
|
||||
@ -130,7 +130,7 @@ export default {
|
||||
.icon{width: 14px;height: 14px;margin-right: 4px;}
|
||||
}
|
||||
}
|
||||
.exportPopover :deep(.el-progress-bar__innerText){
|
||||
.exportPopover ::v-deep .el-progress-bar__innerText{
|
||||
height: 100%;
|
||||
display: flex;align-items: center;justify-content: flex-end;
|
||||
font-size: 10px;
|
||||
|
||||
@ -12,9 +12,8 @@
|
||||
</div>
|
||||
<div class="searchItem" v-if="item.type == 'select' && ((item.isOpen && item.show) || item.show)">
|
||||
<label class="name">{{item.name}}</label>
|
||||
|
||||
<el-select class="input" :size="size" v-model="params[item.code]" @visible-change="getSelect(item,$event)" :placeholder="item.placeholder" filterable clearable>
|
||||
<el-option v-for="em in item.data" :key="em" :label="em.label" :value="em[item.code[0]] || em.active_status"></el-option>
|
||||
<el-option v-for="em in item.data" :key="em" :label="em.label " :value="em[item.code[0]] || em.active_status"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="searchItem" v-if="item.type == 'text' && ((item.isOpen && item.show) || item.show)">
|
||||
|
||||
@ -245,7 +245,7 @@
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
<style lang="scss" scoped>
|
||||
.badge{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@ -421,7 +421,8 @@
|
||||
background: #383838;
|
||||
}
|
||||
|
||||
.el-popper.is-light>.el-popper__arrow::before{
|
||||
background: #F5F7FA;
|
||||
.el-popper.is-light ::v-deep .el-popper__arrow::before{
|
||||
background: #F5F7FA !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@ -2,43 +2,16 @@
|
||||
<el-container class="mainBox mainBoxHeaderNoBorder">
|
||||
<el-main class="nopadding">
|
||||
<div class="searchMain">
|
||||
<div class="searchItem">
|
||||
<label class="name">时间</label>
|
||||
<el-date-picker class="input" type="daterange" :size="size" v-model="params.keyword" :popper-options="{ placement: 'bottom-start' }" value-format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期" clearable></el-date-picker>
|
||||
</div>
|
||||
<div class="searchItem">
|
||||
<label class="name">工单号</label>
|
||||
<el-input class="input" :size="size" v-model="params.keyword" placeholder="工单号" clearable></el-input>
|
||||
</div>
|
||||
<div class="searchItem">
|
||||
<label class="name">维保供应商</label>
|
||||
<el-select class="input" :size="size" v-model="params.keyword" placeholder="维保供应商" clearable>
|
||||
<el-option v-for="item in setMap.status" :key="item" :label="item.name" :value="item.value"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="searchItem">
|
||||
<label class="name">状态</label>
|
||||
<el-select class="input" :size="size" v-model="params.keyword" placeholder="状态" clearable>
|
||||
<el-option v-for="item in setMap.status" :key="item" :label="item.name" :value="item.value"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<scSearch ref="scSearch" :searchList="searchList" @fetchSelectData="getSelectData"></scSearch>
|
||||
<div class="searchItem searchBtn">
|
||||
<el-button :size="size" :icon="searchShow?'el-icon-ArrowUpBold':'el-icon-ArrowDownBold'" @click="searchShowClick">{{searchShow?'收起':'更多'}}</el-button>
|
||||
<el-button :size="size" type="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
|
||||
<el-button :size="size" type="info" icon="el-icon-RefreshRight">重置</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<scTable ref="table" :apiObj="list.apiObj" row-key="id" @selection-change="selectionChange" stripe :size="size">
|
||||
<el-table-column type="selection" align="center" width="40"></el-table-column>
|
||||
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
|
||||
<el-table-column label="工单号" prop="order_sn" width="150"></el-table-column>
|
||||
<el-table-column label="别名" prop="alias" width="200"></el-table-column>
|
||||
<el-table-column label="排序" prop="sort" width="80"></el-table-column>
|
||||
<el-table-column label="创建时间" prop="date" width="180"></el-table-column>
|
||||
<el-table-column label="状态" prop="status" width="80">
|
||||
<template #default="scope">
|
||||
<el-switch v-model="scope.row.status" :size="size" @change="changeSwitch($event, scope.row)" :loading="scope.row.$switch_status" :active-value="true" :inactive-value="false"></el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="remark" min-width="150"></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" align="center" width="150">
|
||||
<template #default="scope">
|
||||
<el-dropdown>
|
||||
@ -69,25 +42,48 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
size:'small',
|
||||
searchShow:false,
|
||||
setMap:{
|
||||
status:[]
|
||||
},
|
||||
|
||||
dialog: {
|
||||
save: false,
|
||||
permission: false
|
||||
},
|
||||
list:{
|
||||
apiObj: {},
|
||||
apiObj: this.$API.early.earlyWarn.list,
|
||||
column:[]
|
||||
},
|
||||
searchList:[
|
||||
{name:'日期',type:'date',code:'created_at',show:true},
|
||||
{name:'区域',type:'text',code:['region'],placeholder:"请选择区域",show:true},
|
||||
{name:'部件类别',type:'text',code:['part_category'],placeholder:"请输入部件类别",show:true},
|
||||
{name:'部件MPN',type:'text',code:['part_mpn'],placeholder:"请输入部件MPN",isOpen:true,show:false},
|
||||
{name:'在保备件出货总量',type:'text',code:['total_protected_parts'],placeholder:"请输入在保备件出货总量",isOpen:true,show:false},
|
||||
{name:'在保备件数量',type:'text',code:['protected_spares_quantity'],placeholder:"请输入在保备件数量",isOpen:true,show:false},
|
||||
{name:'预估三个月用量',type:'text',code:['sn'],placeholder:"请输入预估三个月用量",isOpen:true,show:false},
|
||||
{name:'风险等级',type:'text',code:['risk_level'],placeholder:"请输入风险等级",isOpen:true,show:false},
|
||||
{name:'风险描述',type:'text',code:['risk_description'],placeholder:"请输入风险描述",isOpen:true,show:false},
|
||||
{name:'治理计划',type:'text',code:['governance_plan'],placeholder:"请输入治理计划",isOpen:true,show:false},
|
||||
{name:'关键字',type:'text',code:['fault_description'],keyword:true,show:true},
|
||||
],
|
||||
selection: [],
|
||||
params: {
|
||||
keyword: null
|
||||
}
|
||||
params: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getSelectData(item){
|
||||
let { params} = item; // data,
|
||||
this.params = params;
|
||||
},
|
||||
searchShowClick(){
|
||||
this.searchShow = !this.searchShow;
|
||||
this.searchList.forEach(item=>{
|
||||
if(item.isOpen){
|
||||
item.show = this.searchShow
|
||||
}
|
||||
})
|
||||
},
|
||||
//添加
|
||||
add(){
|
||||
this.dialog.save = true
|
||||
@ -154,7 +150,7 @@ export default {
|
||||
},
|
||||
//搜索
|
||||
upSearch(){
|
||||
|
||||
this.$refs.table.upData(this.params);
|
||||
},
|
||||
|
||||
//本地更新数据
|
||||
|
||||
@ -1,20 +1,15 @@
|
||||
<template>
|
||||
<el-popover
|
||||
placement="bottom"
|
||||
title=""
|
||||
trigger="click"
|
||||
content=""
|
||||
width="300"
|
||||
v-bind="$attrs"
|
||||
:visible="show"
|
||||
>
|
||||
<template #reference>
|
||||
<div class="customerPopover">
|
||||
<div class="btnBox">
|
||||
<slot></slot>
|
||||
</template>
|
||||
<template #default>
|
||||
</div>
|
||||
<div class="contentPopover" v-if="show">
|
||||
<div class="bodyMain">
|
||||
<span class="arrow"></span>
|
||||
<div class="refreshBox">{{refreshDom}}</div>
|
||||
</template>
|
||||
</el-popover>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -58,6 +53,54 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
<style scoped lang="scss">
|
||||
.exportPopover ::v-deep .el-progress-bar__innerText{
|
||||
height: 100%;
|
||||
display: flex;align-items: center;justify-content: flex-end;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.customerPopover{
|
||||
position: relative;
|
||||
height: auto;
|
||||
.btnBox{
|
||||
margin-left: 12px;
|
||||
}
|
||||
.contentPopover{
|
||||
width: 300px;
|
||||
padding: 12px;
|
||||
background: var(--el-bg-color-overlay);
|
||||
border: 1px solid var(--el-border-color-light);
|
||||
box-shadow: var(--el-box-shadow-light);
|
||||
border-radius: 4px;
|
||||
position: absolute;
|
||||
top: 38px;
|
||||
right: -10px;
|
||||
z-index: 200;
|
||||
}
|
||||
.bodyMain{
|
||||
position: relative;
|
||||
.arrow{
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: -18px;
|
||||
width: 8px;height: 8px;z-index: 10;
|
||||
}
|
||||
.arrow:before{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
z-index: -1;
|
||||
content: '';
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
transform:rotate(135deg);
|
||||
border: 1px solid var(--el-border-color-light);
|
||||
background: #fff;
|
||||
border-bottom-left-radius:2px;
|
||||
border-right-color:transparent;
|
||||
border-top-color:transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -13,13 +13,17 @@
|
||||
<span class="refreshEmail" v-auth="'mailSyncManual'" @click="manualClick"><el-icon size="16px" :class="refreshShow?'refreshEmailIcon':''"><sc-icon-Refresh/></el-icon></span>
|
||||
</emailSync>
|
||||
</el-header>
|
||||
<el-header>
|
||||
<el-button type="primary" plain :size="size" :loading="emailLinkLoading" @click="seeEmailLink">查看收件箱</el-button>
|
||||
</el-header>
|
||||
<el-main class="nopadding" v-loading="listLoading" element-loading-text="加载中...">
|
||||
<el-scrollbar height="100%" ref="scrollbar" @scroll="onScroll">
|
||||
<div class="emailMain" ref="emailMain">
|
||||
<div class="itemBox" :class="[item.is_confirm==2?'part':item.is_confirm==1?'complete':'notStarted', emailId == item.id?'itemTrue':'']" v-for="item in confirmList" :key="item" @click="()=>{this.emailChange(item,true);}">
|
||||
<div class="name text">{{item.from && item.from.email}}</div>
|
||||
<div class="title text">{{item.subject}}</div>
|
||||
<div class="msg text">{{item.text}}</div>
|
||||
<div class="msg title text">{{item.text}}</div>
|
||||
<div class="seeEmail text" @click.stop="seeEmailLinkDetail(item)">查看邮件</div>
|
||||
<div class="date">{{item.sent_at}}</div>
|
||||
<div class="total">
|
||||
<el-badge class="badgeItem" :value="item.total_count" :max="99" color="#eeeeee"></el-badge>
|
||||
@ -191,6 +195,7 @@ export default {
|
||||
confirmList:[],
|
||||
listMore:false,
|
||||
listLoading:false,
|
||||
emailLinkLoading:false,
|
||||
listParams:{
|
||||
page:1,
|
||||
pageSize:30,
|
||||
@ -284,11 +289,24 @@ export default {
|
||||
return 'all-disabled'
|
||||
}
|
||||
},
|
||||
async seeEmailLink() {
|
||||
this.emailLinkLoading = true;
|
||||
const res = await this.$API.setup.mail.free.post();
|
||||
this.emailLinkLoading = false;
|
||||
if (res.code == 200) {
|
||||
window.open(res.data.link,'_blank');
|
||||
}
|
||||
},
|
||||
async seeEmailLinkDetail(item) {
|
||||
const res = await this.$API.setup.mail.free.post({message_id:item.message_id});
|
||||
if (res.code == 200) {
|
||||
window.open(res.data.link, '_blank');
|
||||
}
|
||||
},
|
||||
async getEmailConfig() {
|
||||
const res = await this.$API.setup.mail.configInfo.post();
|
||||
if(res.code == 200){
|
||||
this.is_auto_repair = res.data.is_auto_repair;
|
||||
console.log(res.data)
|
||||
}
|
||||
},
|
||||
async getData() {
|
||||
@ -637,6 +655,7 @@ export default {
|
||||
.name{margin-bottom: 10px;font-size: 14px;font-weight: 600;color: var(--el-color-dark);}
|
||||
.title{margin-bottom: 6px;color: var(--el-text-color-regular)}
|
||||
.msg{color: var(--el-text-color-placeholder);width: calc(100% - 40px);}
|
||||
.seeEmail{color: var(--el-color-primary);cursor: pointer;}
|
||||
.date{
|
||||
position: absolute;right: 12px;top: 14px;z-index: 10;
|
||||
color: var(--el-text-color-regular);
|
||||
@ -663,6 +682,7 @@ export default {
|
||||
.itemBox:hover{
|
||||
padding-right: 10px;
|
||||
cursor: pointer;
|
||||
background: #EFF5FF;
|
||||
}
|
||||
.itemBox:hover .total{
|
||||
right: 20px;
|
||||
|
||||
@ -110,6 +110,10 @@ export default {
|
||||
.pageRight ::v-deep .mainTable .el-table .el-table__inner-wrapper:before{
|
||||
height: 0;
|
||||
}
|
||||
.mainMenu .el-menu-item.is-active:after{
|
||||
background: none;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
.pageBody{
|
||||
height: 100%;
|
||||
|
||||
@ -1,24 +1,5 @@
|
||||
<template>
|
||||
<div class="serveFooter">
|
||||
<!-- <div class="footerView">-->
|
||||
<!-- <div class="footer-left">-->
|
||||
<!-- <div class="common-header-logo">-->
|
||||
<!-- <img class="logo" src="https://dm-auto.oss-cn-shanghai.aliyuncs.com/xw_cloud/image/login_logo.png">-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="footer-right">-->
|
||||
<!-- <div class="viewUl">-->
|
||||
<!-- <div class="line"><span>个人中心</span></div>-->
|
||||
<!-- <div class="line"><span>关于我们</span></div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="viewUl">-->
|
||||
<!-- <div class="line"><span>服务支持</span></div>-->
|
||||
<!-- <div class="line"><span>信息查询</span></div>-->
|
||||
<!-- <div class="line"><span>自助服务</span></div>-->
|
||||
<!-- <div class="line"><span>问题单</span></div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<div class="copyright">
|
||||
<div class="viewUl">
|
||||
<div class="line"><span>Copyright @2024象纬云科有限公司</span></div>
|
||||
@ -48,6 +29,11 @@ export default {
|
||||
border-top: 1px solid #f6f6f6;
|
||||
background: #FFFFFF;
|
||||
padding: 12px 0;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 10;
|
||||
width: 100%;
|
||||
.footerView{
|
||||
padding: 0 20px;
|
||||
display: flex;
|
||||
|
||||
@ -4,14 +4,14 @@
|
||||
<el-main class="serveMain">
|
||||
<div class="searchMain searchMainNoTop">
|
||||
<div class="searchItem">
|
||||
<div class="name">序列号</div> <el-input type="text" :size="size" placeholder="请输入序列号"></el-input>
|
||||
<el-input class="textInput" type="text" placeholder="请输入序列号"></el-input>
|
||||
</div>
|
||||
<div class="searchItem searchBtn">
|
||||
<el-button :size="size" type="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mainTable">
|
||||
<scTable height="100%" ref="table" :data="list.data" :column="list.column" stripe :size="size">
|
||||
<scTable height="100%" ref="table" :data="list.data" :column="list.column" :size="size" hideDo>
|
||||
<el-table-column type="index" label="序号"></el-table-column>
|
||||
<template v-for="(item,index) in list.column" :key="index">
|
||||
<el-table-column :label="item.label" :prop="item.prop" :width="item.width" show-overflow-tooltip></el-table-column>
|
||||
@ -59,5 +59,6 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
.searchMainNoTop{margin: 0 auto 20px auto;}
|
||||
.textInput{width: 480px;}
|
||||
</style>
|
||||
|
||||
@ -4,14 +4,14 @@
|
||||
<el-main class="serveMain">
|
||||
<div class="searchMain searchMainNoTop">
|
||||
<div class="searchItem">
|
||||
<div class="name">序列号</div><el-input class="textInput" type="text" v-model="keyword" :size="size" clearable placeholder="请输入序列号"></el-input>
|
||||
<el-input class="textInput" type="text" v-model="keyword" clearable placeholder="请输入序列号"></el-input>
|
||||
</div>
|
||||
<div class="searchItem searchBtn">
|
||||
<el-button :size="size" type="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mainTable">
|
||||
<scTable class="serveTable" ref="table" :apiObj="list.apiObj" :column="list.column" :params="params" stripe :size="size">
|
||||
<scTable class="serveTable" ref="table" :apiObj="list.apiObj" :column="list.column" :params="params" :size="size" hideDo>
|
||||
<el-table-column type="index" label="序号"></el-table-column>
|
||||
<template v-for="(item,index) in list.column" :key="index">
|
||||
<el-table-column :label="item.label" :prop="item.prop" :width="item.width" show-overflow-tooltip>
|
||||
@ -80,5 +80,6 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.textInput{width: 200px;}
|
||||
.searchMainNoTop{margin: 0 auto 20px auto;}
|
||||
.textInput{width: 480px;}
|
||||
</style>
|
||||
|
||||
@ -4,14 +4,14 @@
|
||||
<el-main class="serveMain">
|
||||
<div class="searchMain searchMainNoTop">
|
||||
<div class="searchItem">
|
||||
<div class="name">序列号</div> <el-input type="text" :size="size" placeholder="请输入序列号"></el-input>
|
||||
<el-input class="textInput" type="text" placeholder="请输入序列号"></el-input>
|
||||
</div>
|
||||
<div class="searchItem searchBtn">
|
||||
<el-button :size="size" type="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mainTable">
|
||||
<scTable height="100%" ref="table" :data="list.data" :column="list.column" stripe :size="size">
|
||||
<scTable height="100%" ref="table" :data="list.data" :column="list.column" :size="size" hideDo>
|
||||
<el-table-column type="index" label="序号"></el-table-column>
|
||||
<template v-for="(item,index) in list.column" :key="index">
|
||||
<el-table-column :label="item.label" :prop="item.prop" :width="item.width" show-overflow-tooltip></el-table-column>
|
||||
@ -60,5 +60,6 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
.searchMainNoTop{margin: 0 auto 20px auto;}
|
||||
.textInput{width: 480px;}
|
||||
</style>
|
||||
|
||||
@ -96,6 +96,10 @@ export default {
|
||||
.pageRight ::v-deep .mainTable .el-table .el-table__inner-wrapper:before{
|
||||
height: 0;
|
||||
}
|
||||
.mainMenu .el-menu-item.is-active:after{
|
||||
background: none;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
.pageBody{
|
||||
height: 100%;
|
||||
|
||||
@ -37,6 +37,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {eventBus} from "@/utils/eventBus";
|
||||
|
||||
export default {
|
||||
name: "faq",
|
||||
components:{
|
||||
@ -66,17 +68,17 @@ export default {
|
||||
|
||||
},
|
||||
mounted() {
|
||||
|
||||
this.getTypeList();
|
||||
},
|
||||
methods:{
|
||||
table_show(row){
|
||||
this.$router.push({
|
||||
path: '/service/faq-info',
|
||||
query: {
|
||||
id: row.id,
|
||||
name:row.name
|
||||
async getTypeList() {
|
||||
const res = await this.$API.customer.serviceTypeList.post();
|
||||
if(res.code == 200){
|
||||
this.setMap.typeList = res.data;
|
||||
}
|
||||
})
|
||||
},
|
||||
table_show(row){
|
||||
eventBus.$emit('tagClose','/service/faq-info',{id:row.id,name:row.name});
|
||||
},
|
||||
table_del(row){
|
||||
let params = {
|
||||
|
||||
@ -3,7 +3,6 @@
|
||||
<el-main class="nopadding">
|
||||
<div class="searchMain">
|
||||
<scSearch ref="scSearch" :searchList="searchList" @fetchSelectData="getSelectData"></scSearch>
|
||||
|
||||
<div class="searchItem searchBtn">
|
||||
<el-button :size="size" type="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
|
||||
<el-button :size="size" type="info" icon="el-icon-RefreshRight" @click="reset">重置</el-button>
|
||||
@ -12,6 +11,11 @@
|
||||
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" row-key="id" stripe :size="size" @selection-change="selectionChange">
|
||||
<el-table-column type="selection" align="center" width="40"></el-table-column>
|
||||
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
|
||||
<template #type="scope">
|
||||
<span v-for="(item,index) in setMap.typeList" :key="index">
|
||||
<span v-if="item.value == scope.row.type">{{item.label}}</span>
|
||||
</span>
|
||||
</template>
|
||||
</scTable>
|
||||
</el-main>
|
||||
</el-container>
|
||||
@ -23,9 +27,8 @@ export default {
|
||||
data(){
|
||||
return{
|
||||
size:'small',
|
||||
dialog: {
|
||||
save: false,
|
||||
show: false,
|
||||
setMap:{
|
||||
typeList:[]
|
||||
},
|
||||
list: {
|
||||
apiObj: this.$API.customer.queryRecordList,
|
||||
@ -36,25 +39,58 @@ export default {
|
||||
searchShow:false,
|
||||
searchList:[
|
||||
{name:'查询时间',type:'date',code:'created_at',show: true},
|
||||
{name:'查询类型',type:'select',data:[],code:'updated_at',show: true},
|
||||
{name:'用户名',type:'text',code:'bom_version',placeholder:"请输入用户名",show:true},
|
||||
{name:'关键字',type:'text',code:['bom_abbreviation'],keyword:true,show:true},
|
||||
{name:'查询类型',type:'select',code:['type'],data:[],placeholder:"请选择类型", show: true},
|
||||
{name:'查询内容',type:'text',code:'content',placeholder:"请输入内容",show:true},
|
||||
{name:'用户名',type:'text',code:"creator_name",placeholder:"请输入用户名",show:true},
|
||||
],
|
||||
params: {},
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
this.getTypeList();
|
||||
},
|
||||
methods:{
|
||||
async getTypeList() {
|
||||
const res = await this.$API.customer.searchTypeList.post(this.params);
|
||||
if (res.code == 200) {
|
||||
this.setMap.typeList = res.data;
|
||||
}
|
||||
},
|
||||
async getStatusList(data,params) {
|
||||
const res = await this.$API.customer.searchTypeList.post(params);
|
||||
if(res.code == 200){
|
||||
if(res.data && res.data.length>0){
|
||||
res.data.forEach(item=>{
|
||||
item.type = item.value;
|
||||
})
|
||||
}
|
||||
this.searchList.forEach(item=>{
|
||||
if(item.code == data.code){
|
||||
item.data = res.data;
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
getSelectData(item){
|
||||
let {data,params} = item;
|
||||
this.params = params;
|
||||
let searchParams = this.$TOOL.objCopy(params);
|
||||
searchParams.field = ""
|
||||
if (typeof data.code === 'string') {
|
||||
searchParams.field = data.code;
|
||||
} else {
|
||||
searchParams.field = data.code[0];
|
||||
}
|
||||
if(data.type == 'select' || data.type == 'multiple'){
|
||||
if(data.code == 'type'){
|
||||
this.getStatusList(data,params);
|
||||
}
|
||||
}
|
||||
},
|
||||
//表格选择后回调事件
|
||||
selectionChange(selection){
|
||||
this.selection = selection;
|
||||
},
|
||||
getSelectData(item){
|
||||
let {params} = item;
|
||||
this.params = params;
|
||||
},
|
||||
upSearch(){
|
||||
this.$refs.table.upData(this.params);
|
||||
},
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
<el-button :size="size" type="info" icon="el-icon-RefreshRight" @click="reset">重置</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" row-key="id" stripe :size="size" @selection-change="selectionChange">
|
||||
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" :params="params" row-key="id" stripe :size="size" @selection-change="selectionChange">
|
||||
<el-table-column type="selection" align="center" width="40"></el-table-column>
|
||||
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
|
||||
<template #disable_status="scope">
|
||||
@ -82,9 +82,9 @@ export default {
|
||||
searchList:[
|
||||
{name:'创建时间',type:'date',code:'created_at',show: true},
|
||||
{name:'更新时间',type:'date',code:'updated_at',show: true},
|
||||
{name:'BOM版本',type:'text',code:'bom_version',placeholder:"请输入BOM版本",show:true},
|
||||
{name:'BOM版本',type:'select',code:['bom_version'],placeholder:"请输入BOM版本",show:true},
|
||||
{name:'BOM简称',type:'text',code:'bom_abbreviation',placeholder:"请输入BOM简称",show:false},
|
||||
{name:'BOM分类',type:'text',code:['bom_classification'],placeholder:"请输入BOM分类",isOpen:true,show:false},
|
||||
{name:'BOM分类',type:'select',code:['bom_classification'],placeholder:"请输入BOM分类",isOpen:true,show:false},
|
||||
{name:'BOM用途',type:'text',code:['bom_purpose'],placeholder:"请输入BOM用途",isOpen:true,show:false},
|
||||
{name:'父项物料编码',type:'text',code:['parent_material_code'],placeholder:"请输入父项物料编码",isOpen:true,show:false},
|
||||
{name:'父项物料名称',type:'text',code:['parent_material_name'],placeholder:"请输入父项物料名称",isOpen:true,show:false},
|
||||
@ -119,9 +119,33 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
getSelectData(item){
|
||||
let {params} = item;
|
||||
async getSelectData(item) {
|
||||
let {data, params} = item;
|
||||
this.params = params;
|
||||
let searchParams = this.$TOOL.objCopy(params);
|
||||
searchParams.field = ""
|
||||
if (typeof data.code === 'string') {
|
||||
searchParams.field = data.code;
|
||||
} else {
|
||||
searchParams.field = data.code[0];
|
||||
}
|
||||
if (data.type == 'select' || data.type == 'multiple') {
|
||||
const res = await this.$API.setup.bom.field.post(searchParams);
|
||||
if (res.code == 200) {
|
||||
if (res.data && res.data.length > 0) {
|
||||
res.data.forEach(item => {
|
||||
item.label = item[data.code];
|
||||
item.value = item.id;
|
||||
item.id = item[data.code];
|
||||
})
|
||||
}
|
||||
this.searchList.forEach(item => {
|
||||
if (item.code == data.code) {
|
||||
item.data = res.data;
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 批量导入
|
||||
|
||||
@ -1,51 +1,66 @@
|
||||
<template>
|
||||
<el-dialog :title="titleMap[mode]" v-model="visible" :width="500" draggable destroy-on-close @closed="$emit('closed')">
|
||||
<el-scrollbar max-height="500" style="padding: 0 20px;">
|
||||
<el-form class="form" :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="100px" label-position="right">
|
||||
<el-form-item label="BOM版本" prop="login_name">
|
||||
<el-input v-model="form.login_name" placeholder="请填写登录账号" :disabled="mode!='add'?true:false" clearable></el-input>
|
||||
<p class="el-form-item-msg" v-if="mode == 'edit'">账号信息用于登录,系统不允许修改</p>
|
||||
<el-form class="form" :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="110px" label-position="right">
|
||||
<el-form-item label="BOM版本" prop="bom_version">
|
||||
<el-input v-model="form.bom_version" placeholder="请填写BOM版本" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="BOM简称" prop="password" v-if="mode == 'add'">
|
||||
<el-input type="password" v-model="form.password" placeholder="请填写密码" clearable show-password></el-input>
|
||||
<el-form-item label="BOM简称" prop="bom_abbreviation">
|
||||
<el-input v-model="form.bom_abbreviation" placeholder="请填写BOM简称" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="BOM分类" prop="company_full_name">
|
||||
<el-select v-model="form.company_full_name" placeholder="请填写公司名称" clearable>
|
||||
<el-option v-for="(item,index) in companyList" :key="index" :label="item.full_name" :value="item.full_name"></el-option>
|
||||
</el-select>
|
||||
<el-form-item label="BOM分类" prop="bom_classification">
|
||||
<el-input v-model="form.bom_classification" placeholder="请填写BOM分类" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="BOM用途" prop="mobile">
|
||||
<el-input v-model="form.mobile" placeholder="请填写联系电话" clearable></el-input>
|
||||
<el-form-item label="BOM用途" prop="bom_purpose">
|
||||
<el-input v-model="form.bom_purpose" placeholder="请填写BOM用途" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="父项物料编码" prop="email">
|
||||
<el-input v-model="form.email" placeholder="请填写电子邮件" clearable></el-input>
|
||||
<el-form-item label="父项物料编码" prop="parent_material_code">
|
||||
<el-input v-model="form.parent_material_code" placeholder="请填写父项物料编码" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="父项物料民称" prop="email">
|
||||
<el-input v-model="form.email" placeholder="请填写电子邮件" clearable></el-input>
|
||||
<el-form-item label="父项物料民称" prop="parent_material_name">
|
||||
<el-input v-model="form.parent_material_name" placeholder="请填写父项物料民称" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="父项物料单位" prop="email">
|
||||
<el-input v-model="form.email" placeholder="请填写电子邮件" clearable></el-input>
|
||||
<el-form-item label="父项物料单位" prop="parent_material_unit">
|
||||
<el-input v-model="form.parent_material_unit" placeholder="请填写父项物料单位" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="子项物料编码" prop="email">
|
||||
<el-input v-model="form.email" placeholder="请填写电子邮件" clearable></el-input>
|
||||
<el-form-item label="子项物料编码" prop="child_material_code">
|
||||
<el-input v-model="form.child_material_code" placeholder="请填写子项物料编码" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="子项物料民称" prop="email">
|
||||
<el-input v-model="form.email" placeholder="请填写电子邮件" clearable></el-input>
|
||||
<el-form-item label="子项物料民称" prop="child_material_name">
|
||||
<el-input v-model="form.child_material_name" placeholder="请填写子项物料民称" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="子项物料单位" prop="email">
|
||||
<el-input v-model="form.email" placeholder="请填写电子邮件" clearable></el-input>
|
||||
<el-form-item label="子项物料单位" prop="child_material_unit">
|
||||
<el-input v-model="form.child_material_unit" placeholder="请填写子项物料单位" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="次项" prop="email">
|
||||
<el-input v-model="form.email" placeholder="请填写电子邮件" clearable></el-input>
|
||||
<el-form-item label="次项" prop="item_sequence">
|
||||
<el-input v-model="form.item_sequence" placeholder="请填写次项" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="子项类型" prop="email">
|
||||
<el-input v-model="form.email" placeholder="请填写电子邮件" clearable></el-input>
|
||||
<el-form-item label="子项类型" prop="child_material_type">
|
||||
<el-input v-model="form.child_material_type" placeholder="请填写子项类型" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="用量分子" prop="email">
|
||||
<el-input v-model="form.email" placeholder="请填写电子邮件" clearable></el-input>
|
||||
<el-form-item label="用量分子" prop="usage_numerator">
|
||||
<el-input v-model="form.usage_numerator" placeholder="请填写用量分子" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="用量分母" prop="email">
|
||||
<el-input v-model="form.email" placeholder="请填写电子邮件" clearable></el-input>
|
||||
<el-form-item label="用量分母" prop="usage_denominator">
|
||||
<el-input v-model="form.usage_denominator" placeholder="请填写用量分母" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="创建组织编码" prop="create_org_code">
|
||||
<el-input v-model="form.create_org_code" placeholder="请填写创建组织编码" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="创建组织名称" prop="create_org_name">
|
||||
<el-input v-model="form.create_org_name" placeholder="请填写创建组织名称" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="使用组织编码" prop="use_org_code">
|
||||
<el-input v-model="form.use_org_code" placeholder="请填写使用组织编码" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="使用组织名称" prop="use_org_name">
|
||||
<el-input v-model="form.use_org_name" placeholder="请填写使用组织名称" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="单据状态" prop="document_status">
|
||||
<el-input v-model="form.document_status" placeholder="请填写单据状态" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="禁用状态" prop="disable_status">
|
||||
<el-input v-model="form.disable_status" placeholder="请填写禁用状态" clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
@ -72,92 +87,43 @@ export default {
|
||||
//表单数据
|
||||
form: {
|
||||
id:"",
|
||||
login_name: "",
|
||||
name:"",
|
||||
emp_id:"",
|
||||
mobile:"",
|
||||
email:"",
|
||||
avatar: "",
|
||||
password:"",
|
||||
dept_id: "",
|
||||
role_ids: [],
|
||||
company_full_name:""
|
||||
bom_version:"",
|
||||
bom_abbreviation:"",
|
||||
bom_classification:"",
|
||||
bom_purpose:"",
|
||||
parent_material_code:"",
|
||||
parent_material_name:"",
|
||||
parent_material_unit:"",
|
||||
child_material_code:"",
|
||||
child_material_name:"",
|
||||
child_material_unit:"",
|
||||
item_sequence:"",
|
||||
child_material_type:"",
|
||||
usage_numerator:"",
|
||||
usage_denominator:"",
|
||||
create_org_code:"",
|
||||
create_org_name:"",
|
||||
use_org_code:"",
|
||||
use_org_name:"",
|
||||
document_status:"",
|
||||
disable_status:""
|
||||
},
|
||||
//验证规则
|
||||
rules: {
|
||||
avatar:[
|
||||
{required: false, message: '请上传头像'}
|
||||
],
|
||||
login_name: [
|
||||
{required: true, message: '请输入登录账号'}
|
||||
],
|
||||
name: [
|
||||
{required: true, message: '请输入昵称'}
|
||||
],
|
||||
emp_id:[
|
||||
{required: true, message: '请输入工号'}
|
||||
],
|
||||
mobile: [
|
||||
{required: true, message: '请输入联系方式'}
|
||||
],
|
||||
email: [
|
||||
{required: true, message: '请输入邮箱地址'}
|
||||
],
|
||||
password: [
|
||||
{required: true, message: '请输入登录密码'},
|
||||
{validator: (rule, value, callback) => {
|
||||
if (this.form.password2 !== '') {
|
||||
this.$refs.dialogForm.validateField('password2');
|
||||
}
|
||||
callback();
|
||||
}}
|
||||
],
|
||||
password_cnf: [
|
||||
{required: true, message: '请再次输入密码'},
|
||||
{validator: (rule, value, callback) => {
|
||||
if (value !== this.form.password) {
|
||||
callback(new Error('两次输入密码不一致!'));
|
||||
}else{
|
||||
callback();
|
||||
}
|
||||
}}
|
||||
],
|
||||
dept_id: [
|
||||
{required: false, message: '请选择所属分组'}
|
||||
],
|
||||
role_ids: [
|
||||
{required: true, message: '请选择所属角色', trigger: 'change'}
|
||||
]
|
||||
|
||||
},
|
||||
companyList:[]
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getCompanyList();
|
||||
|
||||
},
|
||||
methods: {
|
||||
async getCompanyList() {
|
||||
let params = {
|
||||
field:"full_name",
|
||||
id:{
|
||||
operator:"in",
|
||||
value:[]
|
||||
}
|
||||
}
|
||||
const res = await this.$API.system.user.userCompanyField.post(params);
|
||||
if(res.code == 200){
|
||||
this.companyList = res.data;
|
||||
}
|
||||
},
|
||||
//显示
|
||||
open(mode='add'){
|
||||
this.mode = mode;
|
||||
this.visible = true;
|
||||
return this
|
||||
},
|
||||
parentParams(item){
|
||||
this.form.avatar = item;
|
||||
},
|
||||
//表单提交方法
|
||||
submit(){
|
||||
this.$refs.dialogForm.validate(async (valid) => {
|
||||
@ -178,16 +144,6 @@ export default {
|
||||
//表单注入数据
|
||||
setData(data){
|
||||
this.form.id = data.id
|
||||
this.form.login_name = data.login_name
|
||||
this.form.name = data.name
|
||||
this.form.emp_id = data.emp_id
|
||||
this.form.mobile = data.mobile
|
||||
this.form.email = data.email
|
||||
this.form.avatar = data.avatar
|
||||
this.form.dept_id = data.dept_id
|
||||
this.form.group = data.group
|
||||
this.form.role_ids = data.user_roles && data.user_roles.role_ids?data.user_roles.role_ids:[]
|
||||
this.form.company_full_name = data.company_info?data.company_info.full_name:''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user