Merge remote-tracking branch 'origin/master'
# Conflicts:
# company/.env.development
已添加12个文件
已删除19个文件
已修改11个文件
| | |
| | | |
| | | #VUE_APP_API = 'http://192.168.0.134:10023/' |
| | | VUE_APP_API = 'http://localhost:10023/' |
| | | # ä¼ä¸ç«¯-ä»åº· |
| | | VUE_APP_API = 'http://192.168.0.134:10025/' |
| | | |
| | | # å¹³å°ç«¯-ä»åº· |
| | | # VUE_APP_API = 'http://192.168.0.134:10023/' |
| | | |
| | | # VUE_APP_API = 'http://192.168.0.134:10023/' |
| | | |
| | | # VUE_APP_API = 'http://localhost:10023/' |
| | | |
| | | # VUE_APP_API = 'http://192.168.0.134:10023/' |
| | |
| | | export function create (data) { |
| | | return request.post('/business/dispatchUnit/create', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | return request.post('/business/dispatchUnit/updateById', data) |
| | | } |
| | | |
| | | // æ ¹æ®IDæ¥è¯¢ |
| | | export function getById (id) { |
| | | return request.get(`/business/dispatchUnit/${id}`) |
| | | } |
| | | |
| | | // æ·»å å·¥ç§ |
| | | export function createSolution (data) { |
| | | return request.post('/business/dispatchUnit/createSolution', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ä¿¡æ¯ |
| | | export function editDispatchUnit (data) { |
| | | return request.post('/business/dispatchUnit/editDispatchUnit', data) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | |
| | | // æ ¹æ®IDå é¤ |
| | | export function deleteById (id) { |
| | | return request.get(`/business/duWorktype/delete/${id}`) |
| | | } |
| | |
| | | export function create (data) { |
| | | return request.post('/business/member/create', data) |
| | | } |
| | | |
| | | // æ°æ®å表 |
| | | export function findListByDTO (data) { |
| | | return request.post('/business/member/findListByDTO', 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 fetchMenuTree () { |
| | | return request.get('/system/menu/treeNodes?type=0') |
| | | return request.get('/system/menu/treeNodes?type=1') |
| | | } |
| | | |
| | | // æåº |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-upload |
| | | class="avatar-uploader" |
| | | accept=".mp4" |
| | | :style="customStyle" |
| | | :action="uploadImgUrl" |
| | | :data="uploadData" |
| | | :show-file-list="false" |
| | | :on-success="handleAvatarSuccess" |
| | | :on-error="uploadError" |
| | | :before-upload="beforeAvatarUpload"> |
| | | <video v-if="file.videourlfull" :src="file.videourlfull" :style="customStyle" class="avatar" /> |
| | | <div v-else :style="customStyle"> |
| | | <i class="el-icon-plus avatar-uploader-icon"></i> |
| | | <div class="tips-style">{{ tipsLabel }}</div> |
| | | </div> |
| | | </el-upload> |
| | | </div> |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | props: { |
| | | file: { |
| | | type: Object, |
| | | default: () => {} |
| | | }, |
| | | tipsLabel: '', |
| | | customStyle: { |
| | | type: String, |
| | | default: 'width: 90px; height: 90px;' |
| | | }, |
| | | uploadData: Object |
| | | }, |
| | | data() { |
| | | return { |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload' |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | | // ä¸ä¼ å¾ç |
| | | handleAvatarSuccess(res, file) { |
| | | if (res.code == 200) { |
| | | let { data } = res |
| | | this.file.videourl = data.imgaddr; |
| | | this.file.videourlfull = data.url; |
| | | this.$message.success('ä¸ä¼ æå') |
| | | this.$emit('uploadSuccess', { imgurl: data.imgaddr, imgurlfull: data.url, name: data.originname }) |
| | | } else { |
| | | this.$tip.apiFailed('ä¸ä¼ 失败') |
| | | } |
| | | this.$emit('uploadEnd') |
| | | }, |
| | | uploadError() { |
| | | this.$tip.apiFailed('ä¸ä¼ 失败') |
| | | this.$emit('endUpload') |
| | | }, |
| | | // // æ¦æª |
| | | beforeAvatarUpload(file) { |
| | | this.$emit('uploadBegin') |
| | | 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; |
| | | width: $image-width; |
| | | height: $image-width; |
| | | text-align: center; |
| | | } |
| | | .avatar { |
| | | width: $image-width; |
| | | height: $image-width; |
| | | display: block; |
| | | } |
| | | .tips-style { |
| | | height: 13px; |
| | | font-size: 13px; |
| | | font-weight: 400; |
| | | color: #999999; |
| | | 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> |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :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" v-if="form.type !== 1"> |
| | | <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> |
| | | </div> |
| | | </div> |
| | | <div class="list_item_table"> |
| | | <el-table |
| | | :data="item.saveDuWorkTypeDTOList" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column label="åºå·" width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="æå±å·¥ç§"> |
| | | <template slot-scope="scope"> |
| | | <el-select v-model="scope.row.workTypeId" @change="changeGZ($event, index, scope.$index)" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in item.typeWork" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | </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)" /> |
| | | </div> |
| | | </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> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </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' |
| | | import { editDispatchUnit } from '@/api/business/dispatchUnit' |
| | | export default { |
| | | name: 'OperaDispatchUnitWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow, UploadAvatarVideo }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | name: '', |
| | | code: '', |
| | | content: '', |
| | | type: '', |
| | | saveDuSolutionDTOList: [ |
| | | { |
| | | id: '', |
| | | saveDuWorkTypeDTOList: [ |
| | | { |
| | | videoUrl: '', |
| | | workTypeId: '', |
| | | workTypeName: '', |
| | | file: { |
| | | videourl: '', |
| | | videourlfull: '' |
| | | } |
| | | } |
| | | ], |
| | | typeWork: [], |
| | | solutionId: '', |
| | | solutionName: '' |
| | | } |
| | | ] |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | | name: [ |
| | | { required: true, message: '请è¾å
¥æ´¾é£åä½åç§°' } |
| | | ], |
| | | code: [ |
| | | { required: true, message: '请è¾å
¥æ´¾é£åä½ä¿¡ç¨ä»£ç ' } |
| | | ], |
| | | content: [ |
| | | { required: true, message: '请è¾å
¥æ´¾é£åä½æè¿°' } |
| | | ] |
| | | }, |
| | | insuranceScheme: [] |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | 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] |
| | | } |
| | | }) |
| | | }, |
| | | // ç¡®è®¤ä¿®æ¹ |
| | | __confirmEdit () { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | // è°ç¨æ°å»ºæ¥å£ |
| | | this.isWorking = true |
| | | editDispatchUnit(this.form) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('ä¿®æ¹æå') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | }, |
| | | // åæ¢å·¥ç§ |
| | | 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: '', |
| | | workTypeName: '', |
| | | file: { |
| | | videourl: '', |
| | | videourlfull: '' |
| | | } |
| | | } |
| | | ], |
| | | typeWork: [], |
| | | solutionId: '', |
| | | solutionName: '' |
| | | }) |
| | | }, |
| | | 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 { |
| | | 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 { |
| | | margin-bottom: 10px; |
| | | font-size: 14px; |
| | | color: #606266; |
| | | span { |
| | | color: red; |
| | | margin-right: 4px; |
| | | } |
| | | } |
| | | .list_item_input_val { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | } |
| | | } |
| | | .list_item_table { |
| | | |
| | | } |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :withFooter="false" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <div class="list"> |
| | | <el-form :inline="true" :model="form" :rules="rules" class="demo-form-inline"> |
| | | <el-form-item label="ä¿é©æ¹æ¡" prop="solutionId"> |
| | | <el-select v-model="form.solutionId" placeholder="è¯·éæ©"> |
| | | <el-option label="åºåä¸" value="shanghai"></el-option> |
| | | <el-option label="åºåäº" value="beijing"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ææä¿é©çæèµ·æ" prop="applyStartTime"> |
| | | <div style="display: flex; flex-direction: column;"> |
| | | <el-date-picker |
| | | v-model="form.applyStartTime" |
| | | type="date" |
| | | placeholder="éæ©æ¥æ"> |
| | | </el-date-picker> |
| | | <span style="color: #F95601; font-size: 14px;">ï¼æ¬¡æ¥çææä¿è¯·äº17:30åæäº¤ï¼è¶
æ¶æäº¤ä»¥ä¿é©å为åï¼</span> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="ä¿é©çææ¢æ" prop="applyEndTime"> |
| | | <el-date-picker |
| | | v-model="form.applyEndTime" |
| | | type="date" |
| | | placeholder="éæ©æ¥æ"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æä¿å¹´é¾"> |
| | | <span>25è³65</span> |
| | | </el-form-item> |
| | | <el-form-item label="è´¹ç¨"> |
| | | <span>200å
/年/人</span> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div class="btns"> |
| | | <div class="btns_item"> |
| | | <el-button type="primary" @click="$refs.selectEmployees.open('éååå·¥')">éååå·¥</el-button> |
| | | <el-button type="primary">导å
¥åå·¥</el-button> |
| | | <el-button type="primary" @click="$refs.addEmployee.open('æ·»å åå·¥', tableData)">æ·»å åå·¥</el-button> |
| | | </div> |
| | | <div class="btns_item"> |
| | | <el-button type="primary">éåæ´¾é£åä½</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | border |
| | | style="width: 100%;margin-bottom: 15px;"> |
| | | <el-table-column label="åºå·" width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="å§å"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="idcardNo" |
| | | label="身份è¯å·"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="å¹´é¾"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="æ´¾é£åä½"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="æå±å·¥ç§"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="è´¹ç¨"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="æä½"> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div class="submit"> |
| | | <el-button type="primary">æä¿ç³è¯·</el-button> |
| | | </div> |
| | | <div class="info"> |
| | | å¯ææ¬ |
| | | </div> |
| | | <!-- éæ©åå·¥ --> |
| | | <selectEmployees ref="selectEmployees" /> |
| | | <!-- æ·»å åå·¥ --> |
| | | <addEmployee ref="addEmployee" @result="getValue" /> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import selectEmployees from '@/components/enterprise/selectEmployees' |
| | | import addEmployee from '@/components/enterprise/addEmployee' |
| | | export default { |
| | | name: 'OperaInsuranceApplyWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow, selectEmployees, addEmployee }, |
| | | data () { |
| | | return { |
| | | form: { |
| | | id: null, |
| | | solutionId: '', |
| | | applyStartTime: '', |
| | | applyEndTime: '' |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | | solutionId: [ |
| | | { required: true, message: 'è¯·éæ©ä¿é©æ¹æ¡' } |
| | | ], |
| | | applyStartTime: [ |
| | | { required: true, message: 'è¯·éæ©ææä¿é©çæèµ·æ' } |
| | | ] |
| | | }, |
| | | tableData: [] |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/insuranceApply', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | getValue(list) { |
| | | this.tableData.push(...list) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .list { |
| | | width: 100%; |
| | | } |
| | | .btns { |
| | | width: 100%; |
| | | margin-bottom: 15px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | .btns_item { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | } |
| | | .submit { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-bottom: 15px; |
| | | } |
| | | .info { |
| | | width: 100%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :inline="true" class="demo-form-inline"> |
| | | <div v-for="(item, index) in list" :key="index"> |
| | | <el-form-item label="å§å" required> |
| | | <el-input v-model="item.name" placeholder="请è¾å
¥"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="身份è¯å·" required> |
| | | <el-input v-model="item.idcardNo" maxlength="18" placeholder="请è¾å
¥"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" v-if="index === 0" @click="add">æ·»å </el-button> |
| | | <el-button type="danger" v-else @click="dele(index)">å é¤</el-button> |
| | | </el-form-item> |
| | | </div> |
| | | </el-form> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | export default { |
| | | name: 'addEmployee', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | return { |
| | | list: [ |
| | | { |
| | | name: '', |
| | | idcardNo: '' |
| | | } |
| | | ], |
| | | arr: [] |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title, arr) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.list = [ |
| | | { |
| | | name: '', |
| | | idcardNo: '' |
| | | } |
| | | ] |
| | | this.arr = arr |
| | | }, |
| | | add() { |
| | | this.list.push({ |
| | | name: '', |
| | | idCard: '' |
| | | }) |
| | | }, |
| | | dele(index) { |
| | | this.form.list.splice(index, 1) |
| | | }, |
| | | hasDuplicates(arr) { |
| | | return arr.some((value, index) => arr.indexOf(value) !== index); |
| | | }, |
| | | confirm() { |
| | | // 夿åè¡¨å¦æ¯æç©ºå¼ |
| | | for (let i = 0; this.list.length; i++) { |
| | | if (!this.list[i].name || !this.list[i].idcardNo) { |
| | | this.$message.warning('请å
å®åä¿¡æ¯ååæäº¤') |
| | | return |
| | | } |
| | | } |
| | | // 夿æ°å½å
¥æ°æ®èº«ä»½è¯æ¯å¦æéå¤ |
| | | let idcardList = this.list.map(item => item.idcardNo) |
| | | if (this.hasDuplicates(idcardList)) { |
| | | this.$message.warning('èº«ä»½è¯æéå¤') |
| | | return |
| | | } |
| | | // å¤æè¯¦æ
åè¡¨æ°æ®èº«ä»½è¯æ¯å¦æéå¤ |
| | | let next = true |
| | | this.list.forEach(item => { |
| | | this.arr.forEach(child => { |
| | | if (item.idcardNo === child.idcardNo) { |
| | | next = false |
| | | } |
| | | }) |
| | | }) |
| | | if (next) { |
| | | this.$emit('result', this.list) |
| | | this.visible = false |
| | | } else { |
| | | this.$message.warning('身份è¯å·ä¸è½éå¤ï¼') |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <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> |
| | | </div> |
| | | </div> |
| | | <div class="list_item_table"> |
| | | <el-table |
| | | :data="item.saveDuWorkTypeDTOList" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column label="åºå·" width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="æå±å·¥ç§"> |
| | | <template slot-scope="scope"> |
| | | <el-select v-model="scope.row.workTypeId" @change="changeGZ($event, index, scope.$index)" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="item in item.typeWork" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | </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)" /> |
| | | </div> |
| | | </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> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </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' |
| | | import { createSolution } from '@/api/business/dispatchUnit' |
| | | export default { |
| | | name: 'addJobType', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow, UploadAvatarVideo }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | saveDuSolutionDTOList: [ |
| | | { |
| | | id: '', |
| | | saveDuWorkTypeDTOList: [ |
| | | { |
| | | videoUrl: '', |
| | | workTypeId: '', |
| | | workTypeName: '', |
| | | file: { |
| | | videourl: '', |
| | | videourlfull: '' |
| | | } |
| | | } |
| | | ], |
| | | typeWork: [], |
| | | solutionId: '', |
| | | solutionName: '' |
| | | } |
| | | ] |
| | | }, |
| | | insuranceScheme: [] |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/dispatchUnit', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | confirm() { |
| | | for (let i = 0; i < this.form.saveDuSolutionDTOList.length; i++) { |
| | | if (!this.form.saveDuSolutionDTOList[i].solutionId) { |
| | | this.$message.warning(`第${i + 1}é¡¹æ¹æ¡ä¸è½ä¸ºç©ºï¼`) |
| | | return |
| | | } |
| | | for (let a = 0; a < this.form.saveDuSolutionDTOList[i].saveDuWorkTypeDTOList.length; a++) { |
| | | if (!this.form.saveDuSolutionDTOList[i].saveDuWorkTypeDTOList[a].workTypeId) { |
| | | this.$message.warning(`第${i + 1}é¡¹æ¹æ¡å·¥ç§ä¸è½ä¸ºç©ºï¼`) |
| | | return |
| | | } |
| | | } |
| | | } |
| | | this.isWorking = true |
| | | createSolution(this.form) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('æä½æå') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }, |
| | | deleItem(index) { |
| | | if (this.form.saveDuSolutionDTOList.length === 1) { |
| | | this.$message.warning('è³å°ä¿çä¸é¡¹å
容') |
| | | return |
| | | } |
| | | this.form.saveDuSolutionDTOList.splice(index, 1) |
| | | }, |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.form.id = target.id |
| | | this.form.saveDuSolutionDTOList = [ |
| | | { |
| | | id: '', |
| | | saveDuWorkTypeDTOList: [ |
| | | { |
| | | videoUrl: '', |
| | | workTypeId: '', |
| | | workTypeName: '', |
| | | file: { |
| | | videourl: '', |
| | | videourlfull: '' |
| | | } |
| | | } |
| | | ], |
| | | typeWork: [], |
| | | solutionId: '', |
| | | solutionName: '' |
| | | } |
| | | ] |
| | | all({}) |
| | | .then(res => { |
| | | this.insuranceScheme = res |
| | | }) |
| | | }, |
| | | // åæ¢å·¥ç§ |
| | | 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 |
| | | }, |
| | | addItem(index) { |
| | | this.form.saveDuSolutionDTOList[index].saveDuWorkTypeDTOList.push({ |
| | | videoUrl: '', |
| | | workTypeId: '', |
| | | file: { |
| | | videourl: '', |
| | | videourlfull: '' |
| | | } |
| | | }) |
| | | }, |
| | | 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) |
| | | }, |
| | | add() { |
| | | this.form.saveDuSolutionDTOList.unshift({ |
| | | id: '', |
| | | saveDuWorkTypeDTOList: [ |
| | | { |
| | | videoUrl: '', |
| | | workTypeId: '', |
| | | workTypeName: '', |
| | | file: { |
| | | videourl: '', |
| | | videourlfull: '' |
| | | } |
| | | } |
| | | ], |
| | | typeWork: [], |
| | | solutionId: '' |
| | | }) |
| | | }, |
| | | // åæ¢æ¹æ¡ |
| | | changeTypeWork(id, index) { |
| | | console.log(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 |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .list { |
| | | 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 { |
| | | margin-bottom: 10px; |
| | | font-size: 14px; |
| | | color: #606266; |
| | | span { |
| | | color: red; |
| | | margin-right: 4px; |
| | | } |
| | | } |
| | | .list_item_input_val { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | } |
| | | } |
| | | .list_item_table { |
| | | |
| | | } |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <div class="info"> |
| | | <div class="info_list"> |
| | | <div class="info_list_item"> |
| | | <div class="info_list_item_label">æ´¾é£åä½ï¼</div> |
| | | <div class="info_list_item_val">{{form.name}}</div> |
| | | </div> |
| | | <div class="info_list_item"> |
| | | <div class="info_list_item_label">æ´¾é£åä½ä¿¡ç¨ä»£ç ï¼</div> |
| | | <div class="info_list_item_val">{{form.code}}</div> |
| | | </div> |
| | | <div class="info_list_item"> |
| | | <div class="info_list_item_label">æ´¾é£åä½ç¶æï¼</div> |
| | | <div class="info_list_item_val" v-if="form.unitStatus === 0">å¾
å®¡æ ¸</div> |
| | | <div class="info_list_item_val" style="color: green;" v-if="form.unitStatus === 1">å®¡æ ¸éè¿</div> |
| | | <div class="info_list_item_val" style="color: red;" v-if="form.unitStatus === 2">å®¡æ ¸ä¸éè¿</div> |
| | | </div> |
| | | <div class="info_list_item"> |
| | | <div class="info_list_item_label">æ´¾é£åä½è¯¦è¿°ï¼</div> |
| | | <div class="info_list_item_val">{{form.content}}</div> |
| | | </div> |
| | | </div> |
| | | <div class="info_btns"> |
| | | <el-button type="primary" @click="edit">ä¿®æ¹æ´¾é£åä½</el-button> |
| | | <el-button type="primary" @click="$refs.addJobType.open('æ·»å å·¥ç§', { id: form.id })">æ·»å å·¥ç§</el-button> |
| | | </div> |
| | | <div class="info_table"> |
| | | <div class="info_table_item" v-for="(item, index) in form.duSolutionList" :key="index"> |
| | | <div class="info_table_item_label">ä¿é©æ¹æ¡ï¼{{item.solutionName}}</div> |
| | | <div class="info_table_item_content"> |
| | | <el-table |
| | | :data="item.duWorktypeList" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column label="åºå·" width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="workTypeName" |
| | | label="æå±å·¥ç§"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="æä½è§é¢"> |
| | | <template slot-scope="{row}"> |
| | | <video loop controls width="150px" height="150px" :src="row.videoUrlFull"></video> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="checkDate" |
| | | label="å®¡æ ¸éè¿æ¥æ"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="ç¶æ"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.status === 0">å¾
å®¡æ ¸</span> |
| | | <span v-if="row.status === 1">å®¡æ ¸éè¿</span> |
| | | <span v-if="row.status === 2">å®¡æ ¸ä¸éè¿</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æä½"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" style="color: red;" v-if="scope.row.status === 2" @click="dele(scope.row.id, index, scope.$index)">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="info_status"> |
| | | <div class="info_status_label">å®¡æ ¸æµç¨</div> |
| | | <div class="info_status_list"> |
| | | <el-timeline :reverse="reverse"> |
| | | <el-timeline-item |
| | | v-for="(activity, index) in form.duLogList" |
| | | :key="index"> |
| | | <div style="display: flex; flex-direction: column;"> |
| | | <span style="font-size: 16px; font-weight: 400; color: black;"> |
| | | {{activity.title}} |
| | | <span style="font-size: 16px; font-weight: 400; color: black; margin-left: 10px;" v-if="activity.objType === 5 || activity.objType === 6 || activity.objType === 1 || activity.objType === 2"> |
| | | æäº¤æè§: - |
| | | </span> |
| | | </span> |
| | | <span style="margin-top: 5px; font-size: 12px; font-weight: 400; color: #999999;"> |
| | | æä½å-{{activity.creatorName}}ï¼{{activity.companyName}}ï¼{{activity.createDate}} |
| | | </span> |
| | | </div> |
| | | </el-timeline-item> |
| | | </el-timeline> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- æ·»å æ¹æ¡ --> |
| | | <addJobType ref="addJobType" @success="callback" /> |
| | | <!-- ç¼è¾ --> |
| | | <OperaDispatchUnitWindow ref="OperaDispatchUnitWindow" @success="callback" /> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import addJobType from '@/components/enterprise/addJobType' |
| | | import OperaDispatchUnitWindow from '@/components/enterprise/OperaDispatchUnitWindow' |
| | | import { getById } from '@/api/business/dispatchUnit' |
| | | import { deleteById } from '@/api/business/duWorktype' |
| | | export default { |
| | | name: 'dispatchUnitDetails', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow, addJobType, OperaDispatchUnitWindow }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | name: '', |
| | | code: '', |
| | | content: '', |
| | | unitStatus: '', |
| | | duLogList: [], |
| | | duSolutionList: [], |
| | | saveDuSolutionDTOList: [ |
| | | { |
| | | id: '', |
| | | saveDuWorkTypeDTOList: [ |
| | | { |
| | | videoUrl: '', |
| | | workTypeId: '', |
| | | file: { |
| | | videourl: '', |
| | | videourlfull: '' |
| | | } |
| | | } |
| | | ], |
| | | typeWork: [], |
| | | solutionId: '' |
| | | } |
| | | ] |
| | | }, |
| | | tableData: [], |
| | | insuranceScheme: [], |
| | | reverse: true, |
| | | activities: [] |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/dispatchUnit', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | edit() { |
| | | this.$confirm('ä¿®æ¹æ´¾é£åä½ä¼å¯¼è´è¯¥æ´¾é£åä½ä¸å¯ç¨ï¼å¦æ¨éè¦ä¿®æ¹è¯¥æ´¾é£åä½ç使ç¨ä¿é©æ¹æ¡åå·¥ç§è¯·ç¹å»âæ·»å å·¥ç§âæé®ã', '温馨æé', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$refs.OperaDispatchUnitWindow.open('ç¼è¾æ´¾é£åä½', { |
| | | id: this.form.id, |
| | | name: this.form.name, |
| | | code: this.form.code, |
| | | content: this.form.content, |
| | | type: 1 |
| | | }) |
| | | }).catch(() => { |
| | | |
| | | }); |
| | | }, |
| | | dele (id, b, c) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥å·¥ç§, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteById(id) |
| | | .then(res => { |
| | | this.$message.success('å 餿å') |
| | | this.getDetails() |
| | | }) |
| | | }).catch(() => { |
| | | |
| | | }); |
| | | }, |
| | | open (title, target) { |
| | | this.title = title |
| | | this.form.id = target.id |
| | | this.visible = true |
| | | this.getDetails() |
| | | }, |
| | | async getDetails() { |
| | | let res = await getById(this.form.id) |
| | | for (const key in this.form) { |
| | | this.form[key] = res[key] |
| | | } |
| | | }, |
| | | callback() { |
| | | this.visible = false |
| | | this.$emit('success') |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .info { |
| | | width: 100%; |
| | | .info_list { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | .info_list_item { |
| | | width: 33.3%; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 15px; |
| | | .info_list_item_label { |
| | | flex-shrink: 0; |
| | | width: 150px; |
| | | font-size: 14px; |
| | | color: black; |
| | | } |
| | | .info_list_item_val { |
| | | flex: 1; |
| | | font-size: 14px; |
| | | color: black; |
| | | } |
| | | } |
| | | } |
| | | .info_btns { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 15px; |
| | | } |
| | | .info_table { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | margin-bottom: 15px; |
| | | .info_table_item { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | margin-bottom: 15px; |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | | .info_table_item_label { |
| | | font-size: 14px; |
| | | color: black; |
| | | margin-bottom: 10px; |
| | | } |
| | | .info_table_item_content { |
| | | width: 100%; |
| | | } |
| | | } |
| | | } |
| | | .info_status { |
| | | width: 100%; |
| | | .info_status_label { |
| | | width: 100%; |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | margin-bottom: 15px; |
| | | } |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form class="demo-form-inline"> |
| | | <el-form-item label="ä¸ä¼ åå" required> |
| | | <el-button type="primary" @click="clickRef">ç¹å»ä¸ä¼ </el-button> |
| | | <el-button type="text">å忍¡æ¿.EXCEL</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <input type="file" accept=".excel" ref="fileExcel" @change="result" /> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | export default { |
| | | name: 'importEmployees', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | return { |
| | | list: [] |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title, arr) { |
| | | this.title = title |
| | | this.visible = true |
| | | }, |
| | | clickRef () { |
| | | this.$refs.fileExcel.click() |
| | | }, |
| | | result (e) { |
| | | console.log(e) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-input v-model="val" placeholder="æ¥è¯¢åå·¥å§å" @keypress.enter.native="getList" style="margin-bottom: 15px;"></el-input> |
| | | <el-table |
| | | :data="list" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column label="åºå·" width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="date" |
| | | label="å§å"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="身份è¯å·"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="æ´¾é£åä½"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="æå±å·¥ç§"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { findListByDTO } from '@/api/business/member' |
| | | export default { |
| | | name: 'selectEmployees', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | return { |
| | | val: '', |
| | | list: [] |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/dispatchUnit', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | open (title) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.getList() |
| | | }, |
| | | getList() { |
| | | findListByDTO({ |
| | | name: this.val |
| | | }).then(res => { |
| | | this.list = [] |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:dispatchunit:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="æ´¾é£åä½" prop="name"> |
| | | <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-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </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" |
| | | stripe |
| | | > |
| | | <el-table-column label="åºå·" width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="æ´¾é£åä½"></el-table-column> |
| | | <el-table-column label="ä¼ä¸ç¶æ"> |
| | | <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> |
| | | </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 |
| | | v-if="containPermissions(['business:dispatchunit:update', 'business:dispatchunit:delete'])" |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.dispatchUnitDetails.open('æ´¾é£åä½è¯¦æ
', row)" v-permissions="['business:dispatchunit:update']">æ¥ç详æ
</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaDispatchUnitWindow ref="operaDispatchUnitWindow" @success="handlePageChange"/> |
| | | <!-- 详æ
--> |
| | | <dispatchUnitDetails ref="dispatchUnitDetails" @success="handlePageChange"/> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaDispatchUnitWindow from '@/components/enterprise/OperaDispatchUnitWindow' |
| | | import dispatchUnitDetails from '@/components/enterprise/dispatchUnitDetails' |
| | | import { updateById } from '@/api/business/dispatchUnit' |
| | | export default { |
| | | name: 'DispatchUnit', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaDispatchUnitWindow, dispatchUnitDetails }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | searchForm: { |
| | | name: '', |
| | | dataType: 0 |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'æ´¾é£åä½ä¿¡æ¯è¡¨', |
| | | api: '/business/dispatchUnit', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | // ä¿®æ¹ç¶æ |
| | | changeStatus(status, row) { |
| | | updateById({ status, id: row.id }) |
| | | .then(res => { |
| | | this.search() |
| | | }) |
| | | .catch(err => { |
| | | row.status = row.status === 0 ? 1 : 0 |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:insuranceapply:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="ç¶æ" prop="status"> |
| | | <el-select v-model="searchForm.status" placeholder="è¯·éæ©" @keypress.enter.native="search"> |
| | | <el-option label="å¾
审æ¹" value="0"></el-option> |
| | | <el-option label="å¾
ç¾ç½²" value="2"></el-option> |
| | | <el-option label="å·²ç¾ç½²" value="3"></el-option> |
| | | <el-option label="å·²æ¤é" value="7"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ä¿é©æ¹æ¡" prop="baseSolutionId"> |
| | | <el-select v-model="searchForm.baseSolutionId" placeholder="è¯·éæ©" @change="search"> |
| | | <el-option |
| | | v-for="item in solutionList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æäº¤æ¥æ" prop="createDate"> |
| | | <el-date-picker |
| | | v-model="searchForm.createDate" |
| | | @change="search" |
| | | type="daterange" |
| | | range-separator="è³" |
| | | value-format="yyyy-MM-dd" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:dispatchunit:create']"> |
| | | <li><el-button type="primary" @click="$refs.OperaInsuranceApplyWindow.open('æä¿ç³è¯·')">æä¿ç³è¯·</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | > |
| | | <el-table-column label="åºå·" width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="status" label="ç¶æ"></el-table-column> |
| | | <el-table-column prop="solutionsName" label="ä¿é©æ¹æ¡"></el-table-column> |
| | | <el-table-column prop="insureNum" label="æä¿äººæ°"></el-table-column> |
| | | <el-table-column prop="serviceDays" label="æä¿æ¶é¿ï¼å¤©ï¼"></el-table-column> |
| | | <el-table-column prop="fee" label="æ»è´¹ç¨ï¼å
ï¼"></el-table-column> |
| | | <el-table-column prop="createTimeS" label="æäº¤æ¥æ"></el-table-column> |
| | | <el-table-column prop="endTimeE" label="æä¿çææ¥æ"></el-table-column> |
| | | <el-table-column prop="endTimeS" label="æä¿å¤±ææ¥æ"></el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:insuranceapply:update', 'business:insuranceapply:delete'])" |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaInsuranceApplyWindow.open('ç¼è¾æä¿ç³è¯·ä¿¡æ¯è¡¨', row)" icon="el-icon-edit" v-permissions="['business:insuranceapply:update']">æ¥ç详æ
</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å¢æä¿ --> |
| | | <OperaInsuranceApplyWindow ref="OperaInsuranceApplyWindow" @sucess="handlePageChange" /> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaInsuranceApplyWindow from '@/components/enterprise/OperaInsuranceApplyWindow' |
| | | import { all as solutionAll} from '@/api/business/solutions' |
| | | export default { |
| | | name: 'InsuranceApply', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaInsuranceApplyWindow }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | searchForm: { |
| | | createTimeS: '', |
| | | createTimeE: '', |
| | | baseSolutionId: '', |
| | | status: '2' |
| | | }, |
| | | solutionList:[] |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'æä¿ç³è¯·ä¿¡æ¯è¡¨', |
| | | api: '/business/insuranceApply', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | this.loadSelectList() |
| | | }, |
| | | methods:{ |
| | | loadSelectList() { |
| | | solutionAll({ dataType:0 }).then(res => { |
| | | this.solutionList = res |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | |
| | | # 项ç®ä¸ä¸æè·¯å¾ |
| | | # preselect_admin/ |
| | | VUE_APP_CONTEXT_PATH = './' |
| | | VUE_APP_CONTEXT_PATH = '/' |
| | | |
| | | # æ¥å£åç¼ |
| | | # VUE_APP_API_PREFIX = '/yunyibao_interface/' |
| | | VUE_APP_API_PREFIX = '/interface' |
| | | VUE_APP_API_PREFIX = '/api' |
| | |
| | | # å¼åç¯å¢é
ç½® |
| | | NODE_ENV = 'development' |
| | | |
| | | <<<<<<< HEAD |
| | | VUE_APP_API = 'http://192.168.0.134:10025/' |
| | | ======= |
| | | VUE_APP_CONTEXT_PATH = '/' |
| | | VUE_APP_API_PREFIX = '/api' |
| | | |
| | | # 任康 |
| | | # VUE_APP_API = 'http://192.168.0.15:10017/' |
| | | # ç¦æ¾ |
| | | #VUE_APP_API = 'http://192.168.0.36:10023' |
| | | # æ±è |
| | | VUE_APP_API = 'http://192.168.0.154:10023' |
| | | |
| | | # #æµè¯æå¡å¨ |
| | | #VUE_APP_API = 'https://dmtest.ahapp.net/preselect_admin_interface' |
| | | >>>>>>> c6c95a49be6194989c124b8fd316fb5d434bd153 |
| | | VUE_APP_API = 'http://192.168.0.134:10025/' |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | <<<<<<< HEAD |
| | | // æ¥è¯¢----å¹³å°èå |
| | | export function fetchTree () { |
| | | return request.post('/system/menu/treeList/0') |
| | |
| | | // æ¥è¯¢----ä¼ä¸èå |
| | | export function fetchTree1 () { |
| | | return request.post('/system/menu/treeList/1') |
| | | ======= |
| | | // æ¥è¯¢ |
| | | export function fetchTree (data, type) { |
| | | return request.post(`/system/menu/treeList/${type}`, data) |
| | | >>>>>>> c6c95a49be6194989c124b8fd316fb5d434bd153 |
| | | } |
| | | |
| | | // æ°å»º |
| | |
| | | } |
| | | |
| | | // æ¥è¯¢èåæ |
| | | <<<<<<< HEAD |
| | | export function fetchMenuTree () { |
| | | return request.get('/system/menu/treeNodes?type=1') |
| | | ======= |
| | | export function fetchMenuTree (params) { |
| | | return request.get('/system/menu/treeNodes', { params }) |
| | | >>>>>>> c6c95a49be6194989c124b8fd316fb5d434bd153 |
| | | } |
| | | |
| | | // æåº |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | |
| | | |
| | | const outputDir = process.env.VUE_APP_CONTEXT_PATH.substring(1, process.env.VUE_APP_CONTEXT_PATH.length) |
| | | // const proxyMiddleware = require('http-proxy-middleware'); |
| | | module.exports = { |
| | | publicPath: './', |
| | | outputDir: outputDir || 'web', |
| | | outputDir: 'web', |
| | | assetsDir: 'static', |
| | | lintOnSave: false, |
| | | devServer: { |
| | | // before(app) { |
| | | // app.use( |
| | | // [process.env.VUE_APP_API_PREFIX], |
| | | // proxyMiddleware({ |
| | | // target: process.env.VUE_APP_API, |
| | | // changeOrigin: true, |
| | | // pathRewrite: { |
| | | // [`^${[process.env.VUE_APP_API_PREFIX]}`]: '' |
| | | // } |
| | | // }) |
| | | // ); |
| | | // }, |
| | | host: '0.0.0.0', |
| | | port: 10086, |
| | | proxy: { |