5 changed files with 681 additions and 77 deletions
-
682src/views/common/home.vue
-
22src/views/modules/longchuang/production-plan-home-order.vue
-
22src/views/modules/longchuang/production-plan-renovation-order.vue
-
20src/views/modules/longchuang/production-work-report.vue
-
2src/views/modules/sift/advancedSearchCenter.vue
@ -1,70 +1,674 @@ |
|||||
<template> |
<template> |
||||
<div class="mod-home"> |
|
||||
<div v-if="appName==='CKP'" style="width: 100%;height: 100%"> |
|
||||
<iframe frameborder="0" style="width: 100%;height: 100%" :src="url"> </iframe> |
|
||||
|
<div class="mod-advanced-search-center"> |
||||
|
<div class="page-header"> |
||||
|
<div class="title">高级搜索</div> |
||||
|
<div class="actions"> |
||||
|
<el-button :loading="schemeLoading" @click="loadSavedSchemeList">刷新</el-button> |
||||
|
<el-button type="primary" @click="openCreateDialog()">新建</el-button> |
||||
</div> |
</div> |
||||
<div v-else> |
|
||||
<h3>旭捷</h3> |
|
||||
<ul> |
|
||||
<li><h3>欢迎: {{ userName }}!!!</h3></li> |
|
||||
</ul> |
|
||||
</div> |
</div> |
||||
|
|
||||
|
<el-empty v-if="!schemeLoading && schemeList.length === 0" description="当前用户暂无已保存方案"></el-empty> |
||||
|
|
||||
|
<div class="card-grid" v-loading="schemeLoading"> |
||||
|
<div |
||||
|
class="scheme-card" |
||||
|
v-for="row in schemeList" |
||||
|
:key="row.schemeKey" |
||||
|
@click="gotoSchemeResult(row)"> |
||||
|
<div class="count-badge">{{ row.count === null ? '-' : row.count }}</div> |
||||
|
<div class="scheme-title">{{ row.itemDesc || '未命名方案' }}</div> |
||||
|
<div class="scheme-module">{{ row.menuName }}</div> |
||||
|
<div class="condition-list"> |
||||
|
<div v-if="!row.conditionPreviewList.length" class="condition-empty">未设置条件</div> |
||||
|
<div v-for="(line, idx) in row.conditionPreviewList" :key="idx" class="condition-line">{{ line }}</div> |
||||
|
</div> |
||||
|
<div class="card-footer"> |
||||
|
<el-button type="text" size="mini" style="color:#f56c6c" :loading="deletingKey === row.schemeKey" @click.stop="deleteScheme(row)">删除</el-button> |
||||
|
<el-button type="text" size="mini" @click.stop="openEditDialog(row)">编辑</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<el-dialog |
||||
|
:title="dialogMode === 'edit' ? '编辑方案' : '新建方案'" |
||||
|
:visible.sync="settingDialogVisible" |
||||
|
width="40%" |
||||
|
:close-on-click-modal="false"> |
||||
|
<el-form :inline="true" label-position="top"> |
||||
|
<el-form-item label="菜单"> |
||||
|
<el-select |
||||
|
v-model="editForm.menuId" |
||||
|
filterable |
||||
|
placeholder="请选择菜单" |
||||
|
style="width: 220px" |
||||
|
:disabled="dialogMode === 'edit'" |
||||
|
@change="handleEditMenuChange"> |
||||
|
<el-option v-for="item in menuOptions" :key="item.menuId" :label="item.name" :value="item.menuId"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="方案名称"> |
||||
|
<el-input v-model="editForm.itemDesc" clearable placeholder="请输入方案名称" style="width: 220px"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label=" "> |
||||
|
<el-button :loading="editLoading" @click="loadEditFields">读取菜单搜索字段</el-button> |
||||
|
<el-button type="primary" :loading="editSaving" @click="saveScheme">保存</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
|
||||
|
<el-table |
||||
|
ref="editFieldTable" |
||||
|
:data="editFieldList" |
||||
|
border |
||||
|
stripe |
||||
|
class="board-table" |
||||
|
height="50vh" |
||||
|
v-loading="editLoading" |
||||
|
@selection-change="handleEditSelectionChange"> |
||||
|
<el-table-column type="selection" width="44"></el-table-column> |
||||
|
<el-table-column prop="fieldCaption" label="字段名称" min-width="180" show-overflow-tooltip></el-table-column> |
||||
|
<el-table-column label="条件符号" width="130"> |
||||
|
<template slot-scope="{ row }"> |
||||
|
<el-select v-model="row.symbol" clearable :disabled="!isEditRowSelected(row)"> |
||||
|
<el-option v-for="item in symbolOptions" :key="item.value" :label="item.label" :value="item.value"></el-option> |
||||
|
</el-select> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="条件值" min-width="220"> |
||||
|
<template slot-scope="{ row }"> |
||||
|
<el-input v-model="row.formula" clearable :disabled="!isEditRowSelected(row)"></el-input> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
</el-dialog> |
||||
</div> |
</div> |
||||
</template> |
</template> |
||||
|
|
||||
<script> |
<script> |
||||
import {searchSysLanguagePack} from "../../api/sysLanguage"; |
|
||||
|
import { |
||||
|
searchCenterMenuSearchFields, |
||||
|
saveCenterScheme, |
||||
|
searchSavedSchemeSummary, |
||||
|
searchSavedSchemeCount, |
||||
|
resolveSavedSchemeRoute, |
||||
|
searchUserSettingRecording, |
||||
|
updateQueryHeaderDetail, |
||||
|
removeQueryHeaderDetail |
||||
|
} from '@/api/sift/queryUserSetting' |
||||
|
import { resolveMenuSearchFieldsByMeta } from '../modules/sift/menuSearchFieldResolver' |
||||
|
|
||||
|
|
||||
export default { |
|
||||
data(){ |
|
||||
|
export default { |
||||
|
name: 'home', |
||||
|
data () { |
||||
return { |
return { |
||||
// url:"http://xujiesoft.vicp.net:9191/bi/Show?uid=be15368c-bceb-11ef-9785-000c29f2c2b8", |
|
||||
//url:"http://192.168.1.90:9191/chart/reportShow?uid=3c800188-b04b-11ef-abf0-000c2947c1cd", |
|
||||
url:"http://172.26.68.20:9191/bi/Show?uid=eefa66f1-b058-11ef-a145-3868dd5b136a", |
|
||||
appName:this.$store.state.common.appName, |
|
||||
|
schemeLoading: false, |
||||
|
routeResolvingKey: '', |
||||
|
menuFlatList: [], |
||||
|
schemeList: [], |
||||
|
settingDialogVisible: false, |
||||
|
dialogMode: 'create', |
||||
|
editLoading: false, |
||||
|
editSaving: false, |
||||
|
deleting: false, |
||||
|
deletingKey: '', |
||||
|
editFieldList: [], |
||||
|
editSelectedFieldNameSet: {}, |
||||
|
editForm: { |
||||
|
menuId: '', |
||||
|
itemNo: null, |
||||
|
itemDesc: '', |
||||
|
caseInsensitive: true |
||||
|
}, |
||||
|
symbolOptions: [ |
||||
|
{ value: 'eq', label: '等于' }, |
||||
|
{ value: 'gt', label: '大于' }, |
||||
|
{ value: 'ge', label: '大于等于' }, |
||||
|
{ value: 'lt', label: '小于' }, |
||||
|
{ value: 'le', label: '小于等于' }, |
||||
|
{ value: 'between', label: '之间' }, |
||||
|
{ value: 'in', label: '或者' }, |
||||
|
{ value: 'ne', label: '不等于' }, |
||||
|
{ value: 'like', label: 'LIKE' } |
||||
|
], |
||||
|
symbolLabelMap: { |
||||
|
eq: '=', |
||||
|
gt: '>', |
||||
|
ge: '>=', |
||||
|
lt: '<', |
||||
|
le: '<=', |
||||
|
between: 'between', |
||||
|
in: 'in', |
||||
|
ne: '!=', |
||||
|
like: 'like' |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
menuOptions () { |
||||
|
return this.menuFlatList.filter(item => item.url && !item.hasChildren && !/^https?:\/\//i.test(item.url)) |
||||
} |
} |
||||
}, |
}, |
||||
|
activated () { |
||||
|
this.initMenuContext() |
||||
|
this.loadSavedSchemeList() |
||||
|
}, |
||||
methods: { |
methods: { |
||||
languageRefresh(){ |
|
||||
console.log("欢迎使用 旭捷管理系统!!!") |
|
||||
|
initMenuContext () { |
||||
|
var menuList = this.$store.state.common.menuList || [] |
||||
|
if (!menuList.length) { |
||||
|
menuList = JSON.parse(sessionStorage.getItem('menuList') || '[]') |
||||
|
} |
||||
|
this.menuFlatList = this.flattenMenuList(menuList) |
||||
}, |
}, |
||||
languagePack() { |
|
||||
// searchSysLanguagePack().then(({data}) => { |
|
||||
// this.$i18n.mergeLocaleMessage('en', data.data.en) |
|
||||
// this.$i18n.mergeLocaleMessage('cn', data.data.cn) |
|
||||
// }) |
|
||||
|
flattenMenuList (tree, result) { |
||||
|
var list = result || [] |
||||
|
if (!tree || !tree.length) { |
||||
|
return list |
||||
} |
} |
||||
|
for (var i = 0; i < tree.length; i++) { |
||||
|
var item = tree[i] || {} |
||||
|
var childList = item.list || [] |
||||
|
list.push({ |
||||
|
menuId: item.menuId, |
||||
|
name: item.name, |
||||
|
url: item.url || '', |
||||
|
hasChildren: !!(childList && childList.length) |
||||
|
}) |
||||
|
if (childList && childList.length) { |
||||
|
this.flattenMenuList(childList, list) |
||||
|
} |
||||
|
} |
||||
|
return list |
||||
}, |
}, |
||||
computed: { |
|
||||
userName: { |
|
||||
get() { |
|
||||
return this.$store.state.user.userDisplay |
|
||||
|
extractListFromResp (data) { |
||||
|
if (!data) { |
||||
|
return [] |
||||
} |
} |
||||
|
if (Array.isArray(data.rows)) { |
||||
|
return data.rows |
||||
|
} |
||||
|
if (Array.isArray(data.list)) { |
||||
|
return data.list |
||||
|
} |
||||
|
if (Array.isArray(data.data)) { |
||||
|
return data.data |
||||
|
} |
||||
|
return [] |
||||
}, |
}, |
||||
mainTabs: { |
|
||||
get() { |
|
||||
return this.$store.state.common.mainTabs |
|
||||
|
buildSchemeKey (item) { |
||||
|
return [item.menuId || '', item.itemNo || '', item.savedSearchId || item.id || ''].join('_') |
||||
}, |
}, |
||||
set(val) { |
|
||||
this.$store.commit('common/updateMainTabs', val) |
|
||||
|
buildConditionPreviewList (detailList) { |
||||
|
if (!detailList || !detailList.length) { |
||||
|
return [] |
||||
} |
} |
||||
|
return detailList |
||||
|
.filter(item => item && item.symbol && item.formula) |
||||
|
.slice(0, 4) |
||||
|
.map(item => { |
||||
|
var fieldName = item.fieldCaption || item.fieldName || '' |
||||
|
var symbol = this.symbolLabelMap[item.symbol] || item.symbol |
||||
|
return fieldName + ' ' + symbol + ' ' + item.formula |
||||
|
}) |
||||
|
}, |
||||
|
toSnakeCaseFieldName (name) { |
||||
|
if (!name) { |
||||
|
return '' |
||||
} |
} |
||||
|
return String(name) |
||||
|
.replace(/([A-Z])/g, '_$1') |
||||
|
.replace(/-/g, '_') |
||||
|
.toLowerCase() |
||||
}, |
}, |
||||
beforeMount() { |
|
||||
this.languageRefresh() |
|
||||
this.languagePack() |
|
||||
|
normalizeOriginalFieldForSql (item) { |
||||
|
var row = Object.assign({}, item || {}) |
||||
|
var fieldName = row.fieldName ? String(row.fieldName) : '' |
||||
|
var originalField = row.originalField ? String(row.originalField) : '' |
||||
|
if (!originalField && fieldName) { |
||||
|
row.originalField = this.toSnakeCaseFieldName(fieldName) |
||||
|
return row |
||||
|
} |
||||
|
if (originalField && /[A-Z]/.test(originalField) && !/\s|\(|\)|\./.test(originalField)) { |
||||
|
row.originalField = this.toSnakeCaseFieldName(originalField) |
||||
|
} |
||||
|
return row |
||||
|
}, |
||||
|
async loadSavedSchemeList () { |
||||
|
this.schemeLoading = true |
||||
|
try { |
||||
|
var userId = String(this.$store.state.user.id) |
||||
|
var summaryResp = await searchSavedSchemeSummary({ userId: userId }) |
||||
|
var summaryData = summaryResp && summaryResp.data ? summaryResp.data : {} |
||||
|
if (!(summaryData && summaryData.code === 0)) { |
||||
|
this.schemeList = [] |
||||
|
return |
||||
|
} |
||||
|
var summaryRows = this.extractListFromResp(summaryData).map(item => Object.assign({}, item, { count: null })) |
||||
|
if (!summaryRows.length) { |
||||
|
this.schemeList = [] |
||||
|
return |
||||
|
} |
||||
|
var countResp = await searchSavedSchemeCount({ |
||||
|
userId: userId, |
||||
|
schemeList: summaryRows.map(item => ({ |
||||
|
menuId: item.menuId, |
||||
|
itemNo: item.itemNo, |
||||
|
savedSearchId: item.savedSearchId || item.id |
||||
|
})) |
||||
|
}) |
||||
|
var countData = countResp && countResp.data ? countResp.data : {} |
||||
|
var countMap = {} |
||||
|
if (countData && countData.code === 0) { |
||||
|
this.extractListFromResp(countData).forEach(item => { |
||||
|
countMap[this.buildSchemeKey(item)] = item.count |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
var detailRespList = await Promise.all(summaryRows.map(item => { |
||||
|
return searchUserSettingRecording({ |
||||
|
menuId: item.menuId, |
||||
|
userId: userId, |
||||
|
itemNo: item.itemNo |
||||
|
}).catch(() => null) |
||||
|
})) |
||||
|
var detailMap = {} |
||||
|
detailRespList.forEach((resp, idx) => { |
||||
|
var key = this.buildSchemeKey(summaryRows[idx]) |
||||
|
var data = resp && resp.data ? resp.data : {} |
||||
|
detailMap[key] = data && data.code === 0 ? this.extractListFromResp(data) : [] |
||||
|
}) |
||||
|
|
||||
|
this.schemeList = summaryRows.map(item => { |
||||
|
var key = this.buildSchemeKey(item) |
||||
|
var menu = this.menuFlatList.find(m => String(m.menuId) === String(item.menuId)) |
||||
|
return Object.assign({}, item, { |
||||
|
schemeKey: key, |
||||
|
count: countMap[key] !== undefined ? countMap[key] : null, |
||||
|
menuName: item.menuName || (menu ? menu.name : ('菜单' + item.menuId)), |
||||
|
conditionPreviewList: this.buildConditionPreviewList(detailMap[key]) |
||||
|
}) |
||||
|
}) |
||||
|
} catch (e) { |
||||
|
this.schemeList = [] |
||||
|
} finally { |
||||
|
this.schemeLoading = false |
||||
|
} |
||||
|
}, |
||||
|
async gotoSchemeResult (row) { |
||||
|
this.routeResolvingKey = row.schemeKey |
||||
|
try { |
||||
|
var resp = await resolveSavedSchemeRoute({ |
||||
|
userId: String(this.$store.state.user.id), |
||||
|
menuId: row.menuId, |
||||
|
itemNo: row.itemNo, |
||||
|
savedSearchId: row.savedSearchId || row.id || '' |
||||
|
}) |
||||
|
var data = resp && resp.data ? resp.data : {} |
||||
|
if (!(data && data.code === 0)) { |
||||
|
this.$message.warning((data && data.msg) || '获取跳转信息失败') |
||||
|
return |
||||
|
} |
||||
|
var routeRows = this.extractListFromResp(data) |
||||
|
var routeRow = routeRows && routeRows.length ? routeRows[0] : {} |
||||
|
var query = { |
||||
|
savedSearchId: row.savedSearchId || row.id || '', |
||||
|
menuId: row.menuId || '', |
||||
|
itemNo: row.itemNo || '' |
||||
|
} |
||||
|
if (routeRow.routeName) { |
||||
|
this.$router.push({ name: routeRow.routeName, query: query }) |
||||
|
return |
||||
|
} |
||||
|
if (routeRow.routePath) { |
||||
|
this.$router.push({ path: routeRow.routePath, query: query }) |
||||
|
return |
||||
|
} |
||||
|
this.$message.warning('该方案暂不支持跳转') |
||||
|
} catch (e) { |
||||
|
this.$message.error('跳转失败') |
||||
|
} finally { |
||||
|
this.routeResolvingKey = '' |
||||
|
} |
||||
|
}, |
||||
|
openCreateDialog () { |
||||
|
this.dialogMode = 'create' |
||||
|
this.settingDialogVisible = true |
||||
|
this.newScheme() |
||||
|
}, |
||||
|
openEditDialog (row) { |
||||
|
this.dialogMode = 'edit' |
||||
|
this.settingDialogVisible = true |
||||
|
this.newScheme() |
||||
|
this.editForm.menuId = row.menuId |
||||
|
this.editForm.itemNo = row.itemNo |
||||
|
this.editForm.itemDesc = row.itemDesc |
||||
|
this.editForm.caseInsensitive = true |
||||
|
this.loadEditFields() |
||||
|
}, |
||||
|
newScheme () { |
||||
|
this.editForm = { |
||||
|
menuId: '', |
||||
|
itemNo: null, |
||||
|
itemDesc: '', |
||||
|
caseInsensitive: true |
||||
|
} |
||||
|
this.editFieldList = [] |
||||
|
this.editSelectedFieldNameSet = {} |
||||
|
if (this.$refs.editFieldTable) { |
||||
|
this.$refs.editFieldTable.clearSelection() |
||||
|
} |
||||
|
}, |
||||
|
handleEditMenuChange () { |
||||
|
if (this.dialogMode !== 'edit') { |
||||
|
this.editForm.itemNo = null |
||||
|
} |
||||
|
this.editFieldList = [] |
||||
|
this.editSelectedFieldNameSet = {} |
||||
|
if (this.$refs.editFieldTable) { |
||||
|
this.$refs.editFieldTable.clearSelection() |
||||
|
} |
||||
}, |
}, |
||||
|
async loadEditFields () { |
||||
|
if (!this.editForm.menuId) { |
||||
|
this.$message.warning('请先选择菜单') |
||||
|
return |
||||
|
} |
||||
|
this.editLoading = true |
||||
|
try { |
||||
|
var userId = String(this.$store.state.user.id) |
||||
|
var currentMenu = this.menuFlatList.find(item => String(item.menuId) === String(this.editForm.menuId)) |
||||
|
var list = resolveMenuSearchFieldsByMeta({ |
||||
|
menuId: this.editForm.menuId, |
||||
|
menuUrl: currentMenu ? currentMenu.url : '' |
||||
|
}) |
||||
|
|
||||
|
if (!list.length) { |
||||
|
var baseResp = await searchCenterMenuSearchFields({ |
||||
|
menuId: this.editForm.menuId, |
||||
|
userId: userId |
||||
|
}) |
||||
|
var baseData = baseResp && baseResp.data ? baseResp.data : {} |
||||
|
if (!(baseData && baseData.code === 0)) { |
||||
|
this.$message.warning((baseData && baseData.msg) || '读取菜单字段失败') |
||||
|
this.editFieldList = [] |
||||
|
return |
||||
|
} |
||||
|
list = this.extractListFromResp(baseData) |
||||
|
} |
||||
|
list = list.map((item, idx) => { |
||||
|
var normalizedItem = this.normalizeOriginalFieldForSql(item) |
||||
|
return Object.assign({}, normalizedItem, { |
||||
|
symbol: '', |
||||
|
formula: '', |
||||
|
sortBy: '', |
||||
|
orderSeq: idx + 1 |
||||
|
}) |
||||
|
}) |
||||
|
this.editFieldList = list |
||||
|
this.editSelectedFieldNameSet = {} |
||||
|
if (this.$refs.editFieldTable) { |
||||
|
this.$refs.editFieldTable.clearSelection() |
||||
|
} |
||||
|
if (this.editForm.itemNo) { |
||||
|
var detailResp = await searchUserSettingRecording({ |
||||
|
menuId: this.editForm.menuId, |
||||
|
userId: userId, |
||||
|
itemNo: this.editForm.itemNo |
||||
|
}) |
||||
|
var detailData = detailResp && detailResp.data ? detailResp.data : {} |
||||
|
if (detailData && detailData.code === 0) { |
||||
|
var detailList = this.extractListFromResp(detailData) |
||||
|
var detailMap = {} |
||||
|
detailList.forEach(item => { detailMap[item.fieldName] = item }) |
||||
|
var selectedMap = {} |
||||
|
this.editFieldList = this.editFieldList.map(item => { |
||||
|
var detail = detailMap[item.fieldName] |
||||
|
if (!detail) { |
||||
|
return item |
||||
|
} |
||||
|
selectedMap[item.fieldName] = true |
||||
|
return Object.assign({}, item, { |
||||
|
symbol: detail.symbol || '', |
||||
|
formula: detail.formula || '', |
||||
|
sortBy: detail.sortBy || '', |
||||
|
orderSeq: detail.orderSeq || item.orderSeq |
||||
|
}) |
||||
|
}) |
||||
|
this.editSelectedFieldNameSet = selectedMap |
||||
|
this.$nextTick(() => { |
||||
|
if (!this.$refs.editFieldTable) { |
||||
|
return |
||||
|
} |
||||
|
this.editFieldList.forEach(row => { |
||||
|
if (selectedMap[row.fieldName]) { |
||||
|
this.$refs.editFieldTable.toggleRowSelection(row, true) |
||||
|
} |
||||
|
}) |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} catch (e) { |
||||
|
this.$message.error('读取字段异常') |
||||
|
this.editFieldList = [] |
||||
|
} finally { |
||||
|
this.editLoading = false |
||||
|
} |
||||
|
}, |
||||
|
handleEditSelectionChange (list) { |
||||
|
var map = {} |
||||
|
list.forEach(item => { map[item.fieldName] = true }) |
||||
|
this.editSelectedFieldNameSet = map |
||||
|
}, |
||||
|
isEditRowSelected (row) { |
||||
|
return !!this.editSelectedFieldNameSet[row.fieldName] |
||||
|
}, |
||||
|
async saveScheme () { |
||||
|
if (!this.editForm.menuId) { |
||||
|
this.$message.warning('请先选择菜单') |
||||
|
return |
||||
|
} |
||||
|
if (!this.editForm.itemDesc || !this.editForm.itemDesc.trim()) { |
||||
|
this.$message.warning('请输入方案名称') |
||||
|
return |
||||
|
} |
||||
|
var selectedList = this.editFieldList.filter(item => this.isEditRowSelected(item)) |
||||
|
if (!selectedList.length) { |
||||
|
this.$message.warning('请至少勾选一个字段') |
||||
|
return |
||||
|
} |
||||
|
this.editSaving = true |
||||
|
try { |
||||
|
var userId = String(this.$store.state.user.id) |
||||
|
var payload = { |
||||
|
menuId: this.editForm.menuId, |
||||
|
userId: userId, |
||||
|
dtsName: 'ADOQResult', |
||||
|
itemNo: this.editForm.itemNo, |
||||
|
itemDesc: this.editForm.itemDesc.trim(), |
||||
|
caseSensitiveFlag: this.editForm.caseInsensitive ? 'N' : 'Y', |
||||
|
querySavedDetailList: selectedList.map(item => { |
||||
|
var normalizedItem = this.normalizeOriginalFieldForSql(item) |
||||
|
return Object.assign({}, normalizedItem, { |
||||
|
menuId: this.editForm.menuId, |
||||
|
userId: userId, |
||||
|
itemNo: this.editForm.itemNo, |
||||
|
itemDesc: this.editForm.itemDesc.trim(), |
||||
|
dtsName: item.dtsName || 'ADOQResult' |
||||
|
}) |
||||
|
}) |
||||
} |
} |
||||
|
var resp = null |
||||
|
if (this.editForm.itemNo) { |
||||
|
resp = await updateQueryHeaderDetail(payload) |
||||
|
} else { |
||||
|
delete payload.itemNo |
||||
|
resp = await saveCenterScheme(payload) |
||||
|
} |
||||
|
var data = resp && resp.data ? resp.data : {} |
||||
|
if (data && data.code === 0) { |
||||
|
this.$message.success(data.msg || '保存成功') |
||||
|
await this.loadSavedSchemeList() |
||||
|
if (!this.editForm.itemNo) { |
||||
|
this.newScheme() |
||||
|
} |
||||
|
return |
||||
|
} |
||||
|
this.$message.warning((data && data.msg) || '保存失败') |
||||
|
} catch (e) { |
||||
|
this.$message.error('保存方案异常') |
||||
|
} finally { |
||||
|
this.editSaving = false |
||||
|
} |
||||
|
}, |
||||
|
async deleteScheme (row) { |
||||
|
if (!row || !row.itemNo) { |
||||
|
this.$message.warning('请选择需要删除的方案') |
||||
|
return |
||||
|
} |
||||
|
try { |
||||
|
await this.$confirm('确认删除该方案吗?', '提示', { |
||||
|
confirmButtonText: '确定', |
||||
|
cancelButtonText: '取消', |
||||
|
type: 'warning' |
||||
|
}) |
||||
|
} catch (e) { |
||||
|
return |
||||
|
} |
||||
|
this.deleting = true |
||||
|
this.deletingKey = row.schemeKey || '' |
||||
|
try { |
||||
|
var resp = await removeQueryHeaderDetail({ |
||||
|
menuId: row.menuId, |
||||
|
userId: String(this.$store.state.user.id), |
||||
|
itemNo: row.itemNo, |
||||
|
itemDesc: row.itemDesc |
||||
|
}) |
||||
|
var data = resp && resp.data ? resp.data : {} |
||||
|
if (data && data.code === 0) { |
||||
|
this.$message.success(data.msg || '删除成功') |
||||
|
await this.loadSavedSchemeList() |
||||
|
if (this.settingDialogVisible && |
||||
|
this.dialogMode === 'edit' && |
||||
|
String(this.editForm.menuId) === String(row.menuId) && |
||||
|
Number(this.editForm.itemNo) === Number(row.itemNo)) { |
||||
|
this.settingDialogVisible = false |
||||
|
this.newScheme() |
||||
|
} |
||||
|
return |
||||
|
} |
||||
|
this.$message.warning((data && data.msg) || '删除失败') |
||||
|
} catch (e) { |
||||
|
this.$message.error('删除方案异常') |
||||
|
} finally { |
||||
|
this.deleting = false |
||||
|
this.deletingKey = '' |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
</script> |
</script> |
||||
|
|
||||
<style> |
<style> |
||||
.mod-home { |
|
||||
line-height: 1.5; |
|
||||
height: 91vh; |
|
||||
} |
|
||||
|
.mod-advanced-search-center { |
||||
|
padding: 12px; |
||||
|
} |
||||
|
|
||||
|
.board-table .cell { |
||||
|
line-height: 20px; |
||||
|
height: 20px; |
||||
|
} |
||||
|
|
||||
|
.page-header { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
margin-bottom: 12px; |
||||
|
} |
||||
|
|
||||
|
.title { |
||||
|
font-size: 18px; |
||||
|
font-weight: 600; |
||||
|
color: #303133; |
||||
|
} |
||||
|
|
||||
|
.card-grid { |
||||
|
display: grid; |
||||
|
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); |
||||
|
gap: 12px; |
||||
|
} |
||||
|
|
||||
|
.scheme-card { |
||||
|
position: relative; |
||||
|
border-radius: 10px; |
||||
|
border: 1px solid #ebeef5; |
||||
|
background: linear-gradient(160deg, #ffffff, #f7f9fc); |
||||
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06); |
||||
|
padding: 12px; |
||||
|
cursor: pointer; |
||||
|
transition: all 0.2s ease; |
||||
|
} |
||||
|
|
||||
|
.scheme-card:hover { |
||||
|
transform: translateY(-2px); |
||||
|
box-shadow: 0 8px 18px rgba(0, 0, 0, 0.1); |
||||
|
} |
||||
|
|
||||
|
.count-badge { |
||||
|
position: absolute; |
||||
|
top: 8px; |
||||
|
right: 10px; |
||||
|
min-width: 28px; |
||||
|
padding: 2px 8px; |
||||
|
border-radius: 12px; |
||||
|
background: #1abc9c; |
||||
|
color: #fff; |
||||
|
font-size: 12px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.scheme-title { |
||||
|
font-size: 15px; |
||||
|
font-weight: 600; |
||||
|
color: #303133; |
||||
|
margin-right: 48px; |
||||
|
margin-bottom: 6px; |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
|
||||
|
.scheme-module { |
||||
|
font-size: 12px; |
||||
|
color: #909399; |
||||
|
margin-bottom: 8px; |
||||
|
} |
||||
|
|
||||
|
.condition-list { |
||||
|
min-height: 72px; |
||||
|
max-height: 84px; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
.condition-line { |
||||
|
font-size: 12px; |
||||
|
color: #606266; |
||||
|
line-height: 1.6; |
||||
|
white-space: nowrap; |
||||
|
text-overflow: ellipsis; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
.condition-empty { |
||||
|
font-size: 12px; |
||||
|
color: #c0c4cc; |
||||
|
line-height: 1.8; |
||||
|
} |
||||
|
|
||||
|
.card-footer { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
gap: 4px; |
||||
|
margin-top: 8px; |
||||
|
} |
||||
</style> |
</style> |
||||
|
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue