修改工单维保
This commit is contained in:
parent
533d3a8918
commit
4f1510d67a
@ -38,6 +38,14 @@ export default {
|
|||||||
return await http.post(this.url,params);
|
return await http.post(this.url,params);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
field:{
|
||||||
|
url: `${config.API_URL}/spare.parts.warning.field.list`,
|
||||||
|
name: "预警管理自定义检索",
|
||||||
|
post: async function (params) {
|
||||||
|
return await http.post(this.url, params);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -224,6 +224,13 @@ export default {
|
|||||||
post: async function (params) {
|
post: async function (params) {
|
||||||
return await http.post(this.url,params);
|
return await http.post(this.url,params);
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
wbCompanyField:{
|
||||||
|
url: `${config.API_URL}/wb.company.field.list`,
|
||||||
|
name: "维保厂商下拉",
|
||||||
|
post: async function (params) {
|
||||||
|
return await http.post(this.url,params);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
plan:{
|
plan:{
|
||||||
|
|||||||
@ -240,8 +240,29 @@ export default {
|
|||||||
post: async function (data) {
|
post: async function (data) {
|
||||||
return await http.post(this.url, data);
|
return await http.post(this.url, data);
|
||||||
},
|
},
|
||||||
|
},
|
||||||
|
regionalConstList:{
|
||||||
|
url:`${config.API_URL}/regional.address.const.list`,
|
||||||
|
name:"区域信息对照下拉列表",
|
||||||
|
post:async function (data) {
|
||||||
|
return await http.post(this.url, data);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
import:{
|
||||||
|
url: `${config.API_URL}/regional.address.batch.import`,
|
||||||
|
name: "区域地址导入",
|
||||||
|
post: async function (params) {
|
||||||
|
return await http.post(this.url,params,{'Content-Type': 'multipart/form-data'});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
template:{
|
||||||
|
url: `${config.API_URL}/area.address.import.template`,
|
||||||
|
name: "区域地址导入模版",
|
||||||
|
post: async function (params) {
|
||||||
|
return await http.get(this.url,params,{responseType: 'arraybuffer'});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
spare:{
|
spare:{
|
||||||
list:{
|
list:{
|
||||||
url: `${config.API_URL}/spare.parts.failure.rate.list`,
|
url: `${config.API_URL}/spare.parts.failure.rate.list`,
|
||||||
|
|||||||
15
src/assets/icons/PartsMag.vue
Normal file
15
src/assets/icons/PartsMag.vue
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<template>
|
||||||
|
<svg t="1736316901795" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7222" width="200" height="200">
|
||||||
|
<path d="M788.087372 125.660073l147.771382 72.31774c33.150964 19.83938 54.334302 55.934252 56.126246 95.741008l-0.95997 445.554077a114.55642 114.55642 0 0 1-57.150214 95.165026l-385.26796 182.3943c-23.67926 9.5997-50.046436 9.5997-73.789694 0l-384.691978-182.3943a113.148464 113.148464 0 0 1-57.150214-95.165026L32.015 293.782819c1.407956-39.742758 22.3993-75.965626 55.614262-95.741008L473.857192 8.031749c24.31924-10.687666 51.83838-10.687666 76.221618 0l156.47511 76.989594-466.801412 243.1924V485.136839l81.533452 39.806757V368.852473l466.801412-243.1924z m47.9985 618.860661l59.006156-154.23518v-0.447986c7.167776-17.023468 6.71979-30.271054-0.447986-36.286866l-63.35802-101.116841a22.015312 22.015312 0 0 0-29.183088-5.823818l-122.300178 53.11834c-11.967626 7.487766-21.75932 18.111434-28.351114 30.911035l-59.006156 154.23518c-7.03978 16.95947-7.03978 30.783038 0.447986 36.670854l63.35802 101.052842a22.015312 22.015312 0 0 0 29.183088 5.887816l122.300178-53.182338c11.967626-7.423768 21.75932-18.111434 28.351114-30.847036z m-48.382488-74.621668c-24.063248 36.990844-63.102028 53.11834-87.101278 36.15887-24.063248-16.95947-24.127246-60.670104 0-97.59695 23.99925-36.990844 63.03803-53.11834 87.03728-36.15887 24.127246 16.95947 24.127246 60.670104 0.063998 97.59695z" p-id="7223"></path>
|
||||||
|
</svg>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "PartsMag"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -57,6 +57,7 @@ export { default as OrderQuery } from './OrderQuery.vue'
|
|||||||
export { default as ComponentQuery } from './ComponentQuery.vue'
|
export { default as ComponentQuery } from './ComponentQuery.vue'
|
||||||
export { default as TermQuery } from './TermQuery.vue'
|
export { default as TermQuery } from './TermQuery.vue'
|
||||||
export { default as Feedback } from './Feedback.vue'
|
export { default as Feedback } from './Feedback.vue'
|
||||||
|
export { default as PartsMag } from './PartsMag.vue'
|
||||||
|
|
||||||
export { default as File7z } from './file/7z.vue'
|
export { default as File7z } from './file/7z.vue'
|
||||||
export { default as FileBmp } from './file/Bmp.vue'
|
export { default as FileBmp } from './file/Bmp.vue'
|
||||||
|
|||||||
@ -111,7 +111,7 @@ export default {
|
|||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
getWsResult(res){
|
getWsResult(res){
|
||||||
if(res.data && (res.data.type == 4 || res.data.type == 5 || res.data.type == 10 || res.data.type == 17 || res.data.type == 18 || res.data.type == 27 || res.data.type == 28 || res.data.type == 31 || res.data.type == 42)){
|
if(res.data && (res.data.type == 4 || res.data.type == 5 || res.data.type == 10 || res.data.type == 17 || res.data.type == 18 || res.data.type == 27 || res.data.type == 28 || res.data.type == 31 || res.data.type == 42 || res.data.type == 44)){
|
||||||
if(this.type == res.data.type){
|
if(this.type == res.data.type){
|
||||||
this.importInfo = res.data;
|
this.importInfo = res.data;
|
||||||
this.progressShow = true;
|
this.progressShow = true;
|
||||||
|
|||||||
@ -8,6 +8,15 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
<!-- ┌──────────── [optional] seconds (0 - 59)-->
|
||||||
|
<!-- | ┌────────── minute (0 - 59)-->
|
||||||
|
<!-- | | ┌──────── hour (0 - 23)-->
|
||||||
|
<!-- | | | ┌────── day of month (1 - 31)-->
|
||||||
|
<!-- | | | | ┌──── month (1 - 12) OR jan,feb,mar,apr ...-->
|
||||||
|
<!-- | | | | | ┌── day of week (0 - 6, sunday=0) OR sun,mon ...-->
|
||||||
|
<!-- | | | | | |-->
|
||||||
|
<!-- * * * * * * command-->
|
||||||
|
|
||||||
<div class="scTable" :style="{'height':_height}" ref="scTableMain" v-loading="loading">
|
<div class="scTable" :style="{'height':_height}" ref="scTableMain" v-loading="loading">
|
||||||
<div class="scTable-table" :class="hidePagination && hideDo?'bottomNoBorder':''" :style="{'height':_table_height}">
|
<div class="scTable-table" :class="hidePagination && hideDo?'bottomNoBorder':''" :style="{'height':_table_height}">
|
||||||
<el-table v-bind="$attrs" :header-cell-style="{'background': '#F5F7FA','color':'#606266'}" :data="tableData" :row-key="rowKey" :key="toggleIndex" ref="scTable" :height="height=='auto'?null:'100%'" :size="config.size" :border="config.config.border" :stripe="config.config.stripe" :summary-method="remoteSummary?remoteSummaryMethod:summaryMethod" @sort-change="sortChange" @filter-change="filterChange" @header-dragend="headerDragend">
|
<el-table v-bind="$attrs" :header-cell-style="{'background': '#F5F7FA','color':'#606266'}" :data="tableData" :row-key="rowKey" :key="toggleIndex" ref="scTable" :height="height=='auto'?null:'100%'" :size="config.size" :border="config.config.border" :stripe="config.config.stripe" :summary-method="remoteSummary?remoteSummaryMethod:summaryMethod" @sort-change="sortChange" @filter-change="filterChange" @header-dragend="headerDragend">
|
||||||
|
|||||||
@ -34,6 +34,7 @@ export default {
|
|||||||
columnSettingSave: function (tableName, column ,params, otherParams) {
|
columnSettingSave: function (tableName, column ,params, otherParams) {
|
||||||
column.forEach((item,index)=>{
|
column.forEach((item,index)=>{
|
||||||
item.sort = index+1;
|
item.sort = index+1;
|
||||||
|
delete item.data
|
||||||
})
|
})
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
if(!params.url || params.url==''){
|
if(!params.url || params.url==''){
|
||||||
@ -88,6 +89,7 @@ export default {
|
|||||||
columnSettingReset: function (tableName, column ,params) {
|
columnSettingReset: function (tableName, column ,params) {
|
||||||
column.forEach((item,index)=>{
|
column.forEach((item,index)=>{
|
||||||
item.sort = index+1;
|
item.sort = index+1;
|
||||||
|
delete item.data
|
||||||
})
|
})
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
if(!params.url || params.url==''){
|
if(!params.url || params.url==''){
|
||||||
|
|||||||
@ -3,9 +3,9 @@
|
|||||||
<el-alert title="无子集菜单" center type="info" :closable="false"></el-alert>
|
<el-alert title="无子集菜单" center type="info" :closable="false"></el-alert>
|
||||||
</div>
|
</div>
|
||||||
<template v-for="navMenu in navMenus" v-bind:key="navMenu">
|
<template v-for="navMenu in navMenus" v-bind:key="navMenu">
|
||||||
<el-menu-item :class="{'nav-top-menu':['warehouse','bom','advanced'].indexOf(navMenu.name)!=-1}" v-if="!hasChildren(navMenu)" :index="navMenu.path">
|
<el-menu-item :class="{'nav-top-menu':['warehouse','bom','parts','advanced'].indexOf(navMenu.name)!=-1}" v-if="!hasChildren(navMenu)" :index="navMenu.path">
|
||||||
<a v-if="navMenu.meta && navMenu.meta.type=='link'" :href="navMenu.path" target="_blank" @click.stop='()=>{}'></a>
|
<a v-if="navMenu.meta && navMenu.meta.type=='link'" :href="navMenu.path" target="_blank" @click.stop='()=>{}'></a>
|
||||||
<el-icon v-if="navMenu.meta && navMenu.meta.icon && ['warehouse','bom','advanced'].indexOf(navMenu.name)!=-1" ><component :is="navMenu.meta.icon || 'el-icon-menu'"/></el-icon>
|
<el-icon v-if="navMenu.meta && navMenu.meta.icon && ['warehouse','bom','parts','advanced'].indexOf(navMenu.name)!=-1" ><component :is="navMenu.meta.icon || 'el-icon-menu'"/></el-icon>
|
||||||
<template #title>
|
<template #title>
|
||||||
<span>{{navMenu.meta.title}}</span>
|
<span>{{navMenu.meta.title}}</span>
|
||||||
<span v-if="navMenu.meta.tag" class="menu-tag">{{navMenu.meta.tag>99?'99+':navMenu.meta.tag}}</span>
|
<span v-if="navMenu.meta.tag" class="menu-tag">{{navMenu.meta.tag>99?'99+':navMenu.meta.tag}}</span>
|
||||||
|
|||||||
@ -257,7 +257,7 @@
|
|||||||
|
|
||||||
// 获取新消息
|
// 获取新消息
|
||||||
eventBus.$on('sockBack', this.getWsResult);
|
eventBus.$on('sockBack', this.getWsResult);
|
||||||
// this.$socketApi.getSock(this.getWsResult);
|
this.$socketApi.getSock(this.getWsResult);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|||||||
@ -37,7 +37,7 @@
|
|||||||
--el-order-color-3:#0DA525;
|
--el-order-color-3:#0DA525;
|
||||||
--el-order-color-4:#FFB103;
|
--el-order-color-4:#FFB103;
|
||||||
--el-order-color-5:#E81B1B;
|
--el-order-color-5:#E81B1B;
|
||||||
--el-order-color-100:#57C23A;
|
--el-order-color-100:#E81B1B;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-table{
|
.el-table{
|
||||||
|
|||||||
@ -18,12 +18,15 @@
|
|||||||
<div class="searchItem searchBtn" v-if="searchHeaderShow">
|
<div class="searchItem searchBtn" v-if="searchHeaderShow">
|
||||||
<el-button :size="size" :icon="searchShow?'el-icon-ArrowUpBold':'el-icon-ArrowDownBold'" @click="searchShowClick">{{searchShow?'收起':'更多'}}</el-button>
|
<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="primary" icon="el-icon-search" @click="upSearch">查询</el-button>
|
||||||
<el-button :size="size" type="info" icon="el-icon-RefreshRight">重置</el-button>
|
<el-button :size="size" type="info" icon="el-icon-RefreshRight" @click="reset">重置</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" row-key="id" @selection-change="selectionChange" @columnBack="columnBack" border stripe :size="size">
|
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" row-key="id" @selection-change="selectionChange" @columnBack="columnBack" border stripe :size="size">
|
||||||
<el-table-column type="selection" align="center" width="40"></el-table-column>
|
<el-table-column type="selection" align="center" width="40"></el-table-column>
|
||||||
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
|
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
|
||||||
|
<template #region_name="scope">
|
||||||
|
<span v-if="scope.row.region_info">{{scope.row.region_info.region_name}}</span>
|
||||||
|
</template>
|
||||||
<el-table-column label="操作" fixed="right" align="center" width="150">
|
<el-table-column label="操作" fixed="right" align="center" width="150">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-dropdown>
|
<el-dropdown>
|
||||||
@ -107,9 +110,23 @@ export default {
|
|||||||
this.list.column = val;
|
this.list.column = val;
|
||||||
},
|
},
|
||||||
async filterClick(item) {
|
async filterClick(item) {
|
||||||
let {params} = item;
|
let {data, params} = item;
|
||||||
let filterParams = Object.assign(this.params,params);
|
let filterParams = Object.assign(this.params,params);
|
||||||
this.filterMap.data = filterParams;
|
this.filterMap.data = filterParams;
|
||||||
|
let searchParams = this.$TOOL.objCopy(this.params);
|
||||||
|
searchParams.field = ""
|
||||||
|
if (typeof data.prop === 'string') {
|
||||||
|
searchParams.field = data.prop;
|
||||||
|
} else {
|
||||||
|
searchParams.field = data.prop[0];
|
||||||
|
}
|
||||||
|
if (data.search_type == 'select' || data.search_type == 'checkbox') {
|
||||||
|
if(data.prop === "region_name"){
|
||||||
|
await this.getRegionName(data, searchParams);
|
||||||
|
}else{
|
||||||
|
await this.getField(data,searchParams);
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
filterParams(params){
|
filterParams(params){
|
||||||
let filterParams = Object.assign(this.params,params);
|
let filterParams = Object.assign(this.params,params);
|
||||||
@ -129,9 +146,55 @@ export default {
|
|||||||
this.filterMap.data = params;
|
this.filterMap.data = params;
|
||||||
},
|
},
|
||||||
async getSelectData(item) {
|
async getSelectData(item) {
|
||||||
let {params} = item;
|
let {data, params} = item;
|
||||||
this.params = params;
|
this.params = params; // 列表需要的参数
|
||||||
this.filterMap.data = params;
|
this.filterMap.data = params; // 表头组件需要转 才能传的参数
|
||||||
|
let searchParams = this.$TOOL.objCopy(params);
|
||||||
|
searchParams.field = ""
|
||||||
|
if (typeof data.prop === 'string') {
|
||||||
|
searchParams.field = data.prop;
|
||||||
|
} else {
|
||||||
|
searchParams.field = data.prop[0];
|
||||||
|
}
|
||||||
|
if (data.search_type == 'select' || data.search_type == 'checkbox') {
|
||||||
|
if(data.prop === "region_name"){
|
||||||
|
await this.getRegionName(data, searchParams);
|
||||||
|
}else{
|
||||||
|
await this.getField(data,searchParams)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getField(data,searchParams) {
|
||||||
|
const res = await this.$API.early.earlyWarn.field.post(searchParams);
|
||||||
|
if (res.code == 200) {
|
||||||
|
if (res.data && res.data.length > 0) {
|
||||||
|
res.data.forEach(item => {
|
||||||
|
item.label = item[data.prop];
|
||||||
|
item.value = item[data.prop];
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.list.column.forEach(item => {
|
||||||
|
if (item.prop == data.prop) {
|
||||||
|
item.data = res.data;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getRegionName(data,searchParams) {
|
||||||
|
const res = await this.$API.setup.regional.regionalConstList.post(searchParams);
|
||||||
|
if(res.code == 200){
|
||||||
|
if (res.data && res.data.length > 0) {
|
||||||
|
res.data.forEach(item => {
|
||||||
|
item.label = item[data.prop];
|
||||||
|
item.value = item[data.prop];
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.list.column.forEach(item => {
|
||||||
|
if (item.prop == data.prop) {
|
||||||
|
item.data = res.data;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
},
|
},
|
||||||
/** 表格检索结束 */
|
/** 表格检索结束 */
|
||||||
|
|
||||||
@ -190,7 +253,13 @@ export default {
|
|||||||
upSearch(){
|
upSearch(){
|
||||||
this.$refs.table.upData(this.params);
|
this.$refs.table.upData(this.params);
|
||||||
},
|
},
|
||||||
|
reset(){
|
||||||
|
this.params = {};
|
||||||
|
this.filterMap.data = {};
|
||||||
|
this.$refs.scSearch.reload();
|
||||||
|
eventBus.$emit('reset-popovers');
|
||||||
|
this.$refs.table.reload();
|
||||||
|
},
|
||||||
//本地更新数据
|
//本地更新数据
|
||||||
handleSaveSuccess(data, mode){
|
handleSaveSuccess(data, mode){
|
||||||
if(mode=='add'){
|
if(mode=='add'){
|
||||||
|
|||||||
92
src/views/order/orderList/components/manufacturer.vue
Normal file
92
src/views/order/orderList/components/manufacturer.vue
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog :title="titleMap[mode]" v-model="visible" :width="450" destroy-on-close @closed="$emit('closed')">
|
||||||
|
<el-form :model="form" :rules="rules" ref="dialogForm" label-width="60px">
|
||||||
|
<el-form-item label="厂商" prop="company_id">
|
||||||
|
<el-select style="width: 100%;" v-model="form.company_id" placeholder="请选择厂商" clearable>
|
||||||
|
<el-option v-for="(item,index) in setMap.companyList" :key="index" :label="item.name" :value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="visible=false" >取 消</el-button>
|
||||||
|
<el-button type="primary" :loading="isSave" @click="submit()">保 存</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "manufacturer",
|
||||||
|
emits: ['success', 'closed'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
mode: "show",
|
||||||
|
titleMap: {
|
||||||
|
show: '维保厂商',
|
||||||
|
review:'维保厂商',
|
||||||
|
},
|
||||||
|
visible: false,
|
||||||
|
isSave: false,
|
||||||
|
setMap:{
|
||||||
|
companyList:[]
|
||||||
|
},
|
||||||
|
//表单数据
|
||||||
|
form: {
|
||||||
|
company_id: "",
|
||||||
|
},
|
||||||
|
//验证规则
|
||||||
|
rules: {
|
||||||
|
company_id: [
|
||||||
|
{required: true, message: '请选择厂商'}
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//显示
|
||||||
|
open(mode='show'){
|
||||||
|
this.mode = mode;
|
||||||
|
this.visible = true;
|
||||||
|
this.getDataCompany();
|
||||||
|
return this
|
||||||
|
},
|
||||||
|
async getDataCompany() {
|
||||||
|
let params = {
|
||||||
|
field:"name",
|
||||||
|
name:{
|
||||||
|
operator:"like",
|
||||||
|
value:""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const res = await this.$API.orders.order.maintenance.wbCompanyField.post(params);
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.setMap.companyList = res.data;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//表单提交方法
|
||||||
|
submit(){
|
||||||
|
this.$refs.dialogForm.validate(async (valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.isSave = true;
|
||||||
|
this.$emit('success', this.form, this.mode);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
hideVisible(){
|
||||||
|
this.isSave = false;
|
||||||
|
this.visible = false;
|
||||||
|
},
|
||||||
|
//表单注入数据
|
||||||
|
async setData() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<div v-auth="'maintenanceOrderImport'" @click="importTemplate">下载导入模版</div>
|
<div v-auth="'maintenanceOrderImport'" @click="importTemplate">下载导入模版</div>
|
||||||
</template>
|
</template>
|
||||||
</scImport>
|
</scImport>
|
||||||
<el-button type="primary" v-auth="'maintenanceOrderSubmit'" plain :size="size" :disabled="selection.length!=1" @click="save_maintenance">提交维保</el-button>
|
<el-button type="primary" v-auth="'maintenanceOrderSubmit'" plain :size="size" :disabled="selection.length==0" @click="save_maintenance">提交维保</el-button>
|
||||||
<el-button type="success" v-auth="'maintenanceOrderApproval'" :size="size" icon="sc-icon-OrderReview" :disabled="selection.length==0" @click="batch_review">批量审核</el-button>
|
<el-button type="success" v-auth="'maintenanceOrderApproval'" :size="size" icon="sc-icon-OrderReview" :disabled="selection.length==0" @click="batch_review">批量审核</el-button>
|
||||||
<el-button type="danger" v-auth="'maintenanceOrderDelete'" plain :size="size" icon="el-icon-Delete" :disabled="selection.length==0" @click="batch_del"></el-button>
|
<el-button type="danger" v-auth="'maintenanceOrderDelete'" plain :size="size" icon="el-icon-Delete" :disabled="selection.length==0" @click="batch_del"></el-button>
|
||||||
</div>
|
</div>
|
||||||
@ -84,15 +84,19 @@
|
|||||||
</scTable>
|
</scTable>
|
||||||
</el-main>
|
</el-main>
|
||||||
</el-container>
|
</el-container>
|
||||||
|
|
||||||
|
<manufacturer-dialog v-if="dialog.companyWf" ref="companyWfDialog" @success="handleWfSuccess" @closed="dialog.companyWf=false"></manufacturer-dialog>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
import {eventBus} from "@/utils/eventBus";
|
import {eventBus} from "@/utils/eventBus";
|
||||||
import flow from "./components/flow"
|
import flow from "./components/flow"
|
||||||
|
import manufacturerDialog from "@/views/order/orderList/components/manufacturer"
|
||||||
export default {
|
export default {
|
||||||
name:"orderList",
|
name:"orderList",
|
||||||
components: {
|
components: {
|
||||||
flow
|
flow,
|
||||||
|
manufacturerDialog
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -106,6 +110,7 @@ export default {
|
|||||||
dialog: {
|
dialog: {
|
||||||
save: false,
|
save: false,
|
||||||
show: false,
|
show: false,
|
||||||
|
companyWf:false
|
||||||
},
|
},
|
||||||
setMap:{
|
setMap:{
|
||||||
statusList:[],
|
statusList:[],
|
||||||
@ -335,19 +340,50 @@ export default {
|
|||||||
if(res.code == 200){
|
if(res.code == 200){
|
||||||
this.$refs.table.refresh();
|
this.$refs.table.refresh();
|
||||||
}
|
}
|
||||||
}).catch(async () => {
|
}).catch(() => {
|
||||||
|
this.dialog.companyWf = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.companyWfDialog.open('review');
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
async reviewSave(data) {
|
||||||
let params = {
|
let params = {
|
||||||
order_ids: this.selection.map(em => em.id),
|
order_ids: this.selection.map(em => em.id),
|
||||||
status: true,
|
status: true,
|
||||||
|
is_verify_erp_inventory:false,
|
||||||
|
maintenance_vendor:data.company_id
|
||||||
}
|
}
|
||||||
const res = await this.$API.orders.order.maintenance.review.post(params);
|
const res = await this.$API.orders.order.maintenance.review.post(params);
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
|
this.$refs.companyWfDialog.hideVisible();
|
||||||
this.$refs.table.refresh();
|
this.$refs.table.refresh();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
save_maintenance() {
|
||||||
|
// eventBus.$emit('tagClose','/order/submit-order',{id:this.selection.map(em => em.id)[0]});
|
||||||
|
this.dialog.companyWf = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.companyWfDialog.open('show');
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
async save_maintenance() {
|
async handleWfSuccess(data, mode) {
|
||||||
eventBus.$emit('tagClose','/order/submit-order',{id:this.selection.map(em => em.id)[0]});
|
if (mode === 'show') {
|
||||||
|
const params = {
|
||||||
|
order_ids: this.selection.map(em => em.id),
|
||||||
|
maintenance_vendor: data.company_id,
|
||||||
|
is_verify_erp_inventory: false,
|
||||||
|
// component_info: []
|
||||||
|
};
|
||||||
|
const res = await this.$API.orders.order.maintenance.submit.post(params);
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.$refs.companyWfDialog.hideVisible();
|
||||||
|
this.$refs.table.refresh();
|
||||||
|
}
|
||||||
|
}else if(mode === 'review'){
|
||||||
|
await this.reviewSave(data);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// 工单设置
|
// 工单设置
|
||||||
async table_submit(row){
|
async table_submit(row){
|
||||||
|
|||||||
@ -37,18 +37,24 @@
|
|||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
</el-main>
|
</el-main>
|
||||||
</el-container>
|
</el-container>
|
||||||
|
<manufacturer-dialog v-if="dialog.companyWf" ref="companyWfDialog" @success="handleWfSuccess" @closed="dialog.companyWf=false"></manufacturer-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import detailView from "@/views/order/orderList/detailView";
|
import detailView from "@/views/order/orderList/detailView";
|
||||||
|
import manufacturerDialog from "@/views/order/orderList/components/manufacturer"
|
||||||
export default {
|
export default {
|
||||||
name: "",
|
name: "",
|
||||||
components:{
|
components:{
|
||||||
detailView
|
detailView,
|
||||||
|
manufacturerDialog
|
||||||
},
|
},
|
||||||
data(){
|
data(){
|
||||||
return{
|
return{
|
||||||
size:'small',
|
size:'small',
|
||||||
|
dialog: {
|
||||||
|
companyWf:false
|
||||||
|
},
|
||||||
loading:false,
|
loading:false,
|
||||||
confirmLoading:false,
|
confirmLoading:false,
|
||||||
cancelLoading:false,
|
cancelLoading:false,
|
||||||
@ -108,6 +114,21 @@ export default {
|
|||||||
}
|
}
|
||||||
return obj;
|
return obj;
|
||||||
},
|
},
|
||||||
|
async handleWfSuccess(data, mode) {
|
||||||
|
if (mode === 'review') {
|
||||||
|
let params = {
|
||||||
|
order_ids: [this.params.order_id],
|
||||||
|
status: true,
|
||||||
|
opinion: this.opinion,
|
||||||
|
maintenance_vendor: data.company_id
|
||||||
|
}
|
||||||
|
const res = await this.$API.orders.order.maintenance.review.post(params);
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.$refs.companyWfDialog.hideVisible();
|
||||||
|
await this.getData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
async save(type) {
|
async save(type) {
|
||||||
let params = {
|
let params = {
|
||||||
order_ids: [this.params.order_id],
|
order_ids: [this.params.order_id],
|
||||||
@ -117,13 +138,18 @@ export default {
|
|||||||
if (type == 1) {
|
if (type == 1) {
|
||||||
delete params.opinion
|
delete params.opinion
|
||||||
this.confirmLoading = true;
|
this.confirmLoading = true;
|
||||||
|
this.dialog.companyWf = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.saveLoading = false;
|
||||||
|
this.$refs.companyWfDialog.open('review');
|
||||||
|
})
|
||||||
}else{
|
}else{
|
||||||
this.cancelLoading = true;
|
this.cancelLoading = true;
|
||||||
}
|
|
||||||
const res = await this.$API.orders.order.maintenance.review.post(params);
|
const res = await this.$API.orders.order.maintenance.review.post(params);
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
await this.getData();
|
await this.getData();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
this.confirmLoading = false;
|
this.confirmLoading = false;
|
||||||
this.cancelLoading = false;
|
this.cancelLoading = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,16 +47,19 @@
|
|||||||
</el-container>
|
</el-container>
|
||||||
|
|
||||||
<info-save-dialog ref="saveDialog" v-if="dialog.save" @success="handleSaveSuccess" @closed="dialog.save=false"></info-save-dialog>
|
<info-save-dialog ref="saveDialog" v-if="dialog.save" @success="handleSaveSuccess" @closed="dialog.save=false"></info-save-dialog>
|
||||||
|
<manufacturer-dialog v-if="dialog.companyWf" ref="companyWfDialog" @success="handleWfSuccess" @closed="dialog.companyWf=false"></manufacturer-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import detailView from "@/views/order/orderList/detailView";
|
import detailView from "@/views/order/orderList/detailView";
|
||||||
import infoSaveDialog from "@/views/order/components/infoSave";
|
import infoSaveDialog from "@/views/order/components/infoSave";
|
||||||
|
import manufacturerDialog from "@/views/order/orderList/components/manufacturer"
|
||||||
export default {
|
export default {
|
||||||
name: "",
|
name: "",
|
||||||
components:{
|
components:{
|
||||||
detailView,
|
detailView,
|
||||||
infoSaveDialog
|
infoSaveDialog,
|
||||||
|
manufacturerDialog
|
||||||
},
|
},
|
||||||
data(){
|
data(){
|
||||||
return{
|
return{
|
||||||
@ -74,6 +77,7 @@ export default {
|
|||||||
|
|
||||||
dialog: {
|
dialog: {
|
||||||
save: false,
|
save: false,
|
||||||
|
companyWf:false
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -125,18 +129,28 @@ export default {
|
|||||||
}
|
}
|
||||||
return obj;
|
return obj;
|
||||||
},
|
},
|
||||||
async save() {
|
async handleWfSuccess(data, mode) {
|
||||||
|
if (mode === 'show') {
|
||||||
const params = {
|
const params = {
|
||||||
order_ids: [this.params.order_id],
|
order_ids: [this.params.order_id],
|
||||||
is_verify_erp_inventory:this.info.is_verify_erp_inventory,
|
maintenance_vendor:data.company_id,
|
||||||
component_info:this.info.component_info.filter(em=>!em.id)
|
is_verify_erp_inventory: this.info.is_verify_erp_inventory,
|
||||||
|
component_info: this.info.component_info.filter(em => !em.id),
|
||||||
};
|
};
|
||||||
this.saveLoading = true;
|
|
||||||
const res = await this.$API.orders.order.maintenance.submit.post(params);
|
const res = await this.$API.orders.order.maintenance.submit.post(params);
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
|
this.$refs.companyWfDialog.hideVisible();
|
||||||
await this.getData();
|
await this.getData();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
save() {
|
||||||
|
this.saveLoading = true;
|
||||||
|
this.dialog.companyWf = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
this.saveLoading = false;
|
this.saveLoading = false;
|
||||||
|
this.$refs.companyWfDialog.open('show');
|
||||||
|
})
|
||||||
},
|
},
|
||||||
async getStatusList() {
|
async getStatusList() {
|
||||||
const res = await this.$API.orders.order.maintenance.status.post();
|
const res = await this.$API.orders.order.maintenance.status.post();
|
||||||
|
|||||||
@ -2,9 +2,7 @@
|
|||||||
<el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')">
|
<el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')">
|
||||||
<el-form :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="100px">
|
<el-form :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="100px">
|
||||||
<el-form-item label="区域名称" prop="region_name">
|
<el-form-item label="区域名称" prop="region_name">
|
||||||
<el-select v-model="form.region_name" placeholder="请输入区域位置" clearable>
|
<el-input v-model="form.region_name" placeholder="请输入区域位置" clearable></el-input>
|
||||||
<el-option v-for="(item,index) in setMap.regionList" :key="index" :label="item.label" :value="item.value"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="机房代码" prop="room_code">
|
<el-form-item label="机房代码" prop="room_code">
|
||||||
<el-input v-model="form.room_code" placeholder="请输入机房代码" clearable></el-input>
|
<el-input v-model="form.room_code" placeholder="请输入机房代码" clearable></el-input>
|
||||||
@ -66,7 +64,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getRoom();
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
//显示
|
//显示
|
||||||
@ -100,7 +98,6 @@ export default {
|
|||||||
},
|
},
|
||||||
setData(data){
|
setData(data){
|
||||||
Object.assign(this.form, data);
|
Object.assign(this.form, data);
|
||||||
// console.log(this.form,788)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,14 @@
|
|||||||
<el-header>
|
<el-header>
|
||||||
<div class="left-panel">
|
<div class="left-panel">
|
||||||
<el-button type="primary" :size="size" icon="el-icon-plus" @click="add">新增</el-button>
|
<el-button type="primary" :size="size" icon="el-icon-plus" @click="add">新增</el-button>
|
||||||
|
<scImport ref="scImport" :size="size" type="44" :httpDisabled="httpDisabled" title="批量导区域地址配置" @parentParams="importUpload" @importSuccess="importSuccess">
|
||||||
|
<template #header>
|
||||||
|
<el-button type="primary" :size="size" plain @click="importFile" style="margin-right: 12px;">批量导入</el-button>
|
||||||
|
</template>
|
||||||
|
<template #download>
|
||||||
|
<div @click="importTemplate">下载导入模版</div>
|
||||||
|
</template>
|
||||||
|
</scImport>
|
||||||
<el-button plain type="danger" :disabled="selection.length==0?true:false" :size="size" icon="el-icon-Delete" @click="all_delete"></el-button>
|
<el-button plain type="danger" :disabled="selection.length==0?true:false" :size="size" icon="el-icon-Delete" @click="all_delete"></el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="right-panel">
|
<div class="right-panel">
|
||||||
@ -13,11 +21,6 @@
|
|||||||
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" stripe border :size="size" highlightCurrentRow :hideDo="true" @selection-change="selectionChange">
|
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" stripe border :size="size" highlightCurrentRow :hideDo="true" @selection-change="selectionChange">
|
||||||
<el-table-column type="selection" align="center" width="40"></el-table-column>
|
<el-table-column type="selection" align="center" width="40"></el-table-column>
|
||||||
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
|
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
|
||||||
<template #region_name="scope">
|
|
||||||
<span v-for="(item,index) in setMap.regionList" :key="index">
|
|
||||||
<span v-if="item.value == scope.row.region_name">{{item.label}}</span>
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
<template #data_source="scope">
|
<template #data_source="scope">
|
||||||
<span v-for="(item,index) in setMap.sourceList" :key="index">
|
<span v-for="(item,index) in setMap.sourceList" :key="index">
|
||||||
<span v-if="item.value === scope.row.data_source">{{item.label}}</span>
|
<span v-if="item.value === scope.row.data_source">{{item.label}}</span>
|
||||||
@ -58,6 +61,7 @@ export default {
|
|||||||
sourceList:[],
|
sourceList:[],
|
||||||
regionList:[],
|
regionList:[],
|
||||||
},
|
},
|
||||||
|
httpDisabled:false,
|
||||||
list:{
|
list:{
|
||||||
apiObj: this.$API.setup.regional.list,
|
apiObj: this.$API.setup.regional.list,
|
||||||
column:[]
|
column:[]
|
||||||
@ -77,7 +81,6 @@ export default {
|
|||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getRegion();
|
this.getRegion();
|
||||||
this.getRoom();
|
|
||||||
},
|
},
|
||||||
methods:{
|
methods:{
|
||||||
async getRegion() {
|
async getRegion() {
|
||||||
@ -102,6 +105,38 @@ export default {
|
|||||||
handleSuccess(){
|
handleSuccess(){
|
||||||
this.$refs.table.refresh()
|
this.$refs.table.refresh()
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 批量导入
|
||||||
|
importFile(){
|
||||||
|
this.$nextTick(()=>{
|
||||||
|
this.$refs.scImport.importFile();
|
||||||
|
})
|
||||||
|
},
|
||||||
|
async importTemplate() {
|
||||||
|
const res = await this.$API.setup.regional.template.post();
|
||||||
|
const blob = new Blob([res]);
|
||||||
|
const text = new Date().getTime();
|
||||||
|
const eLink = document.createElement('a');
|
||||||
|
eLink.download = "区域地址模版_"+text+'.xlsx';
|
||||||
|
eLink.style.display = 'none';
|
||||||
|
eLink.href = URL.createObjectURL(blob);
|
||||||
|
document.body.appendChild(eLink);
|
||||||
|
eLink.click();
|
||||||
|
URL.revokeObjectURL(eLink.href);
|
||||||
|
document.body.removeChild(eLink);
|
||||||
|
},
|
||||||
|
async importUpload(params) {
|
||||||
|
this.httpDisabled = true;
|
||||||
|
const res = await this.$API.setup.regional.import.post(params);
|
||||||
|
if(res.code == 200){
|
||||||
|
this.$message.success('上传成功,开始导入数据');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
importSuccess(){
|
||||||
|
this.httpDisabled = false;
|
||||||
|
this.$refs.table.refresh()
|
||||||
|
},
|
||||||
|
|
||||||
//表格选择后回调事件
|
//表格选择后回调事件
|
||||||
selectionChange(selection){
|
selectionChange(selection){
|
||||||
this.selection = selection;
|
this.selection = selection;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user