| | |
| | | <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> |
| | | <a-button type="primary" icon="import">导å
¥</a-button> |
| | | </a-upload> |
| | | <a-button @click="handleAchievement" type="primary" icon="plus" v-if="selectedRowKeys.length == 1">æç»©å½å
¥</a-button> |
| | | <a-button @click="handleAchievement" type="primary" icon="plus" v-if="selectedRowKeys.length == 1 && selectionRows[0].auditStatus == 'audited'">æç»©å½å
¥</a-button> |
| | | <!-- é«çº§æ¥è¯¢åºå --> |
| | | <!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>--> |
| | | <a-dropdown v-if="selectedRowKeys.length > 0"> |
| | |
| | | </template> |
| | | |
| | | <span slot="action" slot-scope="text, record"> |
| | | <a @click="handleEdit(record)">ç¼è¾</a> |
| | | |
| | | <a-divider type="vertical" /> |
| | | <a-popconfirm |
| | | v-if="record.auditStatus == 'created'" |
| | | title="确认æäº¤å?" |
| | | @confirm="() =>handleCommit(record, 'commit')" |
| | | > |
| | | <a>æäº¤</a> |
| | | </a-popconfirm> |
| | | <a-popconfirm |
| | | v-if="record.auditStatus == 'submitted'" |
| | | title="确认æ¤åå?" |
| | | @confirm="() =>handleCommit(record, 'back')" |
| | | > |
| | | <a>æ¤å</a> |
| | | </a-popconfirm> |
| | | <a-popconfirm |
| | | v-if="record.auditStatus == 'submitted' || record.auditStatus == 'approved'" |
| | | title="确认驳åå?" |
| | | @confirm="() =>handleCommit(record, 'back')" |
| | | > |
| | | <a>驳å</a> |
| | | </a-popconfirm> |
| | | <a-divider |
| | | v-if="record.auditStatus == 'created' || record.auditStatus == 'submitted'" |
| | | type="vertical" |
| | | /> |
| | | <a @click="handleEdit(record)" v-if="record.auditStatus == 'created'">ç¼è¾</a> |
| | | <a-popconfirm |
| | | v-if="record.auditStatus == 'submitted'" |
| | | title="确认éè¿å®¡æ¹å?" |
| | | @confirm="() =>handleCommit(record, 'approved')" |
| | | > |
| | | <a>审æ¹</a> |
| | | </a-popconfirm> |
| | | <a-popconfirm |
| | | v-if="record.auditStatus == 'approved'" |
| | | title="确认éè¿å®¡æ ¸å?" |
| | | @confirm="() =>handleCommit(record, 'audited')" |
| | | > |
| | | <a>å®¡æ ¸</a> |
| | | </a-popconfirm> |
| | | <a-divider type="vertical" v-if="record.auditStatus == 'created' || record.auditStatus == 'submitted' || record.auditStatus == 'approved'"/> |
| | | <a-dropdown> |
| | | <a class="ant-dropdown-link">æ´å¤ <a-icon type="down" /></a> |
| | | <a-menu slot="overlay"> |
| | |
| | | <a @click="handleDetail(record)">详æ
</a> |
| | | </a-menu-item> |
| | | <a-menu-item> |
| | | <a-popconfirm title="ç¡®å®å é¤å?" @confirm="() => handleDelete(record.id)"> |
| | | <a-popconfirm title="ç¡®å®å é¤å?" @confirm="() => handleDelete(record.id)" v-if="record.auditStatus == 'created'"> |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </a-menu-item> |
| | |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import OperationCertificateApplyModal from './modules/operationCertificateApply/OperationCertificateApplyModal' |
| | | import {filterMultiDictText} from '@/components/dict/JDictSelectUtil' |
| | | import { getAction, postAction } from '@/api/manage' |
| | | import OperationCertificateApplyDetailList from './modules/operationCertificateApply/OperationCertificateApplyDetailList' |
| | | import '@/assets/less/TableExpand.less' |
| | | |
| | |
| | | deleteBatch: "/eam/operationCertificateApply/deleteBatch", |
| | | exportXlsUrl: "/eam/operationCertificateApply/exportXls", |
| | | importExcelUrl: "eam/operationCertificateApply/importExcel", |
| | | |
| | | approve:"/eam/operationCertificateApply/approve" |
| | | }, |
| | | dictOptions:{}, |
| | | superFieldList:[], |
| | |
| | | fieldList.push({type:'string',value:'remark',text:'夿³¨',dictCode:''}) |
| | | this.superFieldList = fieldList |
| | | }, |
| | | handleCommit(record, type) { |
| | | if(type == 'commit'){ |
| | | record.auditStatus = 'submitted' |
| | | }else if(type == 'back'){ |
| | | record.auditStatus = 'created' |
| | | }else if(type == 'approved'){ |
| | | record.auditStatus = 'approved' |
| | | }else if(type == 'audited'){ |
| | | record.auditStatus = 'audited' |
| | | } |
| | | |
| | | postAction(this.url.approve, record).then(res => { |
| | | if (res.success) { |
| | | this.$message.success("æä½æåï¼"); |
| | | this.loadData(1); |
| | | } else { |
| | | this.$message.warning(res.message); |
| | | } |
| | | }) |
| | | }, |
| | | handleEdit: function (record) { |
| | | this.$refs.modalForm.edit(record); |
| | | this.$refs.modalForm.title = "ç¼è¾"; |
| | |
| | | :sm="24" |
| | | > |
| | | <a-form-item |
| | | label="车é´" |
| | | label="å·¥åº" |
| | | > |
| | | <j-dict-select-tag |
| | | allow-clear |
| | | placeholder="è¯·éæ©èµè½¦é´" |
| | | placeholder="è¯·éæ©èµå·¥åº" |
| | | :triggerChange="true" |
| | | dictCode="mom_base_factory_model,name,id,del_flag!='1'" |
| | | v-model="queryParam.factoryModelId" |
| | |
| | | import EquipmentDocumentList from './RepairOrderEquipmentDocumentList' |
| | | import '@/assets/less/TableExpand.less' |
| | | import { putAction } from '../../api/manage' |
| | | import RepairOrderAssignTask from './modules/repairorder/RepairOrderAssignTask.vue' |
| | | import RepairOrderAssignTask from './modules/repairorder/RepairOrderAssignTask' |
| | | import RepairOrderExcuteDrawer from './modules/repairorder/repairOrderExcuteDrawer' |
| | | import FaultDescriptionList from './FaultDescriptionList' |
| | | import FaultReportRepair from './modules/repairorder/moudles/select/FaultReportRepair.vue' |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-card |
| | | title="åæ®ç¼ç å表" |
| | | :bordered="false" |
| | | > |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form |
| | | layout="inline" |
| | | @keyup.enter.native="searchQuery" |
| | | > |
| | | <a-row :gutter="24"> |
| | | <a-col |
| | | :xl="6" |
| | | :lg="7" |
| | | :md="8" |
| | | :sm="24" |
| | | > |
| | | <a-form-item label="åæ®ç¼ç "> |
| | | <a-input |
| | | placeholder="请è¾å
¥åæ®ç¼ç " |
| | | v-model="queryParam.num" |
| | | ></a-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col |
| | | :xl="6" |
| | | :lg="7" |
| | | :md="8" |
| | | :sm="24" |
| | | > |
| | | <a-form-item label="åæ®åç§°"> |
| | | <a-input |
| | | placeholder="请è¾å
¥åæ®åç§°" |
| | | v-model="queryParam.name" |
| | | ></a-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col |
| | | :md="10" |
| | | :sm="8" |
| | | > |
| | | <a-form-item label="çæ¬ç¶æ"> |
| | | <!-- button-style="solid" --> |
| | | <!-- size="small" --> |
| | | <a-radio-group |
| | | @change="onChange" |
| | | default-value="2" |
| | | v-model="queryParam.versionStatus" |
| | | > |
| | | <a-radio-button value="1"> |
| | | æªçæ |
| | | </a-radio-button> |
| | | <a-radio-button value="2"> |
| | | å·²çæ |
| | | </a-radio-button> |
| | | <a-radio-button value="3"> |
| | | 已失æ |
| | | </a-radio-button> |
| | | </a-radio-group> |
| | | </a-form-item> |
| | | </a-col> |
| | | |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | |
| | | <div class="table-operator"> |
| | | <a-button |
| | | @click="handleAdd" |
| | | type="primary" |
| | | icon="plus" |
| | | >æ°å¢</a-button> |
| | | <!-- v-has="'maintenanceCycle:add'" --> |
| | | <a-button |
| | | type="primary" |
| | | @click="searchQuery" |
| | | icon="search" |
| | | >æ¥è¯¢</a-button> |
| | | <a-button |
| | | type="primary" |
| | | @click="searchReset" |
| | | icon="reload" |
| | | style="margin-left: 8px" |
| | | >éç½®</a-button> |
| | | <!-- <a-dropdown v-if="selectedRowKeys.length > 0"> |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item |
| | | key="1" |
| | | @click="batchDel" |
| | | ><a-icon type="delete" />å é¤</a-menu-item> |
| | | </a-menu> |
| | | <a-button style="margin-left: 8px"> æ¹éæä½ <a-icon type="down" /></a-button> |
| | | </a-dropdown> --> |
| | | </div> |
| | | |
| | | <!-- tableåºå-begin --> |
| | | <div> |
| | | <div |
| | | class="ant-alert ant-alert-info" |
| | | style="margin-bottom: 16px" |
| | | > |
| | | <i class="anticon anticon-info-circle ant-alert-icon"></i> 已鿩 |
| | | <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 |
| | | <a |
| | | style="margin-left: 24px" |
| | | @click="onClearSelected" |
| | | >æ¸
空</a> |
| | | </div> |
| | | |
| | | <a-table |
| | | ref="table" |
| | | size="middle" |
| | | bordered |
| | | rowKey="id" |
| | | :columns="columns" |
| | | :dataSource="dataSource" |
| | | :pagination="ipagination" |
| | | :loading="loading" |
| | | class="j-table-force-nowrap" |
| | | @change="handleTableChange" |
| | | > |
| | | <!-- :scroll="{ x: 'calc(950px + 50%)', y: 900 }" --> |
| | | <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" --> |
| | | <span |
| | | slot="action" |
| | | slot-scope="text, record" |
| | | > |
| | | <a |
| | | v-if="record.versionStatus == '2'" |
| | | @click="handleRevise(record)" |
| | | >åç</a> |
| | | <!-- v-has="'maintenanceCycle:revise'" --> |
| | | <a-divider type="vertical" /> |
| | | <a |
| | | v-if="record.versionStatus == '1'" |
| | | @click="handleTakeEffect(record)" |
| | | >çæ</a> |
| | | <!-- v-has="'maintenanceCycle:takeEffect'" --> |
| | | <a-divider type="vertical" /> |
| | | <a |
| | | v-if="record.versionStatus == '1'" |
| | | @click="handleEdit(record)" |
| | | >ç¼è¾</a> |
| | | <!-- v-has="'maintenanceCycle:edit'" --> |
| | | <a-divider type="vertical" /> |
| | | <a-popconfirm |
| | | v-if="record.versionStatus == '1'" |
| | | title="ç¡®å®å é¤å?" |
| | | @confirm="() => handleDelete(record.id)" |
| | | > |
| | | <!-- v-has="'maintenanceCycle:delete'" --> |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </span> |
| | | </a-table> |
| | | </div> |
| | | |
| | | <sys-file-name-modal |
| | | ref="modalForm" |
| | | @ok="modalFormOk" |
| | | ></sys-file-name-modal> |
| | | </a-card> |
| | | </template> |
| | | |
| | | <script> |
| | | import '@/assets/less/TableExpand.less' |
| | | import { mixinDevice } from '@/utils/mixin' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import SysFileNameModal from './modules/sysFileName/SysFileNameModal' |
| | | import { deleteAction, getAction, postAction, requestPut } from '@/api/manage' |
| | | |
| | | export default { |
| | | name: 'SysFileNameList', |
| | | mixins: [JeecgListMixin, mixinDevice], |
| | | components: { |
| | | SysFileNameModal, |
| | | }, |
| | | data() { |
| | | return { |
| | | description: 'åæ®ç¼ç ', |
| | | model: {}, |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | | dataIndex: '', |
| | | key: 'rowIndex', |
| | | width: 60, |
| | | align: 'center', |
| | | customRender: function (t, r, index) { |
| | | return parseInt(index) + 1 |
| | | }, |
| | | }, |
| | | { |
| | | title: 'åæ®åç§°', |
| | | align: 'center', |
| | | dataIndex: 'name_dictText', |
| | | }, |
| | | |
| | | { |
| | | title: 'åæ®ç¼ç ', |
| | | align: 'center', |
| | | dataIndex: 'num', |
| | | }, |
| | | { |
| | | title: 'çæ¬', |
| | | align: 'center', |
| | | dataIndex: 'version', |
| | | }, |
| | | { |
| | | title: 'çæ¬ç¶æ', |
| | | align: 'center', |
| | | dataIndex: 'versionStatus_dictText', |
| | | }, |
| | | { |
| | | title: 'å建人', |
| | | align: 'center', |
| | | dataIndex: 'createBy', |
| | | }, |
| | | { |
| | | title: 'åå»ºæ¥æ', |
| | | align: 'center', |
| | | dataIndex: 'createTime', |
| | | }, |
| | | { |
| | | title: 'æä½', |
| | | dataIndex: 'action', |
| | | align: 'center', |
| | | fixed: 'right', |
| | | width: 147, |
| | | scopedSlots: { customRender: 'action' }, |
| | | }, |
| | | ], |
| | | url: { |
| | | list: '/eam/sysFileName/list', |
| | | delete: '/eam/sysFileName/delete', |
| | | deleteBatch: '/eam/sysFileName/deleteBatch', |
| | | versionTakeEffect: "/eam/sysFileName/versionTakeEffect", |
| | | }, |
| | | visible: false, |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | | //åç |
| | | handleRevise: function (record) { |
| | | this.$refs.modalForm.revise(record); |
| | | this.$refs.modalForm.title = "ä¿å
»å¨æè§åçæ¬å级"; |
| | | this.$refs.modalForm.disableSubmit = false; |
| | | }, |
| | | |
| | | //çæ |
| | | handleTakeEffect(record) { |
| | | const that = this; |
| | | that.confirmLoading = true; |
| | | this.$confirm({ |
| | | title: 'åæ®ç¼ç çæ¬çæï¼', |
| | | content: 'æç¤ºï¼çæ¬çæåä¸ä¸çæ¬å°èªå¨å¤±æï¼è¯·è°¨æ
æä½ï¼', |
| | | okText: '确认', |
| | | cancelText: 'åæ¶', |
| | | onOk() { |
| | | requestPut(that.url.versionTakeEffect, { id: record.id, name: record.name, versionStatus: '2' }).then((res) => { |
| | | if (res.success) { |
| | | that.$message.success("çæ¬çææåï¼") |
| | | that.loadData(1) |
| | | } else { |
| | | that.$message.warning("çæ¬çæå¤±è´¥ï¼") |
| | | } |
| | | }).finally(() => { |
| | | that.confirmLoading = false; |
| | | }) |
| | | }, |
| | | }) |
| | | }, |
| | | |
| | | onChange(e) { |
| | | this.queryParam.versionStatus = e.target.value; |
| | | this.loadData(); |
| | | }, |
| | | |
| | | loadData(arg) { |
| | | if (!this.url.list) { |
| | | this.$message.error("请设置url.list屿§!") |
| | | return |
| | | } |
| | | //å è½½æ°æ® è¥ä¼ å
¥åæ°1åå 载第ä¸é¡µçå
容 |
| | | if (arg === 1) { |
| | | this.ipagination.current = 1; |
| | | } |
| | | |
| | | var params = this.getQueryParams();//æ¥è¯¢æ¡ä»¶ |
| | | this.loading = true; |
| | | getAction(this.url.list, params).then((res) => { |
| | | if (res.success) { |
| | | //update-begin---author:zhangyafei Date:20201118 forï¼éé
ä¸åé¡µçæ°æ®å表------------ |
| | | this.dataSource = res.result.records || res.result; |
| | | if (res.result.total) { |
| | | this.ipagination.total = res.result.total; |
| | | } else { |
| | | this.ipagination.total = 0; |
| | | } |
| | | //update-end---author:zhangyafei Date:20201118 forï¼éé
ä¸åé¡µçæ°æ®å表------------ |
| | | } else { |
| | | this.$message.warning(res.message) |
| | | } |
| | | }).finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | handleCancel() { |
| | | this.visible = false; |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | @import '~@assets/less/common.less'; |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-row |
| | | type="flex" |
| | | :gutter="16" |
| | | > |
| | | <a-col |
| | | :md="5" |
| | | :sm="24" |
| | | > |
| | | <a-card |
| | | :loading="cardLoading" |
| | | :bordered="false" |
| | | title="é¨é¨æ " |
| | | style="height: 100%;" |
| | | > |
| | | <a-spin :spinning="loading"> |
| | | <a-alert |
| | | type="info" |
| | | :showIcon="true" |
| | | style="margin-right: 54px;" |
| | | > |
| | | <div slot="message"> |
| | | å½åï¼<span v-if="this.currSelected.title">{{ getCurrSelectedTitle() }}</span> |
| | | <a |
| | | v-if="this.currSelected.title" |
| | | style="margin-left: 10px" |
| | | @click="onClearSelected" |
| | | >åæ¶</a> |
| | | </div> |
| | | </a-alert> |
| | | <div class="drawer-bootom-button"> |
| | | <a-dropdown |
| | | :trigger="['click']" |
| | | placement="bottomCenter" |
| | | > |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item |
| | | key="1" |
| | | @click="expandAll" |
| | | >å±å¼ææ</a-menu-item> |
| | | <a-menu-item |
| | | key="2" |
| | | @click="closeAll" |
| | | >åå¹¶ææ</a-menu-item> |
| | | <a-menu-item |
| | | key="3" |
| | | @click="refreshTree" |
| | | >å·æ°</a-menu-item> |
| | | </a-menu> |
| | | <a-button> |
| | | <a-icon type="bars" /> |
| | | </a-button> |
| | | </a-dropdown> |
| | | </div> |
| | | |
| | | <a-input-search |
| | | @search="handleSearch" |
| | | style="width:100%;margin-top: 10px" |
| | | placeholder="设å¤åç±»" |
| | | allowClear |
| | | v-model="searchInput" |
| | | @change="handleChange" |
| | | /> |
| | | |
| | | <a-tree |
| | | showLine |
| | | ref="tree" |
| | | :checkStrictly="checkStrictly" |
| | | :expandedKeys.sync="expandedKeys" |
| | | :selectedKeys="selectedKeys" |
| | | :dropdownStyle="{maxHeight:'200px',overflow:'auto'}" |
| | | :treeData="treeDataSource" |
| | | :autoExpandParent="autoExpandParent" |
| | | @select="onSelect" |
| | | @expand="onExpand" |
| | | > |
| | | <template |
| | | slot="title" |
| | | slot-scope="{key,entity,title,isLeaf,value}" |
| | | > |
| | | <span>{{ title }}</span> |
| | | <a-dropdown |
| | | :trigger="['click']" |
| | | placement="bottomCenter" |
| | | > |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item v-if="key!='-1'"> |
| | | <a |
| | | href="javascript:;" |
| | | @click="handleEdit(entity)" |
| | | >ç¼è¾</a> |
| | | </a-menu-item> |
| | | <a-menu-item> |
| | | <a |
| | | href="javascript:;" |
| | | @click="handleAdd({parentId:value,orgCategory:'2'})" |
| | | > |
| | | æ·»å åç±»å« |
| | | </a> |
| | | </a-menu-item> |
| | | <a-menu-item v-if="key!='-1'&&isLeaf"> |
| | | <a-popconfirm |
| | | title="ç¡®å®å é¤å?" |
| | | @confirm="() => handleDelete(entity.id)" |
| | | > |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </a-menu-item> |
| | | </a-menu> |
| | | <span :style="{position: 'absolute',right: 0}"> |
| | | <a-icon type="down" /> |
| | | </span> |
| | | </a-dropdown> |
| | | </template> |
| | | </a-tree> |
| | | </a-spin> |
| | | </a-card> |
| | | </a-col> |
| | | <a-col |
| | | :md="24-5" |
| | | :sm="24" |
| | | > |
| | | <a-card |
| | | :bordered="false" |
| | | class="card-area" |
| | | title="å
³èå表" |
| | | style="height: 100%;" |
| | | > |
| | | <a-tabs defaultActiveKey="1"> |
| | | <a-tab-pane tab="é¨é¨å表" key="1" forceRender> |
| | | <depart-list :mainId="mainId"></depart-list> |
| | | </a-tab-pane> |
| | | <a-tab-pane tab="é¨é¨æé" key="2" forceRender v-if="false"> |
| | | <permission-tree :mainId="mainId"></permission-tree> |
| | | </a-tab-pane> |
| | | <a-tab-pane tab="设å¤å表" key="3" forceRender> |
| | | <equipment-list :mainId="mainId"></equipment-list> |
| | | </a-tab-pane> |
| | | <a-tab-pane tab="çç»å表" key="4" forceRender> |
| | | <team-list :mainId="mainId"></team-list> |
| | | </a-tab-pane> |
| | | </a-tabs> |
| | | </a-card> |
| | | </a-col> |
| | | <depart-model ref='modalForm' @ok='modalFormOk' @reloadTree="refreshTree"></depart-model> |
| | | </a-row> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getAction } from '@/api/manage' |
| | | import Tooltip from 'ant-design-vue/es/tooltip' |
| | | import JEllipsis from "@/components/jeecg/JEllipsis" |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import { deleteAction } from '../../../api/manage' |
| | | import DepartList from './modules/DepartList' |
| | | import PermissionTree from './modules/PermissionTree' |
| | | import EquipmentList from './modules/EquipmentList' |
| | | import TeamList from './modules/TeamList' |
| | | import DepartModel from './modules/DepartModel' |
| | | export default { |
| | | name: 'DepartManage', |
| | | mixins: [JeecgListMixin], |
| | | components: { |
| | | Tooltip, |
| | | JEllipsis, |
| | | DepartList, |
| | | PermissionTree, |
| | | EquipmentList, |
| | | TeamList, |
| | | DepartModel, |
| | | }, |
| | | data() { |
| | | return { |
| | | description: '设å¤é¨é¨', |
| | | searchInput: '', |
| | | disableMixinCreated:true, |
| | | cardLoading: false, |
| | | loading: false, |
| | | treeDataSource: [], |
| | | selectedKeys: [], |
| | | expandedKeys: [], |
| | | mainId:'', |
| | | url: { |
| | | equipmentCategoryTreeList: '/sys/sysDepart/myTree', |
| | | delete: "/sys/sysDepart/delete", |
| | | list: "/eam/equipmentCategory/getAllChildren", |
| | | }, |
| | | searchValue: '', |
| | | dataList: [], |
| | | autoExpandParent: true, |
| | | checkStrictly: true, |
| | | allTreeKeys: [], |
| | | currSelected: {}, |
| | | hiding: false, |
| | | } |
| | | }, |
| | | created() { |
| | | this.queryTreeData(); |
| | | this.closeAll(); |
| | | }, |
| | | methods: { |
| | | getCurrSelectedTitle() { |
| | | return !this.currSelected.title ? '' : this.currSelected.title; |
| | | }, |
| | | onClearSelected() { |
| | | this.hiding = true; |
| | | this.currSelected = {}; |
| | | this.selectedKeys = []; |
| | | }, |
| | | onSelect(selectedKeys, e) { |
| | | this.hiding = false; |
| | | let record = e.node.dataRef; |
| | | this.currSelected = Object.assign({}, record); |
| | | this.selectedKeys = [record.key]; |
| | | this.mainId = record.key; |
| | | }, |
| | | onExpand(expandedKeys) { |
| | | this.expandedKeys = expandedKeys; |
| | | this.autoExpandParent = false; |
| | | }, |
| | | queryTreeData() { |
| | | this.loading = true; |
| | | this.cardLoading = true; |
| | | getAction(this.url.equipmentCategoryTreeList).then((res) => { |
| | | if (res.success) { |
| | | this.dataList = []; |
| | | this.allTreeKeys = []; |
| | | this.treeDataSource = res.result; |
| | | this.generateList(res.result); |
| | | } else { |
| | | this.$message.warn(res.message); |
| | | } |
| | | }).finally(() => { |
| | | this.loading = false; |
| | | this.cardLoading = false; |
| | | }) |
| | | }, |
| | | handleChange() { |
| | | let search = this.searchInput; |
| | | let expandedKeys = this.dataList |
| | | .map(item => { |
| | | if (item.title.indexOf(search) > -1) { |
| | | return this.getParentKey(item.key, this.treeDataSource); |
| | | } |
| | | return null; |
| | | }) |
| | | .filter((item, i, self) => item && self.indexOf(item) === i); |
| | | Object.assign(this, { |
| | | expandedKeys, |
| | | searchValue: search, |
| | | autoExpandParent: true, |
| | | }); |
| | | }, |
| | | handleSearch(value) { |
| | | let search = value; |
| | | let expandedKeys = this.dataList |
| | | .map(item => { |
| | | if (item.title.indexOf(search) > -1) { |
| | | return this.getParentKey(item.key, this.treeDataSource); |
| | | } |
| | | return null; |
| | | }) |
| | | .filter((item, i, self) => item && self.indexOf(item) === i); |
| | | Object.assign(this, { |
| | | expandedKeys, |
| | | searchValue: search, |
| | | autoExpandParent: true, |
| | | }); |
| | | }, |
| | | getParentKey(key, tree) { |
| | | let parentKey; |
| | | for (let i = 0; i < tree.length; i++) { |
| | | const node = tree[i]; |
| | | if (node.children) { |
| | | if (node.children.some(item => item.key === key)) { |
| | | parentKey = node.key; |
| | | } else if ( |
| | | this.getParentKey(key, node.children)) { |
| | | parentKey = this.getParentKey(key, node.children); |
| | | } |
| | | } |
| | | } |
| | | return parentKey; |
| | | }, |
| | | handleDelete(id) { |
| | | if (!this.url.delete) { |
| | | this.$message.error("请设置url.delete屿§!") |
| | | return |
| | | } |
| | | var that = this; |
| | | deleteAction(that.url.delete, { id: id }).then((res) => { |
| | | if (res.success) { |
| | | //éæ°è®¡ç®å页é®é¢ |
| | | that.reCalculatePage(1) |
| | | that.$message.success(res.message); |
| | | that.queryTreeData(); |
| | | that.$bus.$emit('loadData') |
| | | that.alterFlag = new Date(); |
| | | } else { |
| | | that.$message.warning(res.message); |
| | | } |
| | | }); |
| | | }, |
| | | generateList(data) { |
| | | for (let i = 0; i < data.length; i++) { |
| | | const node = data[i]; |
| | | const key = node.key; |
| | | const title = node.title; |
| | | // const type = node.type; |
| | | |
| | | this.dataList.push({ key, title: title }); |
| | | this.allTreeKeys.push(key); |
| | | if (node.children) { |
| | | this.generateList(node.children); |
| | | } |
| | | } |
| | | }, |
| | | expandAll() { |
| | | this.expandedKeys = this.allTreeKeys; |
| | | }, |
| | | closeAll() { |
| | | this.expandedKeys = ['-1']; |
| | | }, |
| | | refreshTree() { |
| | | this.queryTreeData(); |
| | | }, |
| | | handleAdd(record){ |
| | | this.$refs.modalForm.title = "æ°å¢" |
| | | this.$refs.modalForm.add(record); |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | @import '~@assets/less/common.less'; |
| | | .replaceSearch { |
| | | color: #00090f; |
| | | font-weight: bold; |
| | | background-color: rgb(204, 204, 204); |
| | | } |
| | | /* .ant-select-disabled { |
| | | color: rgba(241, 16, 16, 0.25); |
| | | } |
| | | .ant-select-disabled .ant-select-selection { |
| | | background: #a76b6b; |
| | | } */ |
| | | /*éèæ çé»è®¤icon*/ |
| | | .ant-tree-switcher-noop { |
| | | display: none !important; |
| | | } |
| | | /*éèæ çé»è®¤ç«çº¿*/ |
| | | .ant-tree.ant-tree-show-line li:not(:last-child):before { |
| | | border-left: 0px; |
| | | } |
| | | |
| | | .ant-card-body .table-operator { |
| | | margin: 15px; |
| | | } |
| | | |
| | | .anty-form-btn { |
| | | width: 100%; |
| | | text-align: center; |
| | | } |
| | | |
| | | .anty-form-btn button { |
| | | margin: 0 5px; |
| | | } |
| | | |
| | | .anty-node-layout .ant-layout-header { |
| | | padding-right: 0; |
| | | } |
| | | |
| | | .header { |
| | | padding: 0 8px; |
| | | } |
| | | |
| | | .header button { |
| | | margin: 0 3px; |
| | | } |
| | | |
| | | .ant-modal-cust-warp { |
| | | height: 100%; |
| | | } |
| | | |
| | | .ant-modal-cust-warp .ant-modal-body { |
| | | height: calc(100% - 110px) !important; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .ant-modal-cust-warp .ant-modal-content { |
| | | height: 90% !important; |
| | | overflow-y: hidden; |
| | | } |
| | | |
| | | #app .desktop { |
| | | height: auto !important; |
| | | } |
| | | |
| | | /** Buttonæé®é´è· */ |
| | | .ant-btn { |
| | | margin-left: 3px; |
| | | } |
| | | .ant-alert { |
| | | padding: 5px 15px 5px 37px; |
| | | } |
| | | .drawer-bootom-button { |
| | | position: absolute; |
| | | top: 1px; |
| | | /* padding: 10px 16px; */ |
| | | text-align: left; |
| | | right: 0; |
| | | background: #fff; |
| | | border-radius: 0 0 2px 2px; |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <j-form-container :disabled="formDisabled"> |
| | | <a-form-model |
| | | ref="form" |
| | | :model="model" |
| | | :rules="validatorRules" |
| | | slot="detail" |
| | | > |
| | | <a-row :gutter="24"> |
| | | <a-col :span="24"> |
| | | <a-form-item |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | label="ç¶çº§é¨é¨" |
| | | prop="parentId" |
| | | > |
| | | <j-dict-select-tag |
| | | allow-clear |
| | | placeholder="è¯·éæ©ç¶çº§é¨é¨" |
| | | :triggerChange="true" |
| | | dictCode="sys_depart,depart_name,id,del_flag = '0'" |
| | | v-model="model.parentId" |
| | | :disabled="true" |
| | | /> |
| | | </a-form-item> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row> |
| | | <a-col :span="24"> |
| | | <a-form-model-item |
| | | label="ç¼ç " |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | prop="orgCode" |
| | | > |
| | | <a-input |
| | | v-model="model.orgCode" |
| | | placeholder="请è¾å
¥ç¼ç " |
| | | ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="24"> |
| | | <a-form-model-item |
| | | label="åç§°" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | prop="departName" |
| | | > |
| | | <a-input |
| | | v-model="model.departName" |
| | | placeholder="请è¾å
¥åç§°" |
| | | ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form-model> |
| | | </j-form-container> |
| | | </a-spin> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import { httpAction, getAction } from '@/api/manage' |
| | | import { validateDuplicateValue } from '@/utils/util' |
| | | |
| | | export default { |
| | | name: 'RepairPlanTypeForm', |
| | | components: { |
| | | }, |
| | | props: { |
| | | //表åç¦ç¨ |
| | | disabled: { |
| | | type: Boolean, |
| | | default: false, |
| | | required: false |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | model: { |
| | | }, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 }, |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 16 }, |
| | | }, |
| | | confirmLoading: false, |
| | | validatorRules: { |
| | | orgCode: [ |
| | | { required: true, message: '请è¾å
¥ç¼ç !' }, |
| | | { validator: (rule, value, callback) => validateDuplicateValue('sys_depart', 'org_code', value, this.model.id, callback) }, |
| | | ], |
| | | departName: [ |
| | | { required: true, message: '请è¾å
¥åç§°!' }, |
| | | { validator: (rule, value, callback) => validateDuplicateValue('sys_depart', 'depart_name', value, this.model.id, callback) }, |
| | | ], |
| | | }, |
| | | url: { |
| | | add: "/sys/sysDepart/add", |
| | | edit: "/sys/sysDepart/edit", |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | | formDisabled() { |
| | | return this.disabled |
| | | }, |
| | | }, |
| | | created() { |
| | | //å¤ä»½modelåå§å¼ |
| | | this.modelDefault = JSON.parse(JSON.stringify(this.model)); |
| | | }, |
| | | methods: { |
| | | add(record) { |
| | | this.edit(record); |
| | | }, |
| | | edit(record) { |
| | | this.model = Object.assign({}, record); |
| | | this.visible = true; |
| | | }, |
| | | submitForm() { |
| | | const that = this; |
| | | // 触å表åéªè¯ |
| | | this.$refs.form.validate(valid => { |
| | | if (valid) { |
| | | that.confirmLoading = true; |
| | | let httpurl = ''; |
| | | let method = ''; |
| | | if (!this.model.id) { |
| | | httpurl += this.url.add; |
| | | method = 'post'; |
| | | } else { |
| | | httpurl += this.url.edit; |
| | | method = 'put'; |
| | | } |
| | | httpAction(httpurl, this.model, method).then((res) => { |
| | | if (res.success) { |
| | | that.$message.success(res.message); |
| | | that.$emit('ok'); |
| | | } else { |
| | | that.$message.warning(res.message); |
| | | } |
| | | }).finally(() => { |
| | | that.confirmLoading = false; |
| | | }) |
| | | } |
| | | |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-card :bordered="false" :class="'cust-erp-sub-tab'"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form layout="inline" @keyup.enter.native="searchQuery"> |
| | | <a-row :gutter="24"> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | <div> |
| | | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> |
| | | <i class="anticon anticon-info-circle ant-alert-icon"></i> 已鿩 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 |
| | | <a style="margin-left: 24px" @click="onClearSelected">æ¸
空</a> |
| | | </div> |
| | | |
| | | <a-table |
| | | ref="table" |
| | | size="middle" |
| | | bordered |
| | | rowKey="id" |
| | | :scroll="{x:true}" |
| | | :columns="columns" |
| | | :dataSource="dataSource" |
| | | :pagination="ipagination" |
| | | :loading="loading" |
| | | @change="handleTableChange"> |
| | | |
| | | <template slot="htmlSlot" slot-scope="text"> |
| | | <div v-html="text"></div> |
| | | </template> |
| | | <template slot="imgSlot" slot-scope="text,record"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ å¾ç</span> |
| | | <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> |
| | | </template> |
| | | <template slot="fileSlot" slot-scope="text"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ æä»¶</span> |
| | | <a-button |
| | | v-else |
| | | :ghost="true" |
| | | type="primary" |
| | | icon="download" |
| | | size="small" |
| | | @click="downloadFile(text)"> |
| | | ä¸è½½ |
| | | </a-button> |
| | | </template> |
| | | |
| | | <span slot="action" slot-scope="text, record"> |
| | | <a @click="handleEdit(record)">ç¼è¾</a> |
| | | <a-divider type="vertical" /> |
| | | <a-popconfirm title="ç¡®å®å é¤å?" @confirm="() => handleDelete(record.id)"> |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </span> |
| | | |
| | | </a-table> |
| | | </div> |
| | | </a-card> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | export default { |
| | | name: "DepartList", |
| | | mixins:[JeecgListMixin], |
| | | components: { }, |
| | | props:{ |
| | | mainId:{ |
| | | type:String, |
| | | default:'', |
| | | required:false |
| | | } |
| | | }, |
| | | watch:{ |
| | | mainId:{ |
| | | immediate: true, |
| | | handler(val) { |
| | | if(!this.mainId){ |
| | | this.clearList() |
| | | }else{ |
| | | this.queryParam['parentId'] = val |
| | | this.queryParam['delFlag'] = '0' |
| | | this.loadData(1); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | data () { |
| | | return { |
| | | description: 'ææåºåºå管ç页é¢', |
| | | disableMixinCreated:true, |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | | dataIndex: '', |
| | | key:'rowIndex', |
| | | width:40, |
| | | align:"center", |
| | | customRender:function (t,r,index) { |
| | | return parseInt(index)+1; |
| | | } |
| | | }, |
| | | { |
| | | title:'é¨é¨ç¼ç ', |
| | | align:"center", |
| | | dataIndex: 'orgCode', |
| | | width:100, |
| | | }, |
| | | { |
| | | title:'é¨é¨åç§°', |
| | | align:"center", |
| | | dataIndex: 'departName', |
| | | ellipsis:true, |
| | | width:100, |
| | | }, |
| | | { |
| | | title:'å建人', |
| | | align:"center", |
| | | dataIndex: 'createBy', |
| | | width:100, |
| | | }, |
| | | { |
| | | title:'åå»ºæ¥æ', |
| | | align:"center", |
| | | dataIndex: 'createTime', |
| | | width:100, |
| | | }, |
| | | { |
| | | title:'æ´æ°äºº', |
| | | align:"center", |
| | | dataIndex: 'updateBy', |
| | | width:100, |
| | | }, |
| | | { |
| | | title:'æ´æ°æ¥æ', |
| | | align:"center", |
| | | dataIndex: 'updateTime', |
| | | width:100, |
| | | }, |
| | | ], |
| | | url: { |
| | | list: "/sys/sysDepart/list", |
| | | }, |
| | | dictOptions:{ |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: { |
| | | importExcelUrl(){ |
| | | return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`; |
| | | } |
| | | }, |
| | | methods: { |
| | | clearList(){ |
| | | this.dataSource=[] |
| | | this.selectedRowKeys=[] |
| | | this.ipagination.current = 1 |
| | | } |
| | | |
| | | }, |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | @import '~@assets/less/common.less' |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <j-modal |
| | | :title="title" |
| | | :width="width" |
| | | :visible="visible" |
| | | switchFullscreen |
| | | @ok="handleOk" |
| | | :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" |
| | | @cancel="handleCancel" |
| | | > |
| | | <depart-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></depart-form> |
| | | </j-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import DepartForm from './DepartForm' |
| | | export default { |
| | | name: "DepartModal", |
| | | components: { |
| | | DepartForm |
| | | }, |
| | | data () { |
| | | return { |
| | | title:'', |
| | | width:800, |
| | | visible: false, |
| | | disableSubmit: false |
| | | } |
| | | }, |
| | | methods: { |
| | | add (record) { |
| | | this.visible=true |
| | | this.$nextTick(()=>{ |
| | | this.$refs.realForm.add(record); |
| | | }) |
| | | }, |
| | | edit (record) { |
| | | this.visible=true |
| | | this.$nextTick(()=>{ |
| | | this.$refs.realForm.edit(record); |
| | | }) |
| | | }, |
| | | close () { |
| | | this.$emit('close'); |
| | | this.visible = false; |
| | | }, |
| | | handleOk () { |
| | | this.$refs.realForm.submitForm(); |
| | | }, |
| | | submitCallback(){ |
| | | this.$emit('reloadTree'); |
| | | this.visible = false; |
| | | }, |
| | | handleCancel () { |
| | | this.close() |
| | | }, |
| | | |
| | | } |
| | | } |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-card :bordered="false" :class="'cust-erp-sub-tab'"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form layout="inline" @keyup.enter.native="searchQuery"> |
| | | <a-row :gutter="24"> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | <div> |
| | | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> |
| | | <i class="anticon anticon-info-circle ant-alert-icon"></i> 已鿩 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 |
| | | <a style="margin-left: 24px" @click="onClearSelected">æ¸
空</a> |
| | | </div> |
| | | |
| | | <a-table |
| | | ref="table" |
| | | size="middle" |
| | | bordered |
| | | rowKey="id" |
| | | :scroll="{x:true}" |
| | | :columns="columns" |
| | | :dataSource="dataSource" |
| | | :pagination="ipagination" |
| | | :loading="loading" |
| | | @change="handleTableChange"> |
| | | |
| | | <template slot="htmlSlot" slot-scope="text"> |
| | | <div v-html="text"></div> |
| | | </template> |
| | | <template slot="imgSlot" slot-scope="text,record"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ å¾ç</span> |
| | | <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> |
| | | </template> |
| | | <template slot="fileSlot" slot-scope="text"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ æä»¶</span> |
| | | <a-button |
| | | v-else |
| | | :ghost="true" |
| | | type="primary" |
| | | icon="download" |
| | | size="small" |
| | | @click="downloadFile(text)"> |
| | | ä¸è½½ |
| | | </a-button> |
| | | </template> |
| | | |
| | | <span slot="action" slot-scope="text, record"> |
| | | <a @click="handleEdit(record)">ç¼è¾</a> |
| | | <a-divider type="vertical" /> |
| | | <a-popconfirm title="ç¡®å®å é¤å?" @confirm="() => handleDelete(record.id)"> |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </span> |
| | | |
| | | </a-table> |
| | | </div> |
| | | </a-card> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | export default { |
| | | name: "EquipmentList", |
| | | mixins:[JeecgListMixin], |
| | | components: { }, |
| | | props:{ |
| | | mainId:{ |
| | | type:String, |
| | | default:'', |
| | | required:false |
| | | } |
| | | }, |
| | | watch:{ |
| | | mainId:{ |
| | | immediate: true, |
| | | handler(val) { |
| | | if(!this.mainId){ |
| | | this.clearList() |
| | | }else{ |
| | | this.queryParam['useId'] = val |
| | | this.loadData(1); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | data () { |
| | | return { |
| | | description: 'ææåºåºå管ç页é¢', |
| | | disableMixinCreated:true, |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | | dataIndex: '', |
| | | key:'rowIndex', |
| | | width:40, |
| | | align:"center", |
| | | customRender:function (t,r,index) { |
| | | return parseInt(index)+1; |
| | | } |
| | | }, |
| | | { |
| | | title: '设å¤ç±»å', |
| | | align: "center", |
| | | dataIndex: 'equipmentCategoryId_dictText', |
| | | width:100 |
| | | }, |
| | | { |
| | | title: 'ç»ä¸ç¼ç ', |
| | | align: "center", |
| | | dataIndex: 'num', |
| | | width:100 |
| | | }, |
| | | { |
| | | title: '设å¤åç§°', |
| | | align: "center", |
| | | dataIndex: 'name', |
| | | width:100 |
| | | }, |
| | | { |
| | | title: 'åå·', |
| | | align: "center", |
| | | dataIndex: 'model', |
| | | width:100 |
| | | }, |
| | | { |
| | | title: 'è§æ ¼', |
| | | align: "center", |
| | | dataIndex: 'specification', |
| | | width:100 |
| | | }, |
| | | ], |
| | | url: { |
| | | list: "/eam/equipment/getEquipmentList", |
| | | }, |
| | | dictOptions:{ |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: { |
| | | importExcelUrl(){ |
| | | return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`; |
| | | } |
| | | }, |
| | | methods: { |
| | | clearList(){ |
| | | this.dataSource=[] |
| | | this.selectedRowKeys=[] |
| | | this.ipagination.current = 1 |
| | | } |
| | | |
| | | }, |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | @import '~@assets/less/common.less' |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-card :bordered="false" :class="'cust-erp-sub-tab'"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form layout="inline" @keyup.enter.native="searchQuery"> |
| | | <a-row :gutter="24"> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | <div> |
| | | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> |
| | | <i class="anticon anticon-info-circle ant-alert-icon"></i> 已鿩 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 |
| | | <a style="margin-left: 24px" @click="onClearSelected">æ¸
空</a> |
| | | </div> |
| | | |
| | | <a-table |
| | | ref="table" |
| | | size="middle" |
| | | bordered |
| | | rowKey="id" |
| | | :scroll="{x:true}" |
| | | :columns="columns" |
| | | :dataSource="dataSource" |
| | | :pagination="ipagination" |
| | | :loading="loading" |
| | | :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" |
| | | @change="handleTableChange"> |
| | | |
| | | <template slot="htmlSlot" slot-scope="text"> |
| | | <div v-html="text"></div> |
| | | </template> |
| | | <template slot="imgSlot" slot-scope="text,record"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ å¾ç</span> |
| | | <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> |
| | | </template> |
| | | <template slot="fileSlot" slot-scope="text"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ æä»¶</span> |
| | | <a-button |
| | | v-else |
| | | :ghost="true" |
| | | type="primary" |
| | | icon="download" |
| | | size="small" |
| | | @click="downloadFile(text)"> |
| | | ä¸è½½ |
| | | </a-button> |
| | | </template> |
| | | |
| | | <span slot="action" slot-scope="text, record"> |
| | | <a @click="handleEdit(record)">ç¼è¾</a> |
| | | <a-divider type="vertical" /> |
| | | <a-popconfirm title="ç¡®å®å é¤å?" @confirm="() => handleDelete(record.id)"> |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </span> |
| | | |
| | | </a-table> |
| | | </div> |
| | | </a-card> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | export default { |
| | | name: "UpdateABC", |
| | | mixins:[JeecgListMixin], |
| | | components: { }, |
| | | props:{ |
| | | mainId:{ |
| | | type:String, |
| | | default:'', |
| | | required:false |
| | | } |
| | | }, |
| | | watch:{ |
| | | mainId:{ |
| | | immediate: true, |
| | | handler(val) { |
| | | if(!this.mainId){ |
| | | this.clearList() |
| | | }else{ |
| | | this.queryParam['equipmentId'] = val |
| | | this.queryParam['updateType'] = 'ABC' |
| | | this.loadData(1); |
| | | |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | data () { |
| | | return { |
| | | description: 'ææåºåºå管ç页é¢', |
| | | disableMixinCreated:true, |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | | dataIndex: '', |
| | | key:'rowIndex', |
| | | width:60, |
| | | align:"center", |
| | | customRender:function (t,r,index) { |
| | | return parseInt(index)+1; |
| | | } |
| | | }, |
| | | { |
| | | title:'ABCæ è¯ï¼æ§ï¼', |
| | | align:"center", |
| | | dataIndex: 'oldAbcTag_dictText', |
| | | width:300 |
| | | }, |
| | | { |
| | | title:'ABCæ è¯ï¼æ°ï¼', |
| | | align:"center", |
| | | dataIndex: 'newAbcTag_dictText', |
| | | width:300 |
| | | }, |
| | | { |
| | | title:'åæ´æ¥æ', |
| | | align:"center", |
| | | dataIndex: 'updateDate', |
| | | width:300 |
| | | }, |
| | | { |
| | | title:'åæ´äºº', |
| | | align:"center", |
| | | dataIndex: 'updatePerson_dictText', |
| | | width:300 |
| | | }, |
| | | { |
| | | title:'夿³¨', |
| | | align:"center", |
| | | dataIndex: 'remark', |
| | | width:300 |
| | | }, |
| | | ], |
| | | url: { |
| | | list: "/eam/equipmentUpdateInfo/list", |
| | | }, |
| | | dictOptions:{ |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: { |
| | | importExcelUrl(){ |
| | | return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`; |
| | | } |
| | | }, |
| | | methods: { |
| | | clearList(){ |
| | | this.dataSource=[] |
| | | this.selectedRowKeys=[] |
| | | this.ipagination.current = 1 |
| | | } |
| | | |
| | | }, |
| | | mounted(){ |
| | | this.$bus.$on('loadData', (data) => { |
| | | this.loadData(); |
| | | }); |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | @import '~@assets/less/common.less' |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-card :bordered="false" :class="'cust-erp-sub-tab'"> |
| | | <!-- æ¥è¯¢åºå --> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form layout="inline" @keyup.enter.native="searchQuery"> |
| | | <a-row :gutter="24"> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | <!-- <div class="table-operator"> |
| | | <a-button |
| | | @click="handleAdd" |
| | | type="primary" |
| | | icon="plus" |
| | | >æ°å¢çç»</a-button> |
| | | </div> --> |
| | | <div> |
| | | <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> |
| | | <i class="anticon anticon-info-circle ant-alert-icon"></i> 已鿩 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项 |
| | | <a style="margin-left: 24px" @click="onClearSelected">æ¸
空</a> |
| | | </div> |
| | | <a-table |
| | | ref="table" |
| | | size="middle" |
| | | bordered |
| | | rowKey="id" |
| | | :scroll="{x:true}" |
| | | :columns="columns" |
| | | :dataSource="dataSource" |
| | | :pagination="ipagination" |
| | | :loading="loading" |
| | | @change="handleTableChange"> |
| | | <template slot="htmlSlot" slot-scope="text"> |
| | | <div v-html="text"></div> |
| | | </template> |
| | | <template slot="imgSlot" slot-scope="text,record"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ å¾ç</span> |
| | | <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> |
| | | </template> |
| | | <template slot="fileSlot" slot-scope="text"> |
| | | <span v-if="!text" style="font-size: 12px;font-style: italic;">æ æä»¶</span> |
| | | <a-button |
| | | v-else |
| | | :ghost="true" |
| | | type="primary" |
| | | icon="download" |
| | | size="small" |
| | | @click="downloadFile(text)"> |
| | | ä¸è½½ |
| | | </a-button> |
| | | </template> |
| | | |
| | | <span slot="action" slot-scope="text, record"> |
| | | <a @click="handleEdit(record)">ç¼è¾</a> |
| | | <a-divider type="vertical" /> |
| | | <a-popconfirm title="ç¡®å®å é¤å?" @confirm="() => handleDelete(record.id)"> |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </span> |
| | | </a-table> |
| | | </div> |
| | | <team-modal ref='modalForm' @ok='modalFormOk' :mainId="mainId"></team-modal> |
| | | </a-card> |
| | | </template> |
| | | <script> |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import TeamModal from './TeamModal.vue' |
| | | export default { |
| | | name: "TeamList", |
| | | mixins:[JeecgListMixin], |
| | | components: {TeamModal }, |
| | | props:{ |
| | | mainId:{ |
| | | type:String, |
| | | default:'', |
| | | required:false |
| | | } |
| | | }, |
| | | watch:{ |
| | | mainId:{ |
| | | immediate: true, |
| | | handler(val) { |
| | | if(!this.mainId){ |
| | | this.clearList() |
| | | }else if(val!=='-1'){ |
| | | this.queryParam['departId'] = val |
| | | this.queryParam['delFlag'] = '0' |
| | | this.loadData(1); |
| | | }else{ |
| | | this.queryParam['delFlag'] = '0' |
| | | this.loadData(1); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | data () { |
| | | return { |
| | | description: 'ææåºåºå管ç页é¢', |
| | | disableMixinCreated:true, |
| | | // 表头 |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | | dataIndex: '', |
| | | key:'rowIndex', |
| | | width:60, |
| | | align:"center", |
| | | customRender:function (t,r,index) { |
| | | return parseInt(index)+1; |
| | | } |
| | | }, |
| | | { |
| | | title:'çç»ç¼ç ', |
| | | align:"center", |
| | | dataIndex: 'num', |
| | | width:100 |
| | | }, |
| | | { |
| | | title:'çç»åç§°', |
| | | align:"center", |
| | | dataIndex: 'name', |
| | | width:100 |
| | | }, |
| | | { |
| | | title:'å建人', |
| | | align:"center", |
| | | dataIndex: 'createBy', |
| | | width:100, |
| | | }, |
| | | { |
| | | title:'åå»ºæ¥æ', |
| | | align:"center", |
| | | dataIndex: 'createTime', |
| | | width:100, |
| | | }, |
| | | { |
| | | title:'æ´æ°äºº', |
| | | align:"center", |
| | | dataIndex: 'updateBy', |
| | | width:100, |
| | | }, |
| | | { |
| | | title:'æ´æ°æ¥æ', |
| | | align:"center", |
| | | dataIndex: 'updateTime', |
| | | width:100, |
| | | }, |
| | | ], |
| | | url: { |
| | | list: "/base/team/list", |
| | | }, |
| | | dictOptions:{ |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: { |
| | | importExcelUrl(){ |
| | | return `${window._CONFIG['domianURL']}/${this.url.importUrl}/${this.mainId}`; |
| | | } |
| | | }, |
| | | methods: { |
| | | clearList(){ |
| | | this.dataSource=[] |
| | | this.selectedRowKeys=[] |
| | | this.ipagination.current = 1 |
| | | }, |
| | | handleAdd(){ |
| | | this.$refs.modalForm.title = "æ°å¢" |
| | | this.$refs.modalForm.visible = true; |
| | | } |
| | | }, |
| | | |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | @import '~@assets/less/common.less' |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-modal |
| | | :title="title" |
| | | :width="1600" |
| | | :visible="visible" |
| | | :confirmLoading="confirmLoading" |
| | | :okButtonProps="{ props: {disabled: disableSubmit} }" |
| | | @ok="handleOk" |
| | | @cancel="handleCancel" |
| | | cancelText="å
³é" |
| | | > |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form :form="form"> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form |
| | | layout="inline" |
| | | @keyup.enter.native="searchQuery" |
| | | > |
| | | <a-row :gutter="24"> |
| | | <a-col |
| | | :md="6" |
| | | :sm="8" |
| | | > |
| | | <a-form-item label="åæ®å·"> |
| | | <j-input |
| | | placeholder="请è¾å
¥åæ®å·æ£ç´¢" |
| | | v-model="queryParam.num" |
| | | ></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | |
| | | <a-col |
| | | :md="6" |
| | | :sm="8" |
| | | > |
| | | <a-form-item label="设å¤åç§°"> |
| | | <j-input |
| | | placeholder="请è¾å
¥è®¾å¤åç§°æ£ç´¢" |
| | | v-model="queryParam.equipmentName" |
| | | ></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col |
| | | :md="6" |
| | | :sm="8" |
| | | > |
| | | <a-button |
| | | type="primary" |
| | | @click="searchQuery" |
| | | icon="search" |
| | | >æ¥è¯¢</a-button> |
| | | <a-button |
| | | @click="searchReset" |
| | | icon="reload" |
| | | style="margin-left:8px;" |
| | | >éç½®</a-button> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row :gutter="24"> |
| | | <a-col :span="24"> |
| | | |
| | | </a-col> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | <div style="margin-top:8px;"> |
| | | <a-table |
| | | ref="table" |
| | | size="middle" |
| | | bordered |
| | | rowKey="id" |
| | | :columns="columns" |
| | | :dataSource="dataSource" |
| | | :pagination="ipagination" |
| | | :loading="confirmLoading" |
| | | @change="handleTableChange" |
| | | :customRow="clickThenCheck" |
| | | :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" |
| | | > |
| | | <span slot="faultDescription" slot-scope="text"> |
| | | <j-ellipsis :value="text" :length="10" /> |
| | | </span> |
| | | </a-table> |
| | | </div> |
| | | </a-form> |
| | | </a-spin> |
| | | |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import { postAction, getAction } from '@/api/manage' |
| | | import JDate from '@/components/jeecg/JDate' |
| | | import Tooltip from 'ant-design-vue/es/tooltip' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import JEllipsis from '@/components/jeecg/JEllipsis'//å¼å
¥è¿é¿è£åª |
| | | import store from '@/store' |
| | | |
| | | export default { |
| | | name: "FaultReportRepair", |
| | | mixins: [JeecgListMixin], |
| | | components: { |
| | | JDate, |
| | | Tooltip, |
| | | JEllipsis, |
| | | store |
| | | }, |
| | | props:{ |
| | | mainId:{ |
| | | type:String, |
| | | required:false, |
| | | default:"", |
| | | } |
| | | }, |
| | | watch:{ |
| | | mainId:{ |
| | | immediate: true, |
| | | handler(val) { |
| | | if(!this.mainId){ |
| | | this.clearList() |
| | | }else{ |
| | | this.queryParam['noEqId'] = val |
| | | this.loadData(1); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | title: "éæ©æ
éæ¥ä¿®ä¿¡æ¯", |
| | | visible: false, |
| | | model: {}, |
| | | dataSource: [], |
| | | disableSubmit: false, |
| | | type: "radio", |
| | | /* å页忰 */ |
| | | ipagination: { |
| | | current: 1, |
| | | pageSize: 10, |
| | | pageSizeOptions: ['10', '20', '30'], |
| | | showTotal: (total, range) => { |
| | | return range[0] + "-" + range[1] + " å
±" + total + "æ¡" |
| | | }, |
| | | showQuickJumper: true, |
| | | showSizeChanger: true, |
| | | total: 0 |
| | | }, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 6 }, |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 18 }, |
| | | }, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this), |
| | | columns: [ |
| | | { |
| | | title: '#', |
| | | dataIndex: '', |
| | | key: 'rowIndex', |
| | | width: 60, |
| | | align: "center", |
| | | customRender: function (t, r, index) { |
| | | return parseInt(index) + 1; |
| | | } |
| | | }, |
| | | { |
| | | title:'çç»ç¼ç ', |
| | | align:"center", |
| | | dataIndex: 'num', |
| | | width:100 |
| | | }, |
| | | { |
| | | title:'çç»åç§°', |
| | | align:"center", |
| | | dataIndex: 'name', |
| | | width:100 |
| | | }, |
| | | { |
| | | title:'å建人', |
| | | align:"center", |
| | | dataIndex: 'createBy', |
| | | width:100, |
| | | }, |
| | | { |
| | | title:'åå»ºæ¥æ', |
| | | align:"center", |
| | | dataIndex: 'createTime', |
| | | width:100, |
| | | }, |
| | | { |
| | | title:'æ´æ°äºº', |
| | | align:"center", |
| | | dataIndex: 'updateBy', |
| | | width:100, |
| | | }, |
| | | { |
| | | title:'æ´æ°æ¥æ', |
| | | align:"center", |
| | | dataIndex: 'updateTime', |
| | | width:100, |
| | | }, |
| | | ], |
| | | url: { |
| | | list: "/base/team/list", |
| | | add: "/eam/repairOrder/addBySelectReport" |
| | | }, |
| | | } |
| | | }, |
| | | methods: { |
| | | searchQuery() { |
| | | this.loadData(1); |
| | | }, |
| | | searchReset() { |
| | | this.queryParam = {}; |
| | | this.loadData(1) |
| | | }, |
| | | clickThenCheck(record) { |
| | | return { |
| | | on: { |
| | | click: (e) => { |
| | | this.selectedRowRecord = record; |
| | | this.onSelectChange(record.id.split(","), [record]); |
| | | } |
| | | } |
| | | }; |
| | | }, |
| | | onSelectChange(selectedRowKeys, selectionRows) { |
| | | this.selectedRowKeys = selectedRowKeys; |
| | | this.selectionRows = selectionRows; |
| | | }, |
| | | close() { |
| | | this.queryParam = {}; |
| | | this.$emit('close'); |
| | | this.visible = false; |
| | | }, |
| | | handleOk() { |
| | | const that = this; |
| | | // 触å表åéªè¯ |
| | | this.confirmLoading=true; |
| | | if (that.selectedRowKeys.length === 0) { |
| | | that.$message.error("è¯·éæ©æ
éæ¥ä¿®ååæäº¤ï¼") |
| | | return false; |
| | | } |
| | | postAction(this.url.add,this.selectionRows).then(res=>{ |
| | | if(res.success){ |
| | | that.$message.success("é¢åæåï¼") |
| | | that.$emit('ok'); |
| | | }else{ |
| | | that.$message.error("é¢ååºç°å¼å¸¸ï¼") |
| | | } |
| | | }).finally(res=>{ |
| | | that.confirmLoading = false; |
| | | that.close(); |
| | | }); |
| | | }, |
| | | handleCancel() { |
| | | this.close(); |
| | | }, |
| | | clearList(){ |
| | | this.dataSource=[] |
| | | this.selectedRowKeys=[] |
| | | this.ipagination.current = 1 |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .ant-btn { |
| | | padding: 0 10px; |
| | | margin-left: 3px; |
| | | } |
| | | |
| | | .ant-form-item-control { |
| | | line-height: 0px; |
| | | } |
| | | |
| | | .fontweight { |
| | | font-weight: bold; |
| | | } |
| | | |
| | | /** 主表åè¡é´è· */ |
| | | .ant-form .ant-form-item { |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | /** Tab页é¢è¡é´è· */ |
| | | .ant-tabs-content .ant-form-item { |
| | | margin-bottom: 0px; |
| | | } |
| | | .ant-table-tbody .ant-table-row td { |
| | | padding-top: 10px; |
| | | padding-bottom: 10px; |
| | | } |
| | | |
| | | .anty-row-operator button { |
| | | margin: 0 5px; |
| | | } |
| | | |
| | | .ant-btn-danger { |
| | | background-color: #ffffff; |
| | | } |
| | | |
| | | .ant-modal-cust-warp { |
| | | height: 100%; |
| | | } |
| | | |
| | | .ant-modal-cust-warp .ant-modal-body { |
| | | height: calc(100% - 110px) !important; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .ant-modal-cust-warp .ant-modal-content { |
| | | height: 90% !important; |
| | | overflow-y: hidden; |
| | | } |
| | | .notshow { |
| | | display: none; |
| | | } |
| | | |
| | | .frozenRowClass { |
| | | color: #c9c9c9; |
| | | } |
| | | .hight { |
| | | color: #f5222d; |
| | | } |
| | | .middle { |
| | | color: #fa8c16; |
| | | } |
| | | .low { |
| | | color: #52c41a; |
| | | } |
| | | .dataUnKnow { |
| | | color: #1890ff; |
| | | } .frozenRowClass { |
| | | color: #c9c9c9; |
| | | } |
| | | </style> |
| | |
| | | cancelText="å
³é" |
| | | @cancel="handleCancel" |
| | | :confirmLoading="confirmLoading" |
| | | title="éå½6" |
| | | > |
| | | <!-- :title="title" --> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form :form="form"> |
| | | <span |
| | | class="ant-descriptions-title" |
| | | style="font-size: large;font-size: 15px;float: right;" |
| | | >{{this.model.receiptsNum2}}</span> |
| | | <a-divider |
| | | orientation="center" |
| | | style="font-size: large;font-style: normal;font-size: 30px;color: #66aeed;" |
| | | > ç产设å¤ç²¾åº¦æ£éªå </a-divider> |
| | | > {{this.model.receiptsName2}} </a-divider> |
| | | <!-- ç产设å¤ç²¾åº¦æ£éªå --> |
| | | <a-row :gutter="24"> |
| | | <a-col :span="8"> |
| | | <a-form-item |
| | |
| | | add: "/eam/precisionInspection/precisionInspection", |
| | | getPrecisionInspection: "/eam/precisionInspection/getPrecisionInspectionList", |
| | | list: "/eam/dailyMaintenanceOrder/getMaintenanceCycleByStandardId", |
| | | getSysFileName: "/eam/sysFileName/getSysFileName", |
| | | }, |
| | | |
| | | } |
| | |
| | | |
| | | edit(record) { |
| | | let that = this; |
| | | |
| | | if (record.receipts2 == "" || record.receipts2 == null) { |
| | | this.getSysFileName() |
| | | } |
| | | this.form.resetFields(); |
| | | // record.eachTolerance = '0' |
| | | // record.partTolerance = '0' |
| | |
| | | getAction(this.url.getPrecisionInspection, { maintenanceOrderId: this.model.id }).then((res) => { |
| | | if (res.success) { |
| | | this.dataSource = res.result[0].precisionInspectionDetails |
| | | this.model = Object.assign({}, res.result[0]); |
| | | debugger |
| | | this.model = Object.assign(this.model, res.result[0]); |
| | | } |
| | | }) |
| | | }, |
| | |
| | | } |
| | | }, |
| | | |
| | | getSysFileName() { |
| | | getAction(this.url.getSysFileName, { name: '16' }).then((res) => { |
| | | if (res.success) { |
| | | this.model = Object.assign(this.model, res.result[0]); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | }, |
| | | } |
| | | </script> |
| | |
| | | cancelText="å
³é" |
| | | @cancel="handleCancel" |
| | | :confirmLoading="confirmLoading" |
| | | title="éå½4" |
| | | > |
| | | <!-- :title="title" --> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form :form="form"> |
| | | <span |
| | | class="ant-descriptions-title" |
| | | style="font-size: large;font-size: 15px;float: right;" |
| | | >{{this.model.receiptsNum}}</span> |
| | | <a-divider |
| | | orientation="center" |
| | | style="font-size: large;font-style: normal;font-size: 30px;color: #66aeed;" |
| | | > ç产设å¤ä¸çº§ä¿å
»éªæ¶å </a-divider> |
| | | > {{this.model.receiptsName}} </a-divider> |
| | | <!-- ç产设å¤ä¸çº§ä¿å
»éªæ¶å --> |
| | | <a-row :gutter="24"> |
| | | <a-col :span="8"> |
| | | <a-form-item |
| | |
| | | add: "/eam/maintenanceThreeAcceptance/add", |
| | | getMaintenance3Receipt: "/eam/maintenanceThreeAcceptance/getMaintenanceThreeAcceptanceList", |
| | | list: "/eam/dailyMaintenanceOrder/getMaintenanceCycleByStandardId", |
| | | getSysFileName: "/eam/sysFileName/getSysFileName", |
| | | }, |
| | | } |
| | | }, |
| | |
| | | |
| | | edit(record) { |
| | | let that = this; |
| | | debugger |
| | | if (record.receipts == "" || record.receipts == null) { |
| | | this.getSysFileName() |
| | | } |
| | | this.form.resetFields(); |
| | | this.model = Object.assign({}, record); |
| | | this.visible = true; |
| | |
| | | } |
| | | }, |
| | | |
| | | getSysFileName() { |
| | | getAction(this.url.getSysFileName, { name: '19' }).then((res) => { |
| | | if (res.success) { |
| | | this.model = Object.assign(this.model, res.result[0]); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | }, |
| | | } |
| | | </script> |
| | |
| | | cancelText="å
³é" |
| | | @cancel="handleCancel" |
| | | :confirmLoading="confirmLoading" |
| | | title="éå½5" |
| | | > |
| | | |
| | | <!-- :title="title" --> |
| | | <!-- <a-spin :spinning="confirmLoading"> --> |
| | | <!-- <a-form :form="form"> --> |
| | | <span |
| | | class="ant-descriptions-title" |
| | | style="font-size: large;font-size: 15px;float: right;" |
| | | >{{this.model.receiptsNum}}</span> |
| | | |
| | | <a-divider |
| | | orientation="center" |
| | | style="font-size: large;font-style: normal;font-size: 30px;color: #66aeed;" |
| | | > 温度ååæ§æ£æµæ¡ä»¶ç¡®è®¤è¡¨ </a-divider> |
| | | |
| | | > {{this.model.receiptsName}} </a-divider> |
| | | <!-- 温度ååæ§æ£æµæ¡ä»¶ç¡®è®¤è¡¨ --> |
| | | <!-- <div :style="{height: '115px',float: 'left',width: '100%',border: '1px solid #e9e9e9',padding: '50px 20px',background: '#fff',}"> --> |
| | | <span |
| | | class="ant-descriptions-title" |
| | |
| | | import pick from 'lodash.pick' |
| | | import JMultiSelectTag from '@/components/dict/JMultiSelectTag' |
| | | import Tooltip from 'ant-design-vue/es/tooltip' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | // import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import { ACCESS_TOKEN } from '@/store/mutation-types' |
| | | import { getFileAccessHttpUrl } from '@/api/manage'; |
| | | |
| | | export default { |
| | | name: "StoveCategoryModal", |
| | | mixins: [JeecgListMixin], |
| | | // mixins: [JeecgListMixin], |
| | | components: { |
| | | JMultiSelectTag, |
| | | Tooltip, |
| | |
| | | cancelText="å
³é" |
| | | @cancel="handleCancel" |
| | | :confirmLoading="confirmLoading" |
| | | title="éå½2" |
| | | > |
| | | <!-- :title="title" --> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form :form="form"> |
| | | <span |
| | | class="ant-descriptions-title" |
| | | style="font-size: large;font-size: 15px;float: right;" |
| | | >{{this.model.receiptsNum}}</span> |
| | | <a-divider |
| | | orientation="center" |
| | | style="font-size: large;font-style: normal;font-size: 30px;color: #66aeed;" |
| | | > ç产设å¤äºçº§ä¿å
»å®å·¥ç§»äº¤å </a-divider> |
| | | > {{this.model.receiptsName}} </a-divider> |
| | | <!-- ç产设å¤äºçº§ä¿å
»å®å·¥ç§»äº¤å --> |
| | | <a-row :gutter="24"> |
| | | <a-col :span="8"> |
| | | <a-form-item |
| | |
| | | codeDisable: true, |
| | | dataSource: [], |
| | | model: {}, |
| | | departs: [], |
| | | // departs: [], |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 6 }, |
| | |
| | | }, |
| | | }, |
| | | url: { |
| | | add: "/eam/dailyMaintenanceOrder/add", |
| | | // add: "/eam/dailyMaintenanceOrder/add", |
| | | edit: "/eam/dailyMaintenanceOrder/approve", |
| | | getSysDeparts: "/eam/dailyMaintenanceOrder/getSysDeparts", |
| | | getSysFileName: "/eam/sysFileName/getSysFileName", |
| | | list: "/eam/dailyMaintenanceOrder/getMaintenanceCycleByStandardId", |
| | | }, |
| | | |
| | |
| | | |
| | | edit(record) { |
| | | let that = this; |
| | | this.getSysDeparts() |
| | | if (record.receipts == "" || record.receipts == null) { |
| | | this.getSysFileName() |
| | | } |
| | | this.form.resetFields(); |
| | | this.model = Object.assign({}, record); |
| | | this.visible = true; |
| | |
| | | }, |
| | | |
| | | |
| | | getSysDeparts() { |
| | | getAction(this.url.getSysDeparts).then((res) => { |
| | | getSysFileName() { |
| | | getAction(this.url.getSysFileName, { name: '15' }).then((res) => { |
| | | if (res.success) { |
| | | this.departs = res.result |
| | | this.model = Object.assign(this.model, res.result[0]); |
| | | } |
| | | }) |
| | | }, |
| | |
| | | > |
| | | <j-dict-select-tag |
| | | allow-clear |
| | | :disabled="true" |
| | | :placeholder="disableSubmit?'':'è¯·éæ©æ¯å¦åæºç»´ä¿®'" |
| | | :triggerChange="true" |
| | | dictCode="is_stop" |
| | |
| | | getAction(this.url.getNum,param).then(res=>{ |
| | | if(res.success){ |
| | | modelDefault.num = res.result; |
| | | modelDefault.isStop = '2' |
| | | modelDefault.faultTime = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'); |
| | | that.edit(modelDefault); |
| | | } |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | isAchievement:false, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | |
| | | { |
| | | title: 'ç¨æ·', |
| | | key: 'userId', |
| | | type: JVXETypes.userSelect, |
| | | type: JVXETypes.selectSearch, |
| | | dictCode: 'sys_user,realname,id ', |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '', |
| | |
| | | { |
| | | title: '设å¤ç»ä¸ç¼ç ', |
| | | key: 'equipmentIds', |
| | | type: JVXETypes.selectSearch, |
| | | type: JVXETypes.selectMultiple, |
| | | dictCode: 'mom_eam_equipment,num,id ', |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '', |
| | | disabled:false |
| | | disabled:'achievementDisabled' |
| | | }, |
| | | { |
| | | title: '宿æç»©', |
| | |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '', |
| | | disabled:false |
| | | disabled:'achievementDisabled' |
| | | }, |
| | | { |
| | | title: 'èè¯ç»è®º', |
| | |
| | | width: '200px', |
| | | placeholder: '请è¾å
¥${title}', |
| | | defaultValue: '', |
| | | disabled:false |
| | | disabled:'achievementDisabled' |
| | | }, |
| | | // { |
| | | // title: 'ç¶æ', |
| | |
| | | default: false, |
| | | required: false |
| | | }, |
| | | achievement: { |
| | | type: Boolean, |
| | | default: false, |
| | | required: false |
| | | }, |
| | | }, |
| | | computed: { |
| | | formDisabled() { |
| | | return this.disabled |
| | | }, |
| | | achievementDisabled() { |
| | | return this.achievement |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | console.log("formData===>",formData); |
| | | httpAction(url, formData, method).then((res) => { |
| | | if (res.success) { |
| | | httpAction(this.url.addOperationCertificate, formData.operationCertificateApplyDetailList, 'post').then((res) => { |
| | | if (res.success) { |
| | | this.$message.success(res.message) |
| | | }else { |
| | | this.$message.warning(res.message) |
| | | } |
| | | }) |
| | | if(this.achievementDisabled){ |
| | | httpAction(this.url.addOperationCertificate, formData.operationCertificateApplyDetailList, 'post').then((res) => { |
| | | if (res.success) { |
| | | this.$message.success(res.message) |
| | | }else { |
| | | this.$message.warning(res.message) |
| | | } |
| | | }) |
| | | } |
| | | this.$message.success(res.message) |
| | | this.$emit('ok') |
| | | this.close() |
| | |
| | | @ok="handleOk" |
| | | :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" |
| | | @cancel="handleCancel"> |
| | | <operation-certificate-apply-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"/> |
| | | <operation-certificate-apply-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" :achievement="isAchievement"/> |
| | | </j-modal> |
| | | </template> |
| | | |
| | |
| | | width:800, |
| | | visible: false, |
| | | disableSubmit: false, |
| | | isAchievement:false |
| | | isAchievement: false |
| | | } |
| | | }, |
| | | methods:{ |
| | |
| | | this.visible=true |
| | | this.$nextTick(()=>{ |
| | | this.$refs.realForm.edit(record); |
| | | this.$refs.realForm.isAchievement = true; |
| | | }) |
| | | }, |
| | | close () { |
| | |
| | | allow-clear |
| | | placeholder='è¯·éæ©æ
éç±»å' |
| | | :triggerChange='true' |
| | | :disabled="isEdit" |
| | | :disabled="isEdit||repairOrder.status!=='3'" |
| | | dictCode="mom_eam_fault_type,name,id,del_flag!='1'" |
| | | v-decorator="['faultTypeId', validatorRules.faultTypeId ]" |
| | | /> |
| | |
| | | <a-textarea |
| | | placeholder='请è¾å
¥æ
éåæ' |
| | | v-decorator="['faultCause', validatorRules.faultCause]" |
| | | :disabled="isEdit" |
| | | :disabled="isEdit||repairOrder.status!=='3'" |
| | | ></a-textarea> |
| | | </a-form-item> |
| | | </a-col> |
| | |
| | | <a-textarea |
| | | placeholder='请è¾å
¥ç»´ä¿®æªæ½' |
| | | v-decorator="['maintenanceMeasures', validatorRules.maintenanceMeasures]" |
| | | :disabled="isEdit" |
| | | :disabled="isEdit||repairOrder.status!=='3'" |
| | | ></a-textarea> |
| | | </a-form-item> |
| | | </a-col> |
| | |
| | | <a-textarea |
| | | v-decorator="['suggestion', validatorRules.suggestion]" |
| | | placeholder='请è¾å
¥ç»´ä¿æè§' |
| | | :disabled="isEdit" |
| | | :disabled="isEdit||repairOrder.status!=='3'" |
| | | ></a-textarea> |
| | | </a-form-item> |
| | | </a-col> |
| | |
| | | repairOrderId: { |
| | | type: String, |
| | | default:'', |
| | | }, |
| | | repairOrder:{ |
| | | type: Object, |
| | | default:{}, |
| | | } |
| | | }, |
| | | watch:{ |
| | |
| | | handleOk() { |
| | | const that = this; |
| | | // 触å表åéªè¯ |
| | | this.confirmLoading=true; |
| | | if (that.selectedRowKeys.length === 0) { |
| | | that.$message.error("è¯·éæ©æ
éæ¥ä¿®ååæäº¤ï¼") |
| | | return false; |
| | |
| | | :repairOrderId="repairOrder.id" |
| | | :repairOrderStatus="repairOrder.status" |
| | | ></fault-analysis-edit-table> --> |
| | | <RepairOrderFaultAnalysisList :repairOrderId="repairOrderId" /> |
| | | <RepairOrderFaultAnalysisList :repairOrderId="repairOrderId" :repairOrder="repairOrder"/> |
| | | </a-tab-pane> |
| | | <a-tab-pane |
| | | tab='å®é
å·¥æ¶' |
| | |
| | | repairOrderId: { |
| | | type: String, |
| | | default:'', |
| | | }, |
| | | status:{ |
| | | type: String, |
| | | default:'', |
| | | } |
| | | }, |
| | | data() { |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <j-form-container :disabled="formDisabled"> |
| | | <a-form-model |
| | | ref="form" |
| | | :model="model" |
| | | :rules="validatorRules" |
| | | slot="detail" |
| | | > |
| | | <a-row> |
| | | <a-col :span="24"> |
| | | <a-form-model-item |
| | | label="åæ®åç§°" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | prop="name" |
| | | > |
| | | <j-dict-select-tag |
| | | placeholder="è¯·éæ©åæ®åç§°" |
| | | :triggerChange="true" |
| | | dictCode="sys_file_name" |
| | | v-model="model.name" |
| | | /> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | |
| | | </a-row> |
| | | <a-row> |
| | | <a-col :span="24"> |
| | | <a-form-model-item |
| | | label="åæ®ç¼ç " |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | prop="num" |
| | | > |
| | | <a-input |
| | | v-model="model.num" |
| | | placeholder="请è¾å
¥åæ®ç¼ç " |
| | | ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <!-- <a-col :span="24"> |
| | | <a-form-model-item |
| | | label="åæ®åç§°" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | prop="name" |
| | | > |
| | | <a-input |
| | | v-model="model.name" |
| | | placeholder="请è¾å
¥åæ®åç§°" |
| | | ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> --> |
| | | </a-row> |
| | | |
| | | <a-row> |
| | | <a-col :span="24"> |
| | | <a-form-model-item |
| | | label="çæ¬" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | prop="version" |
| | | > |
| | | <a-input |
| | | v-model="model.version" |
| | | placeholder="请è¾å
¥çæ¬å·" |
| | | :disabled=true |
| | | ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row> |
| | | |
| | | <a-col |
| | | v-if=" model.isRevise == true" |
| | | :span="24" |
| | | > |
| | | <a-form-model-item |
| | | label="åå²çæ¬" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | prop="version" |
| | | > |
| | | <a-input |
| | | v-model="model.historyVersion" |
| | | placeholder="请è¾å
¥åå²çæ¬" |
| | | :disabled=true |
| | | ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form-model> |
| | | </j-form-container> |
| | | </a-spin> |
| | | </template> |
| | | |
| | | <script> |
| | | import { httpAction, getAction, requestPut } from '@/api/manage' |
| | | import { validateDuplicateValue } from '@/utils/util' |
| | | import pick from 'lodash.pick' |
| | | import JMultiSelectTag from '@/components/dict/JMultiSelectTag' |
| | | |
| | | export default { |
| | | name: 'SysFileNameForm', |
| | | components: { JMultiSelectTag }, |
| | | props: { |
| | | //表åç¦ç¨ |
| | | disabled: { |
| | | type: Boolean, |
| | | default: false, |
| | | required: false, |
| | | }, |
| | | // enterpriseId: { |
| | | // type: String, |
| | | // default: '', |
| | | // required: false, |
| | | // }, |
| | | // version: { |
| | | // type: Number, |
| | | // required: false, |
| | | // }, |
| | | }, |
| | | data() { |
| | | return { |
| | | model: {}, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 }, |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 16 }, |
| | | }, |
| | | confirmLoading: false, |
| | | validatorRules: { |
| | | name: [ |
| | | { required: true, message: 'è¯·éæ©åæ®åç§°!' }, |
| | | ], |
| | | num: [ |
| | | { required: true, message: '请è¾å
¥åæ®ç¼ç !' }, |
| | | ], |
| | | version: [ |
| | | { required: true, message: '请è¾å
¥çæ¬å·!' }, |
| | | ], |
| | | }, |
| | | url: { |
| | | add: '/eam/sysFileName/add', |
| | | edit: '/eam/sysFileName/edit', |
| | | revise: '/eam/sysFileName/revise', |
| | | getReviseVersion: "/eam/sysFileName/getReviseVersion", |
| | | }, |
| | | } |
| | | }, |
| | | computed: { |
| | | formDisabled() { |
| | | return this.disabled |
| | | }, |
| | | }, |
| | | created() { |
| | | //å¤ä»½modelåå§å¼ |
| | | this.modelDefault = JSON.parse(JSON.stringify(this.model)) |
| | | }, |
| | | methods: { |
| | | add() { |
| | | this.edit(this.modelDefault) |
| | | }, |
| | | edit(record) { |
| | | this.model = Object.assign({}, record) |
| | | this.visible = true |
| | | this.model.isRevise = false; |
| | | //ä¿®æ¹æ¶ |
| | | if (record.id) { |
| | | |
| | | //æ°å¢æ¶ |
| | | } else { |
| | | this.model.version = '1.0' |
| | | this.model.versionStatus = '1' |
| | | } |
| | | }, |
| | | |
| | | //åç |
| | | revise(record) { |
| | | let that = this; |
| | | that.visible = true; |
| | | that.model = Object.assign({}, record) |
| | | that.model.isRevise = true; |
| | | that.model.historyVersion = record.version |
| | | that.model.versionStatus = '1' |
| | | requestPut(that.url.getReviseVersion, record).then((res) => { |
| | | if (res.success) { |
| | | that.model.version = res.result; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | submitForm() { |
| | | const that = this |
| | | // 触å表åéªè¯ |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid) { |
| | | that.confirmLoading = true |
| | | let httpurl = '' |
| | | let method = '' |
| | | if (!this.model.id) { |
| | | httpurl += this.url.add |
| | | method = 'post' |
| | | } else { |
| | | if (this.model.isRevise) { |
| | | httpurl += this.url.revise |
| | | method = 'post' |
| | | } else { |
| | | httpurl += this.url.edit |
| | | method = 'put' |
| | | } |
| | | } |
| | | httpAction(httpurl, this.model, method) |
| | | .then((res) => { |
| | | if (res.success) { |
| | | that.$message.success(res.message) |
| | | that.$emit('ok') |
| | | } else { |
| | | that.$message.warning(res.message) |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | that.confirmLoading = false |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <j-modal |
| | | :title="title" |
| | | :width="width" |
| | | :visible="visible" |
| | | switchFullscreen |
| | | @ok="handleOk" |
| | | :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" |
| | | @cancel="handleCancel" |
| | | cancelText="å
³é" |
| | | > |
| | | <sys-file-name-form |
| | | ref="realForm" |
| | | @ok="submitCallback" |
| | | :disabled="disableSubmit" |
| | | ></sys-file-name-form> |
| | | </j-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import SysFileNameForm from './SysFileNameForm' |
| | | export default { |
| | | name: 'SysFileNameModal', |
| | | components: { |
| | | SysFileNameForm |
| | | }, |
| | | props: { |
| | | //表åç¦ç¨ |
| | | disabled: { |
| | | type: Boolean, |
| | | default: false, |
| | | required: false |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | title: '', |
| | | width: 650, |
| | | visible: false, |
| | | disableSubmit: false |
| | | } |
| | | }, |
| | | methods: { |
| | | add() { |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | this.$refs.realForm.add(); |
| | | }) |
| | | }, |
| | | edit(record) { |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | this.$refs.realForm.edit(record); |
| | | }) |
| | | }, |
| | | revise(record) { |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | this.$refs.realForm.revise(record); |
| | | }) |
| | | }, |
| | | close() { |
| | | this.$emit('close'); |
| | | this.visible = false; |
| | | }, |
| | | handleOk() { |
| | | this.$refs.realForm.submitForm(); |
| | | }, |
| | | submitCallback() { |
| | | this.$emit('ok'); |
| | | this.visible = false; |
| | | }, |
| | | handleCancel() { |
| | | this.close() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | type="primary" |
| | | icon="delete">æ¹éå é¤ |
| | | </a-button> |
| | | <a-button @click="handleSecret" type="primary" icon="frown" v-if="selectionRows.length===1&&selectionRows[0].title==='è麻å¼é¨'">æ¥è¯¢</a-button> |
| | | </div> |
| | | |
| | | <!-- tableåºå-begin --> |
| | |
| | | |
| | | <permission-modal ref="modalForm" @ok="modalFormOk"></permission-modal> |
| | | <permission-data-rule-list ref="PermissionDataRuleList" @ok="modalFormOk"></permission-data-rule-list> |
| | | <secret-model ref="secret"></secret-model> |
| | | |
| | | </a-card> |
| | | </template> |
| | |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import PermissionDataRuleList from './PermissionDataRuleList' |
| | | import JEllipsis from '@/components/jeecg/JEllipsis' |
| | | import SecretModel from './modules/SecretModel.vue' |
| | | |
| | | const columns = [ |
| | | { |
| | |
| | | components: { |
| | | PermissionDataRuleList, |
| | | PermissionModal, |
| | | JEllipsis |
| | | JEllipsis, |
| | | SecretModel |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | }) |
| | | } |
| | | }, |
| | | onSelectChange(selectedRowKeys, selectionRows) { |
| | | this.selectedRowKeys = selectedRowKeys; |
| | | this.selectionRows = selectionRows; |
| | | }, |
| | | // æ ¹æ®å·²å±å¼çè¡æ¥è¯¢æ°æ®ï¼ç¨äºä¿ååå·æ°æ¶å¼æ¥å è½½åçº§çæ°æ®ï¼ |
| | | loadDataByExpandedRows(dataList) { |
| | | if (this.expandedRowKeys.length > 0) { |
| | |
| | | handleExpandedRowsChange(expandedRows) { |
| | | this.expandedRowKeys = expandedRows |
| | | }, |
| | | handleSecret(){ |
| | | this.$refs.secret.title='ç§å¯' |
| | | this.$refs.secret.add(); |
| | | |
| | | } |
| | | } |
| | | } |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <j-form-container :disabled="formDisabled"> |
| | | <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> |
| | | <a-row> |
| | | <a-col :span="24"> |
| | | <a-form-model-item label="ç±»å" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="type"> |
| | | <a-input v-model="model.type" placeholder="请è¾å
¥ç±»å" ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="24"> |
| | | <a-form-model-item label="æ¥è¯¢" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sql"> |
| | | <a-textarea v-model="model.sql" rows="4" placeholder="请è¾å
¥æ¥è¯¢" /> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form-model> |
| | | </j-form-container> |
| | | </a-spin> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import { httpAction, getAction } from '@/api/manage' |
| | | import { validateDuplicateValue } from '@/utils/util' |
| | | |
| | | export default { |
| | | name: 'SecretForm', |
| | | components: { |
| | | }, |
| | | props: { |
| | | //表åç¦ç¨ |
| | | disabled: { |
| | | type: Boolean, |
| | | default: false, |
| | | required: false |
| | | } |
| | | }, |
| | | data () { |
| | | return { |
| | | name:'', |
| | | code:'', |
| | | model:{ |
| | | }, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 }, |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 16 }, |
| | | }, |
| | | confirmLoading: false, |
| | | validatorRules: { |
| | | type : [ |
| | | { required: true, message: '请è¾å
¥sqlç±»å!'}, |
| | | ], |
| | | sql:[{ required: true, message: '请è¾å
¥sql!'},] |
| | | }, |
| | | url: { |
| | | add: "/sys/permission/addSecret", |
| | | edit: "/base/departmentCategory/edit", |
| | | queryById: "/base/departmentCategory/queryById", |
| | | check:"/base/departmentCategory/check" |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | | formDisabled(){ |
| | | return this.disabled |
| | | }, |
| | | }, |
| | | created () { |
| | | //å¤ä»½modelåå§å¼ |
| | | this.modelDefault = JSON.parse(JSON.stringify(this.model)); |
| | | }, |
| | | methods: { |
| | | add () { |
| | | this.edit(this.modelDefault); |
| | | }, |
| | | edit (record) { |
| | | this.model = Object.assign({}, record); |
| | | this.name=this.model.name; |
| | | this.code=this.model.code; |
| | | this.visible = true; |
| | | |
| | | }, |
| | | submitForm () { |
| | | const that = this; |
| | | // 触å表åéªè¯ |
| | | this.$refs.form.validate(valid => { |
| | | if (valid) { |
| | | that.confirmLoading = true; |
| | | let httpurl = ''; |
| | | let method = ''; |
| | | if(!this.model.id){ |
| | | httpurl+=this.url.add; |
| | | method = 'post'; |
| | | }else{ |
| | | httpurl+=this.url.edit; |
| | | method = 'put'; |
| | | } |
| | | httpAction(httpurl,this.model,method).then((res)=>{ |
| | | if(res.success){ |
| | | that.$message.success(res.message); |
| | | that.$emit('ok'); |
| | | }else{ |
| | | that.$message.warning(res.message); |
| | | } |
| | | }).finally(() => { |
| | | that.confirmLoading = false; |
| | | }) |
| | | } |
| | | |
| | | }) |
| | | }, |
| | | validateCode(rule, value, callback){ |
| | | var params = { |
| | | code:value, |
| | | delFlag:'0', |
| | | }; |
| | | getAction(this.url.check,params).then(res=>{ |
| | | if(res.result.length==0){ |
| | | callback(); |
| | | } |
| | | else if(this.model.id&&this.code==value){ |
| | | callback(); |
| | | } |
| | | else{ |
| | | callback('é¨é¨ç±»åç¼ç éå¤') |
| | | } |
| | | }) |
| | | }, |
| | | validateName(rule, value, callback){ |
| | | var params = { |
| | | name:value, |
| | | delFlag:'0', |
| | | }; |
| | | getAction(this.url.check,params).then(res=>{ |
| | | if(res.result.length==0){ |
| | | callback(); |
| | | } |
| | | else if(this.model.id&&this.name==value){ |
| | | callback(); |
| | | } |
| | | else{ |
| | | callback('é¨é¨ç±»ååç§°éå¤') |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <j-modal |
| | | :title="title" |
| | | :width="width" |
| | | :visible="visible" |
| | | switchFullscreen |
| | | @ok="handleOk" |
| | | :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" |
| | | @cancel="handleCancel" |
| | | cancelText="å
³é"> |
| | | <secret-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></secret-form> |
| | | </j-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import SecretForm from './SecretForm.vue' |
| | | export default { |
| | | name: 'SecretModal', |
| | | components: { |
| | | SecretForm |
| | | }, |
| | | data () { |
| | | return { |
| | | title:'', |
| | | width:800, |
| | | visible: false, |
| | | disableSubmit: false |
| | | } |
| | | }, |
| | | methods: { |
| | | add () { |
| | | this.visible=true |
| | | this.$nextTick(()=>{ |
| | | this.$refs.realForm.add(); |
| | | }) |
| | | }, |
| | | edit (record) { |
| | | this.visible=true |
| | | this.$nextTick(()=>{ |
| | | this.$refs.realForm.edit(record); |
| | | }) |
| | | }, |
| | | close () { |
| | | this.$emit('close'); |
| | | this.visible = false; |
| | | }, |
| | | handleOk () { |
| | | this.$refs.realForm.submitForm(); |
| | | }, |
| | | submitCallback(){ |
| | | this.$emit('ok'); |
| | | this.visible = false; |
| | | }, |
| | | handleCancel () { |
| | | this.close() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <a-form-model class="user-layout-login" @keyup.enter.native="handleSubmit"> |
| | | <a-tabs :activeKey="customActiveKey" :tabBarStyle="{ textAlign: 'center', borderBottom: 'unset' }" @change="handleTabClick"> |
| | | <a-tab-pane key="tab1" tab="è´¦å·å¯ç ç»å½"> |
| | | <login-account ref="alogin" @validateFail="validateFail" @success="requestSuccess" @fail="requestFailed"></login-account> |
| | | <a-form-model |
| | | class="user-layout-login" |
| | | @keyup.enter.native="handleSubmit" |
| | | > |
| | | <a-tabs |
| | | :activeKey="customActiveKey" |
| | | :tabBarStyle="{ textAlign: 'center', borderBottom: 'unset' }" |
| | | @change="handleTabClick" |
| | | > |
| | | <a-tab-pane |
| | | key="tab1" |
| | | tab="è´¦å·å¯ç ç»å½" |
| | | > |
| | | <login-account |
| | | ref="alogin" |
| | | @validateFail="validateFail" |
| | | @success="requestSuccess" |
| | | @fail="requestFailed" |
| | | ></login-account> |
| | | </a-tab-pane> |
| | | |
| | | <!--<a-tab-pane key="tab2" tab="ææºå·ç»å½">--> |
| | | <!--<login-phone ref="plogin" @validateFail="validateFail" @success="requestSuccess" @fail="requestFailed"></login-phone>--> |
| | | <!--<login-phone ref="plogin" @validateFail="validateFail" @success="requestSuccess" @fail="requestFailed"></login-phone>--> |
| | | <!--</a-tab-pane>--> |
| | | </a-tabs> |
| | | |
| | | <a-form-model-item> |
| | | <!--<a-checkbox @change="handleRememberMeChange" default-checked>èªå¨ç»å½</a-checkbox>--> |
| | | <!--<router-link :to="{ name: 'alteration'}" class="forge-password" style="float: right;">--> |
| | | <!--å¿è®°å¯ç --> |
| | | <!--å¿è®°å¯ç --> |
| | | <!--</router-link>--> |
| | | <!--<router-link :to="{ name: 'register'}" class="forge-password" style="float: right;margin-right: 10px" >--> |
| | | <!--注åè´¦æ·--> |
| | | <!--注åè´¦æ·--> |
| | | <!--</router-link>--> |
| | | </a-form-model-item> |
| | | |
| | | <a-form-item style="margin-top:24px"> |
| | | <a-button size="large" type="primary" htmlType="submit" class="login-button" :loading="loginBtn" @click.stop.prevent="handleSubmit" :disabled="loginBtn">ç¡®å® |
| | | <a-button |
| | | size="large" |
| | | type="primary" |
| | | htmlType="submit" |
| | | class="login-button" |
| | | :loading="loginBtn" |
| | | @click.stop.prevent="handleSubmit" |
| | | :disabled="loginBtn" |
| | | >ç¡®å® |
| | | </a-button> |
| | | </a-form-item> |
| | | |
| | | </a-form-model> |
| | | |
| | | <!--<two-step-captcha v-if="requiredTwoStepCaptcha" :visible="stepCaptchaVisible" @success="stepCaptchaSuccess" @cancel="stepCaptchaCancel"></two-step-captcha>--> |
| | | <login-select-tenant ref="loginSelect" @success="loginSelectOk"></login-select-tenant> |
| | | <login-select-tenant |
| | | ref="loginSelect" |
| | | @success="loginSelectOk" |
| | | ></login-select-tenant> |
| | | <!--<third-login ref="thirdLogin"></third-login>--> |
| | | </div> |
| | | </template> |
| | |
| | | import { getAction } from '../../api/manage' |
| | | |
| | | export default { |
| | | components: { |
| | | LoginSelectTenant, |
| | | TwoStepCaptcha, |
| | | // ThirdLogin, |
| | | LoginAccount, |
| | | LoginPhone, |
| | | store |
| | | components: { |
| | | LoginSelectTenant, |
| | | TwoStepCaptcha, |
| | | // ThirdLogin, |
| | | LoginAccount, |
| | | LoginPhone, |
| | | store |
| | | }, |
| | | data() { |
| | | return { |
| | | customActiveKey: 'tab1', |
| | | rememberMe: true, |
| | | loginBtn: false, |
| | | requiredTwoStepCaptcha: false, |
| | | stepCaptchaVisible: false, |
| | | encryptedString: { |
| | | key: "", |
| | | iv: "", |
| | | }, |
| | | url: { |
| | | getPrimaryInfo: "/sys/sysAnnouncementSend/getPrimaryInfo" |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | Vue.ls.remove(ACCESS_TOKEN) |
| | | this.getRouterData(); |
| | | this.rememberMe = true |
| | | }, |
| | | methods: { |
| | | handleTabClick(key) { |
| | | this.customActiveKey = key |
| | | }, |
| | | data () { |
| | | return { |
| | | customActiveKey: 'tab1', |
| | | rememberMe: true, |
| | | loginBtn: false, |
| | | requiredTwoStepCaptcha: false, |
| | | stepCaptchaVisible: false, |
| | | encryptedString:{ |
| | | key:"", |
| | | iv:"", |
| | | }, |
| | | url:{ |
| | | getPrimaryInfo:"/sys/sysAnnouncementSend/getPrimaryInfo" |
| | | handleRememberMeChange(e) { |
| | | this.rememberMe = e.target.checked |
| | | }, |
| | | /**跳转å°ç»å½é¡µé¢çåæ°-è´¦å·è·å*/ |
| | | getRouterData() { |
| | | this.$nextTick(() => { |
| | | let temp = this.$route.params.username || this.$route.query.username || '' |
| | | if (temp) { |
| | | this.$refs.alogin.acceptUsername(temp) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | //ç»å½ |
| | | handleSubmit() { |
| | | this.loginBtn = true; |
| | | if (this.customActiveKey === 'tab1') { |
| | | // 使ç¨è´¦æ·å¯ç ç»å½ |
| | | this.$refs.alogin.handleLogin(this.rememberMe) |
| | | } else { |
| | | //ææºå·ç ç»å½ |
| | | this.$refs.plogin.handleLogin(this.rememberMe) |
| | | } |
| | | }, |
| | | created() { |
| | | Vue.ls.remove(ACCESS_TOKEN) |
| | | this.getRouterData(); |
| | | this.rememberMe = true |
| | | // æ ¡éªå¤±è´¥ |
| | | validateFail() { |
| | | this.loginBtn = false; |
| | | }, |
| | | methods:{ |
| | | handleTabClick(key){ |
| | | this.customActiveKey = key |
| | | }, |
| | | handleRememberMeChange(e){ |
| | | this.rememberMe = e.target.checked |
| | | }, |
| | | /**跳转å°ç»å½é¡µé¢çåæ°-è´¦å·è·å*/ |
| | | getRouterData(){ |
| | | this.$nextTick(() => { |
| | | let temp = this.$route.params.username || this.$route.query.username || '' |
| | | if (temp) { |
| | | this.$refs.alogin.acceptUsername(temp) |
| | | // ç»å½åå°æå |
| | | requestSuccess(loginResult) { |
| | | this.$router.push({ path: "/isps/userAnnouncement" }).catch(() => { |
| | | console.log('ç»å½è·³è½¬é¦é¡µåºé,è¿ä¸ªé误ä»åªéæ¥ç') |
| | | }) |
| | | this.$notification.success({ |
| | | message: '欢è¿', |
| | | description: `${timeFix()}ï¼æ¬¢è¿åæ¥`, |
| | | }); |
| | | var userId = store.getters.userInfo.id; |
| | | let that = this; |
| | | getAction(this.url.getPrimaryInfo, { userId: userId }).then(res => { |
| | | if (res.success) { |
| | | for (var i = 0; i < res.result.length; i++) { |
| | | that.$notification.success({ |
| | | message: 'ææ°æªè¯»æ¶æ¯ã' + res.result[i].msgCategory + 'ã', |
| | | description: res.result[i].msgContent, |
| | | duration: 60, |
| | | icon: <a-icon type="exclamation-circle" style="color:red" />, |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | //ç»å½ |
| | | handleSubmit () { |
| | | this.loginBtn = true; |
| | | if (this.customActiveKey === 'tab1') { |
| | | // 使ç¨è´¦æ·å¯ç ç»å½ |
| | | this.$refs.alogin.handleLogin(this.rememberMe) |
| | | } else { |
| | | //ææºå·ç ç»å½ |
| | | this.$refs.plogin.handleLogin(this.rememberMe) |
| | | } |
| | | }, |
| | | // æ ¡éªå¤±è´¥ |
| | | validateFail(){ |
| | | this.loginBtn = false; |
| | | }, |
| | | // ç»å½åå°æå |
| | | requestSuccess(loginResult){ |
| | | this.$router.push({ path: "/dashboard/analysis" }).catch(()=>{ |
| | | console.log('ç»å½è·³è½¬é¦é¡µåºé,è¿ä¸ªé误ä»åªéæ¥ç') |
| | | }) |
| | | this.$notification.success({ |
| | | message: '欢è¿', |
| | | description: `${timeFix()}ï¼æ¬¢è¿åæ¥`, |
| | | }); |
| | | var userId = store.getters.userInfo.id; |
| | | let that = this; |
| | | getAction(this.url.getPrimaryInfo,{userId:userId}).then(res=>{ |
| | | if(res.success){ |
| | | for(var i=0;i<res.result.length;i++){ |
| | | that.$notification.success({ |
| | | message: 'ææ°æªè¯»æ¶æ¯ã'+res.result[i].msgCategory+'ã', |
| | | description:res.result[i].msgContent, |
| | | }); |
| | | } |
| | | } |
| | | }) |
| | | // this.$refs.loginSelect.show(loginResult) |
| | | }, |
| | | //ç»å½åå°å¤±è´¥ |
| | | requestFailed (err) { |
| | | let description = ((err.response || {}).data || {}).message || err.message || "请æ±åºç°é误ï¼è¯·ç¨ååè¯" |
| | | this.$notification[ 'error' ]({ |
| | | message: 'ç»å½å¤±è´¥', |
| | | description: description, |
| | | duration: 4, |
| | | }); |
| | | //è´¦æ·å¯ç ç»å½éè¯¯åæ´æ°éªè¯ç |
| | | if(this.customActiveKey === 'tab1' && description.indexOf('å¯ç é误')>0){ |
| | | this.$refs.alogin.handleChangeCheckCode() |
| | | } |
| | | this.loginBtn = false; |
| | | }, |
| | | loginSelectOk(){ |
| | | this.loginSuccess() |
| | | }, |
| | | //ç»å½æå |
| | | loginSuccess () { |
| | | this.$router.push({ path: "/dashboard/analysis" }).catch(()=>{ |
| | | console.log('ç»å½è·³è½¬é¦é¡µåºé,è¿ä¸ªé误ä»åªéæ¥ç') |
| | | }) |
| | | this.$notification.success({ |
| | | message: '欢è¿', |
| | | description: `${timeFix()}ï¼æ¬¢è¿åæ¥`, |
| | | }); |
| | | |
| | | }, |
| | | |
| | | stepCaptchaSuccess () { |
| | | this.loginSuccess() |
| | | }, |
| | | stepCaptchaCancel () { |
| | | this.Logout().then(() => { |
| | | this.loginBtn = false |
| | | this.stepCaptchaVisible = false |
| | | }) |
| | | }, |
| | | //è·åå¯ç å å¯è§å |
| | | getEncrypte(){ |
| | | var encryptedString = Vue.ls.get(ENCRYPTED_STRING); |
| | | if(encryptedString == null){ |
| | | getEncryptedString().then((data) => { |
| | | this.encryptedString = data |
| | | }); |
| | | }else{ |
| | | this.encryptedString = encryptedString; |
| | | } |
| | | }) |
| | | // this.$refs.loginSelect.show(loginResult) |
| | | }, |
| | | //ç»å½åå°å¤±è´¥ |
| | | requestFailed(err) { |
| | | let description = ((err.response || {}).data || {}).message || err.message || "请æ±åºç°é误ï¼è¯·ç¨ååè¯" |
| | | this.$notification['error']({ |
| | | message: 'ç»å½å¤±è´¥', |
| | | description: description, |
| | | duration: 4, |
| | | }); |
| | | //è´¦æ·å¯ç ç»å½éè¯¯åæ´æ°éªè¯ç |
| | | if (this.customActiveKey === 'tab1' && description.indexOf('å¯ç é误') > 0) { |
| | | this.$refs.alogin.handleChangeCheckCode() |
| | | } |
| | | this.loginBtn = false; |
| | | }, |
| | | loginSelectOk() { |
| | | this.loginSuccess() |
| | | }, |
| | | //ç»å½æå |
| | | loginSuccess() { |
| | | this.$router.push({ path: "/isps/userAnnouncement" }).catch(() => { |
| | | console.log('ç»å½è·³è½¬é¦é¡µåºé,è¿ä¸ªé误ä»åªéæ¥ç') |
| | | }) |
| | | this.$notification.success({ |
| | | message: '欢è¿', |
| | | description: `${timeFix()}ï¼æ¬¢è¿åæ¥`, |
| | | }); |
| | | |
| | | }, |
| | | |
| | | stepCaptchaSuccess() { |
| | | this.loginSuccess() |
| | | }, |
| | | stepCaptchaCancel() { |
| | | this.Logout().then(() => { |
| | | this.loginBtn = false |
| | | this.stepCaptchaVisible = false |
| | | }) |
| | | }, |
| | | //è·åå¯ç å å¯è§å |
| | | getEncrypte() { |
| | | var encryptedString = Vue.ls.get(ENCRYPTED_STRING); |
| | | if (encryptedString == null) { |
| | | getEncryptedString().then((data) => { |
| | | this.encryptedString = data |
| | | }); |
| | | } else { |
| | | this.encryptedString = encryptedString; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | </script> |
| | | <style lang="less" scoped> |
| | | .user-layout-login { |
| | | label { |
| | | font-size: 14px; |
| | | } |
| | | .user-layout-login { |
| | | label { |
| | | font-size: 14px; |
| | | } |
| | | .getCaptcha { |
| | | display: block; |
| | | width: 100%; |
| | | height: 40px; |
| | | } |
| | | display: block; |
| | | width: 100%; |
| | | height: 40px; |
| | | } |
| | | |
| | | .forge-password { |
| | | font-size: 14px; |
| | | } |
| | | font-size: 14px; |
| | | } |
| | | |
| | | button.login-button { |
| | | padding: 0 15px; |
| | | font-size: 16px; |
| | | height: 40px; |
| | | width: 100%; |
| | | } |
| | | button.login-button { |
| | | padding: 0 15px; |
| | | font-size: 16px; |
| | | height: 40px; |
| | | width: 100%; |
| | | } |
| | | |
| | | .user-login-other { |
| | | text-align: left; |
| | | margin-top: 24px; |
| | | line-height: 22px; |
| | | text-align: left; |
| | | margin-top: 24px; |
| | | line-height: 22px; |
| | | |
| | | .item-icon { |
| | | font-size: 24px; |
| | | color: rgba(0,0,0,.2); |
| | | margin-left: 16px; |
| | | vertical-align: middle; |
| | | cursor: pointer; |
| | | transition: color .3s; |
| | | font-size: 24px; |
| | | color: rgba(0, 0, 0, 0.2); |
| | | margin-left: 16px; |
| | | vertical-align: middle; |
| | | cursor: pointer; |
| | | transition: color 0.3s; |
| | | |
| | | &:hover { |
| | | color: #1890ff; |
| | | } |
| | | } |
| | | |
| | | .register { |
| | | float: right; |
| | | color: #1890ff; |
| | | } |
| | | } |
| | | |
| | | .register { |
| | | float: right; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | | <style> |
| | | .valid-error .ant-select-selection__placeholder{ |
| | | color: #f5222d; |
| | | } |
| | | .valid-error .ant-select-selection__placeholder { |
| | | color: #f5222d; |
| | | } |
| | | </style> |