You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1011 lines
34 KiB
1011 lines
34 KiB
<template>
|
|
<div>
|
|
<div style="width: 1000px">
|
|
<el-form :model="templateQuery" ref="queryForm" label-position="top">
|
|
<el-row :gutter="10">
|
|
<el-col :span="4">
|
|
<el-form-item label="模板编码" prop="codeNo">
|
|
<el-input v-model="templateQuery.codeNo" clearable></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="4">
|
|
<el-form-item label="模板描述" prop="codeDesc">
|
|
<el-input v-model="templateQuery.codeDesc" clearable></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="4">
|
|
<el-form-item label="模板分组" prop="functionType">
|
|
<el-select v-model="templateQuery.functionType" placeholder="模板分组" clearable style="width: 100%;">
|
|
<el-option label="全部" value=""></el-option>
|
|
<el-option v-for="dict in dict.type.function_type_desc" :key="dict.value" :label="dict.label"
|
|
:value="dict.value" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="4">
|
|
<el-form-item label="状态" prop="active">
|
|
<el-select v-model="templateQuery.active">
|
|
<el-option label="全部" value=""></el-option>
|
|
<el-option label="启用" value="Y"></el-option>
|
|
<el-option label="停用" value="N"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label=" ">
|
|
<el-button type="primary" @click="handleQueryByPage">查询</el-button>
|
|
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
|
|
<el-button type="primary" @click="handleSave(null)">新增</el-button>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
</div>
|
|
<el-table :data="dataList" v-loading="queryLoading" border style="width: 100%;margin-top: 5px" height="80vh">
|
|
<el-table-column v-for="(item,index) in columns" :key="index" :sortable="item.columnSortable"
|
|
:prop="item.columnProp" :header-align="item.headerAlign" :show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align" :fixed="item.fixed==''?false:item.fixed" :min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<div v-if="item.columnProp !== 'active' && item.columnProp !== 'functionType'">
|
|
<span v-if="!item.columnHidden">{{ scope.row[scope.column.property] }}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[scope.column.property]"
|
|
style="width: 100px; height: 80px" /></span>
|
|
</div>
|
|
<dict-tag v-else-if="item.columnProp == 'functionType'" :options="dict.type.function_type_desc"
|
|
:value="scope.row.functionType" />
|
|
<span v-else
|
|
:style="{color:scope.row.active === 'Y'?'#67C23A':'red'}">{{ scope.row.active === 'Y' ? '启用' : '停用' }}</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column header-align="center" fixed="right" align="center" width="160" label="操作">
|
|
<template slot-scope="scope">
|
|
<el-link style="cursor: pointer" @click="handleSave(scope.row)">编辑</el-link>
|
|
<el-link style="cursor: pointer" @click="handleRemove(scope.row)">删除</el-link>
|
|
<el-link style="cursor: pointer" @click="handleItem(scope.row)">属性项目</el-link>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
|
|
<el-pagination @size-change="handleSizeChange" @current-change="handlePageChange" :current-page="pageIndex"
|
|
:page-sizes="[20, 50, 100, 200, 500]" :page-size="pageSize" :total="total"
|
|
layout="total,sizes, prev, pager, next, jumper">
|
|
</el-pagination>
|
|
|
|
<!-- /*属性模板弹框 */ -->
|
|
<el-dialog title="属性模板" :close-on-click-modal="false" v-drag :visible.sync="saveVisible" width="400px">
|
|
<el-form :model="saveForm" ref="saveForm" :rules="rules" label-position="top" label-width="100px">
|
|
<el-row :gutter="10">
|
|
<el-col :span="12">
|
|
<el-form-item label="工厂" prop="site" :show-message="false">
|
|
<el-select v-model="saveForm.site" style="width: 100%">
|
|
<el-option v-for="(item,index) in userSiteList" :key="index" :label="item.deptName"
|
|
:value="item.deptId">
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<!-- </el-row>
|
|
<el-row :gutter="10">
|
|
<el-col :span="10">
|
|
<el-form-item label="模板编码" prop="codeNo" :show-message="false">
|
|
<el-input v-model="saveForm.codeNo" :disabled="saveForm.id > 0"></el-input>
|
|
</el-form-item>
|
|
</el-col> -->
|
|
<el-col :span="12">
|
|
<el-form-item label="模板描述" prop="codeDesc" :show-message="false">
|
|
<el-input v-model="saveForm.codeDesc"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="10">
|
|
<el-form-item label="模板分组" prop="functionType" :show-message="false">
|
|
<el-select v-model="saveForm.functionType" style="width: 100%;">
|
|
<el-option label="全部" value=""></el-option>
|
|
<el-option v-for="dict in dict.type.function_type_desc" :key="dict.value" :label="dict.label"
|
|
:value="dict.value" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="14">
|
|
<el-form-item label=" " :show-message="false" prop="active">
|
|
<el-checkbox v-model="saveForm.active" true-label="Y" false-label="N">状态</el-checkbox>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button type="primary" :loading="saveLoading" @click="handleSaveOrUpdate">确 定</el-button>
|
|
<el-button @click="saveVisible = false">取 消</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<!-- /*属性项目弹框*/ -->
|
|
<el-dialog title="属性项目清单" :close-on-click-modal="false" v-drag :visible.sync="itemVisible" width="1000px">
|
|
<el-form :model="propertyTemplateItem" label-position="top">
|
|
<el-row :gutter="10">
|
|
<el-col :span="4">
|
|
<el-form-item label="属性模板编码">
|
|
<el-input v-model="propertyTemplateItem.codeNo" disabled></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item label="属性模板名称">
|
|
<el-input v-model="propertyTemplateItem.codeDesc" disabled></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="4">
|
|
<el-form-item label=" ">
|
|
<el-button type="primary" @click="handleSaveItem(null)">新增</el-button>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<el-table :height="300" :data="itemList2" border style="width: 100%;" class="itemListClass"
|
|
:loading="itemListLoading">
|
|
<el-table-column header-align="center" align="left" width="70" label="排序">
|
|
<template slot-scope="scope">
|
|
<el-link style="cursor: pointer" @click="updateItemSort(scope.row,scope.$index,-1)"
|
|
v-if="scope.$index !== 0">上移</el-link>
|
|
<el-link style="cursor: pointer" @click="updateItemSort(scope.row,scope.$index,1)"
|
|
v-if="scope.$index < itemList2.length-1">下移</el-link>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column v-for="(item,index) in columnDetailList" :key="index" :sortable="item.columnSortable"
|
|
:prop="item.columnProp" :header-align="item.headerAlign" :show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align" :fixed="item.fixed==''?false:item.fixed" :min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden">
|
|
<!-- <template
|
|
v-if="item.columnProp==='valueType'">{{ scope.row[item.columnProp] === 'text' ? '文本' : '数字' }}</template>
|
|
<template
|
|
v-else-if="item.columnProp==='valueChooseFlag'">{{ scope.row[item.columnProp] === 'Y' ? '是' : '否' }}</template>
|
|
<template v-else>{{ scope.row[item.columnProp] }}</template> -->
|
|
<template v-if="item.columnProp==='daysNumber'">
|
|
<el-input :controls="false" :ref="`daysNumber${scope.$index}`" v-model="scope.row.daysNumber"
|
|
@keyup.enter.native="focusNextInput(scope.$index, 'daysNumber')"
|
|
style="height: 11px; width: 98%;"></el-input>
|
|
</template>
|
|
<template v-else-if="item.columnProp==='ismainFlag'">
|
|
<el-switch style="height: 15px; width: 50px;margin-top: -2px;" :ref="`ismainFlag${scope.$index}`"
|
|
v-model="scope.row.ismainFlag" active-value="Y" inactive-value="N"
|
|
@keyup.enter.native="focusNextInput(scope.$index, 'ismainFlag')" active-color="#13ce66"
|
|
inactive-color="#ff4949"></el-switch>
|
|
</template>
|
|
<template v-else-if="item.columnProp==='roleId'">
|
|
<el-select v-model="scope.row.roleId" :ref="`roleId${scope.$index}`" placeholder="请选择">
|
|
<el-option v-for="(item,index) in roleIdList " :key="index" :label="item.roleName"
|
|
:value="item.roleId">
|
|
</el-option>
|
|
</el-select>
|
|
</template>
|
|
<template v-else>{{ scope.row[item.columnProp] }}</template>
|
|
</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
|
|
style="width: 100px; height: 80px" /></span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column header-align="center" align="center" width="130" label="操作">
|
|
<template slot-scope="scope">
|
|
<a v-if="scope.row.valueChooseFlag === 'Y'" @click="handleChooseValue(scope.row)">可选值</a>
|
|
<a @click="handleRemoveItem(scope.row)">删除属性</a>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button type="primary" :loading="itemListLoading" @click="itemListBatchSave">保 存</el-button>
|
|
<el-button type="primary" @click="itemVisible = false">关 闭</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<!-- /*添加模板属性弹框 */ -->
|
|
<el-dialog title="新增属性" :close-on-click-modal="false" v-drag :visible.sync="itemSaveVisible" width="1000px">
|
|
<div style="font-size: 12px">
|
|
<el-form label-position="top" :model="item">
|
|
<el-row :gutter="10">
|
|
<el-col :span="3">
|
|
<el-form-item label="属性编码">
|
|
<el-input v-model="item.itemNo"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label="属性名称">
|
|
<el-input v-model="item.itemDesc"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item label=" ">
|
|
<el-button type="primary" @click="handleQueryItem">查询</el-button>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
</div>
|
|
<el-container style="margin-top: 0px;">
|
|
<el-main style="width: 350px;padding: 1px">
|
|
<span style="font-size: 12px">可选属性:</span>
|
|
<el-table height="400px" :data="itemList1" border @selection-change="selectionItem1"
|
|
@row-click="handleRowClick1" ref="itemTable1" style="width: 100%">
|
|
<el-table-column type="selection" header-align="center" align="center" width="50">
|
|
</el-table-column>
|
|
<el-table-column prop="itemNo" header-align="center" align="center" min-width="80" label="属性编码">
|
|
</el-table-column>
|
|
<el-table-column prop="itemDesc" header-align="center" align="center" min-width="200" label="属性名称">
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-main>
|
|
<el-main style="width: 10px;padding: 1px">
|
|
<div style="margin-top: 200px;margin-left: 18px">
|
|
<el-button type="primary" @click="handleAddItem">添加>></el-button>
|
|
</div>
|
|
<div style="margin-top: 15px;margin-left: 18px">
|
|
<el-button type="primary" @click="handleRemoveBatchItem"><<删除</el-button>
|
|
</div>
|
|
</el-main>
|
|
<el-main style="width: 350px;padding: 1px">
|
|
<span style="font-size: 12px">已有属性:</span>
|
|
<el-table height="400px" border ref="itemTable2" @selection-change="selectionItem2"
|
|
@row-click="handleRowClick2" :data="itemList2" style="width: 100%">
|
|
<el-table-column type="selection" header-align="center" align="center" width="50">
|
|
</el-table-column>
|
|
<el-table-column prop="itemNo" header-align="center" align="center" min-width="80" label="属性编码">
|
|
</el-table-column>
|
|
<el-table-column prop="itemDesc" header-align="center" align="center" min-width="200" label="属性名称">
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-main>
|
|
</el-container>
|
|
<el-footer style="height:40px;margin-top: 20px;text-align:center">
|
|
<el-button type="primary" @click="itemSaveVisible = false">关闭</el-button>
|
|
</el-footer>
|
|
</el-dialog>
|
|
|
|
<el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="valueChooseFlagVisible" width="500px">
|
|
<el-form :model="availableForm" label-position="top">
|
|
<el-row :gutter="10">
|
|
<el-col :span="8">
|
|
<el-form-item label="属性编码" prop="itemNo" :show-message="false">
|
|
<el-input v-model="availableForm.itemNo" disabled></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="10">
|
|
<el-form-item label="属性描述" prop="itemDesc" :show-message="false">
|
|
<el-input v-model="availableForm.itemDesc" disabled></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<el-table :data="availableList" border style="width: 100%" :height="200">
|
|
<el-table-column prop="availableValue" header-align="center" align="left" min-width="200" label="属性值">
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import { getSiteByUserName } from '@/api/dept.js'
|
|
import { getRoleSelect } from '@/api/role.js'
|
|
import {
|
|
savePropertyTemplate,
|
|
queryPropertyTemplateByPage,
|
|
updatePropertyTemplate,
|
|
queryPropertyTemplateDetail,
|
|
queryPropertyTemplateDetailItem,
|
|
batchSavePropertyTemplateDetail,
|
|
batchUpdatePropertyTemplateDetail,
|
|
removePropertyTemplateDetail,
|
|
removeBatchPropertyTemplateDetail,
|
|
removePropertyTemplate
|
|
} from '@/api/property/property.js'
|
|
|
|
export default {
|
|
name: 'propertyTemplate',
|
|
dicts: ['function_type_desc'],
|
|
components: {},
|
|
data() {
|
|
return {
|
|
pageIndex: 1,
|
|
pageSize: 20,
|
|
total: 0,
|
|
menuId: 888001,
|
|
dataList: [],
|
|
roleIdList: [],
|
|
queryLoading: false,
|
|
itemListLoading: false,
|
|
templateQuery: {
|
|
codeNo: '',
|
|
codeDesc: '',
|
|
functionType: '',
|
|
active: '',
|
|
},
|
|
userSiteList: [],
|
|
saveVisible: false,
|
|
saveLoading: false,
|
|
columns: [
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 888001,
|
|
serialNumber: '180002TableFunctionTypeDesc',
|
|
tableId: '180002Table',
|
|
tableName: '属性项目表',
|
|
columnProp: 'functionType',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '模板分组',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 888001,
|
|
serialNumber: '180002TableCodeNo',
|
|
tableId: '180002Table',
|
|
tableName: '属性模板表',
|
|
columnProp: 'codeNo',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '属性模板编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 888001,
|
|
serialNumber: '180002TableCodeDesc',
|
|
tableId: '180002Table',
|
|
tableName: '属性模板表',
|
|
columnProp: 'codeDesc',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '属性模板描述',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 150,
|
|
showOverflowTooltip: true,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 888001,
|
|
serialNumber: '180002TableActive',
|
|
tableId: '180002Table',
|
|
tableName: '属性模板表',
|
|
columnProp: 'active',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '状态',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 888001,
|
|
serialNumber: '180002TableCreateDate',
|
|
tableId: '180002Table',
|
|
tableName: '属性模板表',
|
|
columnProp: 'createDate',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '创建时间',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
columnWidth: 100,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 888001,
|
|
serialNumber: '180002TableCreateBy',
|
|
tableId: '180002Table',
|
|
tableName: '属性模板表',
|
|
columnProp: 'createBy',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '创建人',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 80,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 888001,
|
|
serialNumber: '180002TableUpdateDate',
|
|
tableId: '180002Table',
|
|
tableName: '属性模板表',
|
|
columnProp: 'updateDate',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '更新时间',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
columnWidth: 100,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 888001,
|
|
serialNumber: '180002TableUpdateBy',
|
|
tableId: '180002Table',
|
|
tableName: '属性模板表',
|
|
columnProp: 'updateBy',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '更新人',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 80,
|
|
},
|
|
],
|
|
saveForm: {
|
|
active: 'Y',
|
|
},
|
|
rules: {
|
|
site: [{ required: true, message: '请选择site', trigger: 'change' }],
|
|
codeNo: [
|
|
{ required: true, message: '请输入模板编码', trigger: 'blur' },
|
|
],
|
|
codeDesc: [
|
|
{ required: true, message: '请输入模板描述', trigger: 'blur' },
|
|
],
|
|
functionType: [
|
|
{ required: true, message: '请选择模板分组', trigger: 'change' },
|
|
],
|
|
},
|
|
propertyTemplateItem: {},
|
|
itemVisible: false,
|
|
detailList: [],
|
|
columnDetailList: [
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 180002,
|
|
serialNumber: '180002Table2PropertiesItemNo',
|
|
tableId: '180002Table2',
|
|
tableName: '属性项目表',
|
|
columnProp: 'propertiesItemNo',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '属性项目编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 80,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 180002,
|
|
serialNumber: '180002Table2ItemDesc',
|
|
tableId: '180002Table2',
|
|
tableName: '属性项目表',
|
|
columnProp: 'itemDesc',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '属性项目名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 180002,
|
|
serialNumber: '180002Table2ValueType',
|
|
tableId: '180002Table2',
|
|
tableName: '属性项目表',
|
|
columnProp: 'daysNumber',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '天数',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 60,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 180002,
|
|
serialNumber: '180002Table2DefaultValue',
|
|
tableId: '180002Table2',
|
|
tableName: '属性项目表',
|
|
columnProp: 'ismainFlag',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '是否关键事项',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 60,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 180002,
|
|
serialNumber: '180002Table2MaxValue',
|
|
tableId: '180002Table2',
|
|
tableName: '属性项目表',
|
|
columnProp: 'roleId',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '角色',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 70,
|
|
},
|
|
],
|
|
itemSaveVisible: false,
|
|
item: {},
|
|
selectionList1: [],
|
|
selectionList2: [],
|
|
itemList1: [],
|
|
itemList2: [],
|
|
valueChooseFlagVisible: false,
|
|
availableForm: {},
|
|
availableList: [],
|
|
}
|
|
},
|
|
created() {
|
|
this.handleQueryByPage()
|
|
},
|
|
watch: {},
|
|
methods: {
|
|
handleQueryByPage() {
|
|
let params = {
|
|
...this.templateQuery,
|
|
pageIndex: this.pageIndex,
|
|
pageSize: this.pageSize,
|
|
createBy: this.$store.state.user.name,
|
|
}
|
|
this.queryLoading = true
|
|
queryPropertyTemplateByPage(params)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
this.dataList = data.page.records
|
|
this.total = data.page.total
|
|
this.pageIndex = data.page.current
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
this.queryLoading = false
|
|
})
|
|
.catch((error) => {
|
|
this.$message.error(error)
|
|
this.queryLoading = false
|
|
})
|
|
},
|
|
handleSave(row) {
|
|
this.getSiteByUserName()
|
|
this.$nextTick(() => {
|
|
if (this.$refs.saveForm) {
|
|
this.$refs.saveForm.clearValidate()
|
|
}
|
|
})
|
|
this.saveForm = JSON.parse(JSON.stringify(this.saveForm))
|
|
if (row) {
|
|
this.saveForm = {
|
|
...row,
|
|
}
|
|
} else {
|
|
this.saveForm = JSON.parse(JSON.stringify({}))
|
|
|
|
this.$set(this.saveForm,'active','Y')
|
|
}
|
|
this.saveVisible = true
|
|
},
|
|
handleSizeChange(val) {
|
|
this.pageSize = val
|
|
this.handleQueryByPage()
|
|
},
|
|
handlePageChange(val) {
|
|
this.pageIndex = val
|
|
this.handleQueryByPage()
|
|
},
|
|
handleSaveOrUpdate() {
|
|
this.$refs.saveForm.validate((valid, obj) => {
|
|
if (valid) {
|
|
if (this.saveForm.id) {
|
|
this.handleTemplateUpdate()
|
|
} else {
|
|
this.handleTemplateSave()
|
|
}
|
|
} else {
|
|
let i = 1
|
|
for (let key in obj) {
|
|
if (i === 1) {
|
|
this.$message.error(obj[key][0].message)
|
|
break
|
|
}
|
|
i++
|
|
}
|
|
}
|
|
})
|
|
},
|
|
handleTemplateUpdate() {
|
|
let params = {
|
|
...this.saveForm,
|
|
}
|
|
this.saveLoading = true
|
|
updatePropertyTemplate(params)
|
|
.then(({ data }) => {
|
|
this.saveLoading = false
|
|
if (data && data.code === 0) {
|
|
this.$message.success(data.msg)
|
|
this.handleQueryByPage()
|
|
this.saveVisible = false
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.saveLoading = false
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
handleTemplateSave() {
|
|
let params = {
|
|
...this.saveForm,
|
|
}
|
|
this.saveLoading = true
|
|
savePropertyTemplate(params)
|
|
.then(({ data }) => {
|
|
this.saveLoading = false
|
|
if (data && data.code === 0) {
|
|
this.$message.success(data.msg)
|
|
this.handleQueryByPage()
|
|
this.saveVisible = false
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.saveLoading = false
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
handleRemove(row) {
|
|
this.$alert('确认删除该属性模板吗?', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
})
|
|
.then(() => {
|
|
let params = { ...row }
|
|
removePropertyTemplate(params)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success(data.msg)
|
|
this.handleQueryByPage()
|
|
}
|
|
})
|
|
})
|
|
.catch(() => {})
|
|
},
|
|
handleItem(row) {
|
|
this.propertyTemplateItem = { ...row }
|
|
this.handleQueryPropertyTemplateDetail()
|
|
this.getRoleSelect()
|
|
this.itemVisible = true
|
|
},
|
|
handleSaveItem(row) {
|
|
this.item = {
|
|
itemNo: '',
|
|
itemDesc: '',
|
|
site: this.propertyTemplateItem.site,
|
|
itemType: this.propertyTemplateItem.functionType,
|
|
headerId: this.propertyTemplateItem.id,
|
|
}
|
|
this.handleQueryItem()
|
|
},
|
|
handleQueryItem() {
|
|
let params = {
|
|
...this.item,
|
|
}
|
|
queryPropertyTemplateDetailItem(params)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
this.itemList1 = data.rows
|
|
this.itemSaveVisible = true
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
handleRowClick1(row) {
|
|
this.$refs.itemTable1.toggleRowSelection(row, true)
|
|
},
|
|
handleRowClick2(row) {
|
|
this.$refs.itemTable2.toggleRowSelection(row, true)
|
|
},
|
|
selectionItem1(val) {
|
|
this.selectionList1 = val
|
|
},
|
|
selectionItem2(val) {
|
|
this.selectionList2 = val
|
|
},
|
|
handleAddItem() {
|
|
if (this.selectionList1.length === 0) {
|
|
this.$message.warning('请选择属性项目')
|
|
return
|
|
}
|
|
let params = this.selectionList1.map((item) => {
|
|
return {
|
|
site: this.propertyTemplateItem.site,
|
|
functionType: this.propertyTemplateItem.functionType,
|
|
codeNo: this.propertyTemplateItem.codeNo,
|
|
propertiesItemNo: item.propertiesItemNo,
|
|
createBy: this.$store.state.user.name,
|
|
headerId: this.propertyTemplateItem.id,
|
|
}
|
|
})
|
|
batchSavePropertyTemplateDetail(params)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success(data.msg)
|
|
this.handleQueryItem()
|
|
this.handleQueryPropertyTemplateDetail()
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
handleRemoveBatchItem() {
|
|
if (this.selectionList2.length === 0) {
|
|
this.$message.warning('请选择属性项目')
|
|
return
|
|
}
|
|
this.$confirm('确认删除该属性项目吗?', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
})
|
|
.then(() => {
|
|
let params = this.selectionList2.map((item) => {
|
|
return {
|
|
id: item.id,
|
|
}
|
|
})
|
|
removeBatchPropertyTemplateDetail(params)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success(data.msg)
|
|
this.handleQueryItem()
|
|
this.handleQueryPropertyTemplateDetail()
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
})
|
|
.catch(() => {})
|
|
},
|
|
handleQueryPropertyTemplateDetail() {
|
|
let params = {
|
|
headerId: this.propertyTemplateItem.id,
|
|
}
|
|
queryPropertyTemplateDetail(params)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
this.itemList2 = data.list
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
handleRemoveItem(row) {
|
|
this.$confirm('确认删除该属性项目吗?', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
})
|
|
.then(() => {
|
|
let params = {
|
|
id: row.id,
|
|
}
|
|
removePropertyTemplateDetail(params)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success(data.msg)
|
|
this.handleQueryPropertyTemplateDetail()
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
})
|
|
.catch(() => {})
|
|
},
|
|
updateItemSort(row, index, type) {
|
|
let currentSort = row.orderId
|
|
console.log('1111', index, type)
|
|
let nexRow = { ...this.itemList2[index + type] }
|
|
let current = { ...row }
|
|
current.orderId = nexRow.orderId
|
|
nexRow.orderId = currentSort
|
|
let params = [current, nexRow]
|
|
batchUpdatePropertyTemplateDetail(params)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success(data.msg)
|
|
this.handleQueryPropertyTemplateDetail()
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
handleChooseValue(row) {
|
|
this.availableForm = {
|
|
itemNo: row.itemNo,
|
|
itemDesc: row.itemDesc,
|
|
itemId: row.itemId,
|
|
}
|
|
this.handleQueryPropertyItemAvailable()
|
|
this.valueChooseFlagVisible = true
|
|
},
|
|
handleQueryPropertyItemAvailable() {
|
|
let params = {
|
|
itemId: this.availableForm.itemId,
|
|
}
|
|
queryPropertyItemAvailable(params)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
this.availableList = data.rows
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
getSiteByUserName() {
|
|
let params = {
|
|
username: this.$store.state.user.name,
|
|
}
|
|
getSiteByUserName(params)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
this.userSiteList = data.list
|
|
this.$set(
|
|
this.saveForm,
|
|
'site',
|
|
this.userSiteList.length > 0 ? this.userSiteList[0].deptId : ''
|
|
)
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
getRoleSelect() {
|
|
let params = {}
|
|
getRoleSelect(params)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
this.roleIdList = data.list
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
},
|
|
//批量保存所有项目清单
|
|
itemListBatchSave() {
|
|
let nexRow = this.itemList2
|
|
this.itemListLoading = true
|
|
batchUpdatePropertyTemplateDetail(nexRow)
|
|
.then(({ data }) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success(data.msg)
|
|
this.itemVisible = false
|
|
this.handleQueryByPage()
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.$message.error(error)
|
|
})
|
|
.finally(() => {
|
|
this.itemListLoading = false
|
|
})
|
|
},
|
|
/** 重置按钮操作 */
|
|
resetQuery() {
|
|
this.resetForm('queryForm')
|
|
this.handleQueryByPage()
|
|
},
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<!-- <style scoped lang="scss">
|
|
改变字典中的样式
|
|
.el-tag {
|
|
background-color: transparent!important;
|
|
color: red!important;
|
|
border: 0px!important;
|
|
}
|
|
.itemListClass {
|
|
|
|
/deep/.tableBox {
|
|
th {
|
|
padding: 0 !important;
|
|
height: 10px;
|
|
line-height: 10px;
|
|
}
|
|
td {
|
|
padding: 0 !important;
|
|
height: 30px;
|
|
line-height: 30px;
|
|
}
|
|
}
|
|
}
|
|
</style> -->
|
|
<style scoped>
|
|
/deep/ .itemListClass .cell {
|
|
line-height: 20px;
|
|
font-size: 12px;
|
|
height: 20px;
|
|
}
|
|
</style>
|