Merge remote-tracking branch 'origin/master'
| | |
| | | return request.post('/business/company/updateById', data) |
| | | } |
| | | |
| | | // æ¥è¯¢å
¨é¨æ°æ®(è´¦å·åé
ä¼ä¸ä½¿ç¨) |
| | | |
| | | export function pageAll (data) { |
| | | return request.post('/business/company/list', data) |
| | | } |
| | | // æ¥è¯¢å
¨é¨æ°æ®(è´¦å·åé
ä¼ä¸ä½¿ç¨) |
| | | export function allForFp (data) { |
| | | return request.post('/business/company/pageAll', data) |
| | | } |
| | | |
| | |
| | | phone: '', |
| | | code: '' |
| | | }, |
| | | dataId: null, |
| | | num: 0, |
| | | timer: null, |
| | | // è¡¨åæ°æ® |
| | |
| | | }, 1000) |
| | | }, |
| | | open (title, target) { |
| | | const that = this; |
| | | const that = this |
| | | this.title = title |
| | | this.dataId = target.id |
| | | this.phone = '' |
| | | this.code = '' |
| | | clearInterval(this.timer) |
| | | this.num = 0 |
| | | getById(target.id) |
| | | this.getDetail() |
| | | }, |
| | | getDetail () { |
| | | var that =this |
| | | getById(this.dataId) |
| | | .then(res => { |
| | | this.form = res |
| | | this.form.type = 1 |
| | |
| | | this.form.file3.imgurl = res.signImg.fileurl |
| | | this.form.file3.imgurlfull = res.signImg.fileurlFull |
| | | |
| | | listForCompany({ companyId: target.id }) |
| | | listForCompany({ companyId: this.dataId }) |
| | | .then(resa => { |
| | | that.form.solutionList = resa.map(item => { |
| | | return { |
| | |
| | | }) |
| | | }, |
| | | callback() { |
| | | this.getDetail() |
| | | this.$emit('success') |
| | | this.visible = false |
| | | // this.visible = false |
| | | } |
| | | } |
| | | } |
| | |
| | | <el-form-item label="纸质åç¥¨æ¥æ¶å°å" prop="invoiceAddr"> |
| | | <el-input v-model="form.invoiceAddr" placeholder="请è¾å
¥" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="è¥ä¸æ§ç
§" prop="businessImg"> |
| | | <el-form-item label="è¥ä¸æ§ç
§" prop="businessImg" style="height: 120px"> |
| | | <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file" @uploadSuccess="result" /> |
| | | </el-form-item> |
| | | <el-form-item label="æ³äººèº«ä»½è¯" prop="idcardImgList"> |
| | | <el-form-item label="æ³äººèº«ä»½è¯" prop="idcardImgList" style="height: 120px"> |
| | | <div style="width: 100%; display: flex; align-items: center;"> |
| | | <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file1" @uploadSuccess="result1" /> |
| | | <div style="width: 15px;height: 100%;"></div> |
| | | <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file2" @uploadSuccess="result2" /> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="çµåç¾ç« " prop="signImg"> |
| | | <el-form-item label="çµåç¾ç« " prop="signImg" style="height: 120px"> |
| | | <UploadAvatarImage :uploadData="{ folder: 'company' }" :file="form.file3" @uploadSuccess="result3" /> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | <el-table-column |
| | | align="center" |
| | | label="ä¿é©æ¹æ¡"> |
| | | <template slot-scope="{row}"> |
| | | <el-select v-model="row.solutionBaseId" placeholder="è¯·éæ©"> |
| | | <template slot-scope="scope"> |
| | | <el-select v-model="scope.row.solution" value-key="id" placeholder="è¯·éæ©" change="changeSolution($event,scope.$index)"> |
| | | <el-option |
| | | v-for="item in programme" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | :value="item"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | initParam:{ |
| | | id: null, |
| | | name: '', |
| | | code: '', |
| | |
| | | }, |
| | | solutionList: [ |
| | | { |
| | | solutionBaseId: '', |
| | | solution: null, |
| | | canAdd: 0, |
| | | canReduce: 0 |
| | | } |
| | | ], |
| | | type: '', |
| | | type: '0', |
| | | file: { |
| | | imgurl: '', |
| | | imgurlfull: '' |
| | |
| | | file3: { |
| | | imgurl: '', |
| | | imgurlfull: '' |
| | | } |
| | | }, |
| | | }, |
| | | form: {}, |
| | | timer: null, |
| | | num: 0, |
| | | // éªè¯è§å |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | changeSolution(row,index){ |
| | | this.form.solutionList[index].solution=row |
| | | // console.log(this.form.solutionList) |
| | | }, |
| | | send () { |
| | | if (!this.form.phone) { |
| | | this.$message.warning('请è¾å
¥ææºå·') |
| | |
| | | } |
| | | }, 1000) |
| | | }, |
| | | open (title, target) { |
| | | open (title, target,type) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.form = this.initParam |
| | | this.getAll() |
| | | // æ°å»º |
| | | if (target == null) { |
| | |
| | | }, |
| | | add () { |
| | | this.form.solutionList.push({ |
| | | solutionName: '', |
| | | solutionId:null, |
| | | solution: {}, |
| | | canAdd: '', |
| | | canReduce: '' |
| | | }) |
| | |
| | | <template v-else> |
| | | <el-button type="primary" @click="$refs.InsuranceDetails.open('æä¿è¯¦æ
å',model,0)">导åºè¯¦å</el-button> |
| | | <el-button v-if="[2, 3, 5, 7, 8].includes(model.status)" type="primary" @click="viewToubaodan">æ¥çæä¿å</el-button> |
| | | <!-- |
| | | <el-button v-if="model.status == 2" type="primary" @click="goSign">ç¾ç½²æä¿å</el-button> |
| | | --> |
| | | <el-button v-if="model.status == 5" type="primary" @click="viewBaoxiandan">æ¥çä¿é©å</el-button> |
| | | <el-button v-if="model.status == 10" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('ä¸ä¼ æä¿å',model,2)">ä¸ä¼ æä¿å</el-button> |
| | | <el-button v-if="model.status == 3" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('ä¸ä¼ ä¿é©å',model,3)">ä¸ä¼ ä¿é©å</el-button> |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | |
| | | <el-form-item label="æ¥æ¶æä»¶é®ç®±" prop="email"> |
| | | <el-input v-model="form.email" placeholder="请è¾å
¥" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æä¿åç¾ç« å
³é®å" prop="signKeyword"> |
| | | <el-input v-model="form.signKeyword" placeholder="å¤ä¸ªè±æéå·éå¼" v-trim/> |
| | | <el-form-item label="æä¿åç¾ç« å
³é®åï¼å¦æå¤ä¸ªå
³é®åï¼è¯·ä½¿ç¨è±æåå· ; éå¼ï¼" prop="signKeyword"> |
| | | <el-input v-model="form.signKeyword" placeholder="å¤ä¸ªè±æåå· ; éå¼" v-trim/> |
| | | </el-form-item> |
| | | <el-button type="primary" @click="add">æ·»å å·¥ç§</el-button> |
| | | <el-table |
| | |
| | | <div class="info_list_item_val" style="color:rgba(249, 86, 1, 0.996078431372549);">{{ model.price }}</div> |
| | | </div> |
| | | </div> |
| | | <el-table v-if="model.type ==0" |
| | | <el-table v-if="model.applyType ==0" |
| | | :data="tableData" |
| | | border |
| | | show-summary |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-table v-if="model.type ==1" |
| | | <el-table v-if="model.applyType ==1" |
| | | :data="tableData1" |
| | | border |
| | | show-summary |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-table v-if="model.type == 1" |
| | | <el-table v-if="model.applyType == 1" |
| | | :data="tableData2" |
| | | border |
| | | show-summary |
| | |
| | | align="center" |
| | | label="ä¿é©æ¹æ¡"> |
| | | <template slot-scope="{row}"> |
| | | <el-select v-model="row.solutionBaseId" placeholder="è¯·éæ©"> |
| | | <el-select v-model="row.solution" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in programme" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | :value="{id:item.id,baseId:item.baseId}"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | |
| | | id: null, |
| | | solutionList: [ |
| | | { |
| | | solutionBaseId: '', |
| | | solution: {id: null, baseId: null }, |
| | | canAdd: 0, |
| | | canReduce: 0 |
| | | } |
| | |
| | | .then(resa => { |
| | | that.form.solutionList = resa.map(item => { |
| | | return { |
| | | solutionBaseId: item.solutionBaseId, |
| | | solution: {id: item.baseSolutionId, baseId: item.solutionId }, |
| | | canAdd: item.canAdd, |
| | | canReduce: item.canReduce |
| | | } |
| | |
| | | }, |
| | | add() { |
| | | this.form.solutionList.push({ |
| | | solutionName: '', |
| | | solution: {id: null, baseId: null }, |
| | | canAdd: '', |
| | | canReduce: '' |
| | | }) |
| | |
| | | <script> |
| | | import BasePage from '@/components/base/BasePage' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { pageAll } from '@/api/business/company' |
| | | import { allForFp } from '@/api/business/company' |
| | | import { create } from '@/api/business/companyPermission' |
| | | export default { |
| | | name: 'allocationEnterprises', |
| | |
| | | this.visible = true |
| | | this.title = title |
| | | this.user = target |
| | | pageAll({ userId: target.id }) |
| | | allForFp({ userId: target.id }) |
| | | .then(res => { |
| | | this.company = res.map(r => { |
| | | return { |
| | |
| | | companyIdList: this.selectedIds |
| | | }) |
| | | .then(() => { |
| | | this.$tip.apiSuccess('è§è²é
ç½®æåï¼ç¨æ·éæ°ç»å½åçæ') |
| | | this.$tip.apiSuccess('ä¼ä¸åé
æåï¼ç¨æ·éæ°ç»å½åçæ') |
| | | this.visible = false |
| | | this.$emit('success') |
| | | }) |
| | |
| | | <el-form-item label="ä¼ä¸åç§°" prop="name"> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥ä¼ä¸åç§°" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æå±åæ·" prop="name"> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥æå±åæ·" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æå±çèµå" prop="username"> |
| | | <el-input v-model="searchForm.username" placeholder="请è¾å
¥æå±çèµå" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:company:create']"> |
| | | <li><el-button type="primary" @click="$refs.operaCompanyWindow.open('æ°å»ºä¼ä¸')" v-permissions="['business:company:create']">æ°å»ºä¼ä¸</el-button></li> |
| | | <li><el-button type="primary" @click="$refs.operaCompanyWindow.open('æ°å»ºä¼ä¸',null)" v-permissions="['business:company:create']">æ°å»ºä¼ä¸</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | |
| | | <TableLayout :permissions="['business:dispatchunit:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="æå±ä¸" prop="companyId"> |
| | | <el-form-item label="æå±ä¼ä¸" prop="companyId"> |
| | | <el-select v-model="searchForm.companyId" placeholder="è¯·éæ©" @change="search"> |
| | | <el-option |
| | | v-for="item in companyList" |
| | |
| | | <TableLayout :permissions="['business:dispatchunit:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="æå±ä¸" prop="companyId"> |
| | | <el-form-item label="æå±ä¼ä¸" prop="companyId"> |
| | | <el-select v-model="searchForm.companyId" placeholder="è¯·éæ©" @change="search"> |
| | | <el-option |
| | | v-for="item in companyList" |
| | |
| | | "scripts": { |
| | | "serve": "vue-cli-service serve", |
| | | "build:pro": "vue-cli-service build", |
| | | "build:pro_v2": "vue-cli-service build --mode production_v2", |
| | | "build:dev": "vue-cli-service build --mode staging", |
| | | "lint": "vue-cli-service lint", |
| | | "fix": "eslint --ext .js,.vue src --fix" |
| | |
| | | "@riophae/vue-treeselect": "^0.4.0", |
| | | "axios": "^0.21.1", |
| | | "core-js": "^3.6.5", |
| | | "echarts": "^5.4.3", |
| | | "element-ui": "^2.3.6", |
| | | "js-cookie": "^2.2.1", |
| | | "js-file-download": "^0.4.12", |
| | |
| | | <meta charset="utf-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1.0"> |
| | | <link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
| | | <title>äºæä¿å®¢æ·æå¡ç³»ç»</title> |
| | | <link rel="icon" href="<%= BASE_URL %>bitbug_favicon.ico"> |
| | | <title>äºæä¿</title> |
| | | </head> |
| | | <body> |
| | | <noscript> |
| | | <strong>We're sorry but äºæä¿å®¢æ·æå¡ç³»ç» doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
| | | <strong>We're sorry but äºæä¿ doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
| | | </noscript> |
| | | <div id="app"></div> |
| | | <!-- built files will be auto injected --> |
| | |
| | | </template> |
| | | |
| | | <style lang="scss"> |
| | | @import "assets/style/lib.css"; |
| | | // å¼å
¥å
¨å±æ ·å¼ |
| | | @import "assets/style/style"; |
| | | // å¼å
¥ç³»ç»å
ç½®å¾æ |
| | | @import "assets/icons/system/index"; |
| | | // å¼å
¥èªå®ä¹å¾æ |
| | | @import "assets/icons/ext/index"; |
| | | .long-title-style { |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | -webkit-text-overflow: ellipsis; |
| | | overflow: hidden; |
| | | } |
| | | .el-tooltip__popper.is-dark { |
| | | max-width: 400px; |
| | | } |
| | | </style> |
| | |
| | | |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/company/findPlatformPage', data, { |
| | | return request.post('/business/company/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | | return request.post('/company/create', data) |
| | | return request.post('/business/company/create', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | return request.post('/company/updateById', data) |
| | | } |
| | | // ä¿®æ¹ |
| | | export function update (data) { |
| | | return request.post('/company/update', data) |
| | | return request.post('/business/company/updateById', data) |
| | | } |
| | | |
| | | // å é¤ |
| | | export function deleteById (id) { |
| | | return request.get(`/company/delete/${id}`) |
| | | |
| | | export function pageAll (data) { |
| | | return request.post('/business/company/list', data) |
| | | } |
| | | // æ¥è¯¢å
¨é¨æ°æ®(è´¦å·åé
ä¼ä¸ä½¿ç¨) |
| | | export function allForFp (data) { |
| | | return request.post('/business/company/pageAll', data) |
| | | } |
| | | |
| | | // æ¹éå é¤ |
| | | export function deleteByIdInBatch (ids) { |
| | | return request.get('/company/delete/batch', { |
| | | params: { |
| | | ids |
| | | // æ ¹æ®IDç¦ç¨å¯ç¨ |
| | | export function updateStatus (data) { |
| | | return request.post('/business/company/updateStatus', data) |
| | | } |
| | | |
| | | export function exportComFiles (data) { |
| | | return request.post('/business/company/exportFiles', data, { |
| | | trim: true, |
| | | download: true |
| | | }) |
| | | } |
| | | |
| | | // æ ¹æ®IDæ¥è¯¢ |
| | | export function getById (id) { |
| | | return request.get(`/business/company/${id}`) |
| | | } |
| | | |
| | | // ä¼ä¸æ´æ¢ææºå· |
| | | export function updatePhone (data) { |
| | | return request.post('/business/company/updatePhone', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ä¿é©æ¹æ¡ |
| | | export function updateSolutions (data) { |
| | | return request.post('/business/company/updateSolutions', data) |
| | | } |
| | |
| | | // æ ¹æ®IDæ¥è¯¢ |
| | | export function getById (id) { |
| | | return request.get(`/business/dispatchUnit/${id}`) |
| | | } |
| | | export function check (data) { |
| | | return request.post('/business/dispatchUnit/check', data) |
| | | } |
| | | export function checkWorktype (data) { |
| | | return request.post('/business/dispatchUnit/checkWorktype', data) |
| | | } |
| | | // æ·»å å·¥ç§ |
| | | export function createSolution (data) { |
| | | return request.post('/business/dispatchUnit/createSolution', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ä¿¡æ¯ |
| | | export function editDispatchUnit (data) { |
| | | return request.post('/business/dispatchUnit/editDispatchUnit', data) |
| | | } |
| | | |
| | | // æ°æ®å表 |
| | | export function findListByDTO (data) { |
| | | return request.post('/business/dispatchUnit/findListByDTO', data) |
| | | } |
| | |
| | | import request from '../../utils/request' |
| | | |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/business/solutions/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | | return request.post('/business/solutions/create', data) |
| | | } |
| | | |
| | | // æ¥è¯¢å
¨é¨ä¿é©æ¹æ¡ |
| | | export function all (data) { |
| | | return request.post('/business/solutions/list', data) |
| | | } |
| | | |
| | | // ç¦ç¨å¯ç¨ |
| | | export function updateStatus (data) { |
| | | return request.post('/business/solutions/updateStatus', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | return request.post('/business/solutions/updateById', data) |
| | | } |
| | | |
| | | // æ ¹æ®IDæ¥è¯¢ |
| | | export function solutionsId (id) { |
| | | return request.get(`/business/solutions/${id}`) |
| | | } |
| | | |
| | | // æ¥è¯¢ä¼ä¸å
¨é¨å
³èæ¹æ¡ |
| | | export function listForCompany (data) { |
| | | return request.post('/business/companySolution/listForCompany', data) |
| | | } |
| | |
| | | import request from '../../utils/request' |
| | | |
| | | // 导å
¥æ¨¡æ¿ |
| | | export function importExcel (data) { |
| | | return request.post(`/business/worktype/importExcel`, data) |
| | | } |
| | | |
| | | // æ¥è¯¢å
¨é¨å·¥ç§ |
| | | export function all (data) { |
| | | return request.post(`/business/worktype/list`, data) |
| | | } |
| | | |
| | | // æ ¹æ®æ¡ä»¶å·¥ç§å表 |
| | | export function findListByDTO (data) { |
| | | return request.post('/business/worktype/findListByDTO', data) |
| | |
| | | export function category (data) { |
| | | return request.post('/business/category/list', data) |
| | | } |
| | | // ç±»å«å表æ¥è¯¢ |
| | | export function baseCategory (data) { |
| | | return request.post('/business/baseCategory/findList', data) |
| | | } |
| | | |
| | | // 导å
¥æ¨¡æ¿ |
| | | export function importExcel (data) { |
| | | return request.post('/business/goods/importExcel', data) |
| | | } |
| | | |
| | | // ä¸ä¼ æ¥å£ |
| | | export function upload (data) { |
| | | return request.post('/public/upload', data) |
| | | } |
| | | |
| | | // åºåæ å表 |
| | | export function findTreeList (data) { |
| | | return request.post('/business/areas/findTreeList', data) |
| | | } |
| | |
| | | |
| | | // æ¥è¯¢----å¹³å°èå |
| | | export function fetchTree () { |
| | | return request.post('/system/menu/treeList/0') |
| | | return request.post(`/system/menu/treeList/0`) |
| | | } |
| | | |
| | | // æ¥è¯¢----ä¼ä¸èå |
| | | export function fetchTree1 () { |
| | | return request.post('/system/menu/treeList/1') |
| | | return request.post(`/system/menu/treeList/1`) |
| | | } |
| | | |
| | | // æ°å»º |
| | |
| | | } |
| | | |
| | | // æ¥è¯¢èåæ |
| | | export function fetchMenuTree () { |
| | | return request.get('/system/menu/treeNodes?type=1') |
| | | export function fetchMenuTree (type) { |
| | | return request.get('/system/menu/treeNodes?type='+type) |
| | | } |
| | | |
| | | // æåº |
| | |
| | | return request.get('/system/permission/all') |
| | | } |
| | | |
| | | // æ¥è¯¢ææ |
| | | export function fetchAllCom () { |
| | | return request.get('/system/permission/all') |
| | | } |
| | | |
| | | // æ°å»º |
| | | export function create (data) { |
| | | return request.post('/system/permission/create', data, { |
| | |
| | | return request.post('/system/user/page', data) |
| | | } |
| | | |
| | | // æ¥è¯¢ |
| | | export function findAllList (data) { |
| | | return request.post('/system/user/findAllList', data) |
| | | } |
| | | |
| | | // æ°å»º |
| | | export function create (data) { |
| | | return request.post('/system/user/create', data, { |
| | |
| | | export function resetPwd (data) { |
| | | return request.post('/system/user/resetPwd', data) |
| | | } |
| | | |
| | | // éç½®å¯ç |
| | | export function updUserStatus (params) { |
| | | return request.get('/system/user/updUserStatus', {params}) |
| | | } |
| | |
| | | $--font-path: '~element-ui/lib/theme-chalk/fonts'; |
| | | |
| | | @import "~element-ui/packages/theme-chalk/src/index"; |
| | | |
| | |
| | | padding: 0; |
| | | margin: 0; |
| | | color: $font-color; |
| | | // overflow: hidden; |
| | | font-family: 'Avenir', Helvetica, Arial, sans-serif; |
| | | -webkit-font-smoothing: antialiased; |
| | | -moz-osx-font-smoothing: grayscale; |
| | | scrollbar-width: none; /* firefox */ |
| | | -ms-overflow-style: none; /* IE 10+ */ |
| | | &::-webkit-scrollbar { |
| | | display: none; /* Chrome Safari */ |
| | | } |
| | | body { |
| | | height: 100%; |
| | | padding: 0; |
| | | margin: 0; |
| | | overflow: scroll; |
| | | overflow: hidden; |
| | | scrollbar-width: none; /* firefox */ |
| | | -ms-overflow-style: none; /* IE 10+ */ |
| | | &::-webkit-scrollbar { |
| | | display: none; /* Chrome Safari */ |
| | | } |
| | | } |
| | | h1,h2,h3,h4,h5,h6,ul { |
| | | margin: 0; |
| | |
| | | #app { |
| | | height: 100%; |
| | | min-width: $page-min-width; |
| | | // overflow: hidden; |
| | | } |
| | | } |
| | | |
| | | .bg { |
| | | z-index: 9990 !important; |
| | | } |
| | | .windows { |
| | | z-index: 9991 !important; |
| | | } |
| | | |
| | | // ç©¿æ¢æ¡çæé® |
| | | .el-transfer__buttons { |
| | | padding: 0 16px !important; |
| | | } |
| | | |
| | | .table-header { |
| | | background-color: #F5F6F8!important; |
| | | th { |
| | | background-color: #F5F6F8!important; |
| | | color: #3F4F69 !important; |
| | | font-size: 14px; |
| | | } |
| | | } |
| | | |
| | | .doumee-element-table { |
| | | border-color: #DFE2E8; |
| | | tr, th, td { |
| | | border-color: #DFE2E8; |
| | | } |
| | | } |
| | | |
| | | ::v-deep .el-table__fixed { |
| | | height: 100% !important; |
| | | } |
| | | ::v-deep .el-table__fixed-right { |
| | | height: 100% !important; |
| | | } |
| | | ::v-deep .el-table__cell { |
| | | height: 100% !important; |
| | | } |
| | | .apply-status0, .apply-status2 , .apply-status3, .apply-status10, |
| | | .change-status0,.change-status1,.change-status2, |
| | | .settle-status0,.settle-status2,.settle-status3, |
| | | .tax-status0, |
| | | .du-status0 { |
| | | color: #216EEE !important; |
| | | } |
| | | .apply-status1 , .apply-status4, .apply-status6, .apply-status7, .apply-status8, |
| | | .change-status3,.change-status4,.change-status5,.change-status8, |
| | | .settle-status1, |
| | | .tax-status2, |
| | | .du-status2 { |
| | | color: #F95601 !important; |
| | | } |
| | | .apply-status5,.change-status7,.settle-status7,.tax-status1,.du-status1,.settle-status4 { |
| | | color: #00BA92 !important; |
| | | } |
| | |
| | | // 主è²è° |
| | | $primary-color: #2E68EC; |
| | | $primary-color: #216EEE; |
| | | $primary-title-start-color: #3582ff; |
| | | $primary-title-color: #216EcE; |
| | | $primary-color-sel: #0046c6; |
| | | $primary-color-hover: #1562e2; |
| | | $icon-background-color: #0d5ada; |
| | | //èåæ¬æµ®è²ï¼ |
| | | $menu-hover-color: rgba(33, 110, 238, 0.10); |
| | | // 头é¨é«åº¦ |
| | | $header-height: 60px; |
| | | // èå宽度 |
| | | $menu-width: 208px; |
| | | $menu-width: 250px; |
| | | // 页颿å°å®½åº¦ |
| | | $page-min-width: 1000px; |
| | | |
| | |
| | | } |
| | | } |
| | | }, |
| | | // watch: { |
| | | // visible() { |
| | | // console.log(this.visible); |
| | | // } |
| | | // }, |
| | | watch: { |
| | | $route (to, from) { |
| | | this.close() |
| | | } |
| | | }, |
| | | methods: { |
| | | // é
ç½® |
| | | config (extParams = {}) { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | close () { |
| | | this.visible = false |
| | | }, |
| | | // 确认æ°å»º/ä¿®æ¹ |
| | | confirm () { |
| | | if (this.form.id == null || this.form.id === '') { |
| | |
| | | // 确认æ°å»º |
| | | __confirmCreate () { |
| | | this.$refs.form.validate((valid) => { |
| | | // debugger |
| | | if (!valid) { |
| | | return |
| | | } |
| | | // console.log(this.form); |
| | | // debugger |
| | | // è°ç¨æ°å»ºæ¥å£ |
| | | this.isWorking = true |
| | | this.api.create(this.form) |
| | |
| | | // å é¤ |
| | | deleteById (row, childConfirm = true) { |
| | | this.__checkApi() |
| | | let message = `确认å é¤${this.module}ã${row[this.configData['field.main']]}ãå?` |
| | | // let message = `确认å é¤${this.module}ã${row[this.configData['field.main']]}ãå?` |
| | | let message = `确认å é¤è¯¥è®°å½å?` |
| | | if (childConfirm && row.children != null && row.children.length > 0) { |
| | | message = `确认å é¤${this.module}ã${row[this.configData['field.main']]}ãåå
¶å${this.module}å?` |
| | | // message = `确认å é¤${this.module}ã${row[this.configData['field.main']]}ãåå
¶å${this.module}å?` |
| | | message = `确认å é¤è¯¥è®°å½åå
¶åæ°æ®å?` |
| | | } |
| | | this.$dialog.deleteConfirm(message) |
| | | .then(() => { |
| | |
| | | } |
| | | } |
| | | if (containChildrenRows.length > 0) { |
| | | message = `æ¬æ¬¡å°å é¤${this.module}ã${containChildrenRows.join('ã')}ãåå
¶å${this.module}è®°å½ï¼ç¡®è®¤å é¤åï¼` |
| | | message = 'æ¬æ¬¡å°å é¤è¯¥æ°æ®åå
¶åæ°æ®ï¼ç¡®è®¤å é¤åï¼' |
| | | } |
| | | } |
| | | this.$dialog.deleteConfirm(message) |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | width="50%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="æ´¾é£åä½åç§°" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请è¾å
¥" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æ´¾é£åä½ä¿¡ç¨ä»£ç " prop="code"> |
| | | <el-input v-model="form.code" placeholder="请è¾å
¥" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æ´¾é£åä½æè¿°" prop="content"> |
| | | <el-input v-model="form.content" placeholder="请è¾å
¥" v-trim/> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div class="list"> |
| | | <el-button type="primary" style="margin-bottom: 15px;" @click="add">æ·»å æ¹æ¡</el-button> |
| | | <div class="list_item" v-for="(item, index) in form.saveDuSolutionDTOList" :key="index"> |
| | | <div class="list_item_input"> |
| | | <div class="list_item_input_label"><span>*</span>ä¿é©æ¹æ¡</div> |
| | | <div class="list_item_input_val"> |
| | | <el-select v-model="item.solutionId" @change="changeTypeWork($event, index)" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in insuranceScheme" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | <div style="display: flex; align-items: center;"> |
| | | <el-button type="primary" @click="addItem(index)">æ·»å </el-button> |
| | | <el-button type="danger" @click="deleItem(index)">å é¤</el-button> |
| | | <div class="box"> |
| | | <div class="box_label">æ´¾é£åä½è¯¦æ
</div> |
| | | <div class="box_list"> |
| | | <div class="box_list_item"> |
| | | <div class="box_list_item_label">æ´¾é£åä½ï¼</div> |
| | | <div class="box_list_item_val">èæ¹æ ¼åç²¾å¯å¶é æéå
¬å¸</div> |
| | | </div> |
| | | <div class="box_list_item"> |
| | | <div class="box_list_item_label">æ´¾é£åä½ä¿¡ç¨ä»£ç ï¼</div> |
| | | <div class="box_list_item_val">913401000900000001</div> |
| | | </div> |
| | | <div class="box_list_item"> |
| | | <div class="box_list_item_label">æ´¾é£åä½ç¶æï¼</div> |
| | | <div class="box_list_item_val">å·²éè¿</div> |
| | | </div> |
| | | <div class="box_list_item"> |
| | | <div class="box_list_item_label">æ´¾é£åä½è¯¦è¿°ï¼</div> |
| | | <div class="box_list_item_val">æ </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="list_item_table"> |
| | | <div class="box_x"></div> |
| | | <div class="box_fa">ä¿é©æ¹æ¡ï¼å¹³å®ä¿é©é主责任é©Aç</div> |
| | | <el-table |
| | | :data="item.saveDuWorkTypeDTOList" |
| | | :data="tableData" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column label="åºå·" width="80px"> |
| | | <el-table-column |
| | | label="åºå·" |
| | | align="center" |
| | | width="80"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | align="center" |
| | | label="æå±å·¥ç§"> |
| | | <template slot-scope="scope"> |
| | | <el-select v-model="scope.row.workTypeId" @change="changeGZ($event, index, scope.$index)" placeholder="è¯·éæ©"> |
| | | <template slot-scope="{row}"> |
| | | <el-select v-model="row.info" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in item.typeWork" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="æä½è§é¢ï¼éå¿
å¡«ï¼"> |
| | | <template slot-scope="scope"> |
| | | <div style="width: 100px; height: 100px;"> |
| | | <UploadAvatarVideo :uploadData="{ folder: 'unit' }" :file="scope.row.file" @uploadSuccess="result($event, index, scope.$index)" /> |
| | | label="å®¡æ ¸éè¿æ¥æ" |
| | | width="150" |
| | | align="center" |
| | | prop="time"> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div class="box_videos"> |
| | | <div class="box_videos_item" v-for="(item,index) in 1" :key="index"> |
| | | <video src="https://baidu.com"></video> |
| | | <div class="box_videos_item_info"> |
| | | 1-3ç±» è¬è/åèºå·¥/家禽家ç饲å
»äººå |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="box_fa">ä¿é©æ¹æ¡ï¼å¹³å®ä¿é©é主责任é©Aç</div> |
| | | <el-table |
| | | :data="tableData" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | label="åºå·" |
| | | align="center" |
| | | width="80"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æä½" |
| | | width="90" |
| | | fixed="right"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="dele(index, scope.$index)">å é¤</el-button> |
| | | align="center" |
| | | label="æå±å·¥ç§"> |
| | | <template slot-scope="{row}"> |
| | | <el-select v-model="row.info" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="å®¡æ ¸éè¿æ¥æ" |
| | | width="150" |
| | | align="center" |
| | | prop="time"> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div class="box_videos"> |
| | | <div class="box_videos_item" v-for="(item,index) in 1" :key="index"> |
| | | <video src="https://baidu.com"></video> |
| | | <div class="box_videos_item_info"> |
| | | 1-3ç±» è¬è/åèºå·¥/家禽家ç饲å
»äººå |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="box_label">å®¡æ ¸æµç¨</div> |
| | | <el-timeline :reverse="reverse" style="margin-top: 20px;"> |
| | | <el-timeline-item |
| | | v-for="(activity, index) in activities" |
| | | :key="index" |
| | | :timestamp="activity.timestamp"> |
| | | {{activity.content}} |
| | | </el-timeline-item> |
| | | </el-timeline> |
| | | </div> |
| | | </GlobalWindow> |
| | | </template> |
| | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import UploadAvatarVideo from '@/components/common/UploadAvatarVideo' |
| | | import { all } from '@/api/business/solutions' |
| | | import { findListByDTO } from '@/api/business/worktype' |
| | | export default { |
| | | name: 'OperaDispatchUnitWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow, UploadAvatarVideo }, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | return { |
| | | reverse: false, |
| | | activities: [{ |
| | | content: 'æäº¤æ´¾é£åä½', |
| | | timestamp: 'æä½å-å¼ ä¼ï¼å®å¾½è±ç±³ç§ææéå
¬å¸ï¼\n' + |
| | | '\n' + |
| | | '2023-09-11 00:00:00' |
| | | }, { |
| | | content: 'æ´¾é£åä½éè¿\n' + |
| | | '\n' + |
| | | '\n' + |
| | | 'æäº¤æè§ï¼-', |
| | | timestamp: 'æä½å-å¶æ¾éªï¼å¹³å°ç«¯ï¼\n' + |
| | | '\n' + |
| | | '2023-09-11 00:00:00' |
| | | }], |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | name: '', |
| | | code: '', |
| | | content: '', |
| | | saveDuSolutionDTOList: [ |
| | | { |
| | | id: '', |
| | | saveDuWorkTypeDTOList: [ |
| | | { |
| | | videoUrl: '', |
| | | workTypeId: '', |
| | | workTypeName: '', |
| | | file: { |
| | | videourl: '', |
| | | videourlfull: '' |
| | | } |
| | | } |
| | | ], |
| | | typeWork: [], |
| | | solutionId: '', |
| | | solutionName: '' |
| | | } |
| | | ] |
| | | worktypeStatus: '' |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | | name: [ |
| | | { required: true, message: '请è¾å
¥æ´¾é£åä½åç§°' } |
| | | ], |
| | | code: [ |
| | | { required: true, message: '请è¾å
¥æ´¾é£åä½ä¿¡ç¨ä»£ç ' } |
| | | ], |
| | | content: [ |
| | | { required: true, message: '请è¾å
¥æ´¾é£åä½æè¿°' } |
| | | ] |
| | | }, |
| | | insuranceScheme: [] |
| | | tableData: [] |
| | | } |
| | | }, |
| | | created () { |
| | |
| | | api: '/business/dispatchUnit', |
| | | 'field.id': 'id' |
| | | }) |
| | | all({}) |
| | | .then(res => { |
| | | this.insuranceScheme = res |
| | | }) |
| | | }, |
| | | methods: { |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.form.saveDuSolutionDTOList = [ |
| | | { |
| | | id: '', |
| | | saveDuWorkTypeDTOList: [ |
| | | { |
| | | videoUrl: '', |
| | | workTypeId: '', |
| | | workTypeName: '', |
| | | file: { |
| | | videourl: '', |
| | | videourlfull: '' |
| | | } |
| | | } |
| | | ], |
| | | typeWork: [], |
| | | solutionId: '', |
| | | solutionName: '' |
| | | } |
| | | ] |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | | } |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | }) |
| | | }, |
| | | // åæ¢å·¥ç§ |
| | | changeGZ(a, b, c) { |
| | | let text = '' |
| | | this.form.saveDuSolutionDTOList[b].typeWork.forEach(item => { |
| | | if (item.id === a) { |
| | | text = item.name |
| | | } |
| | | }) |
| | | this.form.saveDuSolutionDTOList[b].saveDuWorkTypeDTOList[c].workTypeName = text |
| | | }, |
| | | // åæ¢æ¹æ¡ |
| | | changeTypeWork(id, index) { |
| | | findListByDTO({ queryType: 0, id }) |
| | | .then(res => { |
| | | this.form.saveDuSolutionDTOList[index].typeWork = res |
| | | }) |
| | | let text = '' |
| | | this.insuranceScheme.forEach(item => { |
| | | if (item.id === id) { |
| | | text = item.name |
| | | } |
| | | }) |
| | | this.form.saveDuSolutionDTOList[index].solutionName = text |
| | | }, |
| | | add() { |
| | | this.form.saveDuSolutionDTOList.unshift({ |
| | | id: '', |
| | | saveDuWorkTypeDTOList: [ |
| | | { |
| | | videoUrl: '', |
| | | workTypeId: '', |
| | | file: { |
| | | videourl: '', |
| | | videourlfull: '' |
| | | } |
| | | } |
| | | ], |
| | | solutionId: '' |
| | | }) |
| | | }, |
| | | addItem(index) { |
| | | this.form.saveDuSolutionDTOList[index].saveDuWorkTypeDTOList.push({ |
| | | videoUrl: '', |
| | | workTypeId: '', |
| | | file: { |
| | | videourl: '', |
| | | videourlfull: '' |
| | | } |
| | | }) |
| | | }, |
| | | deleItem(index) { |
| | | if (this.form.saveDuSolutionDTOList.length === 1) { |
| | | this.$message.warning('è³å°ä¿çä¸é¡¹å
容') |
| | | return |
| | | } |
| | | this.form.saveDuSolutionDTOList.splice(index, 1) |
| | | }, |
| | | result(e, a, b) { |
| | | this.form.saveDuSolutionDTOList[a].saveDuWorkTypeDTOList[b].videoUrl = e.imgurl |
| | | }, |
| | | dele(a, b) { |
| | | if (this.form.saveDuSolutionDTOList[a].saveDuWorkTypeDTOList.length === 1) { |
| | | this.$message.warning('è³å°ä¿çä¸é¡¹å
容') |
| | | return |
| | | } |
| | | this.form.saveDuSolutionDTOList[a].saveDuWorkTypeDTOList.splice(b, 1) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .list { |
| | | .box { |
| | | width: 100%; |
| | | margin-bottom: 20px; |
| | | .list_item { |
| | | width: 100%; |
| | | margin-bottom: 20px; |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | | .list_item_input { |
| | | width: 100%; |
| | | margin-bottom: 15px; |
| | | .list_item_input_label { |
| | | .box_label { |
| | | font-size: 20px; |
| | | font-weight: 600; |
| | | margin-bottom: 10px; |
| | | font-size: 14px; |
| | | color: #606266; |
| | | span { |
| | | color: red; |
| | | margin-right: 4px; |
| | | } |
| | | } |
| | | .list_item_input_val { |
| | | .box_list { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | justify-content: space-between; |
| | | .box_list_item { |
| | | width: 33.3%; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-top: 10px; |
| | | .box_list_item_label { |
| | | flex-shrink: 0; |
| | | font-size: 14px; |
| | | color: black; |
| | | } |
| | | .box_list_item_val { |
| | | flex: 1; |
| | | font-size: 14px; |
| | | color: black; |
| | | } |
| | | } |
| | | .list_item_table { |
| | | |
| | | } |
| | | .box_x { |
| | | width: 100%; |
| | | height: 1px; |
| | | background: #ececec; |
| | | margin: 20px 0; |
| | | } |
| | | .box_fa { |
| | | font-size: 14px; |
| | | color: black; |
| | | margin-bottom: 20px; |
| | | } |
| | | .box_videos { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | align-items: center; |
| | | margin-top: 20px; |
| | | .box_videos_item { |
| | | width: 300px; |
| | | padding: 5px; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | align-items: start; |
| | | border: 1px solid #ececec; |
| | | margin-right: 20px; |
| | | margin-bottom: 20px; |
| | | &:last-child { |
| | | margin-right: 0 !important; |
| | | } |
| | | video { |
| | | flex-shrink: 0; |
| | | width: 100px; |
| | | height: 100px; |
| | | } |
| | | .box_videos_item_info { |
| | | flex: 1; |
| | | font-size: 14px; |
| | | color: black; |
| | | margin-left: 5px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | appendToBody: { |
| | | default: false |
| | | }, |
| | | |
| | | // é被æé¤çé¨é¨ID |
| | | excludeId: {} |
| | | }, |
| | |
| | | } |
| | | }, |
| | | watch: { |
| | | excludeId () { |
| | | console.log(this.type); |
| | | this.fetchData() |
| | | }, |
| | | type() { |
| | | console.log(this.type); |
| | | value () { |
| | | this.fetchData() |
| | | } |
| | | }, |
| | | methods: { |
| | | // è·åææé¨é¨ |
| | | fetchData () { |
| | | console.log(this.type); |
| | | fetchTree() |
| | | .then(records => { |
| | | // debugger |
| | | this.data = [] |
| | | this.__fillData(this.data, records) |
| | | }) |
| | |
| | | |
| | | <template> |
| | | <el-dialog |
| | | top="10vh" |
| | | class="global-window" |
| | | title="title" |
| | | :visible="visible" |
| | |
| | | :close-on-press-escape="false" |
| | | :wrapper-closable="false" |
| | | :append-to-body="true" |
| | | :modal="false" |
| | | @close="close" |
| | | > |
| | | <div slot="title" class="window__header"> |
| | | <span class="header__btn-back" @click="close"><i class="el-icon-arrow-left"></i></span>{{title}} |
| | | <!-- {{title}} --> |
| | | </div> |
| | | <div class="window__body"> |
| | | <slot></slot> |
| | | </div> |
| | | <div v-if="withFooter" class="window__footer"> |
| | | <slot name="footer"> |
| | | <el-button @click="confirm" :loading="confirmWorking" type="primary">ç¡®å®</el-button> |
| | | <el-button @click="close">åæ¶</el-button> |
| | | <el-button @click="confirm" :loading="confirmWorking" type="primary">{{text}}</el-button> |
| | | <el-button @click="close">è¿å</el-button> |
| | | </slot> |
| | | </div> |
| | | </el-drawer> |
| | |
| | | props: { |
| | | width: { |
| | | type: String, |
| | | default: '36%' |
| | | default: '100%' |
| | | }, |
| | | // æ¯å¦å
å«åºé¨æä½ |
| | | withFooter: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // æäº¤æé®æå |
| | | text: { |
| | | type: String, |
| | | default: 'ç¡®å®' |
| | | }, |
| | | // 确认æé®loadingç¶æ |
| | | confirmWorking: { |
| | |
| | | // è¾å
¥æ¡é«åº¦ |
| | | $input-height: 32px; |
| | | .global-window { |
| | | top: 80px !important; |
| | | left: 250px !important; |
| | | // 头鍿 é¢ |
| | | /deep/ .el-drawer__header { |
| | | ::v-deep .el-drawer__header { |
| | | padding: 0 10px 0 0; |
| | | line-height: 40px; |
| | | border-bottom: 1px solid #eee; |
| | | // text-align: center; |
| | | font-weight: 500; |
| | | color: #222; |
| | | // è¿åæé® |
| | | .header__btn-back { |
| | | display: inline-block; |
| | |
| | | } |
| | | } |
| | | // ä¸»ä½ |
| | | /deep/ .el-drawer__body { |
| | | ::v-deep .el-drawer__body { |
| | | display: flex; |
| | | flex-direction: column; |
| | | position: absolute; |
| | |
| | | bottom: 0; |
| | | width: 100%; |
| | | overflow: hidden; |
| | | // background-color: #f7f7f7; |
| | | // å
容 |
| | | .window__body { |
| | | // width: 1100px; |
| | | // margin: 0 auto; |
| | | // background-color: #fff; |
| | | width: 100%; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | padding: 12px 16px; |
| | | |
| | | // æ ç¾ |
| | | // .el-form-item__label { |
| | | // float: none; |
| | | // } |
| | | // å
ç´ å®½åº¦ä¸º100% |
| | | .el-form-item__content > *{ |
| | | width: 100%; |
| | | } |
| | | } |
| | | // å°¾é¨ |
| | | .window__footer { |
| | |
| | | <i class="el-icon-s-fold" v-else @click="switchCollapseMenu(null)"></i> |
| | | {{title}} |
| | | </h2> |
| | | <div class="user"> |
| | | <el-dropdown trigger="click"> |
| | | <span class="el-dropdown-link"> |
| | | <img v-if="userInfo != null" :src="userInfo.avatar == null ? '@/assets/images/avatar/man.png' : userInfo.avatar" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i> |
| | | </span> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item @click.native="changePwd">ä¿®æ¹å¯ç </el-dropdown-item> |
| | | <el-dropdown-item @click.native="logout">éåºç»å½</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <tagsview class="tags"></tagsview> |
| | | </div> |
| | | </div> |
| | | <!-- ä¿®æ¹å¯ç --> |
| | | <GlobalWindow |
| | | title="ä¿®æ¹å¯ç " |
| | | :visible.sync="visible.changePwd" |
| | | @confirm="confirmChangePwd" |
| | | @close="visible.changePwd = false" |
| | | > |
| | | <el-form :model="changePwdData.form" ref="changePwdDataForm" :rules="changePwdData.rules"> |
| | | <el-form-item label="åå§å¯ç " prop="oldPwd" required> |
| | | <el-input v-model="changePwdData.form.oldPwd" type="password" placeholder="请è¾å
¥åå§å¯ç " maxlength="30" show-password></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ°å¯ç " prop="newPwd" required> |
| | | <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="请è¾å
¥æ°å¯ç " maxlength="30" show-password></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="确认æ°å¯ç " prop="confirmPwd" required> |
| | | <el-input v-model="changePwdData.form.confirmPwd" type="password" placeholder="è¯·åæ¬¡è¾å
¥æ°å¯ç " maxlength="30" show-password></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { mapState, mapMutations } from 'vuex' |
| | | import GlobalWindow from './GlobalWindow' |
| | | import { logout, updatePwd } from '@/api/system/common' |
| | | import tagsview from "./tagsview.vue" |
| | | export default { |
| | | name: 'Header', |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | return { |
| | | visible: { |
| | | // ä¿®æ¹å¯ç |
| | | changePwd: false |
| | | }, |
| | | isWorking: { |
| | | // ä¿®æ¹å¯ç |
| | | changePwd: false |
| | | }, |
| | | username: 'bob', // ç¨æ·å |
| | | // ä¿®æ¹å¯ç å¼¹æ¡ |
| | | changePwdData: { |
| | | form: { |
| | | oldPwd: '', |
| | | newPwd: '', |
| | | confirmPwd: '' |
| | | }, |
| | | rules: { |
| | | oldPwd: [ |
| | | { required: true, message: '请è¾å
¥åå§å¯ç ' } |
| | | ], |
| | | newPwd: [ |
| | | { required: true, message: '请è¾å
¥æ°å¯ç ' } |
| | | ], |
| | | confirmPwd: [ |
| | | { required: true, message: 'è¯·åæ¬¡è¾å
¥æ°å¯ç ' } |
| | | ] |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | components: { tagsview }, |
| | | computed: { |
| | | ...mapState(['menuData', 'userInfo']), |
| | | ...mapState(['menuData']), |
| | | title () { |
| | | return this.$route.meta.title |
| | | } |
| | | }, |
| | | filters: { |
| | | // å±ç¤ºåç§° |
| | | displayName (userInfo) { |
| | | if (userInfo == null) { |
| | | return '' |
| | | } |
| | | if (userInfo.realname != null && userInfo.realname.trim().length > 0) { |
| | | return userInfo.realname |
| | | } |
| | | return userInfo.username |
| | | } |
| | | }, |
| | | methods: { |
| | | ...mapMutations(['setUserInfo', 'switchCollapseMenu']), |
| | | // ä¿®æ¹å¯ç |
| | | changePwd () { |
| | | this.visible.changePwd = true |
| | | this.$nextTick(() => { |
| | | this.$refs.changePwdDataForm.resetFields() |
| | | }) |
| | | }, |
| | | // ç¡®å®ä¿®æ¹å¯ç |
| | | confirmChangePwd () { |
| | | if (this.isWorking.changePwd) { |
| | | return |
| | | } |
| | | this.$refs.changePwdDataForm.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | // éªè¯ä¸¤æ¬¡å¯ç è¾å
¥æ¯å¦ä¸è´ |
| | | if (this.changePwdData.form.newPwd !== this.changePwdData.form.confirmPwd) { |
| | | this.$tip.warning('两次å¯ç è¾å
¥ä¸ä¸è´') |
| | | return |
| | | } |
| | | // æ§è¡ä¿®æ¹ |
| | | this.isWorking.changePwd = true |
| | | updatePwd({ |
| | | oldPwd: this.changePwdData.form.oldPwd, |
| | | newPwd: this.changePwdData.form.newPwd |
| | | }) |
| | | .then(() => { |
| | | this.$tip.apiSuccess('ä¿®æ¹æå') |
| | | this.visible.changePwd = false |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking.changePwd = false |
| | | }) |
| | | }) |
| | | }, |
| | | // éåºç»å½ |
| | | logout () { |
| | | logout() |
| | | .then(() => { |
| | | this.setUserInfo(null) |
| | | this.$router.push({ name: 'login' }) |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | } |
| | | ...mapMutations(['switchCollapseMenu']), |
| | | } |
| | | } |
| | | </script> |
| | |
| | | background: #fff; |
| | | height: 100%; |
| | | display: flex; |
| | | overflow: hidden; |
| | | h2 { |
| | | width: 50%; |
| | | flex-shrink: 0; |
| | | line-height: $header-height; |
| | | line-height: 48px; |
| | | width: 200px; |
| | | font-size: 19px; |
| | | font-weight: 600; |
| | | color: #606263; |
| | | font-weight: normal; |
| | | display: inline; |
| | | & > i { |
| | | font-size: 20px; |
| | | margin-right: 12px; |
| | | } |
| | | } |
| | | .user { |
| | | width: 50%; |
| | | flex-shrink: 0; |
| | | text-align: right; |
| | | .el-dropdown-link { |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | .el-dropdown { |
| | | top: 2px; |
| | | height: 100%; |
| | | } |
| | | img { |
| | | width: 32px; |
| | | position: relative; |
| | | // top: 10px; |
| | | margin-right: 10px; |
| | | } |
| | | } |
| | | } |
| | | // 䏿èåæ¡ |
| | | .el-dropdown-menu { |
| | | width: 140px; |
| | | .el-dropdown-menu__item:hover { |
| | | background: #E3EDFB; |
| | | color: $primary-color; |
| | | } |
| | | } |
| | | // .tags { |
| | | // padding-bottom: 16px; |
| | | // } |
| | | |
| | | </style> |
| | |
| | | <template> |
| | | <div class="import-button"> |
| | | <el-button type="primary" @click="$refs.importWindow.open(text)">{{text}}</el-button> |
| | | <ImportWindow :action="action" :template-path="templatePath" :template-name="templateName" ref="importWindow" @success="handleSuccess"/> |
| | | <ImportWindow :action="action" :template-path="templatePath" :template-name="templateName" ref="importWindow" @download="$emit('download')" @success="handleSuccess"/> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | */ |
| | | confirm () { |
| | | if (this.form.file == null) { |
| | | this.$message.warning('è¯·éæ©æä»¶') |
| | | this.$tip.warning('è¯·éæ©æä»¶') |
| | | return |
| | | } |
| | | this.isWorking = true |
| | |
| | | } |
| | | }) |
| | | .then(() => { |
| | | this.$message.success('导å
¥æå') |
| | | this.$tip.success('导å
¥æå') |
| | | this.visible = false |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$message.error(e) |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | |
| | | downloadTemplate () { |
| | | const link = document.createElement('a') |
| | | link.setAttribute('download', this.templateName) //ä¸è½½çæä»¶å |
| | | // console.log(`window.location.origin`, window.location.origin); |
| | | // console.log(`process.env.VUE_APP_CONTEXT_PATH`, process.env.VUE_APP_CONTEXT_PATH); |
| | | // console.log(`this.templatePath`, this.templatePath); |
| | | console.log(`${window.location.origin}${process.env.VUE_APP_CONTEXT_PATH}${this.templatePath}`); |
| | | link.href = `${window.location.origin}${process.env.VUE_APP_CONTEXT_PATH}${this.templatePath}` //æä»¶url |
| | | link.click() |
| | | // this.$emit('download') |
| | | }, |
| | | /** |
| | | * æä»¶ä¸ä¼ ååå¨ä¸ä¼ çæä»¶ |
| | |
| | | $cycle-size01: 16px; |
| | | $cycle-size02: 6px; |
| | | $normal-color: #00CC99; |
| | | $shadow-color: #00CCa9; |
| | | $warn-color: #FFCC33; |
| | | $warn-shadow-color: #FFCbe3; |
| | | $danger-color: #FF3300; |
| | | $dange-shadowr-color: #FF3310; |
| | | @mixin light-status ($cycle-bg) { |
| | | em { |
| | | background: $cycle-bg; |
| | | i { |
| | | background: $cycle-bg - 30; |
| | | background: mix($cycle-bg, #000030, 0.5); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | @keyframes shine-normal { |
| | | 0% { |
| | | box-shadow: 0 0 5px $normal-color + 10; |
| | | box-shadow: 0 0 5px $shadow-color; |
| | | } |
| | | 25% { |
| | | box-shadow: 0 0 10px $normal-color + 10; |
| | | box-shadow: 0 0 10px $shadow-color; |
| | | } |
| | | 50% { |
| | | box-shadow: 0 0 15px $normal-color + 10; |
| | | box-shadow: 0 0 15px $shadow-color; |
| | | } |
| | | 100% { |
| | | box-shadow: 0 0 20px $normal-color + 10; |
| | | box-shadow: 0 0 20px $shadow-color; |
| | | } |
| | | } |
| | | @keyframes shine-warn { |
| | | 0% { |
| | | box-shadow: 0 0 5px $warn-color - 50; |
| | | box-shadow: 0 0 5px $warn-shadow-color; |
| | | } |
| | | 25% { |
| | | box-shadow: 0 0 10px $warn-color - 50; |
| | | box-shadow: 0 0 10px $warn-shadow-color; |
| | | } |
| | | 50% { |
| | | box-shadow: 0 0 15px $warn-color - 50; |
| | | box-shadow: 0 0 15px $warn-shadow-color; |
| | | } |
| | | 100% { |
| | | box-shadow: 0 0 20px $warn-color - 50; |
| | | box-shadow: 0 0 20px $warn-shadow-color; |
| | | } |
| | | } |
| | | @keyframes shine-danger { |
| | | 0% { |
| | | box-shadow: 0 0 5px $danger-color + 10; |
| | | box-shadow: 0 0 5px $dange-shadowr-color; |
| | | } |
| | | 25% { |
| | | box-shadow: 0 0 10px $danger-color + 10; |
| | | box-shadow: 0 0 10px $dange-shadowr-color; |
| | | } |
| | | 50% { |
| | | box-shadow: 0 0 15px $danger-color + 10; |
| | | box-shadow: 0 0 15px $dange-shadowr-color; |
| | | } |
| | | 100% { |
| | | box-shadow: 0 0 20px $danger-color + 10; |
| | | box-shadow: 0 0 20px $dange-shadowr-color; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="menu" :class="{collapse: menuData.collapse}"> |
| | | <div class="logo"> |
| | | <div><img src="@/assets/logo.png"></div> |
| | | <h1 :class="{ hidden: menuData.collapse }">äºæä¿å®¢æ·æå¡ç³»ç»</h1> |
| | | </div> |
| | | <scrollbar> |
| | | <el-menu |
| | | ref="menu" |
| | |
| | | :collapse="menuData.collapse" |
| | | :default-openeds="defaultOpeneds" |
| | | :collapse-transition="false" |
| | | unique-opened |
| | | @select="handleSelect" |
| | | > |
| | | <MenuItems v-for="menu in menuData.list" :key="menu.index" :menu="menu" :is-root-menu="true"/> |
| | |
| | | const menuConfig = this.__getMenuConfig(path, 'url', this.menuData.list) |
| | | if (menuConfig == null) { |
| | | return null |
| | | } else { |
| | | this.$store.commit("pushtags", menuConfig) |
| | | } |
| | | // console.log(menuConfig.index); |
| | | return menuConfig.index |
| | | }, |
| | | // é»è®¤å±å¼çèåindex |
| | | defaultOpeneds () { |
| | | return this.menuData.list.map(menu => menu.index) |
| | | // return this.menuData.list.map(menu => menu.index) |
| | | |
| | | return [this.menuData.list[0].index] |
| | | } |
| | | }, |
| | | methods: { |
| | |
| | | if (menuConfig.url == null || menuConfig.url.trim().length === 0) { |
| | | return |
| | | } |
| | | |
| | | this.$router.push(menuConfig.url) |
| | | this.$store.commit("pushtags", menuConfig) |
| | | }, |
| | | // è·åèåé
ç½® |
| | | __getMenuConfig (value, key, menus) { |
| | |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | // LOGO |
| | | .logo { |
| | | height: 60px; |
| | | flex-shrink: 0; |
| | | line-height: 60px; |
| | | overflow: hidden; |
| | | display: flex; |
| | | background: $primary-color - 20; |
| | | padding: 0 16px; |
| | | & > div { |
| | | width: 32px; |
| | | flex-shrink: 0; |
| | | margin-right: 12px; |
| | | img { |
| | | width: 100%; |
| | | flex-shrink: 0; |
| | | vertical-align: middle; |
| | | position: relative; |
| | | top: -2px; |
| | | } |
| | | } |
| | | h1 { |
| | | font-size: 16px; |
| | | font-weight: 500; |
| | | transition: opacity ease .3s; |
| | | overflow: hidden; |
| | | &.hidden { |
| | | opacity: 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | | <style lang="scss"> |
| | |
| | | background: $primary-color; |
| | | // éä¸ç¶æ |
| | | &.is-active { |
| | | background: $primary-color - 40 !important; |
| | | background: $primary-color-sel !important; |
| | | } |
| | | // æ¬æµ® |
| | | &:hover { |
| | | background-color: $primary-color - 12; |
| | | background-color: $primary-color-hover; |
| | | } |
| | | &:focus { |
| | | background: $primary-color; |
| | |
| | | } |
| | | &.is-active { |
| | | .el-submenu__title{ |
| | | background-color: $primary-color - 20; |
| | | background-color: $icon-background-color; |
| | | } |
| | | .el-menu .el-menu-item{ |
| | | background-color: $primary-color - 20; |
| | | background-color: $icon-background-color; |
| | | // æ¬æµ® |
| | | &:hover { |
| | | background-color: $primary-color - 30; |
| | | background-color: $icon-background-color; |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | <script> |
| | | import TreeSelect from './TreeSelect' |
| | | import { fetchTree } from '@/api/system/menu' |
| | | import { fetchTree, fetchTree1 } from '@/api/system/menu' |
| | | export default { |
| | | name: 'MenuSelect', |
| | | components: { TreeSelect }, |
| | |
| | | value: {}, |
| | | inline: { |
| | | default: true |
| | | }, |
| | | type: { |
| | | default: '0' |
| | | }, |
| | | placeholder: { |
| | | default: 'è¯·éæ©èå' |
| | |
| | | }, |
| | | appendToBody: { |
| | | default: false |
| | | }, |
| | | type: { |
| | | type: String|Number, |
| | | default: 0 |
| | | }, |
| | | // é被æé¤çé¨é¨ID |
| | | excludeId: {} |
| | |
| | | methods: { |
| | | // è·åææèå |
| | | fetchData () { |
| | | fetchTree({}, this.type) |
| | | if (this.type === '1') { |
| | | fetchTree1() |
| | | .then(records => { |
| | | this.data = [] |
| | | this.__fillData(this.data, records) |
| | |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | } else { |
| | | fetchTree() |
| | | .then(records => { |
| | | this.data = [] |
| | | this.__fillData(this.data, records) |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | } |
| | | }, |
| | | // å¡«å
èåæ |
| | | __fillData (list, pool) { |
| | |
| | | <div class="table-pagination"> |
| | | <el-pagination |
| | | :current-page="pagination.pageIndex" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :page-sizes="pagination.pageSizes||[10, 20, 30, 40]" |
| | | :page-size="pagination.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="pagination.total" |
| | |
| | | } |
| | | .vue-treeselect { |
| | | line-height: 30px; |
| | | /deep/ .vue-treeselect__control { |
| | | ::deep .vue-treeselect__control { |
| | | height: 32px; |
| | | .vue-treeselect__single-value { |
| | | line-height: 30px; |
| | |
| | | height: 50px; |
| | | overflow: hidden; |
| | | padding-right: 250px; |
| | | /deep/ section { |
| | | ::v-deep section { |
| | | position: absolute; |
| | | top: 0; |
| | | right: 100px; |
| | |
| | | } |
| | | .vue-treeselect { |
| | | line-height: 30px; |
| | | /deep/ .vue-treeselect__control { |
| | | ::v-deep .vue-treeselect__control { |
| | | height: 32px; |
| | | .vue-treeselect__single-value { |
| | | line-height: 30px; |
| | |
| | | <template> |
| | | <div> |
| | | <el-upload |
| | | class="avatar-uploader" |
| | | accept=".png,.jpg" |
| | | :style="customStyle" |
| | | :action="uploadImgUrl" |
| | | :data="uploadData" |
| | |
| | | type: Object, |
| | | default: () => {} |
| | | }, |
| | | uploadData: Object, |
| | | tipsLabel: '', |
| | | customStyle: { |
| | | type: String, |
| | | default: 'width: 90px; height: 90px;' |
| | | } |
| | | }, |
| | | uploadData: Object |
| | | }, |
| | | data() { |
| | | return { |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload', |
| | | // uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/uploadPicture', |
| | | // uploadData: { |
| | | // folder: 'upload', |
| | | // type: 'image' |
| | | // }, |
| | | imgurlfull: '' |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload' |
| | | } |
| | | }, |
| | | |
| | |
| | | let { data } = res |
| | | this.file.imgurl = data.imgaddr; |
| | | this.file.imgurlfull = data.url; |
| | | console.log(this.file); |
| | | this.$message.success('ä¸ä¼ æå') |
| | | this.$emit('uploadSuccess', { imgurl: data.imgaddr, imgurlfull: data.url }) |
| | | this.$emit('uploadSuccess', { imgurl: data.imgaddr, imgurlfull: data.url, name: data.originname }) |
| | | } else { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$tip.apiFailed('ä¸ä¼ 失败') |
| | | } |
| | | this.$emit('uploadEnd') |
| | | }, |
| | | uploadError() { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$tip.apiFailed('ä¸ä¼ 失败') |
| | | this.$emit('endUpload') |
| | | }, |
| | | // // æ¦æª |
| | | beforeAvatarUpload(file) { |
| | | this.$emit('uploadBegin') |
| | | return true; |
| | | }, |
| | | }, |
| | | return true |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | $image-width: 100px; |
| | | .avatar-uploader { |
| | | width: $image-width; |
| | | height: $image-width; |
| | | } |
| | | ::v-deep .el-upload { |
| | | border: 1px dashed #d9d9d9; |
| | | border-radius: 6px; |
| | | cursor: pointer; |
| | | position: relative; |
| | | width: $image-width; |
| | | height: $image-width; |
| | | overflow: hidden; |
| | | } |
| | | .avatar-uploader .el-upload:hover { |
| | | border-color: #409EFF; |
| | | } |
| | | .avatar-uploader-icon { |
| | | line-height: 90px; |
| | | font-size: 28px; |
| | | color: #8c939d; |
| | | line-height: 90px; |
| | | width: $image-width; |
| | | height: $image-width; |
| | | text-align: center; |
| | | } |
| | | .avatar { |
| | | width: $image-width; |
| | | height: $image-width; |
| | | display: block; |
| | | } |
| | | .tips-style { |
| | |
| | | line-height: 13px; |
| | | } |
| | | </style> |
| | | <style lang="scss" scoped> |
| | | ::v-deep .el-upload--picture-card{ |
| | | width: 90px !important; |
| | | height: 90px !important; |
| | | } |
| | | ::v-deep .el-upload-list__item { |
| | | width: 90px !important; |
| | | height: 90px !important; |
| | | } |
| | | .icon { |
| | | -webkit-transform: translate(-50%,-50%); |
| | | -ms-transform: translate(-50%,-50%); |
| | | transform: translate(0%, -85%); |
| | | } |
| | | ::v-deep .el-upload-list__item { |
| | | width: 90px !important; |
| | | height: 90px !important; |
| | | } |
| | | </style> |
| | | |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload', |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/uploadLocal', |
| | | |
| | | realList: [], |
| | | srcList: [], |
| | |
| | | watch: { |
| | | fileList: { |
| | | handler(val) { |
| | | console.log(val); |
| | | if (val.length==0) { |
| | | this.realList = [] |
| | | this.srcList = [] |
| | |
| | | this.showViewer = false |
| | | }, |
| | | handleRemove(file) { |
| | | console.log(file.url); |
| | | let tempIndex = this.fileList.findIndex(item => item.url === file.url) |
| | | console.log(this.fileList); |
| | | let tempIndex = this.realList.findIndex(item => item.url === file.url) |
| | | // debugger |
| | | this.realList.splice(tempIndex, 1) |
| | | this.fileList.splice(tempIndex, 1) |
| | |
| | | <p class="tip" v-if="form.parent != null && form.id == null">为 <em>{{parentName}}</em> æ°å»ºåèå</p> |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="ä¸çº§èå" prop="parentId"> |
| | | <MenuSelect v-if="visible" v-model="form.parentId" :type="type" placeholder="è¯·éæ©ä¸çº§èå" :exclude-id="excludeMenuId" clearable :inline="false"/> |
| | | <MenuSelect v-if="visible" v-model="form.parentId" placeholder="è¯·éæ©ä¸çº§èå" :exclude-id="excludeMenuId" clearable :inline="false"/> |
| | | </el-form-item> |
| | | <el-form-item label="èååç§°" prop="name" required> |
| | | <el-input v-model="form.name" placeholder="请è¾å
¥èååç§°" v-trim maxlength="50"/> |
| | |
| | | name: 'OperaMenuWindow', |
| | | extends: BaseOpera, |
| | | components: { MenuSelect, GlobalWindow }, |
| | | props: { |
| | | type: { |
| | | type: String|Number, |
| | | default: 0 |
| | | } |
| | | }, |
| | | data () { |
| | | return { |
| | | icons, |
| | |
| | | name: '', |
| | | path: '', |
| | | icon: '', |
| | | type: '', |
| | | remark: '' |
| | | remark: '', |
| | | type: '' |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | |
| | | this.excludeMenuId = null |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form.type = this.type |
| | | this.form.id = null |
| | | this.form.type = parent.type |
| | | this.form.parentId = parent == null ? null : parent.id |
| | | this.parentName = parent == null ? null : parent.name |
| | | }) |
| | |
| | | /** |
| | | * @role è§è²å¯¹è±¡ |
| | | */ |
| | | open (role, type=0) { |
| | | fetchMenuList({}, type) |
| | | open (role) { |
| | | fetchMenuList({}) |
| | | .then(records => { |
| | | this.role = role |
| | | this.menus = records |
| | |
| | | id: null, |
| | | code: '', |
| | | name: '', |
| | | remark: '', |
| | | type: '', |
| | | remark: '' |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title, target, type) { |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form.type = type |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | this.form.type = type |
| | | }) |
| | | }, |
| | | confirm () { |
| | |
| | | <script> |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { createRolePermission } from '@/api/system/role' |
| | | import { fetchAll, fetchAllCom } from '@/api/system/permission' |
| | | import { fetchAll } from '@/api/system/permission' |
| | | export default { |
| | | name: 'PermissionConfigWindow', |
| | | components: { GlobalWindow }, |
| | |
| | | /** |
| | | * @role è§è²å¯¹è±¡ |
| | | */ |
| | | open (role, type=0) { |
| | | debugger |
| | | open (role) { |
| | | if (this.$refs.permissionTransfer) { |
| | | this.$refs.permissionTransfer.clearQuery('left') |
| | | this.$refs.permissionTransfer.clearQuery('right') |
| | | } |
| | | let action = type==0 ? fetchAll : fetchAllCom |
| | | action() |
| | | fetchAll() |
| | | .then(records => { |
| | | this.role = role |
| | | this.permissions = records |
| | |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="ç¨æ·å" prop="username" required> |
| | | <el-input v-model="form.username" placeholder="请è¾å
¥ç¨æ·å" v-trim maxlength="50"/> |
| | | <el-form-item label="è´¦å·" prop="username" required> |
| | | <el-input v-model="form.username" placeholder="请è¾å
¥" v-trim maxlength="50"/> |
| | | </el-form-item> |
| | | <el-form-item label="å§å" prop="realname" required> |
| | | <el-input v-model="form.realname" placeholder="请è¾å
¥å§å" v-trim maxlength="50"/> |
| | | <el-form-item label="åç§°" prop="realname" required> |
| | | <el-input v-model="form.realname" placeholder="请è¾å
¥" v-trim maxlength="50"/> |
| | | </el-form-item> |
| | | <el-form-item label="æ§å«" prop="sex" required> |
| | | <el-radio-group v-model="form.sex"> |
| | | <el-radio label="1">ç·</el-radio> |
| | | <el-radio label="0">女</el-radio> |
| | | </el-radio-group> |
| | | <el-form-item label="èç³»æ¹å¼" prop="mobile"> |
| | | <el-input v-model="form.mobile" placeholder="请è¾å
¥" v-trim maxlength="11"/> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="头å" prop="avatar" required> |
| | | <el-radio-group v-model="form.avatar" class="form-item-avatar"> |
| | | <el-radio label="https://dmtest.ahapp.net/preselectfile/man.png" border><img src="https://dmtest.ahapp.net/preselectfile/man.png" alt=""></el-radio> |
| | | <el-radio label="https://dmtest.ahapp.net/preselectfile/woman.png" border><img src="https://dmtest.ahapp.net/preselectfile/woman.png" alt=""></el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> --> |
| | | <el-form-item v-if="form.id == null" label="åå§å¯ç " prop="password" required> |
| | | <el-input v-model="form.password" type="password" placeholder="请è¾å
¥åå§å¯ç " maxlength="30" show-password/> |
| | | <el-form-item label="éªè¯ç " prop="captcha"> |
| | | <div style="width: 100%; display: flex; align-items: center;"> |
| | | <el-input v-model="form.captcha" maxlength="11" type="number" style="flex: 1;" placeholder="请è¾å
¥" v-trim/> |
| | | <el-button type="primary" style="flex-shrink: 0; margin-left: 15px;" @click="send" v-if="num === 0">åééªè¯ç </el-button> |
| | | <el-button type="primary" style="flex-shrink: 0; margin-left: 15px;" v-else>{{num}}s</el-button> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="æå±é¨é¨" prop="departmentId" required> |
| | | <DepartmentSelect v-model="form.departmentId" placeholder="è¯·éæ©ç¨æ·æå±é¨é¨" :inline="false" clearable/> |
| | | </el-form-item> |
| | | <el-form-item label="å²ä½" prop="positionId"> |
| | | <PositionSelect v-model="form.positionIds" placeholder="è¯·éæ©ç¨æ·æå¨å²ä½" :inline="false" :multiple="true" clearable/> |
| | | </el-form-item> |
| | | <el-form-item label="å·¥å·" prop="empNo"> |
| | | <el-input v-model="form.empNo" placeholder="请è¾å
¥å·¥å·" v-trim maxlength="50"/> |
| | | </el-form-item> |
| | | <el-form-item label="ææºå·ç " prop="mobile"> |
| | | <el-input v-model="form.mobile" placeholder="请è¾å
¥ææºå·ç " v-trim maxlength="11"/> |
| | | </el-form-item> |
| | | <el-form-item label="é®ç®±" prop="email"> |
| | | <el-input v-model="form.email" placeholder="请è¾å
¥é®ç®±" v-trim maxlength="200"/> |
| | | </el-form-item> |
| | | <el-form-item label="çæ¥" prop="birthday"> |
| | | <el-date-picker v-model="form.birthday" value-format="yyyy-MM-dd" placeholder="è¯·éæ©ç¨æ·çæ¥"/> |
| | | <el-form-item label="æéæä»¶é®ç®±" prop="email"> |
| | | <el-input v-model="form.email" placeholder="请è¾å
¥" v-trim /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | |
| | | import DepartmentSelect from '@/components/common/DepartmentSelect' |
| | | import PositionSelect from '@/components/common/PositionSelect' |
| | | import { checkMobile, checkEmail } from '@/utils/form' |
| | | import { sendSms } from '@/api/business/smsEmail' |
| | | |
| | | export default { |
| | | name: 'OperaUserWindow', |
| | |
| | | id: null, |
| | | username: '', // ç¨æ·å |
| | | realname: '', // å§å |
| | | empNo: '', // å·¥å· |
| | | departmentId: null, // æå±é¨é¨ID |
| | | positionIds: [], // æå±å²ä½IDé |
| | | // avatar: '/avatar/man.png', // 头å |
| | | password: '', // å¯ç |
| | | mobile: '', // ææºå·ç |
| | | email: '', // é®ç®± |
| | | sex: '1', // æ§å« |
| | | birthday: '' // çæ¥ |
| | | email: '', |
| | | captcha: '' |
| | | }, |
| | | num: 0, |
| | | timer: null, |
| | | // éªè¯è§å |
| | | rules: { |
| | | username: [ |
| | |
| | | realname: [ |
| | | { required: true, message: '请è¾å
¥å§å' } |
| | | ], |
| | | password: [ |
| | | { required: true, message: '请è¾å
¥å¯ç ' } |
| | | ], |
| | | departmentId: [ |
| | | { required: true, message: 'è¯·éæ©é¨é¨' } |
| | | ], |
| | | avatar: [ |
| | | { required: true, message: 'è¯·éæ©ç¨æ·å¤´å' } |
| | | ], |
| | | sex: [ |
| | | { required: true, message: 'è¯·éæ©ç¨æ·æ§å«' } |
| | | ], |
| | | mobile: [ |
| | | { required: true, validator: checkMobile } |
| | | ], |
| | | email: [ |
| | | { validator: checkEmail } |
| | | { required: true, message: '请è¾å
¥é®ç®±' } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | send() { |
| | | if (!this.form.mobile) { |
| | | this.$message.warning('请è¾å
¥ææºå·') |
| | | return |
| | | } |
| | | sendSms({ phone: this.form.mobile }) |
| | | .then(res => { |
| | | this.num = 60 |
| | | this.setTime() |
| | | }) |
| | | }, |
| | | setTime() { |
| | | this.timer = setInterval(() => { |
| | | this.num -= 1 |
| | | if (this.num === 0) { |
| | | clearInterval(this.timer) |
| | | this.num = 0 |
| | | } |
| | | }, 1000) |
| | | }, |
| | | /** |
| | | * @title çªå£æ é¢ |
| | | * @target ç¼è¾çç¨æ·å¯¹è±¡ |
| | |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | clearInterval(this.timer) |
| | | this.num = 0 |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | |
| | | <template> |
| | | <div> |
| | | <CommonHeader /> |
| | | <div style="height:10px; background: #fff"></div> |
| | | <el-container class="app-layout"> |
| | | <el-aside :class="{collapse:menuData.collapse}"> |
| | | <Menu/> |
| | |
| | | <header> |
| | | <AppHeader/> |
| | | </header> |
| | | <div style="height:10px;"></div> |
| | | <main> |
| | | <transition name="fade"> |
| | | <keep-alive> |
| | | <router-view></router-view> |
| | | </keep-alive> |
| | | </transition> |
| | | </main> |
| | | </el-main> |
| | | </el-container> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { mapState } from 'vuex' |
| | | import Header from '@/components/common/Header' |
| | | import CommonHeader from '@/components/common/CommonHeader' |
| | | import Menu from '@/components/common/Menu' |
| | | export default { |
| | | name: 'DefaultLayout', |
| | | components: { AppHeader: Header, Menu }, |
| | | computed: { |
| | | ...mapState(['menuData']) |
| | | components: { AppHeader: Header, Menu, CommonHeader }, |
| | | data() { |
| | | return { |
| | | isFinishData: false |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapState(['menuData', 'userInfo']) |
| | | }, |
| | | |
| | | methods: { |
| | | |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | |
| | | .el-container { |
| | | background: #F7F8F9; |
| | | height: 100%; |
| | | |
| | | display: flex; |
| | | overflow: hidden; |
| | | // overflow: hidden; |
| | | overflow: scroll; |
| | | // 左边èå |
| | | .el-aside { |
| | | width: $menu-width !important; |
| | | flex-shrink: 0; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | // height: 100%; |
| | | // height: 900px; |
| | | height: calc(100vh - 80px); |
| | | overflow-y: scroll; |
| | | overflow-x: hidden; |
| | | background: $primary-color; |
| | | color: #fff; |
| | | transition: width ease .3s; |
| | | scrollbar-width: none; /* firefox */ |
| | | -ms-overflow-style: none; /* IE 10+ */ |
| | | &::-webkit-scrollbar { |
| | | display: none; /* Chrome Safari */ |
| | | } |
| | | &.collapse { |
| | | width: 64px !important; |
| | | } |
| | |
| | | // å³è¾¹å
容 |
| | | .el-main { |
| | | width: 100%; |
| | | height: 100%; |
| | | // height: 100%; |
| | | height: calc(100vh - 90px); |
| | | padding: 0; |
| | | position: relative; |
| | | display: flex; |
| | | flex-direction: column; |
| | | overflow: hidden; |
| | | overflow-y: scroll; |
| | | overflow-x: hidden; |
| | | scrollbar-width: none; /* firefox */ |
| | | -ms-overflow-style: none; /* IE 10+ */ |
| | | &::-webkit-scrollbar { |
| | | display: none; /* Chrome Safari */ |
| | | } |
| | | & > header { |
| | | height: $header-height; |
| | | height: 48px; |
| | | flex-shrink: 0; |
| | | } |
| | | & > main { |
| | |
| | | transition: all .5s; |
| | | position: absolute; |
| | | } |
| | | .comfirm { |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | right: 0; |
| | | bottom: 0; |
| | | background-color: rgba(0, 0, 0, 0.3); |
| | | z-index: 1000; |
| | | .container { |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | right: 0; |
| | | bottom: 0; |
| | | margin: auto; |
| | | background-color: #fff; |
| | | width: 500px; |
| | | height: 120px; |
| | | padding: 30px; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | .complete { |
| | | display: flex; |
| | | flex-direction: row-reverse; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="table-layout"> |
| | | <!-- å¤´é¨ --> |
| | | <div v-if="withBreadcrumb" class="table-header"> |
| | | <!-- <div v-if="withBreadcrumb" class="table-header"> |
| | | <el-breadcrumb separator="/"> |
| | | <el-breadcrumb-item v-for="path in paths" :key="path">{{path}}</el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | </div> |
| | | </div>--> |
| | | <Profile :roles="roles" :permissions="permissions"> |
| | | <!-- æç´¢è¡¨åé¨å --> |
| | | <div class="table-search-form"> |
| | |
| | | if (storeMenus.length > 0 && this.homePage == null) { |
| | | this.setHomePage(storeMenus[0]) |
| | | } |
| | | await fetchMenuTree({ type: 0 }) |
| | | await fetchMenuTree(this.userInfo.type) |
| | | .then(menus => { |
| | | // æ·»å èå |
| | | storeMenus.push.apply(storeMenus, menus) |
| | |
| | | import message from './message' |
| | | |
| | | export default function (response, decode = true, mime = 'application/octet-stream') { |
| | | debugger |
| | | // å½ä¸è½½æ¥å£æ²¡ææåè¿åæµå¹¶ä¸æ¥å£è¿åçæ¯JSONæ¶éè¦å¯¹ååºæµè¿è¡è§£æå¹¶æç¤ºé误ãï¼å¤çä¸è½½æ¥å£åºç°æªç¥å¼å¸¸çæ
åµï¼ |
| | | if (response.headers['content-type'] === 'application/json') { |
| | | const blob = new Blob([response.data]) |
| | | const fileReader = new FileReader() |
| | | fileReader.readAsText(blob, 'UTF-8') |
| | | fileReader.readAsText(blob, 'utf-8') |
| | | fileReader.onload = function () { |
| | | message.apiFailed(JSON.parse(fileReader.result)) |
| | | } |
| | |
| | | type: 'warning' |
| | | }) |
| | | }, |
| | | resetConfirm (message) { |
| | | return MessageBox.confirm(message, 'éç½®æé', { |
| | | confirmButtonText: '确认éç½®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }) |
| | | }, |
| | | // ç¦ç¨äºæ¬¡ç¡®è®¤ |
| | | disableConfirm (message) { |
| | | return MessageBox.confirm(message, 'ç¦ç¨æé', { |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }) |
| | | }, |
| | | // å®åæé |
| | | messageApprove (message) { |
| | | return MessageBox.confirm(message, 'å®¡æ ¸æé', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }) |
| | | }, |
| | | // é®å·ç¡®å®æé |
| | | messageWaring (message, title, confirmText='ç¡®å®', cancelText='åæ¶') { |
| | | return MessageBox.confirm(message, title, { |
| | | confirmButtonText: confirmText, |
| | | cancelButtonText: cancelText, |
| | | type: 'warning' |
| | | }) |
| | | }, |
| | | // é®å·ç¡®å®æé |
| | | messageConfirm (message, confirmText='ç¡®å®', cancelText='åæ¶') { |
| | | return MessageBox.confirm(message, "æä½ç¡®è®¤", { |
| | | confirmButtonText: confirmText, |
| | | cancelButtonText: cancelText, |
| | | type: 'warning' |
| | | }) |
| | | }, |
| | | // 确认æ¯å¦æå¡è¯¥ä¼ä¸ |
| | | cancelOrder (message) { |
| | | return MessageBox.confirm(message, 'åæ¶æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }) |
| | | } |
| | | } |
| | |
| | | import AppLayout from '@/layouts/AppLayout' |
| | | import { getUserInfo } from '@/api/system/common' |
| | | const Login = () => import('@/views/login') |
| | | |
| | | const ErrorNoPermissions = () => import('@/views/no-permissions') |
| | | const Error404 = () => import('@/views/not-found') |
| | | |
| | |
| | | path: '/login', |
| | | component: Login |
| | | }, |
| | | |
| | | // æ æé |
| | | { |
| | | name: 'no-permissions', |
| | |
| | | list: [], |
| | | // æ¯å¦æ¶èµ· |
| | | collapse: false |
| | | } |
| | | }, |
| | | //tagsæ°ç» |
| | | tags:[], |
| | | //tagsviewæ ç¾æ¾ç¤ºéè |
| | | isCollapse:false |
| | | } |
| | | |
| | | const mutations = { |
| | |
| | | }, |
| | | // 设置已ç»å½çç¨æ·ä¿¡æ¯ |
| | | setUserInfo: (state, data) => { |
| | | state.userInfo = data |
| | | state.userInfo = { |
| | | ...state.userInfo, |
| | | ...data |
| | | } |
| | | }, |
| | | |
| | | // 设置é¦é¡µè·¯ç±ä¿¡æ¯ |
| | | setHomePage (state, homePage) { |
| | | state.homePage = homePage |
| | |
| | | // éç½®èå |
| | | resetMenus: (state) => { |
| | | state.menuData.list = [] |
| | | }, |
| | | // tags |
| | | pushtags(state,val){ |
| | | //妿çäº-1说ætabsä¸åå¨é£ä¹æå
¥ï¼å¦åä»ä¹é½ä¸å |
| | | //findindexæ¾è§æ ï¼å¾ªç¯å¤æä¸ä¸ï¼å¦æçäºé£ä¹å°±ä»£è¡¨æç¸åçï¼å°±ä¸å¿
æ·»å ï¼å¦ææ¾ä¸å°é£å°±æ¯-1.就添å |
| | | let result = state.tags.findIndex(item => item.label === val.label) |
| | | if (result === -1) { |
| | | state.tags.push({...val, keepAlive: false}) |
| | | } else { |
| | | state.tags[result]= {...val, keepAlive: true} |
| | | } |
| | | // result === -1 ? state.tags.push(val) : (state.tags[result]==val) |
| | | }, |
| | | //å
³éæ ç¾ |
| | | closeTab(state, val) { |
| | | //åä¸ï¼æ¾è§æ ï¼ç¶åç¨è§æ çä½ç½®å¯¹åºå é¤ä¸ä½ãspliceï¼è¿æ¯æ°ç»çå 餿¹æ³ |
| | | let result = state.tags.findIndex(item => item.label === val.label) |
| | | state.tags.splice(result, 1) |
| | | }, |
| | | //å
³éæætagsviewæ ç¾ |
| | | cleartagsview(state,val){ |
| | | //æ¸
空æ°ç» |
| | | state.tags=[] |
| | | //跳转å°é¦é¡µ,valæ¥åä¼ è¿æ¥çå½åè·¯ç± |
| | | if(val !== "/index"){ |
| | | router.push({path:"/index"}) |
| | | } |
| | | }, |
| | | //æ¹åtagsviewæ¾ç¤ºéè |
| | | changeisshow(state){ |
| | | state.isCollapse=!state.isCollapse |
| | | } |
| | | } |
| | | const actions = {} |
| | |
| | | |
| | | // éªè¯ææºå·ç |
| | | export function checkMobile(rule, value, callback) { |
| | | if (value == null || value.trim() === '') { |
| | | if (rule.required) { |
| | | callback(new Error('请è¾å
¥ææºå·')) |
| | | } else { |
| | | callback() |
| | | } |
| | | callback(new Error('ææºå·ç ä¸è½ä¸ºç©º')) |
| | | return |
| | | } |
| | | let re = /^[0-9]{11}$/; |
| | | var result = re.test(value); |
| | | if(!result) { |
| | | callback(new Error('请è¾å
¥æ£ç¡®çææºå·')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | |
| | | export function checkPhone(rule, value, callback) { |
| | | //ææºå·ï¼13ï¼14ï¼15ï¼17ï¼18ï¼19å·æ®µ |
| | | const phoneReg = /^1[3|4|5|7|8][0-9]{9}$/ |
| | | //åºè¯ï¼åºå·(3-4ä½)-å·ç (7-9ä½) |
| | | const mobReg = /(^[0-9]{3,4}-[0-9]{7,9}$)/ |
| | | //æ¾³é¨çµè¯å·ç : 28å¼å¤´ï¼åé¢è·6使°åï¼åºå·ä¸º853 |
| | | const macaoMobReg = /^(853)?28\d{6}$/ |
| | | //æ¾³é¨ææºå·ç ï¼6å¼å¤´ï¼åé¢è·7使°åï¼åºå·ä¸º853 |
| | | const macaoPhoneReg = /^(853)?6\d{7}$/ |
| | | //åæ¶æ¯æææºå·ç åçµè¯å·ç |
| | | const macaoReg = /^(853)?(?:28\d{6}|6\d{7})$/ |
| | | if (!value) { |
| | | callback(new Error('çµè¯å·ç ä¸è½ä¸ºç©º')) |
| | | } else if (phoneReg.test(value)||mobReg.test(value)||macaoReg.test(value)) { |
| | | callback() |
| | | } else { |
| | | callback(new Error('请è¾å
¥æ£ç¡®çµè¯å·ç ')) |
| | | } |
| | | } |
| | | |
| | | export function loginNameRule (rule, value, callback) { |
| | | if (value == null || value.trim() === '') { |
| | | if (rule.required) { |
| | | callback(new Error('请è¾å
¥è´¦å·')) |
| | | } else { |
| | | callback() |
| | | } |
| | | return |
| | | } |
| | | let re =/^[\u4e00-\u9fa5a-zA-Z0-9]+$/ |
| | | var result = re.test(value) |
| | | if(!result) { |
| | | callback(new Error('请è¾å
¥æ£ç¡®çè´¦å·')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | |
| | | export function nameRule (rule, value, callback) { |
| | | if (value == null || value.trim() === '') { |
| | | if (rule.required) { |
| | | callback(new Error('请è¾å
¥åå')) |
| | | } else { |
| | | callback() |
| | | } |
| | | if (!/^1\d{10}$/.test(value)) { |
| | | callback(new Error('ææºå·ç æ ¼å¼ä¸æ£ç¡®')) |
| | | return |
| | | } |
| | | callback() |
| | | } |
| | | export function creditCode (rule, value, callback) { |
| | | if (value == null || value.trim() === '') { |
| | | if (rule.required) { |
| | | callback(new Error('请è¾å
¥ç¤¾ä¼ä¿¡ç¨ä»£ç ')) |
| | | } else { |
| | | callback() |
| | | } |
| | | return |
| | | } |
| | | let re = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/ |
| | | var result = re.test(value) |
| | | if(!result) { |
| | | callback(new Error('请è¾å
¥æ£ç¡®ç社ä¼ä¿¡ç¨ä»£ç ')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | |
| | | // éªè¯é®ç®± |
| | |
| | | import pkg from '../../package' |
| | | import { trim } from './util' |
| | | import cache from '../plugins/cache' |
| | | import { Message, Loading } from 'element-ui' |
| | | |
| | | axios.defaults.headers.common['Content-Type'] = 'application/json;charset=UTF-8' |
| | | const axiosInstance = axios.create({ |
| | | baseURL: process.env.VUE_APP_API_PREFIX, |
| | | // baseURL: process.env.VUE_APP_API, |
| | | // 请æ±è¶
æ¶æ¶é´ |
| | | timeout: 60000 |
| | | }) |
| | |
| | | // 设置æä½å¹³å° |
| | | config.headers['eva-platform'] = `pc-${pkg.version}` |
| | | // 设置认è¯å¤´ |
| | | const authToken = Cookies.get('doumee-auth-token') |
| | | const authToken = Cookies.get('eva-auth-token') |
| | | if (authToken != null) { |
| | | config.headers['doumee-auth-token'] = authToken |
| | | config.headers['eva-auth-token'] = authToken |
| | | } |
| | | return config |
| | | }, function (error) { |
| | |
| | | |
| | | // æ°å»ºååºæ¦æªå¨ |
| | | axiosInstance.interceptors.response.use((response) => { |
| | | // console.log(response.status) |
| | | // debugger |
| | | // 请æ±å¤±è´¥ |
| | | if (response.status !== 200) { |
| | | return Promise.reject(new Error('æå¡å¨ç¹å¿ï¼è¯·ç¨ååè¯')) |
| | |
| | | // æªç»å½ |
| | | if (response.data.code === 401) { |
| | | if (response.config.autoLogin !== false) { |
| | | window.location.href = process.env.VUE_APP_ROUTER_MODE === 'history' ? '/#/login' : '/login' |
| | | location.reload() |
| | | // window.location.href = process.env.VUE_APP_ROUTER_MODE === 'history' ? '/login' : '/#/login' |
| | | } |
| | | return Promise.reject(response.data) |
| | | } |
| | |
| | | } |
| | | return data |
| | | } |
| | | |
| | | // æ ¹æ®èº«ä»½è¯è·åå¹´é¾ |
| | | export function GetAge (identityCard) { |
| | | let len = (identityCard + "").length; |
| | | let strBirthday = ""; |
| | | if (len === 18) { |
| | | //å¤ç18ä½ç身份è¯å·ç ä»å·ç ä¸å¾å°çæ¥åæ§å«ä»£ç |
| | | strBirthday = |
| | | identityCard.substr(6, 4) + |
| | | "/" + |
| | | identityCard.substr(10, 2) + |
| | | "/" + |
| | | identityCard.substr(12, 2); |
| | | } |
| | | if (len === 15) { |
| | | let birthdayValue = ""; |
| | | birthdayValue = identityCard.charAt(6) + identityCard.charAt(7); |
| | | if (parseInt(birthdayValue) < 10) { |
| | | strBirthday = |
| | | "20" + |
| | | identityCard.substr(6, 2) + |
| | | "/" + |
| | | identityCard.substr(8, 2) + |
| | | "/" + |
| | | identityCard.substr(10, 2); |
| | | } else { |
| | | strBirthday = |
| | | "19" + |
| | | identityCard.substr(6, 2) + |
| | | "/" + |
| | | identityCard.substr(8, 2) + |
| | | "/" + |
| | | identityCard.substr(10, 2); |
| | | } |
| | | } |
| | | let birthDate = new Date(strBirthday); |
| | | let nowDateTime = new Date(); |
| | | let age = nowDateTime.getFullYear() - birthDate.getFullYear(); |
| | | //åèèæã天çå ç´ ;.getMonth()è·åçæ¯ä»0å¼å§çï¼è¿éè¿è¡æ¯è¾ï¼ä¸éè¦å 1 |
| | | if ( |
| | | nowDateTime.getMonth() < birthDate.getMonth() || |
| | | (nowDateTime.getMonth() == birthDate.getMonth() && |
| | | nowDateTime.getDate() < birthDate.getDate()) |
| | | ) { |
| | | age--; |
| | | } |
| | | return age; |
| | | } |
| | | |
| | |
| | | <TableLayout :permissions="['business:dispatchunit:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="æå±ä¼ä¸" prop="companyId"> |
| | | <el-select v-model="searchForm.companyId" placeholder="è¯·éæ©" @change="search"> |
| | | <el-option |
| | | v-for="item in companyList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ´¾é£åä½" prop="name"> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥ç¨å·¥åä½åç§°" @keypress.enter.native="search"></el-input> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥æ´¾é£åä½" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:dispatchunit:create']"> |
| | | <li><el-button type="primary" @click="$refs.operaDispatchUnitWindow.open('æ·»å æ´¾é£åä½')" v-permissions="['business:dispatchunit:create']">æ°å¢æ´¾é£åä½</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="æ´¾é£åä½"></el-table-column> |
| | | <el-table-column label="ä¼ä¸ç¶æ"> |
| | | <el-table-column prop="companyName" label="æå±ä¼ä¸" min-width="100px"></el-table-column> |
| | | <el-table-column prop="name" label="æ´¾é£åä½" min-width="100px"></el-table-column> |
| | | <el-table-column label="æ´¾é£åä½ç¶æ" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.unitStatus === 0">å¾
å®¡æ ¸</span> |
| | | <span v-if="row.unitStatus === 1" style="color: green;">å®¡æ ¸éè¿</span> |
| | | <span v-if="row.unitStatus === 2" style="color: red;">å®¡æ ¸ä¸éè¿</span> |
| | | <span :class="'du-status'+row.unitStatus" v-if="row.unitStatus === 0">å¾
å®¡æ ¸</span> |
| | | <span v-if="row.unitStatus === 1"> |
| | | <span :class="'du-status'+row.worktypeStatus" v-if="row.worktypeStatus ==null || row.worktypeStatus === 0">å·¥ç§å¾
审</span> |
| | | <span :class="'du-status'+row.worktypeStatus" v-else-if="row.worktypeStatus === 1">å®¡æ ¸éè¿</span> |
| | | <span :class="'du-status'+row.worktypeStatus" v-else-if="row.worktypeStatus === 2">å·¥ç§å®¡æ ¸ä¸éè¿</span> |
| | | </span> |
| | | <span :class="'du-status'+row.unitStatus" v-if="row.unitStatus === 2">å®¡æ ¸ä¸éè¿</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="createDate" label="æ·»å æ¥æ"></el-table-column> |
| | | <el-table-column label="æ¯å¦åç¨"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch |
| | | @change="changeStatus($event, row)" |
| | | v-model="row.status" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="1" |
| | | :inactive-value="0"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="createDate" label="æäº¤æ¥æ" min-width="100px"></el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:dispatchunit:update', 'business:dispatchunit:delete'])" |
| | | label="æä½" |
| | |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.dispatchUnitDetails.open('æ´¾é£åä½è¯¦æ
', row)" v-permissions="['business:dispatchunit:update']">æ¥ç详æ
</el-button> |
| | | <el-button type="text" @click="$refs.dispatchUnitDetailsPlat.open('æ´¾é£åä½è¯¦æ
', row)" icon="el-icon-edit" v-permissions="['business:dispatchunit:update']">æ¥ç详æ
</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaDispatchUnitWindow ref="operaDispatchUnitWindow" @success="handlePageChange"/> |
| | | <!-- 详æ
--> |
| | | <dispatchUnitDetails ref="dispatchUnitDetails" @success="handlePageChange"/> |
| | | <dispatchUnitDetailsPlat ref="dispatchUnitDetailsPlat" @success="handlePageChange"/> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaDispatchUnitWindow from '@/components/business/OperaDispatchUnitWindow' |
| | | import dispatchUnitDetails from '@/components/business/dispatchUnitDetails' |
| | | import { updateById } from '@/api/business/dispatchUnit' |
| | | import dispatchUnitDetailsPlat from '@/components/business/dispatchUnitDetailsPlat' |
| | | import {pageAll as companyAll} from '@/api/business/company' |
| | | export default { |
| | | name: 'DispatchUnit', |
| | | name: 'dispatchUnitReview', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaDispatchUnitWindow, dispatchUnitDetails }, |
| | | components: { TableLayout, Pagination, dispatchUnitDetailsPlat }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | searchForm: { |
| | | name: '', |
| | | dataType: 0 |
| | | } |
| | | companyId: '' |
| | | }, |
| | | companyList:[] |
| | | } |
| | | }, |
| | | created () { |
| | |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | this.loadSelectList() |
| | | }, |
| | | methods: { |
| | | // ä¿®æ¹ç¶æ |
| | | changeStatus(status, row) { |
| | | updateById({ status, id: row.id }) |
| | | .then(res => { |
| | | this.search() |
| | | }) |
| | | .catch(err => { |
| | | row.status = row.status === 0 ? 1 : 0 |
| | | // handlePageChange() { |
| | | // this.search() |
| | | // }, |
| | | loadSelectList() { |
| | | companyAll({}).then(res => { |
| | | this.companyList = res |
| | | }).catch(err => { |
| | | }) |
| | | } |
| | | |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <template> |
| | | <div class="home"> |
| | | <!-- <div class="wrap"> |
| | | <h2>欢è¿ä½¿ç¨ä¼å¨æéå¼åæ¡æ¶</h2> |
| | | <p>æ¨ä½¿ç¨çæ¤å¥å¼æºæ¡æ¶æ²¡æä»»ä½çæé®é¢ï¼å¯å¦ä¹ å¯åç¨ï¼è¯·æ¾å¿ä½¿ç¨ï¼</p> |
| | | <p>ä¼å¨è´åäºæé ç®æ´ãåçã髿çå¼åä½éªï¼ä¸ºæ¤æä»¬å°ä¸æåçº§ï¼æè°¢æ¨çæ¯æï¼</p> |
| | | <p style="margin-top: 12px;"> |
| | | <a href="https://gitee.com/coderd-repos/eva" target="_blank">GITEE</a> |
| | | <a href="https://github.com/coderd-repos/eva" target="_blank">GITHUB</a> |
| | | </p> |
| | | <div class="guide"> |
| | | <a href="http://eva.adjustrd.com" target="_blank">åå¾å®ç½</a> |
| | | <a href="http://coderd.adjustrd.com/template/308/default" target="_blank">åå¾CodeRd</a> |
| | | <div class="home_inlet"> |
| | | <div class="home_inlet_label">å¿«æ·å
¥å£</div> |
| | | <div class="home_inlet_list" v-if="userInfo.type==1" > |
| | | <div class="home_inlet_item" v-for="(item, index) in cate" :key="index" @click="jump(item.url)"> |
| | | <img :src="item.icon" /> |
| | | <span>{{item.name}}</span> |
| | | </div> |
| | | <img src="@/assets/images/qq.png"> |
| | | <p>ä½ å¯ä»¥æ«ç å å
¥ç¾¤è以è·å¾ææ¯æ¯æ</p> |
| | | <div class="award"> |
| | | <h4>æ¿å±ä½è
å徿´å¥½</h4> |
| | | <img src="@/assets/images/alipay.jpeg"> |
| | | <img src="@/assets/images/wxpay.jpeg"> |
| | | </div> |
| | | </div> --> |
| | | <div class="home_inlet_list" v-else > |
| | | <div class="home_inlet_item" v-for="(item, index) in catePlat" :key="index" @click="jump(item.url)"> |
| | | <img :src="item.icon" /> |
| | | <span>{{item.name}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="home_content"> |
| | | <div class="home_content_left"> |
| | | <div class="home_content_left_item" ref="picture1"></div> |
| | | <div class="home_content_left_item" ref="picture2"></div> |
| | | <div class="home_content_left_item" ref="picture3"></div> |
| | | </div> |
| | | <div class="home_content_right"> |
| | | <div class="home_content_right_label" v-if="tabs && tabs.length>0" >代åäºé¡¹</div> |
| | | <el-tabs v-model="activeName" @tab-click="handleClick" > |
| | | <el-tab-pane v-for="a in tabs" :key="a.path" :name="a.name" > |
| | | <span slot="label" title="ç¹å»å·æ°"> {{a.label }} |
| | | <el-badge v-if="(a.name==0?totalPage0:(a.name==1?totalPage1:totalPage2)) >0" :value="(a.name==0?totalPage0:(a.name==1?totalPage1:totalPage2)) " class="item"></el-badge> |
| | | </span> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | <div v-if="activeName === '0'" v-permissions="['business:notice:insurance']" > |
| | | <div class="home_content_right_list"> |
| | | <div class="list_item" v-for="(item, index) in tableData0" :key="index"> |
| | | <div class="list_item_left"> |
| | | <span>{{item.title}}ï¼{{ item.typeDetail }}ï¼</span> |
| | | <span>{{item.info}}ï¼{{item.content}}ï¼</span> |
| | | </div> |
| | | <div class="list_item_center"> |
| | | <span>{{item.companyName}}</span> |
| | | <span>æäº¤æ¶é´ {{item.createDate}}</span> |
| | | </div> |
| | | <div class="list_item_right"> |
| | | <span @click="detail(item)">æ¥ç</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="home_content_right_page"> |
| | | <el-pagination |
| | | @current-change="handleCurrentChange0" |
| | | :current-page="page0" |
| | | :page-size="5" |
| | | layout="total, prev, pager, next, jumper" |
| | | :total="totalPage0"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | <div v-if="activeName === '1'" v-permissions="['business:notice:tax']"> |
| | | <div class="home_content_right_list"> |
| | | <div class="list_item" v-for="(item, index) in tableData1" :key="index"> |
| | | <div class="list_item_left"> |
| | | <span>{{item.title}}ï¼{{ item.typeDetail }}ï¼</span> |
| | | <span>{{item.info}}ï¼{{item.content}}ï¼</span> |
| | | </div> |
| | | <div class="list_item_center"> |
| | | <span>{{item.companyName}}</span> |
| | | <span>æäº¤æ¶é´ {{item.createDate}}</span> |
| | | </div> |
| | | <div class="list_item_right"> |
| | | <span @click="detail(item)">æ¥ç</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="home_content_right_page"> |
| | | <el-pagination |
| | | @current-change="handleCurrentChange1" |
| | | :current-page="page1" |
| | | :page-size="5" |
| | | layout="total, prev, pager, next, jumper" |
| | | :total="totalPage1"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | <div v-if="activeName === '2'" v-permissions="['business:notice:settle']"> |
| | | <div class="home_content_right_list"> |
| | | <div class="list_item" v-for="(item, index) in tableData2" :key="index"> |
| | | <div class="list_item_left"> |
| | | <span>{{item.title}}ï¼{{ item.typeDetail }}ï¼</span> |
| | | <span>{{item.info}}ï¼{{item.content}}ï¼</span> |
| | | </div> |
| | | <div class="list_item_center"> |
| | | <span>{{item.companyName}}</span> |
| | | <span>æäº¤æ¶é´ {{item.createDate}}</span> |
| | | </div> |
| | | <div class="list_item_right"> |
| | | <span @click="detail(item)">æ¥ç</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="home_content_right_page"> |
| | | <el-pagination |
| | | @current-change="handleCurrentChange2" |
| | | :current-page="page2" |
| | | :page-size="5" |
| | | layout="total, prev, pager, next, jumper" |
| | | :total="totalPage2"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <OperaInsuranceApplyWindow ref="operaInsuranceApplyWindow" @success="handleCurrentChange0()"/> |
| | | <dispatchUnitDetailsPlat ref="dispatchUnitDetailsPlat" @success="handleCurrentChange0()"/> |
| | | <OperaSettleClaimsWindow ref="operaSettleClaimsWindow" @success="handleCurrentChange2()"/> |
| | | <OperaApplyChangeUnitDetailWindow ref="operaApplyChangeUnitDetailWindow" @success="handleCurrentChange0()"/> |
| | | <OperaApplyChangeDetailWindow ref="operaApplyChangeDetailWindow" @success="handleCurrentChange0()"/> |
| | | <OperaTaxesWindow ref="OperaTaxesWindow" @success="handleCurrentChange1()"/> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as echarts from 'echarts' |
| | | import { mapState } from 'vuex' |
| | | import OperaInsuranceApplyWindow from '@/components/business/OperaInsuranceApplyWindow' |
| | | import dispatchUnitDetailsPlat from '@/components/business/dispatchUnitDetailsPlat' |
| | | import OperaApplyChangeUnitDetailWindow from '@/components/business/OperaApplyChangeUnitDetailWindow' |
| | | import OperaSettleClaimsWindow from '@/components/business/OperaSettleClaimsWindow' |
| | | import OperaApplyChangeDetailWindow from '@/components/business/OperaApplyChangeDetailWindow' |
| | | import OperaTaxesWindow from '@/components/business/OperaTaxesWindow' |
| | | import { fetchList as noticeList } from '@/api/business/notices' |
| | | export default { |
| | | components: { |
| | | OperaInsuranceApplyWindow, |
| | | dispatchUnitDetailsPlat, |
| | | OperaTaxesWindow, |
| | | OperaSettleClaimsWindow, |
| | | OperaApplyChangeDetailWindow, |
| | | OperaApplyChangeUnitDetailWindow |
| | | }, |
| | | name: 'Index', |
| | | data () { |
| | | return {} |
| | | return { |
| | | activeName: '0', |
| | | tabs: [], |
| | | page0: 1, |
| | | page1: 1, |
| | | page2: 1, |
| | | totalPage2: 0, |
| | | totalPage1: 0, |
| | | totalPage0: 0, |
| | | tableData0: [], |
| | | tableData1: [], |
| | | tableData2: [], |
| | | cate: [ |
| | | { |
| | | name: 'æä¿ç³è¯·', |
| | | url: '/enterprise/insuranceApply', |
| | | icon: require('../assets/icons/company/apply.png') |
| | | }, |
| | | { |
| | | name: 'æäº¤æ¥æ¡', |
| | | url: '/business/settleClaims', |
| | | icon: require('../assets/icons/company/settle.png') |
| | | }, |
| | | { |
| | | name: 'æ·»å æ´¾é£åä½', |
| | | url: '/enterprise/dispatchUnit', |
| | | icon: require('../assets/icons/company/dipatch_unit.png') |
| | | }, |
| | | { |
| | | name: 'ç´ä¿å¼ç¥¨', |
| | | url: '/enterprise/directInvoicing', |
| | | icon: require('../assets/icons/company/tax.png') |
| | | }, |
| | | { |
| | | name: 'å§æä¿å¼ç¥¨', |
| | | url: '/enterprise/entrustedInvoicing', |
| | | icon: require('../assets/icons/company/tax.png') |
| | | } |
| | | ], |
| | | catePlat: [ |
| | | { |
| | | name: 'æä¿å®¡æ ¸', |
| | | url: '/business/insuranceApply', |
| | | icon: require('../assets/icons/plat/apply_check.png') |
| | | }, |
| | | { |
| | | name: 'å /åä¿å®¡æ ¸', |
| | | url: '/business/applyChange', |
| | | icon: require('../assets/icons/plat/change_apply_check.png') |
| | | }, |
| | | { |
| | | name: 'çèµæå¡', |
| | | url: '/business/settleClaims', |
| | | icon: require('../assets/icons/plat/settle_check.png') |
| | | }, |
| | | { |
| | | name: 'å票管ç', |
| | | url: '/business/taxes', |
| | | icon: require('../assets/icons/plat/tax_check.png') |
| | | }, |
| | | { |
| | | name: 'æ°å¢ä¼ä¸', |
| | | url: '/business/company', |
| | | icon: require('../assets/icons/plat/company_add.png') |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapState(['userInfo']) |
| | | }, |
| | | mounted () { |
| | | this.setPicture1() |
| | | this.setPicture2() |
| | | this.setPicture3() |
| | | this.initPanel() |
| | | this.setLoadTimer() |
| | | }, |
| | | methods: { |
| | | detail (obj) { |
| | | if (obj.objType === 0) { |
| | | this.$refs.operaInsuranceApplyWindow.open('æä¿ç³è¯·è¯¦æ
', { id: obj.objId }) |
| | | } else if (obj.objType === 1) { |
| | | this.$refs.operaApplyChangeDetailWindow.open('å åä¿è¯¦æ
', { id: obj.objId, applyId: obj.param1 }) |
| | | } else if (obj.objType === 2) { |
| | | this.$refs.operaApplyChangeUnitDetailWindow.open('æ¢åç³è¯·è¯¦æ
', { id: obj.objId, applyId: obj.param1 }) |
| | | } else if (obj.objType === 3) { |
| | | this.$refs.dispatchUnitDetailsPlat.open('æ´¾é£å详æ
', { id: obj.objId }) |
| | | } else if (obj.objType === 4) { |
| | | this.$refs.OperaTaxesWindow.open('å¼ç¥¨ç³è¯·è¯¦æ
', { id: obj.objId }) |
| | | } else if (obj.objType === 5) { |
| | | this.$refs.operaSettleClaimsWindow.open('çèµè¯¦æ
', { id: obj.objId }) |
| | | } |
| | | }, |
| | | setLoadTimer () { |
| | | var that = this |
| | | this.initLoadData() |
| | | if (window.timer) { |
| | | clearInterval(window.timer) |
| | | } |
| | | window.timer = setInterval(() => { |
| | | that.initLoadData() |
| | | }, 60000) |
| | | }, |
| | | initLoadData(){ |
| | | var pemissons = this.userInfo.permissions |
| | | if (pemissons.includes('business:notice:insurance')) { |
| | | this.handleCurrentChange0(0) |
| | | } |
| | | if (pemissons.includes('business:notice:tax')) { |
| | | this.handleCurrentChange1(0) |
| | | } |
| | | if (pemissons.includes('business:notice:settle')) { |
| | | this.handleCurrentChange2(0) |
| | | } |
| | | }, |
| | | getNoticeList (type, page) { |
| | | noticeList({ |
| | | page: page, |
| | | capacity: 5, |
| | | model: { queryType: type }, |
| | | sorts: [] |
| | | }) |
| | | .then(response => { |
| | | if (type === 0) { |
| | | this.tableData0 = response.records |
| | | this.totalPage0 = response.total |
| | | } |
| | | if (type === 1) { |
| | | this.tableData1 = response.records |
| | | this.totalPage1 = response.total |
| | | } if (type === 2) { |
| | | this.tableData2 = response.records |
| | | this.totalPage2 = response.total |
| | | } |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | }, |
| | | initPanel () { |
| | | var pemissons = this.userInfo.permissions |
| | | |
| | | if (pemissons.includes('business:notice:insurance')) { |
| | | this.tabs.push({ name: '0', label: 'æä¿ä»£å' }) |
| | | // this.handleCurrentChange0(0); |
| | | } |
| | | if (pemissons.includes('business:notice:tax')) { |
| | | this.tabs.push({ name: '1', label: 'å票代å' }) |
| | | // this.handleCurrentChange1(0); |
| | | } |
| | | if (pemissons.includes('business:notice:settle')) { |
| | | this.tabs.push({ name: '2', label: 'çèµä»£å' }) |
| | | // this.handleCurrentChange2(0); |
| | | } |
| | | /* if (pemissons.includes('business:notice:insurance')) { |
| | | this.getNoticeList(0, this.page0) |
| | | } |
| | | if (pemissons.includes('business:notice:tax')) { |
| | | this.getNoticeList(1, this.page1) |
| | | } |
| | | if (pemissons.includes('business:notice:settle')) { |
| | | this.getNoticeList(2, this.page2) |
| | | } */ |
| | | }, |
| | | handleClick (e) { |
| | | this.activeName = e.name |
| | | if (this.activeName === '0') { |
| | | this.handleCurrentChange0(0) |
| | | } else if (this.activeName === '1') { |
| | | this.handleCurrentChange1(0) |
| | | } else if (this.activeName === '2') { |
| | | this.handleCurrentChange2(0) |
| | | } |
| | | }, |
| | | handleCurrentChange0 (page) { |
| | | this.page0 = page |
| | | this.getNoticeList(0, this.page0) |
| | | }, |
| | | handleCurrentChange1 (page) { |
| | | this.page1 = page |
| | | this.getNoticeList(1, this.page1) |
| | | }, |
| | | handleCurrentChange2 (page) { |
| | | this.page2 = page |
| | | this.getNoticeList(2, this.page2) |
| | | }, |
| | | jump (url) { |
| | | if (!url) return |
| | | this.$router.push({ path: url }) |
| | | }, |
| | | setPicture1 () { |
| | | const chartDom = this.$refs.picture1 |
| | | const myChart = echarts.init(chartDom) |
| | | let option |
| | | option = { |
| | | title: { |
| | | text: '彿ä¿é©éé¢', |
| | | left: '5%', |
| | | top: '5%' |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item' |
| | | }, |
| | | series: [ |
| | | { |
| | | type: 'pie', |
| | | radius: '50%', |
| | | data: [ |
| | | { value: 1048, name: 'ä¿éä¸' }, |
| | | { value: 735, name: 'ä¸å¨ä¿' } |
| | | ], |
| | | emphasis: { |
| | | itemStyle: { |
| | | shadowBlur: 10, |
| | | shadowOffsetX: 0, |
| | | shadowColor: 'rgba(0, 0, 0, 0.5)' |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | |
| | | option && myChart.setOption(option) |
| | | }, |
| | | setPicture2 () { |
| | | const chartDom = this.$refs.picture2 |
| | | const myChart = echarts.init(chartDom) |
| | | let option |
| | | option = { |
| | | title: { |
| | | text: '彿å¨ä¿äººæ°', |
| | | left: '5%', |
| | | top: '5%' |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '4%', |
| | | bottom: '13%', |
| | | containLabel: true |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis' |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: ['䏿', 'äºæ', '䏿', 'åæ', 'äºæ', 'å
æ', '䏿', 'å
«æ', '乿', 'åæ', 'å䏿', 'åäºæ'] |
| | | }, |
| | | yAxis: { |
| | | type: 'value' |
| | | }, |
| | | series: [ |
| | | { |
| | | data: [10, 30, 25, 16, 21, 18, 5, 30, 30, 30, 30, 30], |
| | | type: 'line' |
| | | } |
| | | ] |
| | | } |
| | | |
| | | option && myChart.setOption(option) |
| | | }, |
| | | setPicture3 () { |
| | | const chartDom = this.$refs.picture3 |
| | | const myChart = echarts.init(chartDom) |
| | | let option |
| | | option = { |
| | | title: { |
| | | text: 'æ»èµä»ç 78%', |
| | | left: '5%', |
| | | top: '5%' |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | type: 'shadow' |
| | | } |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '4%', |
| | | bottom: '25%', |
| | | containLabel: true |
| | | }, |
| | | xAxis: { |
| | | type: 'value' |
| | | // boundaryGap: [0, 0.01] |
| | | }, |
| | | yAxis: { |
| | | type: 'category', |
| | | data: ['ä¿é©Aèµä»ç', 'ä¿é©Bèµä»ç', 'æ»èµä»ç'] |
| | | }, |
| | | series: [ |
| | | { |
| | | type: 'bar', |
| | | stack: 'total', |
| | | barWidth: '60%', |
| | | data: [10, 20, 30] |
| | | }, |
| | | { |
| | | type: 'bar', |
| | | stack: 'total', |
| | | barWidth: '60%', |
| | | data: [15, 16, 24] |
| | | } |
| | | ] |
| | | } |
| | | |
| | | option && myChart.setOption(option) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <style scoped lang="scss"> |
| | | @import "@/assets/style/variables.scss"; |
| | | .home { |
| | | text-align: center; |
| | | color: #777; |
| | | .wrap { |
| | | margin-top: 80px; |
| | | img { |
| | | width: 240px; |
| | | } |
| | | } |
| | | h2 { |
| | | font-size: 32px; |
| | | color: #555; |
| | | margin-bottom: 20px; |
| | | } |
| | | p { |
| | | line-height: 24px; |
| | | margin: 0; |
| | | } |
| | | .start-up { |
| | | margin-top: 8px; |
| | | } |
| | | .guide { |
| | | margin: 30px 0 40px 0; |
| | | display: flex; |
| | | justify-content: center; |
| | | a { |
| | | margin-right: 12px; |
| | | padding: 12px 40px; |
| | | border-radius: 30px; |
| | | background: $primary-color; |
| | | color: #fff; |
| | | text-decoration: none; |
| | | } |
| | | } |
| | | em,a { |
| | | font-style: normal; |
| | | font-weight: bold; |
| | | margin: 0 3px; |
| | | color: $primary-color; |
| | | } |
| | | .award { |
| | | position: absolute; |
| | | right: 20px; |
| | | bottom: 60px; |
| | | width: 100%; |
| | | height: 100%; |
| | | .home_inlet { |
| | | width: 100%; |
| | | height: 160px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | text-align: left; |
| | | padding: 12px; |
| | | border: 1px solid #eee; |
| | | box-shadow: -1px 1px 10px #ccc; |
| | | h4 { |
| | | padding: 20px; |
| | | box-sizing: border-box; |
| | | background: #ffffff; |
| | | .home_inlet_label { |
| | | width: 100%; |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | margin-bottom: 8px; |
| | | } |
| | | img { |
| | | width: 160px; |
| | | color: black; |
| | | margin-bottom: 20px; |
| | | transition: opacity ease .3s; |
| | | } |
| | | .home_inlet_list { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | .home_inlet_item { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | cursor: pointer; |
| | | img { |
| | | width: 40px; |
| | | height: 40px; |
| | | } |
| | | span { |
| | | font-size: 14px; |
| | | color: black; |
| | | margin-top: 5px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .home_content { |
| | | width: 100%; |
| | | height: calc(100% - 170px); |
| | | margin-top: 10px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | .home_content_left { |
| | | width: 350px; |
| | | height: 100%; |
| | | flex-shrink: 0; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | .home_content_left_item { |
| | | width: 100%; |
| | | height: 32%; |
| | | background: #ffffff; |
| | | } |
| | | } |
| | | .home_content_right { |
| | | flex: 1; |
| | | height: 100%; |
| | | background: #ffffff; |
| | | margin-left: 10px; |
| | | padding: 20px; |
| | | box-sizing: border-box; |
| | | position: relative; |
| | | .home_content_right_label { |
| | | font-size: 18px; |
| | | color: black; |
| | | font-weight: bold; |
| | | } |
| | | .home_content_right_list { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | .list_item { |
| | | padding: 10px; |
| | | box-sizing: border-box; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | border: 1px solid #ececec; |
| | | margin-bottom: 15px; |
| | | &:last-child { |
| | | margin-bottom: 0 !important; |
| | | } |
| | | .list_item_left { |
| | | display: flex; |
| | | width: 60%; |
| | | flex-direction: column; |
| | | span { |
| | | &:nth-child(1) { |
| | | font-size: 14px; |
| | | color: black; |
| | | font-weight: bold; |
| | | } |
| | | &:nth-child(2) { |
| | | font-size: 14px; |
| | | color: black; |
| | | margin-top: 5px; |
| | | } |
| | | } |
| | | } |
| | | .list_item_center { |
| | | display: flex; |
| | | flex-direction: column; |
| | | span { |
| | | font-size: 14px; |
| | | color: black; |
| | | &:nth-child(2) { |
| | | margin-top: 5px; |
| | | } |
| | | } |
| | | } |
| | | .list_item_right { |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | span { |
| | | font-size: 14px; |
| | | color: #1890FF; |
| | | margin-top: 10px; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .home_content_right_page { |
| | | margin-top: 20px; |
| | | position: relative; |
| | | bottom: 20px; |
| | | left: 20px; |
| | | box-sizing: border-box; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <div class="wrap"> |
| | | <div class="introduce"> |
| | | <h2>äºæä¿å®¢æ·æå¡ç³»ç»</h2> |
| | | <h2>é¢éæ¸
åæ¥è¯¢ç³»ç»</h2> |
| | | </div> |
| | | <div class="login"> |
| | | <h1>ç³»ç»ç»å½ / LOGIN IN</h1> |
| | |
| | | <script src="../../api/system/dictData.js"></script> |
| | | <template> |
| | | <TableLayout class="menu-layout" :permissions="['system:menu:query']"> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['system:menu:create', 'system:menu:delete', 'system:menu:sort']"> |
| | | <li><el-button type="primary" @click="$refs.operaMenuWindow.open('æ°å»ºå¹³å°ä¸çº§èå')" icon="el-icon-plus" v-permissions="['system:menu:create']">æ°å»º</el-button></li> |
| | | <li><el-button type="primary" @click="$refs.operaMenuWindow.open('æ°å»ºä¸çº§èå', { type: '0' })" icon="el-icon-plus" v-permissions="['system:menu:create']">æ°å»º</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:menu:delete']">å é¤</el-button></li> |
| | | <li><el-button @click="sort('top')" :loading="isWorking.sort" icon="el-icon-sort-up" v-permissions="['system:menu:sort']">ä¸ç§»</el-button></li> |
| | | <li><el-button @click="sort('bottom')" :loading="isWorking.sort" icon="el-icon-sort-down" v-permissions="['system:menu:sort']">ä¸ç§»</el-button></li> |
| | |
| | | :tree-props="{children: 'children', hasChildren: 'hasChildren'}" |
| | | row-key="id" |
| | | stripe |
| | | default-expand-all |
| | | :default-expand-all="false" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55" fixed="left"></el-table-column> |
| | |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" icon="el-icon-edit" @click="$refs.operaMenuWindow.open('ç¼è¾å¹³å°èå', row)" v-permissions="['system:menu:update']">ç¼è¾</el-button> |
| | | <el-button type="text" icon="el-icon-plus" @click="$refs.operaMenuWindow.open('æ°å»ºå¹³å°åèå', null, row)" v-permissions="['system:menu:create']">æ°å»ºåèå</el-button> |
| | | <el-button type="text" icon="el-icon-edit" @click="$refs.operaMenuWindow.open('ç¼è¾èå', { ...row, type: 0 })" v-permissions="['system:menu:update']">ç¼è¾</el-button> |
| | | <el-button type="text" icon="el-icon-plus" @click="$refs.operaMenuWindow.open('æ°å»ºåèå', null, {...row, type: 0})" v-permissions="['system:menu:create']">æ°å»ºåèå</el-button> |
| | | <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:menu:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | // æ¥è¯¢æ°æ® |
| | | handlePageChange () { |
| | | this.isWorking.search = true |
| | | fetchTree({}, 0) |
| | | fetchTree() |
| | | .then(records => { |
| | | this.tableData.list = records |
| | | }) |
| | |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['system:menu:create', 'system:menu:delete', 'system:menu:sort']"> |
| | | <li><el-button type="primary" @click="$refs.operaMenuWindow.open('æ°å»ºä¼ä¸ä¸çº§èå')" icon="el-icon-plus" v-permissions="['system:menu:create']">æ°å»º</el-button></li> |
| | | <li><el-button type="primary" @click="$refs.OperaMenuComWindow.open('æ°å»ºä¸çº§èå')" icon="el-icon-plus" v-permissions="['system:menu:create']">æ°å»º</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:menu:delete']">å é¤</el-button></li> |
| | | <li><el-button @click="sort('top')" :loading="isWorking.sort" icon="el-icon-sort-up" v-permissions="['system:menu:sort']">ä¸ç§»</el-button></li> |
| | | <li><el-button @click="sort('bottom')" :loading="isWorking.sort" icon="el-icon-sort-down" v-permissions="['system:menu:sort']">ä¸ç§»</el-button></li> |
| | |
| | | :tree-props="{children: 'children', hasChildren: 'hasChildren'}" |
| | | row-key="id" |
| | | stripe |
| | | default-expand-all |
| | | :default-expand-all="false" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55" fixed="left"></el-table-column> |
| | |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" icon="el-icon-edit" @click="$refs.operaMenuWindow.open('ç¼è¾ä¼ä¸èå', row)" v-permissions="['system:menu:update']">ç¼è¾</el-button> |
| | | <el-button type="text" icon="el-icon-plus" @click="$refs.operaMenuWindow.open('æ°å»ºä¼ä¸åèå', null, row)" v-permissions="['system:menu:create']">æ°å»ºåèå</el-button> |
| | | <el-button type="text" icon="el-icon-edit" @click="$refs.OperaMenuComWindow.open('ç¼è¾èå', {...row, type: 1})" v-permissions="['system:menu:update']">ç¼è¾</el-button> |
| | | <el-button type="text" icon="el-icon-plus" @click="$refs.OperaMenuComWindow.open('æ°å»ºåèå', null, {...row, type: 1})" v-permissions="['system:menu:create']">æ°å»ºåèå</el-button> |
| | | <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:menu:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaMenuWindow ref="operaMenuWindow" type="1" @success="handlePageChange(tableData.pagination.pageIndex)"/> |
| | | <OperaMenuComWindow ref="OperaMenuComWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import OperaMenuWindow from '@/components/system/menu/OperaMenuWindow' |
| | | import { fetchTree, updateStatus, sort } from '@/api/system/menu' |
| | | import OperaMenuComWindow from '@/components/system/menu/OperaMenuComWindow' |
| | | import { fetchTree1, updateStatus, sort } from '@/api/system/menu' |
| | | export default { |
| | | name: 'SystemMenu', |
| | | extends: BaseTable, |
| | | components: { OperaMenuWindow, TableLayout }, |
| | | components: { OperaMenuComWindow, TableLayout }, |
| | | data () { |
| | | return { |
| | | // æ¯å¦æ£å¨å¤çä¸ |
| | |
| | | // æ¥è¯¢æ°æ® |
| | | handlePageChange () { |
| | | this.isWorking.search = true |
| | | fetchTree({}, 1) |
| | | fetchTree1() |
| | | .then(records => { |
| | | this.tableData.list = records |
| | | }) |
| | |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['system:role:create', 'system:role:delete']"> |
| | | <li v-permissions="['system:role:create']"><el-button type="primary" @click="$refs.operaRoleWindow.open('æ°å»ºè§è²', null, 0)" icon="el-icon-plus">æ°å»º</el-button></li> |
| | | <li v-permissions="['system:role:create']"><el-button type="primary" @click="$refs.operaRoleWindow.open('æ°å»ºè§è²')" icon="el-icon-plus">æ°å»º</el-button></li> |
| | | <li v-permissions="['system:role:delete']"><el-button @click="deleteByIdInBatch" icon="el-icon-delete">å é¤</el-button></li> |
| | | </ul> |
| | | <el-table |
| | |
| | | :data="tableData.list" |
| | | :default-sort = "{prop: 'createTime', order: 'descending'}" |
| | | stripe |
| | | border |
| | | @selection-change="handleSelectionChange" |
| | | @sort-change="handleSortChange" |
| | | > |
| | | <el-table-column type="selection" fixed="left" width="55"></el-table-column> |
| | | <el-table-column prop="code" label="è§è²ç¼ç " fixed="left" min-width="100px" align="center"></el-table-column> |
| | | <el-table-column prop="name" label="è§è²åç§°" fixed="left" min-width="100px" align="center"></el-table-column> |
| | | <el-table-column prop="remark" label="è§è²å¤æ³¨" min-width="120px" align="center"></el-table-column> |
| | | <el-table-column prop="createUser" label="å建人" min-width="100px" align="center"> |
| | | <el-table-column prop="code" label="è§è²ç¼ç " fixed="left" min-width="100px"></el-table-column> |
| | | <el-table-column prop="name" label="è§è²åç§°" fixed="left" min-width="100px"></el-table-column> |
| | | <el-table-column prop="remark" label="è§è²å¤æ³¨" min-width="120px"></el-table-column> |
| | | <el-table-column prop="createUser" label="å建人" min-width="100px"> |
| | | <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="createTime" label="å建æ¶é´" min-width="140px" align="center"></el-table-column> |
| | | <el-table-column prop="updateUser" label="æ´æ°äºº" min-width="100px" align="center"> |
| | | <el-table-column prop="createTime" label="å建æ¶é´" min-width="140px" sortable="custom" sort-by="role.CREATE_TIME"></el-table-column> |
| | | <el-table-column prop="updateUser" label="æ´æ°äºº" min-width="100px"> |
| | | <template slot-scope="{row}">{{row.updateUserInfo == null ? '' : row.updateUserInfo.username}}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="updateTime" label="æ´æ°æ¶é´" min-width="140px" align="center"></el-table-column> |
| | | <el-table-column prop="updateTime" label="æ´æ°æ¶é´" min-width="140px"></el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['system:role:update', 'system:role:createRolePermission', 'system:role:createRoleMenu', 'system:role:delete'])" |
| | | label="æä½" |
| | | min-width="270" |
| | | align="center" |
| | | fixed="right" |
| | | > |
| | | <template v-if="isAdmin || (row.code !== adminCode && userInfo.roles.findIndex(code => code === row.code) === -1)" slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaRoleWindow.open('ç¼è¾è§è²', row, 0)" icon="el-icon-edit" v-permissions="['system:role:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="$refs.permissionConfigWindow.open(row, 0)" v-permissions="['system:role:createRolePermission']">é
ç½®æé</el-button> |
| | | <el-button type="text" @click="$refs.menuConfigWindow.open(row, 0)" icon="el-icon-menu" v-permissions="['system:role:createRoleMenu']">ææèå</el-button> |
| | | <el-button type="text" @click="$refs.operaRoleWindow.open('ç¼è¾è§è²', row)" icon="el-icon-edit" v-permissions="['system:role:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="$refs.permissionConfigWindow.open(row)" v-permissions="['system:role:createRolePermission']">é
ç½®æé</el-button> |
| | | <el-button type="text" @click="$refs.menuConfigWindow.open(row)" icon="el-icon-menu" v-permissions="['system:role:createRoleMenu']">ææèå</el-button> |
| | | <el-button v-if="!row.fixed" type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['system:role:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | searchForm: { |
| | | code: '', |
| | | name: '', |
| | | remark: '', |
| | | type: 0 |
| | | remark: '' |
| | | } |
| | | } |
| | | }, |
| | |
| | | <TableLayout :permissions="['system:user:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline> |
| | | <el-form-item label="ç¨æ·å" prop="username"> |
| | | <el-input v-model="searchForm.username" v-trim placeholder="请è¾å
¥ç¨æ·å" @keypress.enter.native="search"/> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="ç¨æ·å" prop="username">--> |
| | | <!-- <el-input v-model="searchForm.username" v-trim placeholder="请è¾å
¥ç¨æ·å" @keypress.enter.native="search"/>--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="å§å" prop="realname"> |
| | | <el-input v-model="searchForm.realname" v-trim placeholder="请è¾å
¥å§å" @keypress.enter.native="search"/> |
| | | <el-input v-model="searchForm.realname" v-trim placeholder="请è¾å
¥" @keypress.enter.native="search"/> |
| | | </el-form-item> |
| | | <el-form-item label="ææºå·ç " prop="mobile"> |
| | | <el-input v-model="searchForm.mobile" v-trim placeholder="请è¾å
¥ææºå·ç " @keypress.enter.native="search"/> |
| | | </el-form-item> |
| | | <el-form-item label="æå±é¨é¨" prop="rootDeptId"> |
| | | <DepartmentSelect v-model="searchForm.rootDeptId" placeholder="è¯·éæ©æå±é¨é¨" clearable/> |
| | | </el-form-item> |
| | | <el-form-item label="å²ä½" prop="positionId"> |
| | | <PositionSelect v-model="searchForm.positionId" placeholder="è¯·éæ©å²ä½" clearable/> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="ææºå·ç " prop="mobile">--> |
| | | <!-- <el-input v-model="searchForm.mobile" v-trim placeholder="请è¾å
¥ææºå·ç " @keypress.enter.native="search"/>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="æå±é¨é¨" prop="rootDeptId">--> |
| | | <!-- <DepartmentSelect v-model="searchForm.rootDeptId" placeholder="è¯·éæ©æå±é¨é¨" clearable/>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="å²ä½" prop="positionId">--> |
| | | <!-- <PositionSelect v-model="searchForm.positionId" placeholder="è¯·éæ©å²ä½" clearable/>--> |
| | | <!-- </el-form-item>--> |
| | | <section> |
| | | <el-button type="primary" icon="el-icon-search" @click="search">æç´¢</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']"> |
| | | <li v-permissions="['system:user:create']"><el-button icon="el-icon-plus" type="primary" @click="$refs.operaUserWindow.open('æ°å»ºç¨æ·')">æ°å»º</el-button></li> |
| | | <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">å é¤</el-button></li> |
| | | <li v-permissions="['system:user:create']"><el-button type="primary" @click="$refs.operaUserWindow.open('æ°å¢è´¦å·')">æ°å¢è´¦å·</el-button></li> |
| | | <!-- <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">å é¤</el-button></li>--> |
| | | </ul> |
| | | <!-- @selection-change="handleSelectionChange"--> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | :default-sort = "{prop: 'createTime', order: 'descending'}" |
| | | stripe |
| | | border |
| | | @selection-change="handleSelectionChange" |
| | | @sort-change="handleSortChange" |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <!-- <el-table-column prop="avatar" label="头å" width="80px" class-name="table-column-avatar" fixed="left"> |
| | | <template slot-scope="{row}"> |
| | | <img :src="row.avatar == null ? '/static/avatar/man.png' : row.avatar"> |
| | | </template> |
| | | </el-table-column> --> |
| | | <el-table-column prop="realname" label="å§å" min-width="100px" fixed="left"></el-table-column> |
| | | <el-table-column prop="username" label="ç¨æ·å" min-width="120px"></el-table-column> |
| | | <el-table-column prop="empNo" label="å·¥å·" sortable="custom" sort-by="EMP_NO" min-width="80px"></el-table-column> |
| | | <el-table-column prop="department" label="é¨é¨" min-width="120px"> |
| | | <template slot-scope="{row}">{{row.department == null ? '' : row.department.name}}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="position" label="å²ä½" min-width="160px" class-name="table-column-strings"> |
| | | <template slot-scope="{row}"> |
| | | <ul> |
| | | <li v-for="position in row.positions" :key="position.id">{{position.name}}</li> |
| | | </ul> |
| | | <el-table-column label="åºå·" width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="sex" label="æ§å«" sortable="custom" sort-by="SEX" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | {{row.sex | sex}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="mobile" label="ææºå·ç " min-width="100px"></el-table-column> |
| | | <el-table-column prop="email" label="é®ç®±" min-width="180px"></el-table-column> |
| | | <el-table-column prop="birthday" label="çæ¥" sortable="custom" sort-by="BIRTHDAY" min-width="100px"></el-table-column> |
| | | <el-table-column prop="username" label="è´¦å·" min-width="120px"></el-table-column> |
| | | <el-table-column prop="realname" label="å§å" min-width="100px"></el-table-column> |
| | | <el-table-column prop="mobile" label="èç³»æ¹å¼" min-width="100px"></el-table-column> |
| | | <el-table-column prop="roles" label="è§è²" min-width="160px" class-name="table-column-strings"> |
| | | <template slot-scope="{row}"> |
| | | <ul> |
| | |
| | | </ul> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="createUser" label="å建人" min-width="100px"> |
| | | <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template> |
| | | <el-table-column label="å¯ç¨ç¶æ" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch |
| | | @change="changeStatus($event, row)" |
| | | v-model="row.status" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="0" |
| | | :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="createTime" label="å建æ¶é´" sortable="custom" sort-by="CREATE_TIME" min-width="140px"></el-table-column> |
| | | <el-table-column prop="updateUser" label="æ´æ°äºº" min-width="100px"> |
| | | <template slot-scope="{row}">{{row.updateUserInfo == null ? '' : row.updateUserInfo.username}}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="updateTime" label="æ´æ°æ¶é´" sortable="custom" sort-by="UPDATE_TIME" min-width="140px"></el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])" |
| | | label="æä½" |
| | |
| | | > |
| | | <template v-if="isAdmin || (row.id !== userInfo.id && row.roles.findIndex(r => r.code === adminCode) === -1)" slot-scope="{row}"> |
| | | <el-button type="text" icon="el-icon-edit" @click="$refs.operaUserWindow.open('ç¼è¾ç¨æ·', row)" v-permissions="['system:user:update']">ç¼è¾</el-button> |
| | | <el-button type="text" @click="$refs.allocationEnterprises.open('åé
ä¼ä¸', row)">åé
ä¼ä¸</el-button> |
| | | <el-button type="text" icon="el-icon-s-custom" @click="$refs.roleConfigWindow.open(row)" v-permissions="['system:user:createUserRole']">é
ç½®è§è²</el-button> |
| | | <el-button type="text" @click="$refs.resetPwdWindow.open(row)" v-permissions="['system:user:resetPwd']">éç½®å¯ç </el-button> |
| | | <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">å é¤</el-button> |
| | | <!-- <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">å é¤</el-button>--> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | <RoleConfigWindow ref="roleConfigWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/> |
| | | <!-- éç½®å¯ç --> |
| | | <ResetPwdWindow ref="resetPwdWindow"/> |
| | | <!-- åé
ä¼ä¸ --> |
| | | <allocationEnterprises ref="allocationEnterprises" @success="handlePageChange(tableData.pagination.pageIndex)"/> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import OperaUserWindow from '@/components/system/user/OperaUserWindow' |
| | | import allocationEnterprises from '@/components/system/user/allocationEnterprises' |
| | | import RoleConfigWindow from '@/components/system/user/RoleConfigWindow' |
| | | import ResetPwdWindow from '@/components/system/user/ResetPwdWindow' |
| | | import DepartmentSelect from '@/components/common/DepartmentSelect' |
| | | import PositionSelect from '@/components/common/PositionSelect' |
| | | import { updUserStatus } from '@/api/system/user' |
| | | |
| | | export default { |
| | | name: 'SystemUser', |
| | | extends: BaseTable, |
| | | components: { PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination }, |
| | | components: { allocationEnterprises, PositionSelect, DepartmentSelect, ResetPwdWindow, RoleConfigWindow, OperaUserWindow, TableLayout, Pagination }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | searchForm: { |
| | | type:0, |
| | | username: '', // åå |
| | | realname: '', // å§å |
| | | rootDeptId: null, // é¨é¨ID |
| | |
| | | }] |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | changeStatus(status, row) { |
| | | updUserStatus({ |
| | | id: row.id, |
| | | status |
| | | }).then(res => { |
| | | this.search() |
| | | }).catch(err => { |
| | | row.status = row.status === 0 ? 1 : 0 |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | // 详ç»é
置请åèhttps://cli.vuejs.org/zh/config/#vue-config-js |
| | | // const outputDir = process.env.VUE_APP_CONTEXT_PATH.substring(1, process.env.VUE_APP_CONTEXT_PATH.length - 1) |
| | | // const outputDir = process.env.VUE_APP_CONTEXT_PATH.substring(1, process.env.VUE_APP_CONTEXT_PATH.length) |
| | | module.exports = { |
| | | publicPath: './', |
| | | outputDir: 'web', |
| | | outputDir: 'dest', |
| | | assetsDir: 'static', |
| | | lintOnSave: false, |
| | | devServer: { |
| | |
| | | @RequiresPermissions("business:company:create") |
| | | public ApiResponse create(@RequestBody Company company) { |
| | | companyService.create(company); |
| | | companyService.startSignAuth(company.getId()); |
| | | return ApiResponse.success(null); |
| | | } |
| | | |
| | |
| | | pageWrap.setQueryFlag(Constants.ONE);//æ¥è¯¢å
¨é¨ |
| | | return ApiResponse.success(companyService.findList(pageWrap)); |
| | | } |
| | | @ApiOperation("æ¥è¯¢å
¨é¨æ°æ®") |
| | | @PostMapping("/list") |
| | | @RequiresPermissions("business:company:query") |
| | | public ApiResponse<List<Company>> findList (@RequestBody Company pageWrap) { |
| | | pageWrap.setQueryFlag(Constants.ZERO);//æ¥è¯¢å
¨é¨æéèå´å
|
| | | return ApiResponse.success(companyService.findList(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("导åºExcel") |
| | | @PostMapping("/exportExcel") |
| | |
| | | @ApiModelProperty(value = "æ¹æ¡ä¸»é®ï¼å
³èsolutionsï¼", example = "1") |
| | | @ExcelColumn(name="æ¹æ¡ä¸»é®ï¼å
³èsolutionsï¼") |
| | | private Integer solutionId; |
| | | @ApiModelProperty(value = "æ¹æ¡å¯¹è±¡", example = "1") |
| | | @TableField(exist = false) |
| | | private Solutions solution; |
| | | |
| | | |
| | | } |
| | |
| | | @ExcelColumn(name="ç¾ç« å
³é®åï¼å¤ä¸ªç¨è±æéå·éå¼") |
| | | private String signKeyword; |
| | | |
| | | @ApiModelProperty(value = "æå±æ¹æ¡åºè¡¨ç¼ç (solution_base_id)", example = "1") |
| | | @ExcelColumn(name="æå±æ¹æ¡åºè¡¨ç¼ç (solution_base_id)") |
| | | private Integer solutionBaseId; |
| | | |
| | | @ApiModelProperty(value = "çæ¬å·") |
| | | @ExcelColumn(name="çæ¬å·") |
| | |
| | | .leftJoin(ApplyChange.class, ApplyChange::getId, ApplyChagneDetail::getApplyChangeId) |
| | | .leftJoin(InsuranceApply.class, InsuranceApply::getId, ApplyChange::getApplyId) |
| | | .leftJoin(Solutions.class, Solutions::getId, InsuranceApply::getSolutionId) |
| | | .leftJoin(Solutions.class, Solutions::getId, ApplyChange::getSolutionsId) |
| | | .leftJoin(Worktype.class,Worktype::getId,ApplyChagneDetail::getWorktypeId) |
| | | .leftJoin(DispatchUnit.class,DispatchUnit::getId,ApplyChagneDetail::getDuId) |
| | | .eq(ApplyChagneDetail::getApplyChangeId,update.getId()) |
| | |
| | | List<CompanySolution> list = new ArrayList<>(); |
| | | int num =0; |
| | | for(CompanySolution s :company.getSolutionList()){ |
| | | if(s.getSolutionBaseId() == null){ |
| | | if(s.getSolution() == null || s.getSolution().getBaseId() == null ||s.getSolution().getId()==null){ |
| | | continue; |
| | | } |
| | | sIds.add(s.getSolutionBaseId()); |
| | | sIds.add(s.getSolution().getId() ); |
| | | s.setCompanyId(company.getId()); |
| | | s.setIsdeleted(Constants.ZERO); |
| | | s.setCanAdd(Constants.formatIntegerNum(s.getCanAdd())); |
| | |
| | | s.setCreateDate(company.getCreateDate()); |
| | | s.setCreator(company.getCreator()); |
| | | s.setSortnum(num++); |
| | | s.setSolutionBaseId( s.getSolution().getId() ); |
| | | s.setSolutionId( s.getSolution().getBaseId() ); |
| | | s.setStatus(Constants.ZERO); |
| | | list.add(s); |
| | | } |
| | |
| | | for(Company company :companyList){ |
| | | //æ¥è¯¢ä¼ä¸ç¾çº¦ç¶æ å®¡æ ¸ç¶æ,0æ£å¨ç³è¯·1éè¿2驳å |
| | | int status = signService.organizationAuditStatus(company.getEmail()); |
| | | if(status == 0){ |
| | | continue; |
| | | } |
| | | if(status == 1){ |
| | | Company update = new Company(); |
| | | update.setId(company.getId()); |
| | |
| | | //æ´æ°è®¤è¯ç¶æ |
| | | companyMapper.updateById(update); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | // @Override |
| | |
| | | update.setStartTime(insuranceApply.getStartTime()); |
| | | insuranceApplyMapper.updateById(update); |
| | | |
| | | |
| | | multifileMapper.update(null,new UpdateWrapper<Multifile>().lambda() |
| | | .eq(Multifile::getIsdeleted,Constants.ZERO) |
| | | .eq(Multifile::getObjType,Constants.MultiFile.BD_DONE_PDF.getKey()) |
| | | .eq(Multifile::getObjId,update.getId()) |
| | | .set(Multifile::getIsdeleted,Constants.ONE) |
| | | .set(Multifile::getEditDate,update.getEditDate()) |
| | | .set(Multifile::getEditor,update.getEditor()) |
| | | ); |
| | | |
| | | insuranceApply.getBaoxiandanFile().setIsdeleted(Constants.ZERO); |
| | | insuranceApply.getBaoxiandanFile().setCreator(user.getId()); |
| | | insuranceApply.getBaoxiandanFile().setObjId(update.getId()); |
| | |
| | | update.setId(model.getId()); |
| | | insuranceApplyMapper.updateById(update); |
| | | |
| | | multifileMapper.update(null,new UpdateWrapper<Multifile>().lambda() |
| | | .eq(Multifile::getIsdeleted,Constants.ZERO) |
| | | .eq(Multifile::getObjType,Constants.MultiFile.BD_APPLY_PDF.getKey()) |
| | | .eq(Multifile::getObjId,update.getId()) |
| | | .set(Multifile::getIsdeleted,Constants.ONE) |
| | | .set(Multifile::getEditDate,update.getEditDate()) |
| | | .set(Multifile::getEditor,update.getEditor()) |
| | | ); |
| | | insuranceApply.getToubaodanFile().setIsdeleted(Constants.ZERO); |
| | | insuranceApply.getToubaodanFile().setCreator(user.getId()); |
| | | insuranceApply.getToubaodanFile().setObjId(update.getId()); |
| | |
| | | if (pageWrap.getModel().getOrtherInfo() != null) { |
| | | queryWrapper.eq(Solutions::getOrtherInfo, pageWrap.getModel().getOrtherInfo()); |
| | | } |
| | | if (pageWrap.getModel().getSolutionBaseId() != null) { |
| | | queryWrapper.eq(Solutions::getSolutionBaseId, pageWrap.getModel().getSolutionBaseId()); |
| | | } |
| | | |
| | | if (pageWrap.getModel().getVersion() != null) { |
| | | queryWrapper.eq(Solutions::getVersion, pageWrap.getModel().getVersion()); |
| | | } |