Merge branch 'master' of http://139.186.142.91:10010/r/productDev/zbom_dianjiang
| | |
| | | "clipboard": "^2.0.0" |
| | | } |
| | | }, |
| | | "vue-cropper": { |
| | | "version": "0.6.5", |
| | | "resolved": "https://registry.npmmirror.com/vue-cropper/-/vue-cropper-0.6.5.tgz", |
| | | "integrity": "sha512-lSvY6IpeA/Tv/iPZ/FOkMHVRBPSlm7t57nuHEZFBMRNOH8ElvfqVlnHGDOAMlvPhh9gHiddiQoASS+fY0MFX0g==", |
| | | "dev": true |
| | | }, |
| | | "vue-eslint-parser": { |
| | | "version": "7.6.0", |
| | | "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-7.6.0.tgz?cache=0&sync_timestamp=1614679548045&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-eslint-parser%2Fdownload%2Fvue-eslint-parser-7.6.0.tgz", |
| | |
| | | "node-sass": "^4.12.0", |
| | | "sass-loader": "^8.0.2", |
| | | "vue-cli-plugin-element-ui": "~1.1.4", |
| | | "vue-cropper": "^0.6.5", |
| | | "vue-json-viewer": "^2.2.22", |
| | | "vue-template-compiler": "^2.6.11" |
| | | }, |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '../../utils/request' |
| | | |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | return request.post('/business/cases/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | export function findAll (data) { |
| | | return request.post('/business/cases/list', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | | return request.post('/business/cases/create', data) |
| | | } |
| | | export function updateStatus (data) { |
| | | return request.post('/business/cases/updateStatus', data) |
| | | } |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | return request.post('/business/cases/exportExcel', data, { |
| | | download: true |
| | | }) |
| | | } |
| | | export function importExcel (data) { |
| | | return request.post('/business/cases/importExcel', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | return request.post('/business/cases/updateById', data) |
| | | } |
| | | |
| | | // å é¤ |
| | | export function deleteById (id) { |
| | | return request.get(`/business/cases/delete/${id}`) |
| | | } |
| | | export function getById (id) { |
| | | return request.get(`/business/cases/${id}`) |
| | | } |
| | | |
| | | // æ¹éå é¤ |
| | | export function deleteByIdInBatch (ids) { |
| | | return request.get('/business/cases/delete/batch', { |
| | | params: { |
| | | ids |
| | | } |
| | | }) |
| | | } |
| | |
| | | trim: true |
| | | }) |
| | | } |
| | | export function findAll (data) { |
| | | return request.post('/business/member/list', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | |
| | | export function updateStatus (data) { |
| | | return request.post('/business/member/updateStatus', data) |
| | | } |
| | | |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | return request.post('/business/member/exportExcel', data, { |
| | |
| | | autoLogin: false |
| | | }) |
| | | } |
| | | // ä¸ä¼ |
| | | export function upload (data) { |
| | | return request.post('/public/upload', data) |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .red{ |
| | | color: red; |
| | | } |
| | | .grey{ |
| | | color: grey; |
| | | } |
| | | .green{ |
| | | color: green; |
| | | } |
| | | .blue{ |
| | | color: #216EEE; |
| | | }.orange{ |
| | | color: orange; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-dialog |
| | | class="center-title" |
| | | :title="title" |
| | | width="500px" |
| | | top="30vh" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <p class="tip-warn"><i class="el-icon-warning"></i>导å
¥è¯´æï¼<br> |
| | | 1.请å
ä¸è½½æä»¶æ¨¡æ¿ï¼å¹¶æç
§æ¨¡æ¿è¦å»å¡«åè¡¨æ ¼å
容;<br> |
| | | </p> |
| | | <el-form class="demo-form-inline" > |
| | | <el-form-item label="æ¡ä¾æ°æ®" required> |
| | | <div style="width: 100%;display: flex;align-items: center;"> |
| | | <el-button type="primary" :loading="importing" @click="clickRef">ç¹å»ä¸ä¼ </el-button> |
| | | <el-button type="text" @click="exportTemplate">ç¹å»ä¸è½½æ¨¡ç.EXCEL</el-button> |
| | | </div> |
| | | <div style="font-size: 14px; color: black;" v-if="fileName">{{fileName}}</div> |
| | | </el-form-item> |
| | | </el-form> |
| | | <input type="file" style="position: fixed; left: 0; top: -50px;" accept=".xlsx" ref="fileExcel" @change="result" /> |
| | | <template v-slot:footer> |
| | | <el-button @click="visible=false">è¿å</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { importExcel } from '@/api/business/importRecord' |
| | | export default { |
| | | name: 'OperaCasesImportWindow', |
| | | extends: BaseOpera, |
| | | // eslint-disable-next-line vue/no-unused-components |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | return { |
| | | importing: false, |
| | | fileName: '', |
| | | type: 1 |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title) { |
| | | this.title = title |
| | | this.fileName = '' |
| | | this.visible = true |
| | | this.type = 0 |
| | | }, |
| | | // å¯¼åºæ¨¡æ¿ |
| | | exportTemplate () { |
| | | // æä¿ç³è¯· |
| | | window.open('/template/cases.xlsx') |
| | | }, |
| | | clickRef () { |
| | | this.$refs.fileExcel.click() |
| | | }, |
| | | result (e) { |
| | | this.importing=true |
| | | const data = new FormData() |
| | | data.append('file', e.target.files[0]) |
| | | data.append('type', this.type) |
| | | importExcel(data) |
| | | .then(res => { |
| | | this.$message.success('æ°æ®å·²ä¸ä¼ æåï¼å¯åå¾ã导å
¥è®°å½ãè忥ç任塿§è¡è¿åº¦ã') |
| | | this.$emit('success') |
| | | this.visible = false |
| | | }) |
| | | .catch(err => { |
| | | this.fileName = '' |
| | | this.$message.error(err) |
| | | }) |
| | | .finally(() => { |
| | | this.$refs.fileExcel.value = null |
| | | this.importing=false |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | :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="memberId" > |
| | | <el-select v-model="form.memberId" placeholder="éæ©èå¸" clearable filterable |
| | | > |
| | | <el-option |
| | | v-for="item in memberList" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="å¾é" prop="icon"> |
| | | <UploadImage |
| | | :fileList="tempfileList" |
| | | :uploadData="uploadData" |
| | | @beginUpload="isUploading=true" |
| | | @endUpload="isUploading=false"/> |
| | | <p class="tip-warn"> |
| | | 建议尺寸ï¼750px X 750px |
| | | æ¯æpngãjpgãjpegæ ¼å¼ï¼å¤§å°ä¸è¶
è¿2Mï¼ä¸ä¼ å¾çä¸å
许æ¶åæ¿æ²»ææä¸è²æ
, |
| | | </p> |
| | | </el-form-item> |
| | | <el-form-item label="å¼å§æ¶é´" prop="startDate" > |
| | | <el-date-picker |
| | | clearable |
| | | v-model="form.startDate" |
| | | type="date" |
| | | value-format="yyyy-MM-dd" |
| | | format="yyyy-MM-dd" |
| | | placeholder="å¼å§æ¶é´" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="导å
¥æ¶é´" prop="endDate" > |
| | | <el-date-picker |
| | | clearable |
| | | v-model="form.endDate" |
| | | type="date" |
| | | value-format="yyyy-MM-dd" |
| | | format="yyyy-MM-dd" |
| | | placeholder="ç»ææ¶é´" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æåºç " prop="sortnum"> |
| | | <el-input v-model="form.sortnum" type="" placeholder="请è¾å
¥æåºç " v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æè¿°" prop="detail"> |
| | | <el-input type="textarea" v-model="form.detail" placeholder="请è¾å
¥æè¿°" v-trim/> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import UploadImage from '@/components/common/UploadImage' |
| | | import { findAll as memberList } from '@/api/business/member' |
| | | export default { |
| | | name: 'OperaCasesWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow, UploadImage }, |
| | | data () { |
| | | return { |
| | | isUploading: false, |
| | | uploadData: { |
| | | folder: 'dianjiang/category' |
| | | }, |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | status: 0, |
| | | sortnum: null, |
| | | name: '', |
| | | detail: null, |
| | | remark: null, |
| | | fileList: [], |
| | | memberId: null, |
| | | startDate: null, |
| | | endDate: null |
| | | }, |
| | | tempfileList: [], |
| | | memberList: [], |
| | | // éªè¯è§å |
| | | rules: { |
| | | name: [{ required: true, message: '请è¾å
¥æ é¢' }], |
| | | detail: [{ required: true, message: '请è¾å
¥æè¿°' }], |
| | | memberId: [{ required: true, message: 'è¯·éæ©èå¸' }], |
| | | startDate: [{ required: true, message: 'è¯·éæ©å¼å§æ¥æ' }], |
| | | endDate: [{ required: true, message: '请è¾å
¥ç»ææ¥æ' }] |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/cases', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | loadMemberList () { |
| | | memberList({ |
| | | }).then(res => { |
| | | this.memberList = res |
| | | }) |
| | | }, |
| | | |
| | | confirm () { |
| | | this.form.fileList = this.tempfileList |
| | | if (this.form[this.configData['field.id']] == null || this.form[this.configData['field.id']] === '') { |
| | | this.__confirmCreate() |
| | | return |
| | | } |
| | | this.__confirmEdit() |
| | | }, |
| | | open (title, target, type) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.loadMemberList() |
| | | this.tempfileList = [] |
| | | this.form = { |
| | | id: null, |
| | | status: 0, |
| | | sortnum: null, |
| | | name: '', |
| | | detail: null, |
| | | remark: null, |
| | | fileList: [], |
| | | memberId: null, |
| | | startDate: null, |
| | | endDate: null |
| | | } |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | this.form.type = type |
| | | }) |
| | | return |
| | | } |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | this.form.fileList = this.form.fileList || [] |
| | | this.form.fileList.forEach(item => { |
| | | this.tempfileList.push({ |
| | | fileurl: item.fileurl, |
| | | name: item.name, |
| | | url: item.url |
| | | }) |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | }) |
| | | .catch(err => { |
| | | this.fileName = '' |
| | | this.$message.error(err) |
| | | }) |
| | | .finally(() => { |
| | | this.$refs.fileExcel.value = null |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="50%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="æ¯å¦å·²å é¤ 0æªå é¤ 1å·²å é¤" prop="deleted"> |
| | | <el-input v-model="form.deleted" placeholder="请è¾å
¥æ¯å¦å·²å é¤ 0æªå é¤ 1å·²å é¤" v-trim/> |
| | | <el-form-item label="èå¸å§å" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请è¾å
¥å§å" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å建人ç¼ç " prop="createUser"> |
| | | <el-input v-model="form.createUser" placeholder="请è¾å
¥å建人ç¼ç " v-trim/> |
| | | <el-form-item label="èå¸å·¥å·" prop="code"> |
| | | <el-input v-model="form.code" placeholder="请è¾å
¥å·¥å·" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å建æ¶é´" prop="createTime"> |
| | | <el-date-picker v-model="form.createTime" value-format="yyyy-MM-dd" placeholder="请è¾å
¥å建æ¶é´"></el-date-picker> |
| | | <el-form-item label="èä¸ç
§" prop="imgurl"> |
| | | <!-- <UploadAvatarImage |
| | | :file="{ imgurlfull: form.fullImgurl, imgurl: form.imgurl }" |
| | | :uploadData="uploadData" |
| | | @uploadSuccess="uploadAvatarSuccess" |
| | | /> |
| | | <p class="tip-warn"> |
| | | 建议尺寸ï¼750px X 750pxï¼ä¸é6å¼ |
| | | æ¯æpngãjpgãjpegæ ¼å¼ï¼å¤§å°ä¸è¶
è¿2Mï¼ä¸ä¼ å¾çä¸å
许æ¶åæ¿æ²»ææä¸è²æ
, |
| | | </p>--> |
| | | <div class="upload_wrap"> |
| | | <UploadFaceImg :file="{ imgurlfull: form.fullImgurl, imgurl: form.imgurl }" :uploadData="uploadData" |
| | | @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false" @uploadBegin="isUploading = true" /> |
| | | <div class="content"> |
| | | <div>1ã建议尺寸ï¼750px X 750px ã</div> |
| | | <div>2ãæ¯æpngãjpgãjpegæ ¼å¼ï¼å¤§å°ä¸è¶
è¿2Mï¼ä¸ä¼ å¾çä¸å
许æ¶åæ¿æ²»ææä¸è²æ
ã</div> |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="æ´æ°äººç¼ç " prop="updateUser"> |
| | | <el-input v-model="form.updateUser" placeholder="请è¾å
¥æ´æ°äººç¼ç " v-trim/> |
| | | <el-form-item label="æ§å«" prop="sex"> |
| | | <el-radio-group v-model="form.sex" style="margin-bottom: 20px;"> |
| | | <el-radio-button :label="0">ç·</el-radio-button> |
| | | <el-radio-button :label="1">女</el-radio-button> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="æ´æ°æ¶é´" prop="updateTime"> |
| | | <el-date-picker v-model="form.updateTime" value-format="yyyy-MM-dd" placeholder="请è¾å
¥æ´æ°æ¶é´"></el-date-picker> |
| | | <el-form-item label="å²ä½" prop="positon"> |
| | | <el-input v-model="form.positon" placeholder="请è¾å
¥å²ä½" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input v-model="form.remark" placeholder="请è¾å
¥å¤æ³¨" v-trim/> |
| | | <el-form-item label="ä»ä¸å¹´ä»½" prop="jobYear"> |
| | | <el-input type="number" v-model="form.jobYear" placeholder="请è¾å
¥ä»ä¸å¹´ä»½" v-trim><template slot="append">å¹´</template></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="头å" prop="coverImage"> |
| | | <el-input v-model="form.coverImage" placeholder="请è¾å
¥å¤´å" v-trim/> |
| | | <el-form-item label="æå¡æåº" prop="zhanquIdList"> |
| | | <el-select v-model="form.zhanquIdList" placeholder="è¯·éæ©æå¡æåº" filterable multiple clearable > |
| | | <el-option |
| | | v-for="item in cateList.filter(item=>{return item.type==0})" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="openid" prop="openid"> |
| | | <el-input v-model="form.openid" placeholder="请è¾å
¥openid" v-trim/> |
| | | <el-form-item label="åä¸åç±»å" prop="bustypeIdList"> |
| | | <el-select v-model="form.bustypeIdList" placeholder="è¯·éæ©åä¸åç±»å" filterable multiple clearable > |
| | | <el-option |
| | | v-for="item in cateList.filter(item=>{return item.type==1})" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æµç§°" prop="nickName"> |
| | | <el-input v-model="form.nickName" placeholder="请è¾å
¥æµç§°" v-trim/> |
| | | <el-form-item label="èå¸ç级" prop="levelId"> |
| | | <el-select v-model="form.levelId" placeholder="è¯·éæ©èå¸ç级" filterable clearable > |
| | | <el-option |
| | | v-for="item in cateList.filter(item=>{return item.type==3})" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="èç³»çµè¯" prop="telephone"> |
| | | <el-input v-model="form.telephone" placeholder="请è¾å
¥èç³»çµè¯" v-trim/> |
| | | <el-form-item label="æ
é¿é¢å" prop="fieldIdList"> |
| | | <el-select v-model="form.fieldIdList" placeholder="è¯·éæ©æ
é¿é¢å" filterable multiple clearable > |
| | | <el-option |
| | | v-for="item in cateList.filter(item=>{return item.type==2})" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="å§å" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请è¾å
¥å§å" v-trim/> |
| | | <el-form-item label="è´¹ç¨æ å" prop="fee"> |
| | | <el-input type="number" v-model="form.fee" placeholder="请è¾å
¥è´¹ç¨æ å" v-trim><template slot="append">å
/å¨</template></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç¨å·¥èº«ä»½:0=æªç³è¯·ï¼1=ç³è¯·ä¸ï¼2=å·²éè¿ï¼3=æªéè¿ï¼" prop="workerIdentity"> |
| | | <el-input v-model="form.workerIdentity" placeholder="请è¾å
¥ç¨å·¥èº«ä»½:0=æªç³è¯·ï¼1=ç³è¯·ä¸ï¼2=å·²éè¿ï¼3=æªéè¿ï¼" v-trim/> |
| | | <el-form-item label="æå¡ååº" prop="serveNum"> |
| | | <el-input type="number" v-model="form.serveNum" placeholder="请è¾å
¥æå¡ååº" v-trim><template slot="append">个</template></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è´§è¿èº«ä»½:0=æªç³è¯·ï¼1=ç³è¯·ä¸ï¼2=å·²éè¿ï¼3=æªéè¿ï¼" prop="driverIdentity"> |
| | | <el-input v-model="form.driverIdentity" placeholder="请è¾å
¥è´§è¿èº«ä»½:0=æªç³è¯·ï¼1=ç³è¯·ä¸ï¼2=å·²éè¿ï¼3=æªéè¿ï¼" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="ä¾é¤å¾ç²:0=æªç³è¯·ï¼1=ç³è¯·ä¸ï¼2=å·²éè¿ï¼3=æªéè¿ï¼" prop="chefIdentity"> |
| | | <el-input v-model="form.chefIdentity" placeholder="请è¾å
¥ä¾é¤å¾ç²:0=æªç³è¯·ï¼1=ç³è¯·ä¸ï¼2=å·²éè¿ï¼3=æªéè¿ï¼" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å½åä½é¢(åä½:å)" prop="amount"> |
| | | <el-input v-model="form.amount" placeholder="请è¾å
¥å½åä½é¢(åä½:å)" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å岿»éé¢(åä½:å)" prop="totalAmount"> |
| | | <el-input v-model="form.totalAmount" placeholder="请è¾å
¥å岿»éé¢(åä½:å)" v-trim/> |
| | | <el-form-item label="èå¸ç®ä»" prop="content"> |
| | | <el-input type="textarea" v-model="form.content" placeholder="请è¾å
¥èå¸ç®ä»" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ" prop="status"> |
| | | <el-input v-model="form.status" placeholder="请è¾å
¥ç¶æ" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æåç»å½æ¶é´" prop="loginTime"> |
| | | <el-date-picker v-model="form.loginTime" value-format="yyyy-MM-dd" placeholder="请è¾å
¥æåç»å½æ¶é´"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æ»ç»å½æ¬¡æ°" prop="loginTimes"> |
| | | <el-input v-model="form.loginTimes" placeholder="请è¾å
¥æ»ç»å½æ¬¡æ°" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æ»æ¥åé" prop="reciveNum"> |
| | | <el-input v-model="form.reciveNum" placeholder="请è¾å
¥æ»æ¥åé" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æ»ååé" prop="publishNum"> |
| | | <el-input v-model="form.publishNum" placeholder="请è¾å
¥æ»ååé" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="è¯å" prop="score"> |
| | | <el-input v-model="form.score" placeholder="请è¾å
¥è¯å" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="å®ä½å°å" prop="localtion"> |
| | | <el-input v-model="form.localtion" placeholder="请è¾å
¥å®ä½å°å" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="纬度" prop="lat"> |
| | | <el-input v-model="form.lat" placeholder="请è¾å
¥çº¬åº¦" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="ç»åº¦" prop="lgt"> |
| | | <el-input v-model="form.lgt" placeholder="请è¾å
¥ç»åº¦" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="ç份" prop="province"> |
| | | <el-input v-model="form.province" placeholder="请è¾å
¥ç份" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="åå¸" prop="city"> |
| | | <el-input v-model="form.city" placeholder="请è¾å
¥åå¸" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="åºå¿" prop="area"> |
| | | <el-input v-model="form.area" placeholder="请è¾å
¥åºå¿" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æ¯å¦æ¥åèªå¨æ´¾å:0=å¦ï¼1=æ¯ï¼" prop="autoReciveStatus"> |
| | | <el-input v-model="form.autoReciveStatus" placeholder="请è¾å
¥æ¯å¦æ¥åèªå¨æ´¾å:0=å¦ï¼1=æ¯ï¼" v-trim/> |
| | | <el-radio-group v-model="form.status" style="margin-bottom: 20px;"> |
| | | <el-radio-button :label="0">å¯ç¨</el-radio-button> |
| | | <el-radio-button :label="1">ç¦ç¨</el-radio-button> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { findAll as cateList } from '@/api/business/category' |
| | | import UploadFaceImg from '@/components/common/UploadFaceImg' |
| | | export default { |
| | | name: 'OperaMemberWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | components: { GlobalWindow ,UploadFaceImg}, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | isUploading: false, |
| | | cateList: [], |
| | | uploadData: { |
| | | folder: 'dianjiang/member' |
| | | }, |
| | | form: { |
| | | id: null, |
| | | deleted: '', |
| | | createUser: '', |
| | | createTime: '', |
| | | updateUser: '', |
| | | updateTime: '', |
| | | remark: '', |
| | | coverImage: '', |
| | | openid: '', |
| | | nickName: '', |
| | | telephone: '', |
| | | imgurl: '', |
| | | fullImgurl: '', |
| | | name: '', |
| | | workerIdentity: '', |
| | | driverIdentity: '', |
| | | chefIdentity: '', |
| | | amount: '', |
| | | totalAmount: '', |
| | | status: '', |
| | | loginTime: '', |
| | | loginTimes: '', |
| | | reciveNum: '', |
| | | publishNum: '', |
| | | score: '', |
| | | localtion: '', |
| | | lat: '', |
| | | lgt: '', |
| | | province: '', |
| | | city: '', |
| | | area: '', |
| | | autoReciveStatus: '' |
| | | code: '', |
| | | sex: 0, |
| | | jobYear: '', |
| | | positon: '', |
| | | zhanquIdList: [], |
| | | bustypeIdList: [], |
| | | fieldIdList: [], |
| | | levelId: '', |
| | | fee: '', |
| | | status: 0, |
| | | content: 0, |
| | | serveNum: '', |
| | | type: 0 |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | | name: [{ required: true, message: '请è¾å
¥å§å' }], |
| | | code: [{ required: true, message: '请è¾å
¥å·¥å·' }], |
| | | imgurl: [{ required: true, message: '请ä¸ä¼ èä¸ç
§' }], |
| | | sex: [{ required: true, message: 'è¯·éæ©æ§å«' }], |
| | | jobYear: [{ required: true, message: 'è¯·éæ©ä»ä¸å¹´ä»½' }], |
| | | zhanquIdList: [{ required: true, message: 'è¯·éæ©æå¡æåº' }], |
| | | bustypeIdList: [{ required: true, message: 'è¯·éæ©åä¸åç±»å' }], |
| | | levelId: [{ required: true, message: 'è¯·éæ©èå¸ç级' }], |
| | | fieldIdList: [{ required: true, message: 'è¯·éæ©æ
é¿é¢å' }], |
| | | content: [{ required: true, message: '请è¾å
¥èå¸ç®ä»' }] |
| | | } |
| | | } |
| | | }, |
| | |
| | | api: '/business/member', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | loadCateList () { |
| | | cateList({ |
| | | }).then(res => { |
| | | this.cateList = res |
| | | }) |
| | | }, |
| | | uploadAvatarSuccess (file) { |
| | | this.$set(this.form, 'imgurl', file.imgurl) |
| | | this.$set(this.form, 'fullImgurl', file.imgurlfull) |
| | | }, |
| | | open (title, target, type) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.loadCateList() |
| | | this.form.fullImgurl = null |
| | | this.form.imgurl = null |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | | } |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | console.log(target.jobYear) |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .upload_wrap { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .avatar-uploader { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | ::v-deep .avatar { |
| | | max-width: 90px; |
| | | max-height: 90px; |
| | | } |
| | | |
| | | .content { |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | font-size: 12px; |
| | | color: #999999; |
| | | margin-left: 12px; |
| | | line-height: 24px; |
| | | } |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="iconShot"> |
| | | <div class="icon-dialog"> |
| | | <div class="clip"> |
| | | <div class="img" ref="img"> |
| | | <vue-cropper |
| | | ref="cropper" |
| | | :img="imgSrc" |
| | | :width="options.width" |
| | | :height="options.height" |
| | | :canScale="options.canScale" |
| | | :autoCrop="options.autoCrop" |
| | | :canMove="options.canMove" |
| | | :output-size="options.outputSize" |
| | | :centerBox="options.centerBox" |
| | | :autoCropWidth="autoCrop.width || options.autoCropWidth" |
| | | :autoCropHeight="autoCrop.height || options.autoCropHeight" |
| | | @realTime="realTime" |
| | | ></vue-cropper> |
| | | </div> |
| | | <div class="previews"> |
| | | <img style="width: 150px;height: 150px;border-radius1: 50%;object-fit: cover" :src="cutImgSrc" alt="å¾ç"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { VueCropper } from 'vue-cropper' |
| | | import { upload } from '@/api/system/common' |
| | | export default { |
| | | name: 'ImageCropper', |
| | | components: { VueCropper }, |
| | | props: { |
| | | imgSrc: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | autoCrop: { |
| | | type: Object, |
| | | default () { |
| | | return { width: 500, height: 500 } |
| | | } |
| | | }, |
| | | // 忾䏿¬¡ä¿åçæªå¾çä½ç½® |
| | | location: { |
| | | type: Object, |
| | | default () { |
| | | return {} |
| | | } |
| | | } |
| | | // iconItem:{ |
| | | // type:Object, |
| | | // default(){ |
| | | // return {}; |
| | | // } |
| | | // } |
| | | }, |
| | | data () { |
| | | return { |
| | | // å¦ä¹ æªå¾é项 |
| | | iconForm: { |
| | | originImgBase64: '', |
| | | imgBase64: '' |
| | | // location: "", |
| | | // matchingName: "", |
| | | // matchingType: "", |
| | | // note: "", |
| | | // picGroupId: "0", |
| | | // tsId: "", |
| | | }, |
| | | // å¨åæªå¾åºåçå¾ç,èªå·±ä¼ |
| | | // imgSrc:'', |
| | | // å¨åæªå¾åççæçbase64å¾ç |
| | | cutImgSrc: '', |
| | | // cropperæä»¶çé
ç½® |
| | | options: { |
| | | canScale: false, |
| | | autoCrop: true, |
| | | canMove: false, |
| | | centerBox: true, |
| | | height: 500, |
| | | width: 500, |
| | | outputSize: 1, |
| | | autoCropWidth: 500, |
| | | autoCropHeight: 500, |
| | | fixed: true, |
| | | fixedNumber: [1, 1] |
| | | }, |
| | | // æªå¾æ¡ç¸å¯¹å¾ççä½ç½® |
| | | clipAxis: {}, |
| | | // æªå¾åæ¾æ å¿,åªè§¦å䏿¬¡å®ç°åæ¾ï¼ |
| | | flag: true |
| | | } |
| | | }, |
| | | mounted () { |
| | | |
| | | }, |
| | | watch: { |
| | | }, |
| | | methods: { |
| | | getImagecropper () { |
| | | return this.$refs.cropper |
| | | }, |
| | | // å¦ä¹ æªå¾æ¡ååäºä»¶ |
| | | realTime (data) { |
| | | if (data.h) { |
| | | // è·åå¾çç¸å¯¹å®¹å¨çä½ç½® |
| | | const img = this.$refs.cropper.getImgAxis() |
| | | // è·åæªå¾æ¡ç¸å¯¹å®¹å¨çä½ç½® |
| | | const clip = this.$refs.cropper.getCropAxis() |
| | | this.clipAxis.x = clip.x1 - img.x1 |
| | | this.clipAxis.y = clip.y1 - img.y1 |
| | | // è·åæªå¾å¾ç |
| | | this.$refs.cropper.getCropData(img => { |
| | | this.clipAxis.width = data.w |
| | | this.clipAxis.height = data.h |
| | | this.cutImgSrc = img |
| | | }) |
| | | // è·ååå¾base64çå¾ç |
| | | // this.imageUrlToBase64(data.url); |
| | | |
| | | // 徿 å表ç¼è¾åæ¾(åå§ååªè§¦å䏿¬¡) |
| | | if (this.location.height != undefined && this.flag) { |
| | | this.$nextTick(() => { |
| | | // auto crop |
| | | this.$refs.cropper.goAutoCrop() |
| | | this.$nextTick(() => { |
| | | // if cropped and has position message, update crop box |
| | | this.$refs.cropper.cropOffsertX = this.location.x + img.x1 |
| | | this.$refs.cropper.cropOffsertY = this.location.y + img.y1 |
| | | this.$refs.cropper.cropW = this.location.width |
| | | this.$refs.cropper.cropH = this.location.height |
| | | |
| | | // this.iconForm.location=this.iconItem.location; |
| | | // this.iconForm.matchingName=this.iconItem.matchingName; |
| | | // this.iconForm.matchingType=this.iconItem.matchingType; |
| | | // this.iconForm.note=this.iconItem.note; |
| | | // this.picGroupId=this.iconItem.picGroupId.split(','); |
| | | // this.iconForm.id=this.iconItem.id; |
| | | // this.iconForm.tsId=this.iconItem.tsId; |
| | | this.flag = false |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | // åå¾éè¿canvas转为base64çæ ¼å¼ |
| | | imageUrlToBase64 (src) { |
| | | // ä¸å®è¦è®¾ç½®ä¸ºletï¼ä¸ç¶å¾ç䏿¾ç¤º |
| | | const image = new Image() |
| | | // è§£å³è·¨åé®é¢ |
| | | image.setAttribute('crossOrigin', 'anonymous') |
| | | const imageUrl = src |
| | | image.src = imageUrl |
| | | |
| | | // image.onloadä¸ºå¼æ¥å è½½ |
| | | image.onload = () => { |
| | | var canvas = document.createElement('canvas') |
| | | canvas.width = image.width |
| | | canvas.height = image.height |
| | | var context = canvas.getContext('2d') |
| | | context.drawImage(image, 0, 0, image.width, image.height) |
| | | |
| | | // var quality = 0.8; |
| | | // è¿éçdataurlå°±æ¯base64ç±»å |
| | | const dataURL = canvas.toDataURL('image/jpeg')// 使ç¨toDataUrlå°å¾çè½¬æ¢æjpegçæ ¼å¼ |
| | | this.iconForm.originImgBase64 = dataURL |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .iconShot { |
| | | .icon-dialog { |
| | | .clip { |
| | | display: flex; |
| | | .img { |
| | | flex: 7.5; |
| | | height: 500px; |
| | | //float: left; |
| | | // display: inline-block; |
| | | .vue-cropper { |
| | | background-image: none; |
| | | } |
| | | .cropper-move { |
| | | cursor: default; |
| | | } |
| | | .cropper-face.cropper-move { |
| | | cursor: move; |
| | | } |
| | | |
| | | } |
| | | .previews { |
| | | //width: 100px; |
| | | flex: 2.5; |
| | | //float: right; |
| | | height: 200px; |
| | | //position: relative; |
| | | >img { |
| | | //position: absolute; |
| | | //left: 50%; |
| | | transform: translate(35%, 50px); |
| | | max-height: 100%; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | .icon-options { |
| | | font-size: 12px; |
| | | font-weight: 200; |
| | | >.el-row { |
| | | >.el-col { |
| | | >.el-row { |
| | | height: 36px; |
| | | line-height: 36px; |
| | | >.el-col:nth-child(1) { |
| | | font-weight: 600; |
| | | text-align: right; |
| | | } |
| | | .el-col:nth-child(2) { |
| | | .el-input,.el-select { |
| | | width: 185px !important; |
| | | } |
| | | } |
| | | >.el-col { |
| | | padding: 0 10px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-upload |
| | | class="avatar-uploader" |
| | | accept=".png,.jpg,.jpeg" |
| | | :style="customStyle" |
| | | action="" |
| | | :auto-upload="false" |
| | | :show-file-list="false" |
| | | :on-change='openUpdateIcon'> |
| | | <img v-if=" file.imgurlfull" style="width: 100%;" :src="file.imgurlfull" :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> |
| | | <el-dialog |
| | | append-to-body |
| | | :close-on-click-modal="false" |
| | | title="ä¸ä¼ å¾ç" |
| | | :visible.sync="updateImg" |
| | | width="1000px" |
| | | class="icon-dialog-wrapper dialong-com-style"> |
| | | <ImageCropper ref="iconShot" v-if="updateImg" :imgSrc="img" :auto-crop="autoCrop"> |
| | | </ImageCropper> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button v-if="loading">å æ¶</el-button> |
| | | <el-button v-else @click="updateImg = false">å æ¶</el-button> |
| | | <el-button :loading="loading" type="primary" @click="uploadIcon">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ImageCropper from '@/components/common/ImageCropper' |
| | | import { upload } from '@/api/system/common' |
| | | export default { |
| | | components: { ImageCropper }, |
| | | props: { |
| | | file: { |
| | | type: Object, |
| | | default: () => {} |
| | | }, |
| | | autoCrop: { |
| | | type: Object, |
| | | default () { |
| | | return { width: 500, height: 500 } |
| | | } |
| | | }, |
| | | // eslint-disable-next-line vue/require-prop-type-constructor |
| | | tipsLabel: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | customStyle: { |
| | | type: String, |
| | | default: 'width: 90px; height: 90px;' |
| | | }, |
| | | uploadData: Object |
| | | }, |
| | | data () { |
| | | return { |
| | | loading: false, |
| | | fileInfo: {}, |
| | | img: null, |
| | | updateImg: false, |
| | | imageSrc: null, |
| | | uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload' |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | | uploadIcon () { |
| | | // è·åè£åªåçå¾ç |
| | | this.$refs.iconShot.getImagecropper().getCropBlob((fileData) => { // è·åå½åè£åªå¥½çæ°æ® |
| | | // æ³¨æ¤æ¶çdataæ¯ä¸ä¸ªBlobæ°æ®ï¼é¨åæ¥å£æ¥æ¶çæ¯File转åçFormDataæ°æ® |
| | | console.log(fileData) |
| | | const formData = new FormData() |
| | | |
| | | formData.append('folder', this.uploadData.folder || 'member') |
| | | if (this.uploadData.isFace || this.uploadData.isFace == 0) { |
| | | formData.append('isFace', 0) |
| | | } |
| | | formData.append( |
| | | 'file', |
| | | new File( |
| | | [fileData], // å°Blobç±»å转åæFileç±»å |
| | | this.fileInfo.name, // 设置Fileç±»åçæä»¶åç§° |
| | | { type: this.fileInfo.type } // 设置Fileç±»åçæä»¶ç±»å |
| | | ) |
| | | ) |
| | | this.loading = true |
| | | upload(formData).then(res => { |
| | | this.loading = false |
| | | console.log(res) |
| | | this.file.imgurl = res.imgaddr |
| | | this.file.imgurlfull = res.url |
| | | this.$message.success('ä¸ä¼ æå') |
| | | this.imageSrc = res.url |
| | | this.updateImg = false |
| | | this.$emit('uploadSuccess', { imgurl: res.imgaddr, imgurlfull: res.url, name: res.originname }) |
| | | this.$emit('uploadEnd') |
| | | }, () => { |
| | | this.loading = false |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | // ä¸ä¼ å¾ç |
| | | openUpdateIcon (file, fileList) { |
| | | const isJPG = file.raw.type === 'image/jpeg' || file.raw.type === 'image/png' |
| | | const isLt2M = file.size / 1024 / 1024 < 5 |
| | | if (!isJPG) { |
| | | this.$message.error('ä¸ä¼ 头åå¾çåªè½æ¯ JPG/PNG æ ¼å¼!') |
| | | return false |
| | | } |
| | | if (!isLt2M) { |
| | | this.$message.error('ä¸ä¼ 头åå¾ç大å°ä¸è½è¶
è¿ 5MB!') |
| | | return false |
| | | } |
| | | // ä¸ä¼ æååå°å¾çå°åèµå¼ç»è£åªæ¡æ¾ç¤ºå¾ç |
| | | this.$nextTick(async () => { |
| | | // base64æ¹å¼ |
| | | // this.option.img = await fileByBase64(file.raw) |
| | | this.fileInfo.name = file.name |
| | | this.fileInfo.type = file.type |
| | | console.log(file, fileList) |
| | | this.img = URL.createObjectURL(file.raw) |
| | | // this.loading = false |
| | | this.updateImg = true |
| | | }) |
| | | }, |
| | | handleAvatarSuccess (res, file) { |
| | | if (res.code == 200) { |
| | | const { data } = res |
| | | this.file.imgurl = data.imgaddr |
| | | this.file.imgurlfull = data.url |
| | | this.$message.success('ä¸ä¼ æå') |
| | | this.imageSrc = data.url |
| | | this.updateImg = true |
| | | // this.$emit('uploadSuccess', { imgurl: data.imgaddr, imgurlfull: data.url, name: data.originname }) |
| | | } else { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | } |
| | | this.$emit('uploadEnd') |
| | | }, |
| | | uploadError () { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | this.$emit('uploadEnd') |
| | | }, |
| | | // // æ¦æª |
| | | beforeAvatarUpload (file) { |
| | | this.$emit('uploadBegin') |
| | | return true |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | $image-width: 90px; |
| | | .avatar-uploader { |
| | | width: $image-width; |
| | | height: $image-width; |
| | | } |
| | | ::v-deep .el-upload { |
| | | border: 1px dashed #d9d9d9; |
| | | border-radius: 6px; |
| | | cursor: pointer; |
| | | position: relative; |
| | | 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: 100% !important; |
| | | height: auto !important; |
| | | 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> |
| | | <TableLayout :permissions="['business:cases: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" style="width: 150px" placeholder="请è¾å
¥æ é¢" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="èå¸" prop="memberId"> |
| | | <el-select |
| | | v-model="searchForm.memberId" |
| | | style="width: 150px" |
| | | placeholder="èå¸" |
| | | clearable |
| | | filterable |
| | | @change="search" |
| | | > |
| | | <el-option |
| | | v-for="item in memberList" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ" prop="status"> |
| | | <el-select |
| | | v-model="searchForm.status" |
| | | placeholder="ç¶æ" |
| | | clearable |
| | | style="width: 150px" |
| | | @change="search" |
| | | > |
| | | <el-option :key="0" :value="0" label="å¯ç¨"></el-option> |
| | | <el-option :key="1" :value="1" label="ç¦ç¨"></el-option> |
| | | </el-select> |
| | | </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:cases:create', 'business:cases:delete']"> |
| | | <li><el-button type="primary" @click="$refs.operaCasesWindow.open('æ°å»ºæ¡ä¾',null)" icon="el-icon-plus" v-permissions="['business:cases:create']">æ°å»º</el-button></li> |
| | | <li><el-button type="primary" icon="el-icon-refresh" v-permissions="['business:cases:create']" @click="$refs.OperaCasesImportWindow.open('æ¡ä¾å¯¼å
¥')">æ¹é导å
¥</el-button></li> |
| | | <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:cases:delete']">å é¤</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | :height="tableHeightNew" |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="name" label="æ¡ä¾æ é¢" min-width="100px"></el-table-column> |
| | | <el-table-column prop="icon" label="æè¡æ¦å¾é" min-width="220px"> |
| | | <template slot-scope="{row}"> |
| | | <div style="display: flex; flex-wrap: wrap;width: 200px;" v-if="row.fileList && row.fileList.length"> |
| | | <div v-for="item in row.fileList" :key="row.id+'_img'+item.id" style=" box-sizing: border-box; margin-right: 10px; " > |
| | | <el-image style="width: 50px; height: 50px;" :src="item.url" |
| | | :preview-src-list="[item.url]"> |
| | | </el-image> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="memberName" label="èå¸" min-width="120px"></el-table-column> |
| | | <el-table-column prop="startDate" label="å¼å§æ¥æ" min-width="140px"></el-table-column> |
| | | <el-table-column prop="endDate" label="ç»ææ¥æ" min-width="140px"></el-table-column> |
| | | <el-table-column prop="detail" label="æ¡ä¾æè¿°" min-width="230px" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="updateUserName" label="æä½äºº" min-width="100px"></el-table-column> |
| | | <el-table-column prop="updateTime" label="æè¿æä½æ¶é´" min-width="150px"></el-table-column> |
| | | <el-table-column label="ç¶æ" fixed="right"> |
| | | <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 |
| | | v-if="containPermissions(['business:cases:update', 'business:cases:delete'])" |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaCasesWindow.open('ç¼è¾æ¡ä¾', row)" icon="el-icon-edit" v-permissions="['business:cases:update']">ç¼è¾</el-button> |
| | | <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:cases:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaCasesWindow ref="operaCasesWindow" @success="search"/> |
| | | <OperaCasesImportWindow ref="OperaCasesImportWindow" @success="handlePageChange" /> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaCasesWindow from '@/components/business/OperaCasesWindow' |
| | | import OperaCasesImportWindow from '@/components/business/OperaCasesImportWindow' |
| | | import { findAll as memberList } from '@/api/business/member' |
| | | export default { |
| | | name: 'cases', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaCasesWindow ,OperaCasesImportWindow}, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | searchForm: { |
| | | name: '', |
| | | memberId: '', |
| | | status: null |
| | | }, |
| | | memberList:[] |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'æ¡ä¾ä¿¡æ¯è¡¨', |
| | | api: '/business/cases', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | memberList({ |
| | | }).then(res => { |
| | | this.memberList = res |
| | | }) |
| | | }, |
| | | methods: { |
| | | changeStatus (e, row) { |
| | | this.working = true |
| | | this.api.updateStatus({ id: row.id, status: e }) |
| | | .then(res => { |
| | | this.$tip.apiSuccess(res || 'æä½æå') |
| | | this.handlePageChange() |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.working = false |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:importrecord: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.updateUserName" placeholder="请è¾å
¥æä½äººå§å" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸å¡ç±»å" prop="type"> |
| | | <el-select v-model="searchForm.type" placeholder="è¯·éæ©ä¸å¡ç±»å" clearable @change="search" > |
| | | <el-option :key="0" :value="0" label="èå¸å¯¼å
¥"></el-option> |
| | | <el-option :key="1" :value="1" label="æ¡ä¾å¯¼å
¥"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <div class="date-style" style="display: inline"> |
| | | <el-form-item label="导å
¥æ¶é´" prop="starttime" > |
| | | <el-date-picker |
| | | style="width: 160px" |
| | | clearable |
| | | @change="search" |
| | | v-model="searchForm.starttime" |
| | | type="datetime" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | format="yyyy-MM-dd HH:mm:ss" |
| | | range-separator="è³" |
| | | placeholder="å¼å§æ¶é´" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="-" label-width="10px" prop="endtime" > |
| | | <el-date-picker |
| | | style="width: 160px" |
| | | clearable |
| | | v-model="searchForm.endtime" |
| | | type="datetime" |
| | | @change="search" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | format="yyyy-MM-dd HH:mm:ss" |
| | | range-separator="è³" |
| | | placeholder="æªæ¢æ¶é´" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | </div> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <el-table |
| | | :height="tableHeightNew" |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column prop="title" label="å
容" min-width="200px" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="ä¸å¡ç±»å"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.type ==0 " >èå¸å¯¼å
¥</span> |
| | | <span v-if="row.type == 1" >æ¡ä¾å¯¼å
¥</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ç¶æ"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.status ==0 " class="blue">æªå¤ç</span> |
| | | <span v-if="row.status == 1" class="red">å¤çä¸</span> |
| | | <span v-if="row.status == 2" class="grey">å·²å¤ç</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="totalNum" label="æ»è®°å½æ°" min-width="100px"></el-table-column> |
| | | <el-table-column prop="doneNum" label="æåå½å
¥æ°é" min-width="100px"></el-table-column> |
| | | <el-table-column prop="errorNum" label="å½å
¥å¤±è´¥æ°é" min-width="100px"></el-table-column> |
| | | <el-table-column prop="updateUserName" label="æä½äºº" min-width="100px"></el-table-column> |
| | | <el-table-column prop="updateTime" label="æè¿æä½æ¶é´" min-width="150px"></el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaCategoryWindow from '@/components/business/OperaCategoryWindow' |
| | | export default { |
| | | name: 'Category', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaCategoryWindow }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | searchForm: { |
| | | updateUserName: '', |
| | | starttime: null, |
| | | endtime: null, |
| | | type: '' |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'å类信æ¯è¡¨', |
| | | api: '/business/importRecord', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | changeStatus (e, row) { |
| | | this.working = true |
| | | this.api.updateStatus({ id: row.id, status: e }) |
| | | .then(res => { |
| | | this.$tip.apiSuccess(res || 'æä½æå') |
| | | this.search() |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.working = false |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <el-form-item label="å·¥å·" prop="code"> |
| | | <el-input v-model="searchForm.code" style="width: 150px" placeholder="请è¾å
¥å·¥å·" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æåº" prop="fieldIdList"> |
| | | <el-form-item label="æåº" prop="zhanquIds"> |
| | | <el-select |
| | | v-model="searchForm.fieldIdList" |
| | | v-model="searchForm.zhanquIds" |
| | | style="width: 150px" |
| | | placeholder="æåº" |
| | | clearable |
| | | multiple |
| | | @change="search" |
| | | > |
| | | <el-option |
| | | v-for="item in cateList" |
| | | v-for="item in cateList.filter(item=>{return item.type==0})" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="åä¸åç±»å" prop="busTypeIdList"> |
| | | <el-form-item label="åä¸åç±»å" prop="bustypeIds"> |
| | | <el-select |
| | | v-model="searchForm.busTypeIdList" |
| | | v-model="searchForm.bustypeIds" |
| | | style="width: 150px" |
| | | placeholder="åä¸åç±»å" |
| | | clearable |
| | | multiple |
| | | @change="search" |
| | | > |
| | | <el-option |
| | | v-for="item in cateList1" |
| | | v-for="item in cateList.filter(item=>{return item.type==1})" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ
é¿é¢å" prop="levelIdList"> |
| | | <el-form-item label="æ
é¿é¢å" prop="fieldIdList"> |
| | | <el-select |
| | | v-model="searchForm.levelIdList" |
| | | v-model="searchForm.fieldIdList" |
| | | style="width: 150px" |
| | | placeholder="æ
é¿é¢å" |
| | | clearable |
| | |
| | | @change="search" |
| | | > |
| | | <el-option |
| | | v-for="item in cateList2" |
| | | v-for="item in cateList.filter(item=>{return item.type==2})" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="èå¸ç级" prop="levelIdList"> |
| | | <el-form-item label="èå¸ç级" prop="levelId"> |
| | | <el-select |
| | | v-model="searchForm.levelIdList" |
| | | v-model="searchForm.levelId" |
| | | style="width: 150px" |
| | | placeholder="èå¸ç级" |
| | | clearable |
| | | multiple |
| | | @change="search" |
| | | > |
| | | <el-option |
| | | v-for="item in cateList3" |
| | | v-for="item in cateList.filter(item=>{return item.type==3})" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="imgurl" label="å¾ç" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-image v-if="row.imgurlfull" style="width: 50px; height: 50px; margin-right: 10px" :src="row.imgurlfull" |
| | | :preview-src-list="[row.imgurlfull]"> |
| | | <el-image v-if="row.fullImgurl" style="width: 50px; height: 50px; margin-right: 10px" :src="row.fullImgurl" |
| | | :preview-src-list="[row.fullImgurl]"> |
| | | </el-image> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <span v-if="row.sex ==1">女</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="position" label="å²ä½" min-width="120px"></el-table-column> |
| | | <el-table-column prop="positon" label="å²ä½" min-width="120px"></el-table-column> |
| | | <el-table-column prop="levelName" label="ç级" min-width="100px"></el-table-column> |
| | | <el-table-column prop="jobYear" label="ä»ä¸å¹´ä»½" min-width="100px"></el-table-column> |
| | | <el-table-column prop="serveNum" label="æå¡ååº" min-width="100px"> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="caseNum" label="æ ææ¡ä¾" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.caseNum">{{row.caseNum}}个</span> |
| | | <span >{{row.caseNum || 0}}个</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="busTypeNames" label="åä¸åç±»å" min-width="200px"></el-table-column> |
| | | <el-table-column prop="areaNames" label="æå¡æåº" min-width="200px"></el-table-column> |
| | | <el-table-column prop="fieldNames" label="æ
é¿é¢å" min-width="200px"></el-table-column> |
| | | <el-table-column label="ç¶æ"> |
| | | <el-table-column prop="busTypeNames" label="åä¸åç±»å" min-width="200px"> |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.typeList && row.typeList.length"> |
| | | <div style="display:inline-block;" v-for="(item,index) in row.typeList">{{item.name||''}} <span v-if="index < row.typeList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="areaNames" label="æå¡æåº" min-width="200px"> |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.zqList && row.zqList.length"> |
| | | <div style="display:inline-block;" v-for="(item,index) in row.zqList">{{item.name||''}} <span v-if="index < row.zqList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="fieldNames" label="æ
é¿é¢å" min-width="200px"> |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.fieldList && row.fieldList.length"> |
| | | <div style="display:inline-block;" v-for="(item,index) in row.fieldList">{{item.name||''}} <span v-if="index < row.fieldList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="fee" label="è´¹ç¨æ å(å
/å¨)" min-width="130px"></el-table-column> |
| | | <el-table-column prop="updateUserName" label="æä½äºº" min-width="100px"></el-table-column> |
| | | <el-table-column prop="updateTime" label="æè¿æä½æ¶é´" min-width="150px"></el-table-column> |
| | | <el-table-column label="ç¶æ" fixed="right"> |
| | | <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"> |
| | | inactive-color="#ff4949" :active-value="0" :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="updateUserName" label="æä½äºº" min-width="100px"></el-table-column> |
| | | <el-table-column prop="updateTime" label="æè¿æä½æ¶é´" min-width="150px"></el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:member:update', 'business:member:delete'])" |
| | | label="æä½" |
| | |
| | | // æç´¢ |
| | | searchForm: { |
| | | name: '', |
| | | queryFlag:1, |
| | | code: '', |
| | | status: null, |
| | | levelIdList:[], |
| | | levelId:null, |
| | | fieldIdList: [], |
| | | busTypeIdList:[], |
| | | zhanquIds:null, |
| | | bustypeIds:null, |
| | | type: 0 |
| | | }, |
| | | cateList:[], |
| | | cateList1:[], |
| | | cateList2:[], |
| | | cateList3:[], |
| | | cateList:[] |
| | | } |
| | | }, |
| | | created () { |
| | |
| | | }) |
| | | this.search() |
| | | cateList({ |
| | | type: 0 , //æåº |
| | | }).then(res => { |
| | | this.cateList = res |
| | | }) |
| | | cateList({ |
| | | type: 1 , //åä¸å |
| | | }).then(res => { |
| | | this.cateList1 = res |
| | | }) |
| | | cateList({ |
| | | type: 2 , //æ
é¿é¢ç¨ |
| | | }).then(res => { |
| | | this.cateList2 = res |
| | | }) |
| | | cateList({ |
| | | type: 3 , //ç级 |
| | | }).then(res => { |
| | | this.cateList3 = res |
| | | }) |
| | | |
| | | }, |
| | | methods: { |
| | | changeStatus (e, row) { |
| | |
| | | this.api.updateStatus({ id: row.id, status: e }) |
| | | .then(res => { |
| | | this.$tip.apiSuccess(res || 'æä½æå') |
| | | this.search() |
| | | this.handlePageChange() |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.model.Cases; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.service.business.CasesService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | casesService.deleteById(id); |
| | | return ApiResponse.success(null); |
| | | } |
| | | |
| | | @ApiOperation("ä¿®æ¹ç¶æ") |
| | | @PostMapping("/updateStatus") |
| | | @RequiresPermissions("business:cases:update") |
| | | public ApiResponse updateStatus( @RequestBody Cases param) { |
| | | casesService.updateStatus(param); |
| | | return ApiResponse.success(null); |
| | | } |
| | | @ApiOperation("æ¹éå é¤") |
| | | @GetMapping("/delete/batch") |
| | | @RequiresPermissions("business:cases:delete") |
| | |
| | | import com.doumee.core.model.ApiResponse; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.model.Category; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.service.business.MemberService; |
| | |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.File; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * ä¼åä¿¡æ¯è¡¨Controllerå®ä¹ |
| | |
| | | memberService.updateById(member); |
| | | return ApiResponse.success(null); |
| | | } |
| | | |
| | | @ApiOperation("ä¿®æ¹ç¶æ") |
| | | @PostMapping("/updateStatus") |
| | | @RequiresPermissions("business:member:update") |
| | | public ApiResponse updateStatus( @RequestBody Member param) { |
| | | memberService.updateStatus(param); |
| | | return ApiResponse.success(null); |
| | | } |
| | | @ApiOperation("å页æ¥è¯¢") |
| | | @PostMapping("/page") |
| | | @RequiresPermissions("business:member:query") |
| | | public ApiResponse<PageData<Member>> findPage (@RequestBody PageWrap<Member> pageWrap) { |
| | | return ApiResponse.success(memberService.findPage(pageWrap)); |
| | | } |
| | | @ApiOperation("å页æ¥è¯¢") |
| | | @PostMapping("/list") |
| | | @RequiresPermissions("business:member:query") |
| | | public ApiResponse<List<Member>> findList (@RequestBody Member pageWrap) { |
| | | return ApiResponse.success(memberService.findList(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("导åºExcel") |
| | | @PostMapping("/exportExcel") |
| | |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.*; |
| | | import java.lang.reflect.Field; |
| | | import java.lang.reflect.Method; |
| | | import java.util.*; |
| | |
| | | } |
| | | public ExcelImporter(String fileName, InputStream in, int headerNum, int sheetIndex,CellType cellType) |
| | | throws InvalidFormatException, IOException { |
| | | ByteArrayOutputStream buffer = toByteArray(in); |
| | | if (StringUtils.isBlank(fileName)){ |
| | | throw new RuntimeException("导å
¥ææ¡£ä¸ºç©º!"); |
| | | }else if(fileName.toLowerCase().endsWith("xls")){ |
| | | this.wb = new HSSFWorkbook(in); |
| | | this.wb = new HSSFWorkbook(new ByteArrayInputStream(buffer.toByteArray())); |
| | | }else if(fileName.toLowerCase().endsWith("xlsx")){ |
| | | this.wb = new XSSFWorkbook(in); |
| | | this.wb = new XSSFWorkbook(new ByteArrayInputStream(buffer.toByteArray())); |
| | | }else{ |
| | | throw new RuntimeException("ææ¡£æ ¼å¼ä¸æ£ç¡®!"); |
| | | } |
| | |
| | | this.sheet = this.wb.getSheetAt(sheetIndex); |
| | | this.headerNum = headerNum; |
| | | this.changeType = cellType; |
| | | this.pictureList = ExcelPictureUtil.getExcelPictures(in); |
| | | this.pictureList = ExcelPictureUtil.getExcelPictures(new ByteArrayInputStream(buffer.toByteArray())); |
| | | log.debug("Initialize success."); |
| | | } |
| | | |
| | | public static ByteArrayOutputStream toByteArray(InputStream inputStream) { |
| | | try { |
| | | // ç¼åæä»¶æµ |
| | | ByteArrayOutputStream buffer = new ByteArrayOutputStream(); |
| | | byte[] data = new byte[1024]; |
| | | int nRead; |
| | | while ((nRead = inputStream.read(data, 0, data.length))!= -1) { |
| | | buffer.write(data, 0, nRead); |
| | | } |
| | | buffer.flush(); |
| | | |
| | | return buffer; |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | |
| | | "fieldtype."+valType.getSimpleName()+"Type")).getMethod("getValue", String.class).invoke(null, val.toString()); |
| | | } |
| | | } |
| | | |
| | | } catch (Exception ex) { |
| | | log.info("Get cell value ["+i+","+column+"] error: " + ex.toString()); |
| | | val = null; |
| | |
| | | |
| | | public static Map<String, XSSFPictureData> getExcelPictures(InputStream is) { |
| | | try { |
| | | byte[] fileData = getFileStream(is); |
| | | byte[] fileData = toByteArray(is); |
| | | Map<String, XSSFPictureData> pictures = getPictures(fileData); |
| | | pictures.forEach((id, xssfPictureData) -> { |
| | | System.out.println("idï¼" + id); |
| | |
| | | } |
| | | |
| | | } |
| | | public static byte[] toByteArray(InputStream input) throws IOException { |
| | | ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); |
| | | int bytesRead; |
| | | byte[] buffer = new byte[1024]; // å¯ä»¥æ ¹æ®éè¦è°æ´ç¼å²åºå¤§å° |
| | | while ((bytesRead = input.read(buffer)) != -1) { |
| | | byteArrayOutputStream.write(buffer, 0, bytesRead); |
| | | } |
| | | return byteArrayOutputStream.toByteArray(); |
| | | } |
| | | |
| | | /** |
| | | * è·åæµ®å¨å¾çï¼ä»¥ map å½¢å¼è¿åï¼é®ä¸ºè¡åæ ¼å¼ x-yã |
| | |
| | | * @return String |
| | | * @throws Exception |
| | | */ |
| | | public static String getNowShortDate() throws Exception { |
| | | public static String getNowShortDate() { |
| | | String nowDate = ""; |
| | | try { |
| | | java.sql.Date date = null; |
| | |
| | | nowDate = sdfShort.format(date); |
| | | return nowDate; |
| | | } catch (Exception e) { |
| | | throw e; |
| | | return null; |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | public boolean uploadInputstreamObject(InputStream inputStream, String bucketName, String key ) { |
| | | try { |
| | | |
| | | if (inputStream != null) { |
| | | ObjectMetadata metadata = new ObjectMetadata(); |
| | | metadata.setContentLength(inputStream.available()); |
| | |
| | | return false; |
| | | |
| | | } |
| | | public boolean uploadInputstreamObjectNoShutdown(InputStream inputStream, String bucketName, String key ) { |
| | | try { |
| | | if (inputStream != null) { |
| | | ObjectMetadata metadata = new ObjectMetadata(); |
| | | metadata.setContentLength(inputStream.available()); |
| | | |
| | | PutObjectRequest request = new PutObjectRequest(bucketName, key, inputStream,metadata); |
| | | request.setCannedAcl(CannedAccessControlList.PublicRead); |
| | | PutObjectResult result = client.putObject(request); |
| | | return true; |
| | | } |
| | | }catch (Exception e){ |
| | | log.error("对象åå¨==================== æä»¶ä¸ä¼ 失败"+e.getMessage()); |
| | | }finally { |
| | | } |
| | | return false; |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | package com.doumee.dao.business.dto; |
| | | |
| | | import com.doumee.core.annotation.excel.ExcelColumn; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.dao.business.model.Category; |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å工信æ¯å¯¼å
¥è¡¨ |
| | |
| | | @ExcelColumn(name="èå¸ç®ä»", value = "fee",index = 13) |
| | | private String info; |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import java.util.Date; |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å类信æ¯è¡¨Modelå®ä¹ |
| | | * @author doumee |
| | |
| | | private String imgurl; |
| | | @ApiModelProperty("å¼å§æ¶é´") |
| | | @ExcelColumn(name="å¼å§æ¶é´",index=13 ,width=10) |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date startDate; |
| | | @ApiModelProperty("ç»ææ¶é´") |
| | | @ExcelColumn(name="ç»ææ¶é´",index=14 ,width=10) |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date endDate; |
| | | @ApiModelProperty("æåºç ï¼ååºä½¿ç¨ï¼") |
| | | @ExcelColumn(name="æåºç ï¼ååºä½¿ç¨ï¼",index=15 ,width=10) |
| | |
| | | @ApiModelProperty("导å
¥è®°å½ç¼ç ï¼å
³èimport_record)") |
| | | @ExcelColumn(name="导å
¥è®°å½ç¼ç ï¼å
³èimport_record)",index=17 ,width=10) |
| | | private Integer importId; |
| | | @ApiModelProperty(value = "èå¸å§å", example = "1") |
| | | @TableField(exist = false) |
| | | private String memberName ; |
| | | @ApiModelProperty(value = "å¾ééä»¶éå", example = "1") |
| | | @TableField(exist = false) |
| | | private List<Multifile> fileList; |
| | | @ApiModelProperty(value = "æåæä½äººåï¼", example = "1") |
| | | @TableField(exist = false) |
| | | private String updateUserName; |
| | | } |
| | |
| | | @ExcelColumn(name="导å
¥å¤±è´¥è®°å½æ°",index=18 ,width=10) |
| | | private Integer errorNum; |
| | | @TableField(exist = false) |
| | | private List<CasesImport> caseList; |
| | | private List<Cases> caseList; |
| | | @TableField(exist = false) |
| | | private List<MemberImport> memberList; |
| | | private List<Member> memberList; |
| | | @TableField(exist = false) |
| | | private List<PictureData> pictureDataList; |
| | | |
| | | |
| | | @ApiModelProperty(value = "æåæä½äººåï¼", example = "1") |
| | | @TableField(exist = false) |
| | | private String updateUserName; |
| | | @ApiModelProperty(value = "ç»ææ¶é´ï¼", example = "1") |
| | | @TableField(exist = false) |
| | | private Date starttime; |
| | | @ApiModelProperty(value = "ç»ææ¶é´ï¼", example = "1") |
| | | @TableField(exist = false) |
| | | private Date endtime; |
| | | } |
| | |
| | | @ApiModelProperty("æ¥è¯¢ç¨æ·ç±»å") |
| | | @TableField(exist = false) |
| | | private String queryUserRole; |
| | | @ApiModelProperty("æ ææ¡ä¾æ°é") |
| | | @TableField(exist = false) |
| | | private Integer caseNum; |
| | | @ApiModelProperty("æ¥è¯¢å
¥å£ 1åå°") |
| | | @TableField(exist = false) |
| | | private Integer queryFlag ; |
| | | |
| | | @ApiModelProperty("æ
é¿é¢å") |
| | | @TableField(exist = false) |
| | | private List<Category> fieldList; |
| | | @ApiModelProperty("æ
é¿é¢å") |
| | | @TableField(exist = false) |
| | | private List<Integer> fieldIdList; |
| | | @ApiModelProperty("åä¸åç±»åç¼ç éå") |
| | | @TableField(exist = false) |
| | | private List<Integer> bustypeIdList; |
| | | @ApiModelProperty("æåºç¼ç éå") |
| | | @TableField(exist = false) |
| | | private List<Integer> zhanquIdList; |
| | | @ApiModelProperty("æåºéå") |
| | | @TableField(exist = false) |
| | | private List<Category> zqList; |
| | | @ApiModelProperty("åä¸åç±»å") |
| | | @TableField(exist = false) |
| | | private List<Category> typeList; |
| | | |
| | | @ApiModelProperty("æ¡ä¾ä¿¡æ¯") |
| | | @TableField(exist = false) |
| | | private List<Cases> casesList; |
| | | |
| | | @TableField(exist = false) |
| | | private byte[] imgurlData; |
| | | |
| | | |
| | | @ApiModelProperty(value = "æåæä½äººåï¼", example = "1") |
| | | @TableField(exist = false) |
| | | private String updateUserName; |
| | | } |
| | |
| | | * @param id ä¸»é® |
| | | */ |
| | | void deleteById(Integer id); |
| | | |
| | | void updateStatus(Cases cases); |
| | | /** |
| | | * å é¤ |
| | | * |
| | |
| | | * @param model å®ä½å¯¹è±¡ |
| | | */ |
| | | void updateById(Member model); |
| | | |
| | | void updateStatus(Member member); |
| | | /** |
| | | * æ¹é䏻鮿´æ° |
| | | * |
| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.LoginUserInfo; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.MultifileMapper; |
| | | import com.doumee.dao.business.model.Cases; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.CasesMapper; |
| | | import com.doumee.dao.business.model.Category; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.Multifile; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.service.business.CasesService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * å类信æ¯è¡¨Serviceå®ç° |
| | |
| | | public class CasesServiceImpl implements CasesService { |
| | | |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | @Autowired |
| | | private CasesMapper casesMapper; |
| | | @Autowired |
| | | private MultifileMapper multifileMapper; |
| | | |
| | | @Override |
| | | @Transactional |
| | | public Integer create(Cases cases) { |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(StringUtils.isBlank(cases.getName()) |
| | | ||StringUtils.isBlank(cases.getDetail()) |
| | | ||cases.getStartDate()==null |
| | | ||cases.getEndDate()==null ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | cases.setDeleted(Constants.ZERO); |
| | | cases.setCreateTime(new Date()); |
| | | cases.setCreateUser(loginUserInfo.getId()); |
| | | cases.setUpdateTime(new Date()); |
| | | cases.setUpdateUser(loginUserInfo.getId()); |
| | | casesMapper.insert(cases); |
| | | dealBatchMultiFiles(cases, cases.getFileList(), loginUserInfo,true); |
| | | return cases.getId(); |
| | | } |
| | | |
| | | public void dealBatchMultiFiles(Cases category, List<Multifile> fileList, LoginUserInfo user,boolean update) { |
| | | Date today = new Date(); |
| | | //æ¸
空åæç |
| | | if(update){ |
| | | multifileMapper.delete(new UpdateWrapper<Multifile>().lambda() |
| | | .eq(Multifile::getIsdeleted,Constants.ZERO) |
| | | .eq(Multifile::getObjType,Constants.ONE) |
| | | .eq(Multifile::getObjId,category.getId())); |
| | | } |
| | | if(fileList!=null && fileList.size()>0){ |
| | | List<Multifile> multifileList = new ArrayList<>(); |
| | | fileList.stream().forEach(s -> { |
| | | if(StringUtils.isNotBlank(s.getFileurl())){ |
| | | s.setIsdeleted(Constants.ZERO); |
| | | s.setCreator(user.getId()); |
| | | s.setCreateDate(today); |
| | | s.setObjId(category.getId()); |
| | | s.setType(Constants.ZERO); |
| | | s.setObjType(Constants.ONE); |
| | | multifileList.add(s); |
| | | } |
| | | }); |
| | | if(multifileList.size()>0){ |
| | | multifileMapper.insert(multifileList); |
| | | } |
| | | } |
| | | } |
| | | @Override |
| | | public void deleteById(Integer id) { |
| | | casesMapper.deleteById(id); |
| | | Cases cases =new Cases(); |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | cases.setUpdateTime(new Date()); |
| | | cases.setId(id); |
| | | cases.setUpdateUser(loginUserInfo.getId()); |
| | | cases.setDeleted(Constants.ONE); |
| | | casesMapper.updateById(cases); |
| | | } |
| | | |
| | | @Override |
| | | public void updateStatus(Cases cases) { |
| | | if(Objects.isNull(cases) || Objects.isNull(cases.getId())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | cases.setUpdateTime(new Date()); |
| | | cases.setUpdateUser(loginUserInfo.getId()); |
| | | casesMapper.updateById(cases); |
| | | } |
| | | @Override |
| | | public void delete(Cases cases) { |
| | | UpdateWrapper<Cases> deleteWrapper = new UpdateWrapper<>(cases); |
| | |
| | | if (CollectionUtils.isEmpty(ids)) { |
| | | return; |
| | | } |
| | | casesMapper.deleteBatchIds(ids); |
| | | for(Integer id : ids){ |
| | | this.deleteById(id); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void updateById(Cases cases) { |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(StringUtils.isBlank(cases.getName()) |
| | | ||StringUtils.isBlank(cases.getDetail()) |
| | | ||cases.getStartDate()==null |
| | | ||cases.getEndDate()==null ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | cases.setDeleted(Constants.ZERO); |
| | | cases.setUpdateTime(new Date()); |
| | | cases.setUpdateUser(loginUserInfo.getId()); |
| | | casesMapper.updateById(cases); |
| | | dealBatchMultiFiles(cases, cases.getFileList(), loginUserInfo,true); |
| | | } |
| | | |
| | | @Override |
| | |
| | | QueryWrapper<Cases> wrapper = new QueryWrapper<>(cases); |
| | | return casesMapper.selectList(wrapper); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public PageData<Cases> findPage(PageWrap<Cases> pageWrap) { |
| | | IPage<Cases> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | QueryWrapper<Cases> queryWrapper = new QueryWrapper<>(); |
| | | MPJLambdaWrapper<Cases> queryWrapper = new MPJLambdaWrapper<>(); |
| | | queryWrapper.selectAll(Cases.class) |
| | | .selectAs(Member::getName,Cases::getMemberName) |
| | | .selectAs(SystemUser::getRealname, Member::getUpdateUserName) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Cases::getUpdateUser) |
| | | .leftJoin(Member.class,Member::getId,Cases::getMemberId); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getId() != null,Cases::getId, pageWrap.getModel().getId()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getDeleted() != null,Cases::getDeleted, pageWrap.getModel().getDeleted()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getCreateUser() != null,Cases::getCreateUser, pageWrap.getModel().getCreateUser()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().ge(Cases::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())); |
| | | queryWrapper.lambda().le(Cases::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())); |
| | | } |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getUpdateUser() != null,Cases::getUpdateUser, pageWrap.getModel().getUpdateUser()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().ge(Cases::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime())); |
| | | queryWrapper.lambda().le(Cases::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime())); |
| | | } |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getRemark() != null,Cases::getRemark, pageWrap.getModel().getRemark()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getStatus() != null,Cases::getStatus, pageWrap.getModel().getStatus()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getName() != null,Cases::getName, pageWrap.getModel().getName()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getMemberId() != null,Cases::getMemberId, pageWrap.getModel().getMemberId()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getDetail() != null,Cases::getDetail, pageWrap.getModel().getDetail()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getImgurl() != null,Cases::getImgurl, pageWrap.getModel().getImgurl()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().ge(Cases::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate())); |
| | | queryWrapper.lambda().le(Cases::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getStartDate())); |
| | | } |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().ge(Cases::getEndDate, Utils.Date.getStart(pageWrap.getModel().getEndDate())); |
| | | queryWrapper.lambda().le(Cases::getEndDate, Utils.Date.getEnd(pageWrap.getModel().getEndDate())); |
| | | } |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getSortnum() != null,Cases::getSortnum, pageWrap.getModel().getSortnum()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getAddType() != null,Cases::getAddType, pageWrap.getModel().getAddType()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getImportId() != null,Cases::getImportId, pageWrap.getModel().getImportId()); |
| | | for(PageWrap.SortData sortData: pageWrap.getSorts()) { |
| | | if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { |
| | | queryWrapper.orderByDesc(sortData.getProperty()); |
| | | } else { |
| | | queryWrapper.orderByAsc(sortData.getProperty()); |
| | | queryWrapper.eq(pageWrap.getModel().getId() != null,Cases::getId, pageWrap.getModel().getId()); |
| | | queryWrapper.eq(pageWrap.getModel().getDeleted() != null,Cases::getDeleted, pageWrap.getModel().getDeleted()); |
| | | queryWrapper.eq(pageWrap.getModel().getCreateUser() != null,Cases::getCreateUser, pageWrap.getModel().getCreateUser()); |
| | | queryWrapper.eq(pageWrap.getModel().getUpdateUser() != null,Cases::getUpdateUser, pageWrap.getModel().getUpdateUser()); |
| | | queryWrapper.eq(pageWrap.getModel().getRemark() != null,Cases::getRemark, pageWrap.getModel().getRemark()); |
| | | queryWrapper.eq(pageWrap.getModel().getStatus() != null,Cases::getStatus, pageWrap.getModel().getStatus()); |
| | | queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName() ),Cases::getName, pageWrap.getModel().getName()); |
| | | queryWrapper.eq(pageWrap.getModel().getMemberId() != null,Cases::getMemberId, pageWrap.getModel().getMemberId()); |
| | | queryWrapper.eq(pageWrap.getModel().getDetail() != null,Cases::getDetail, pageWrap.getModel().getDetail()); |
| | | queryWrapper.eq(pageWrap.getModel().getImgurl() != null,Cases::getImgurl, pageWrap.getModel().getImgurl()); |
| | | queryWrapper.eq(pageWrap.getModel().getSortnum() != null,Cases::getSortnum, pageWrap.getModel().getSortnum()); |
| | | queryWrapper.eq(pageWrap.getModel().getAddType() != null,Cases::getAddType, pageWrap.getModel().getAddType()); |
| | | queryWrapper.eq(pageWrap.getModel().getImportId() != null,Cases::getImportId, pageWrap.getModel().getImportId()); |
| | | queryWrapper.orderByDesc(Cases::getId); |
| | | PageData<Cases> result =PageData.from(casesMapper.selectJoinPage(page, Cases.class,queryWrapper)); |
| | | if(result!=null && result.getRecords()!=null){ |
| | | String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode() |
| | | +systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.CASES_FILES).getCode(); |
| | | for(Cases cate : result.getRecords()){ |
| | | initMultifileList(cate); |
| | | } |
| | | } |
| | | return PageData.from(casesMapper.selectPage(page, queryWrapper)); |
| | | return result; |
| | | } |
| | | private void initMultifileList(Cases cate) { |
| | | String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() |
| | | + systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CATEGORY_FILES).getCode(); |
| | | |
| | | Multifile find = new Multifile(); |
| | | find.setObjId(cate.getId()); |
| | | find.setObjType(Constants.ONE); |
| | | find.setIsdeleted(Constants.ZERO); |
| | | List<Multifile> fileList= multifileMapper.selectList(new QueryWrapper<>(find)); |
| | | if(fileList!=null){ |
| | | for(Multifile f : fileList){ |
| | | if(StringUtils.isNotBlank(f.getFileurl())){ |
| | | f.setUrl(path+f.getFileurl()); |
| | | } |
| | | |
| | | } |
| | | } |
| | | cate.setFileList(fileList); |
| | | } |
| | | |
| | | @Override |
| | |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | pageWrap.getModel().setDeleted(Constants.ZERO); |
| | | queryWrapper.selectAll(Category.class) |
| | | .selectAs(SystemUser::getUsername, Category::getUpdateUserName) |
| | | .selectAs(SystemUser::getRealname, Category::getUpdateUserName) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Category::getUpdateUser); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.eq(Category::getId, pageWrap.getModel().getId()); |
| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.core.annotation.excel.ExcelImporter; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.core.utils.tyyun.TyyZosUtil; |
| | | import com.doumee.dao.business.CasesMapper; |
| | | import com.doumee.dao.business.CategoryMapper; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.dto.CasesImport; |
| | | import com.doumee.dao.business.dto.MemberImport; |
| | | import com.doumee.dao.business.model.Cases; |
| | | import com.doumee.dao.business.model.Category; |
| | | import com.doumee.dao.business.model.ImportRecord; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.ImportRecordMapper; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.service.business.ImportRecordService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import com.sun.xml.internal.messaging.saaj.util.ByteInputStream; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.poi.ss.usermodel.CellType; |
| | | import org.apache.poi.xssf.usermodel.XSSFPictureData; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.checkerframework.checker.units.qual.A; |
| | | import org.checkerframework.checker.units.qual.C; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.scheduling.annotation.Async; |
| | |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.io.ByteArrayInputStream; |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | |
| | | * @date 2026-01-27 16:02:37 |
| | | */ |
| | | @Service |
| | | @Slf4j |
| | | public class ImportRecordServiceImpl implements ImportRecordService { |
| | | |
| | | @Autowired |
| | | private ImportRecordMapper importRecordMapper; |
| | | @Autowired |
| | | private CategoryMapper categoryMapper; |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | @Autowired |
| | | private CasesMapper casesMapper; |
| | | @Resource |
| | | private RedisTemplate<String, Object> redisTemplate; |
| | | @Resource |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | |
| | | @Override |
| | | public Integer create(ImportRecord importRecord) { |
| | |
| | | @Override |
| | | public PageData<ImportRecord> findPage(PageWrap<ImportRecord> pageWrap) { |
| | | IPage<ImportRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | QueryWrapper<ImportRecord> queryWrapper = new QueryWrapper<>(); |
| | | MPJLambdaWrapper<ImportRecord> queryWrapper = new MPJLambdaWrapper<>(); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getId() != null,ImportRecord::getId, pageWrap.getModel().getId()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getDeleted() != null,ImportRecord::getDeleted, pageWrap.getModel().getDeleted()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getCreateUser() != null,ImportRecord::getCreateUser, pageWrap.getModel().getCreateUser()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().ge(ImportRecord::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())); |
| | | queryWrapper.lambda().le(ImportRecord::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())); |
| | | } |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getUpdateUser() != null,ImportRecord::getUpdateUser, pageWrap.getModel().getUpdateUser()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().ge(ImportRecord::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime())); |
| | | queryWrapper.lambda().le(ImportRecord::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime())); |
| | | } |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getRemark() != null,ImportRecord::getRemark, pageWrap.getModel().getRemark()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getStatus() != null,ImportRecord::getStatus, pageWrap.getModel().getStatus()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getTitle() != null,ImportRecord::getTitle, pageWrap.getModel().getTitle()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getTotalNum() != null,ImportRecord::getTotalNum, pageWrap.getModel().getTotalNum()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getDetail() != null,ImportRecord::getDetail, pageWrap.getModel().getDetail()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getImgurl() != null,ImportRecord::getImgurl, pageWrap.getModel().getImgurl()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().ge(ImportRecord::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate())); |
| | | queryWrapper.lambda().le(ImportRecord::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getStartDate())); |
| | | } |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().ge(ImportRecord::getEndDate, Utils.Date.getStart(pageWrap.getModel().getEndDate())); |
| | | queryWrapper.lambda().le(ImportRecord::getEndDate, Utils.Date.getEnd(pageWrap.getModel().getEndDate())); |
| | | } |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getSortnum() != null,ImportRecord::getSortnum, pageWrap.getModel().getSortnum()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getType() != null,ImportRecord::getType, pageWrap.getModel().getType()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getDoneNum() != null,ImportRecord::getDoneNum, pageWrap.getModel().getDoneNum()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getErrorNum() != null,ImportRecord::getErrorNum, pageWrap.getModel().getErrorNum()); |
| | | for(PageWrap.SortData sortData: pageWrap.getSorts()) { |
| | | if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { |
| | | queryWrapper.orderByDesc(sortData.getProperty()); |
| | | } else { |
| | | queryWrapper.orderByAsc(sortData.getProperty()); |
| | | } |
| | | } |
| | | queryWrapper.selectAll(ImportRecord.class ) |
| | | .selectAs(SystemUser::getRealname,ImportRecord::getUpdateUserName) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,ImportRecord::getUpdateUser); |
| | | queryWrapper.eq(pageWrap.getModel().getId() != null,ImportRecord::getId, pageWrap.getModel().getId()); |
| | | queryWrapper.eq(pageWrap.getModel().getDeleted() != null,ImportRecord::getDeleted, pageWrap.getModel().getDeleted()); |
| | | queryWrapper.eq(pageWrap.getModel().getCreateUser() != null,ImportRecord::getCreateUser, pageWrap.getModel().getCreateUser()); |
| | | queryWrapper.eq(pageWrap.getModel().getUpdateUser() != null,ImportRecord::getUpdateUser, pageWrap.getModel().getUpdateUser()); |
| | | queryWrapper.eq(pageWrap.getModel().getRemark() != null,ImportRecord::getRemark, pageWrap.getModel().getRemark()); |
| | | queryWrapper.eq(pageWrap.getModel().getStatus() != null,ImportRecord::getStatus, pageWrap.getModel().getStatus()); |
| | | queryWrapper.eq(pageWrap.getModel().getTitle() != null,ImportRecord::getTitle, pageWrap.getModel().getTitle()); |
| | | queryWrapper.eq(pageWrap.getModel().getTotalNum() != null,ImportRecord::getTotalNum, pageWrap.getModel().getTotalNum()); |
| | | queryWrapper.eq(pageWrap.getModel().getDetail() != null,ImportRecord::getDetail, pageWrap.getModel().getDetail()); |
| | | queryWrapper.eq(pageWrap.getModel().getImgurl() != null,ImportRecord::getImgurl, pageWrap.getModel().getImgurl()); |
| | | queryWrapper.eq(pageWrap.getModel().getSortnum() != null,ImportRecord::getSortnum, pageWrap.getModel().getSortnum()); |
| | | queryWrapper.eq(pageWrap.getModel().getType() != null,ImportRecord::getType, pageWrap.getModel().getType()); |
| | | queryWrapper.eq(pageWrap.getModel().getDoneNum() != null,ImportRecord::getDoneNum, pageWrap.getModel().getDoneNum()); |
| | | queryWrapper.eq(pageWrap.getModel().getErrorNum() != null,ImportRecord::getErrorNum, pageWrap.getModel().getErrorNum()); |
| | | queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getUpdateUserName()),SystemUser::getRealname, pageWrap.getModel().getUpdateUserName()); |
| | | queryWrapper.ge(pageWrap.getModel().getEndtime() != null,ImportRecord::getCreateTime, pageWrap.getModel().getEndtime()); |
| | | queryWrapper.ne(pageWrap.getModel().getStarttime() != null,ImportRecord::getCreateTime, pageWrap.getModel().getStarttime()); |
| | | queryWrapper.orderByDesc(ImportRecord::getId); |
| | | return PageData.from(importRecordMapper.selectPage(page, queryWrapper)); |
| | | } |
| | | |
| | |
| | | } |
| | | redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_RECORD,true,30, TimeUnit.MINUTES); |
| | | try { |
| | | List<Category> categoryList = null; |
| | | if(type == 0){ |
| | | categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda().eq(Category::getDeleted,Constants.ZERO)); |
| | | if(categoryList == null || categoryList.size()==0){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对ä¸èµ·ï¼ 读åèå¸åºæ°æ°æ®é
ç½®åºéï¼è¯·å
é
ç½®åºç¡æ°æ®ä¿¡æ¯ï¼"); |
| | | } |
| | | } |
| | | ImportRecord model = new ImportRecord(); |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | model.setDeleted(Constants.ZERO); |
| | |
| | | model.setUpdateTime(model.getCreateTime()); |
| | | model.setUpdateUser(loginUserInfo.getId()); |
| | | model.setType(type); |
| | | model.setTitle((type==1?"æ¡ä¾ä¿¡æ¯æ¹é导å
¥":"èå¸ä¿¡æ¯æ¹é导å
¥")+ DateUtil.getPlusTime2(model.getCreateTime())); |
| | | model.setTitle((type==1?"æ¡ä¾ä¿¡æ¯æ¹é导å
¥":"èå¸ä¿¡æ¯æ¹é导å
¥,")+"æä»¶ï¼"+file.getOriginalFilename()); |
| | | model.setTotalNum(0); |
| | | ExcelImporter ie= new ExcelImporter(file,0,0, CellType.STRING); // ç¡®ä¿åå
æ ¼ç±»å为å符串); |
| | | Map<String, XSSFPictureData> pics = ie.getExcelPictures(); |
| | | if(type == 1) { |
| | | model.setCaseList(ie.getDataList(CasesImport.class,null)); |
| | | if(model.getCaseList() ==null || model.getCaseList().size()==0){ |
| | | List<CasesImport> importList = (ie.getDataList(CasesImport.class,null)); |
| | | if(importList==null || importList.size()==0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"导å
¥æä»¶æ¡ä¾ä¿¡æ¯å
容为空ï¼"); |
| | | } |
| | | model.setTotalNum(model.getCaseList().size()); |
| | | }else{ |
| | | model.setMemberList(ie.getDataList(MemberImport.class,null)); |
| | | if(model.getMemberList() ==null || model.getMemberList().size()==0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"导å
¥æä»¶èå¸ä¿¡æ¯å
容为空ï¼"); |
| | | } |
| | | model.setTotalNum(model.getMemberList().size()); |
| | | List<MemberImport> importList = (ie.getDataList(MemberImport.class,null)); |
| | | model.setMemberList(isvalidImpartMemberParam(loginUserInfo,categoryList,pics,importList)); |
| | | model.setTotalNum(model.getMemberList().size()); |
| | | } |
| | | // model.setPictureDataList(ie); |
| | | importRecordMapper.insert(model); |
| | | return model; |
| | | }catch (BusinessException e){ |
| | | redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD); |
| | | throw e; |
| | | }catch (Exception e){ |
| | | redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD); |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"æä»¶ä¿¡æ¯è¯»å失败ï¼è¯·æ£æ¥æä»¶å
容åéè¯ï¼"); |
| | | }finally { |
| | | redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD); |
| | | // redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD); |
| | | } |
| | | } |
| | | private List<Member> isvalidImpartMemberParam(LoginUserInfo user, List<Category> categoryList ,Map<String, XSSFPictureData> pics, List<MemberImport> memberList) { |
| | | if(memberList ==null || memberList.size()==0){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼æªè¯»åå°æææ°æ®"); |
| | | } |
| | | if(pics ==null || pics.size()==0){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼æªè¯»åå°ä»»ä½èä¸ç
§å¾çæ°æ®"); |
| | | } |
| | | List<Member> insertMember = new ArrayList<>(); |
| | | List<Member> allList = memberMapper.selectList(new QueryWrapper<Member>().lambda() |
| | | .eq(Member::getDeleted,Constants.ZERO)); |
| | | allList=allList==null?new ArrayList<>():allList; |
| | | if(categoryList == null || categoryList.size()==0){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对ä¸èµ·ï¼ 读åèå¸åºæ°æ°æ®é
ç½®åºéï¼è¯·å
é
ç½®åºç¡æ°æ®ä¿¡æ¯ï¼"); |
| | | } |
| | | Date date = new Date(); |
| | | int index = 1; |
| | | for(MemberImport param :memberList){ |
| | | index ++; |
| | | if(StringUtils.isBlank(param.getImgurl()) |
| | | ||StringUtils.isBlank(param.getFee()) |
| | | ||StringUtils.isBlank(param.getName()) |
| | | ||StringUtils.isBlank(param.getInfo()) |
| | | ||StringUtils.isBlank(param.getJobYear()) |
| | | ||StringUtils.isBlank(param.getPosition()) |
| | | ||StringUtils.isBlank(param.getFieldNames()) |
| | | ||StringUtils.isBlank(param.getSex()) |
| | | ||StringUtils.isBlank(param.getCode()) |
| | | ||StringUtils.isBlank(param.getZqNames()) |
| | | ||StringUtils.isBlank(param.getLevelName()) |
| | | ||StringUtils.isBlank(param.getServeNum()) |
| | | ||StringUtils.isBlank(param.getTypeNames())){ |
| | | continue; |
| | | } |
| | | Member member = new Member(); |
| | | if(StringUtils.isBlank(param.getCode())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼ å·¥å·ä¿¡æ¯ä¸è½ä¸ºç©º"); |
| | | } |
| | | for(Member m : allList){ |
| | | if(StringUtils.equals(param.getCode(),m.getCode())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼ å·¥å·ã"+param.getCode()+"ãä¿¡æ¯å·²åå¨ï¼è¯·ç¡®è®¤ä¸è¦éå¤å½å
¥"); |
| | | } |
| | | } |
| | | for(Member m : insertMember){ |
| | | if(StringUtils.equals(param.getCode(),m.getCode())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼ å·¥å·ã"+param.getCode()+"ãå¨ææ¡£ä¸éå¤åºç°"); |
| | | } |
| | | } |
| | | if(StringUtils.isBlank(param.getName())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼ å§åä¿¡æ¯ä¸è½ä¸ºç©º"); |
| | | } |
| | | if(StringUtils.isBlank(param.getLevelName())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼ ç级信æ¯ä¸è½ä¸ºç©º"); |
| | | } |
| | | if(StringUtils.isBlank(param.getJobYear())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼ ä»ä¸å¹´ä»½ä¿¡æ¯ä¸è½ä¸ºç©º"); |
| | | } |
| | | Integer year ; |
| | | try { |
| | | year = Integer.parseInt(param.getJobYear()); |
| | | }catch (Exception e){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼ ä»ä¸å¹´ä»½ä¿¡æ¯ä¸æ£ç¡®"); |
| | | } |
| | | if(StringUtils.isBlank(param.getZqNames())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼ æå¡æåºä¿¡æ¯ä¸è½ä¸ºç©º"); |
| | | } |
| | | if(StringUtils.isBlank(param.getTypeNames())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼ åä¸åç±»åä¿¡æ¯ä¸è½ä¸ºç©º"); |
| | | } |
| | | if(StringUtils.isBlank(param.getFee())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼ è´¹ç¨æ åä¿¡æ¯ä¸è½ä¸ºç©º"); |
| | | } |
| | | if(pics!=null && StringUtils.isNotBlank(param.getImgurl())){ |
| | | log.info("===================="+param.getImgurl()); |
| | | int start = param.getImgurl().indexOf("(\"")+2; |
| | | int end = param.getImgurl().indexOf("\","); |
| | | if(start>=0&& end>=1 && end>start){ |
| | | String picId = param.getImgurl().substring(start,end); |
| | | log.info("====================PICID:"+param.getImgurl()); |
| | | XSSFPictureData data = pics.get(picId); |
| | | if(data!= null && data.getData() != null){ |
| | | member.setImgurlData(data.getData()); |
| | | } |
| | | } |
| | | } |
| | | if(member.getImgurlData() ==null || member.getImgurlData().length==0){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡ã"+param.getName()+"ãæ°æ®ï¼ æªè¯»åå°ä»»ä½èä¸ç
§å¾çæ°æ®"); |
| | | } |
| | | //ç±»å:0=æåº;1=åä¸å;2=æ
é¿é¢å;3=讲å¸ç级;" |
| | | List<Category> list0 = isValidCategoryParam(param.getZqNames(),Constants.ZERO,categoryList,index );//æåº |
| | | List<Category> list1 = isValidCategoryParam(param.getTypeNames(),Constants.ONE,categoryList,index);//åä¸å |
| | | List<Category> list2 = isValidCategoryParam(param.getFieldNames(),Constants.TWO,categoryList,index);//æ
é¿é¢å |
| | | Category levelCate = getCategoryModelByName(param.getLevelName(),Constants.THREE,categoryList);//讲å¸ç级 |
| | | if(levelCate == null){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼ ç级信æ¯ã"+param.getLevelName()+"ãå°æªé
ç½®"); |
| | | } |
| | | member.setCreateTime(date); |
| | | member.setUpdateTime(date); |
| | | member.setCreateUser(user.getId()); |
| | | member.setUpdateUser(user.getId()); |
| | | member.setAddType(Constants.ONE); |
| | | member.setDeleted(Constants.ZERO); |
| | | member.setStatus(Constants.ZERO); |
| | | member.setName(param.getName()); |
| | | member.setContent(param.getInfo()); |
| | | member.setJobYear(year); |
| | | member.setCode(param.getCode()); |
| | | member.setPositon(param.getPosition()); |
| | | try { |
| | | member.setServeNum(Integer.parseInt(param.getServeNum())); |
| | | }catch (Exception e){ |
| | | } |
| | | try { |
| | | member.setFee(new BigDecimal(param.getFee())); |
| | | }catch (Exception e){ |
| | | } |
| | | member.setSex(StringUtils.equals(param.getSex(),"ç·")?Constants.ZERO:(StringUtils.equals(param.getSex(),"女")?Constants.ZERO:null)); |
| | | member.setZhanquIds(getIdStrListByList(list0)); |
| | | member.setBustypeIds(getIdStrListByList(list1)); |
| | | member.setFieldIds(getIdStrListByList(list2)); |
| | | member.setLevelId(levelCate.getId()); |
| | | insertMember.add(member); |
| | | } |
| | | if(insertMember ==null || insertMember.size()==0){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼æªè¯»åå°æææ°æ®"); |
| | | } |
| | | return insertMember; |
| | | |
| | | } |
| | | |
| | | private String getIdStrListByList(List<Category> categoryList) { |
| | | String[] idList = new String[categoryList.size()]; |
| | | for (int i = 0; i <categoryList.size(); i++) { |
| | | idList[i]="["+categoryList.get(i).getId()+"]"; |
| | | } |
| | | return String.join(",",idList); |
| | | } |
| | | |
| | | private List<Category> isValidCategoryParam(String zqNames, int type, List<Category> categoryList,int index) { |
| | | if(StringUtils.isBlank(zqNames)){ |
| | | return null; |
| | | } |
| | | //è·å®¢ç±»ï½å¸åºç±»ï½å¹è®ç±» |
| | | List<Category> list = new ArrayList<>(); |
| | | String names[] = zqNames.split("/"); |
| | | String title = type==0?"æå¡æåº":( type==1?"åä¸åç±»å":"æ
é¿é¢å"); |
| | | for(String str : names){ |
| | | if(StringUtils.isBlank(str)){ |
| | | continue; |
| | | } |
| | | Category cate = getCategoryModelByName(str,type,categoryList); |
| | | if(cate == null){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼"+title+"ä¸ã"+str+"ãå°æªé
ç½®"); |
| | | } |
| | | list.add(cate); |
| | | } |
| | | if(list == null || list.size() ==0){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对ä¸èµ·ï¼ç¬¬"+index+"è¡æ°æ®ï¼"+title+"æªæ¥è¯¢å°ææé
ç½®"); |
| | | } |
| | | return list; |
| | | } |
| | | private Category getCategoryModelByName(String levelName, int type, List<Category> categoryList) { |
| | | for(Category c : categoryList){ |
| | | if(Constants.equalsInteger(c.getType(),type) |
| | | && StringUtils.equals(levelName.trim(),StringUtils.defaultString(c.getName(),"").trim())){ |
| | | return c; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | |
| | | int success=0; |
| | | String msg =""; |
| | | try { |
| | | for(CasesImport param:importRecord.getCaseList()){ |
| | | for(Cases param:importRecord.getCaseList()){ |
| | | |
| | | } |
| | | }catch (Exception e){ |
| | |
| | | private int dealUserImportBiz(ImportRecord importRecord) { |
| | | int success=0; |
| | | String msg = ""; |
| | | String nowDate =DateUtil.getNowShortDate(); |
| | | try { |
| | | for(MemberImport param:importRecord.getMemberList()){ |
| | | |
| | | String bucket =systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.BUCKETNAME).getCode(); |
| | | String folder =systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.MEMBER_FILES).getCode(); |
| | | TyyZosUtil obs = new TyyZosUtil(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ENDPOINT).getCode(), |
| | | systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ACCESS_ID).getCode(), |
| | | systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ACCESS_KEY).getCode()); |
| | | for(Member param: importRecord.getMemberList()){ |
| | | param.setImportId(importRecord.getId()); |
| | | param.setAddType(Constants.ONE); |
| | | success += dealMemberInsert(obs,param,folder,nowDate,bucket); |
| | | } |
| | | obs.shutDown(); |
| | | }catch (Exception e){ |
| | | |
| | | log.error("å¤ç人åä¿¡æ¯åçå¼å¸¸{}",e.getMessage()); |
| | | } |
| | | importRecord.setDoneNum(success); |
| | | importRecord.setErrorNum(importRecord.getTotalNum() - success); |
| | | importRecord.setDetail(msg); |
| | | redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD); |
| | | return success; |
| | | } |
| | | |
| | | |
| | | private int dealMemberInsert( TyyZosUtil obs,Member param,String folder,String nowDate,String bucketName) { |
| | | int success =0; |
| | | try { |
| | | String fileName = UUID.randomUUID() + ".png"; |
| | | String tempFileName = nowDate + "/" + fileName; |
| | | String key = folder + tempFileName;// æä»¶å |
| | | if (obs.uploadInputstreamObjectNoShutdown(new ByteArrayInputStream(param.getImgurlData() ) ,bucketName, key)) { |
| | | param.setImgurl(tempFileName);//è¯ä»¶ç
§å°å |
| | | log.error("å¤ç人åä¿¡æ¯è¯ä»¶ç
§æå=================={}",key ); |
| | | success= memberMapper.insert(param); |
| | | } |
| | | }catch (Exception e){ |
| | | log.error("å¤ç人åä¿¡æ¯{}==åçå¼å¸¸{}",param.getName(),e.getMessage()); |
| | | } |
| | | return success; |
| | | } |
| | | } |
| | |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.LoginUserInfo; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.DateUtil; |
| | |
| | | import com.doumee.dao.business.model.Category; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.Multifile; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.service.business.MemberService; |
| | | import com.github.xiaoymin.knife4j.core.util.CollectionUtils; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import io.swagger.models.auth.In; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | |
| | | |
| | | @Override |
| | | public Integer create(Member member) { |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(StringUtils.isBlank(member.getCode()) |
| | | ||StringUtils.isBlank(member.getName()) |
| | | ||StringUtils.isBlank(member.getImgurl()) |
| | | ||StringUtils.isBlank(member.getContent()) |
| | | ||member.getZhanquIdList()==null |
| | | ||member.getZhanquIdList().size()==0 |
| | | ||member.getBustypeIdList()==null |
| | | ||member.getBustypeIdList().size()==0 |
| | | ||member.getFieldIdList()==null |
| | | ||member.getFieldIdList().size()==0 |
| | | ||member.getLevelId()==null ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() |
| | | .eq(Member::getCode,member.getCode()) |
| | | .eq(Member::getDeleted,Constants.ZERO) |
| | | .eq(Member::getType,member.getType()))>0 ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"å·¥å·å·²åå¨ï¼è¯·ç¡®è®¤åéæ°å½å
¥"); |
| | | } |
| | | member.setDeleted(Constants.ZERO); |
| | | member.setCreateTime(new Date()); |
| | | member.setCreateUser(loginUserInfo.getId()); |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUser(loginUserInfo.getId()); |
| | | member.setZhanquIds(getIdsStrFromList(member.getZhanquIdList())); |
| | | member.setFieldIds(getIdsStrFromList(member.getFieldIdList())); |
| | | member.setBustypeIds(getIdsStrFromList(member.getBustypeIdList())); |
| | | memberMapper.insert(member); |
| | | |
| | | return member.getId(); |
| | | } |
| | | |
| | | private String getIdsStrFromList(List<Integer> zhanquIdList) { |
| | | String t = ""; |
| | | if(zhanquIdList!=null && zhanquIdList.size()>0){ |
| | | for (int i = 0; i < zhanquIdList.size(); i++) { |
| | | if(zhanquIdList.get(i)==null){ |
| | | continue; |
| | | } |
| | | if(StringUtils.isNotBlank(t)){ |
| | | t+=","; |
| | | } |
| | | t+="["+zhanquIdList.get(i)+"]"; |
| | | } |
| | | } |
| | | return t; |
| | | } |
| | | |
| | | @Override |
| | | public void deleteById(Integer id) { |
| | | memberMapper.deleteById(id); |
| | | Member member =new Member(); |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | member.setUpdateTime(new Date()); |
| | | member.setId(id); |
| | | member.setUpdateUser(loginUserInfo.getId()); |
| | | member.setDeleted(Constants.ONE); |
| | | memberMapper.updateById(member); |
| | | } |
| | | |
| | | @Override |
| | |
| | | UpdateWrapper<Member> deleteWrapper = new UpdateWrapper<>(member); |
| | | memberMapper.delete(deleteWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public void updateStatus(Member member) { |
| | | if(Objects.isNull(member) || Objects.isNull(member.getId())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUser(loginUserInfo.getId()); |
| | | memberMapper.updateById(member); |
| | | } |
| | | @Override |
| | | public void deleteByIdInBatch(List<Integer> ids) { |
| | | if (CollectionUtils.isEmpty(ids)) { |
| | | return; |
| | | } |
| | | memberMapper.deleteBatchIds(ids); |
| | | for(Integer id : ids){ |
| | | this.deleteById(id); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void updateById(Member member) { |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(StringUtils.isBlank(member.getCode()) |
| | | ||StringUtils.isBlank(member.getName()) |
| | | ||StringUtils.isBlank(member.getImgurl()) |
| | | ||StringUtils.isBlank(member.getContent()) |
| | | ||member.getId()==null |
| | | ||member.getZhanquIdList()==null |
| | | ||member.getZhanquIdList().size()==0 |
| | | ||member.getBustypeIdList()==null |
| | | ||member.getBustypeIdList().size()==0 |
| | | ||member.getFieldIdList()==null |
| | | ||member.getFieldIdList().size()==0 |
| | | ||member.getLevelId()==null ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() |
| | | .eq(Member::getCode,member.getCode()) |
| | | .ne(Member::getId,member.getId()) |
| | | .eq(Member::getDeleted,Constants.ZERO) |
| | | .eq(Member::getType,member.getType()))>0 ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"å·¥å·å·²åå¨ï¼è¯·ç¡®è®¤åéæ°å½å
¥"); |
| | | } |
| | | member.setUpdateTime(new Date()); |
| | | member.setUpdateUser(loginUserInfo.getId()); |
| | | member.setAddType(Constants.ZERO); |
| | | member.setZhanquIds(getIdsStrFromList(member.getZhanquIdList())); |
| | | member.setFieldIds(getIdsStrFromList(member.getFieldIdList())); |
| | | member.setBustypeIds(getIdsStrFromList(member.getBustypeIdList())); |
| | | memberMapper.updateById(member); |
| | | } |
| | | |
| | |
| | | |
| | | @Override |
| | | public List<Member> findList(Member member) { |
| | | member.setDeleted(Constants.ZERO); |
| | | QueryWrapper<Member> wrapper = new QueryWrapper<>(member); |
| | | return memberMapper.selectList(wrapper); |
| | | } |
| | |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | Member model = pageWrap.getModel(); |
| | | queryWrapper.selectAll(Member.class) |
| | | .select(" c1.NAME ", Member::getPromotionName) |
| | | .select(" c2.NAME ", Member::getLevelName) |
| | | .leftJoin(" category c1 on t.POSITON = c1.id ") |
| | | .leftJoin(" category c2 on t.LEVEL_ID = c2.id ") |
| | | .selectAs(Category::getName, Member::getLevelName) |
| | | .selectAs(SystemUser::getRealname, Member::getUpdateUserName) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Member::getUpdateUser) |
| | | .leftJoin(Category.class,Category::getId,Member::getLevelId) |
| | | .apply(Objects.nonNull(model.getBustypeIds())," find_in_set( '["+model.getBustypeIds()+"]', t.BUSTYPE_IDS ) ") |
| | | .apply(Objects.nonNull(model.getZhanquIds())," find_in_set( '["+model.getZhanquIds()+"]', t.ZHANQU_IDS ) ") |
| | | .like(StringUtils.isNotBlank(model.getName()),Member::getName, model.getName()) |
| | | .eq(Objects.nonNull(model.getStatus()),Member::getStatus, model.getStatus()) |
| | | .orderByAsc(Objects.isNull(model.getOrderByType()),"c2.DETAIL") |
| | | .eq(Member::getDeleted, Constants.ZERO) |
| | | .in(Objects.nonNull(model.getLevelId()),Category::getId, model.getLevelId()) |
| | | .eq(Objects.nonNull(model.getCode()),Member::getCode, model.getCode()) |
| | | .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ZERO),Member::getFee) |
| | | .orderByAsc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ONE),Member::getFee) |
| | | .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.TWO),"c2.DETAIL") |
| | | .orderByAsc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.THREE),"c2.DETAIL") |
| | | .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.TWO),Category::getDetail) |
| | | .orderByAsc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.THREE),Category::getDetail) |
| | | .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.FOUR),Member::getServeNum) |
| | | .orderByDesc(Member::getId) |
| | | ; |
| | | if(Constants.equalsInteger(pageWrap.getModel().getQueryFlag(),Constants.ONE)){ |
| | | queryWrapper.select("(select count(c.id) from cases c where c.deleted=0 and c.member_id=t.id)",Member::getCaseNum); |
| | | } |
| | | if(StringUtils.isNotBlank(model.getFieldIds())){ |
| | | String [] fieldIds = model.getFieldIds().split(","); |
| | | for (String s:fieldIds) { |
| | |
| | | queryWrapper.apply(" find_in_set( '["+zhanqu.getId()+"]', t.ZHANQU_IDS ) "); |
| | | } |
| | | } |
| | | IPage<Member> memberIPage = memberMapper.selectJoinPage(page, Member.class, new MPJLambdaWrapper<>()); |
| | | IPage<Member> memberIPage = memberMapper.selectJoinPage(page, Member.class, queryWrapper); |
| | | if(CollectionUtils.isNotEmpty(memberIPage.getRecords())){ |
| | | List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda() |
| | | .eq(Category::getDeleted, Constants.ZERO) |
| | | .eq(Category::getType,Constants.TWO) |
| | | // .eq(Category::getType,Constants.TWO) |
| | | .orderByAsc(Category::getSortnum) |
| | | ); |
| | | String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() + |
| | | systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CATEGORY_FILES).getCode(); |
| | | systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.MEMBER_FILES).getCode(); |
| | | String roleConfig = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ROLE_CONFIG).getCode(); |
| | | for (Member member:memberIPage.getRecords()) { |
| | | if(CollectionUtils.isNotEmpty(categoryList)){ |
| | | dealMemberField(member,categoryList); |
| | | if(Constants.equalsInteger(pageWrap.getModel().getQueryFlag(),Constants.ONE)) { |
| | | dealMemberCategoryList(member, categoryList); |
| | | } |
| | | } |
| | | member.setFullImgurl(StringUtils.isNotBlank(member.getImgurl())?(path + member.getImgurl()):""); |
| | | if(StringUtils.isBlank(roleConfig)||StringUtils.isBlank(model.getQueryUserRole()) |
| | | || !roleConfig.contains(model.getQueryUserRole())){ |
| | | if(!Constants.equalsInteger(pageWrap.getModel().getQueryFlag(),Constants.ONE) && (StringUtils.isBlank(roleConfig)||StringUtils.isBlank(model.getQueryUserRole()) |
| | | || !roleConfig.contains(model.getQueryUserRole()))){ |
| | | member.setFee(null); |
| | | } |
| | | if(member.getJobYear()!=null){ |
| | |
| | | return PageData.from(memberIPage); |
| | | } |
| | | |
| | | private void dealMemberCategoryList(Member member, List<Category> categoryList) { |
| | | member.setFieldIdList(new ArrayList<>()); |
| | | member.setBustypeIdList(new ArrayList<>()); |
| | | member.setZhanquIdList(new ArrayList<>()); |
| | | member.setFieldList(new ArrayList<>()); |
| | | member.setTypeList(new ArrayList<>()); |
| | | member.setZqList(new ArrayList<>()); |
| | | for(Category c:categoryList){ |
| | | // 0=æåº;1=åä¸å;2=æ
é¿é¢å; |
| | | if(Constants.equalsInteger(c.getType(),Constants.ZERO)&& StringUtils.contains(member.getZhanquIds(),"["+c.getId()+"]")){ |
| | | //æåº |
| | | member.getZqList().add(c); |
| | | member.getZhanquIdList().add(c.getId()); |
| | | } |
| | | if(Constants.equalsInteger(c.getType(),Constants.ONE)&& StringUtils.contains(member.getBustypeIds(),"["+c.getId()+"]")){ |
| | | //åä¸å |
| | | member.getTypeList().add(c); |
| | | member.getBustypeIdList().add(c.getId()); |
| | | } |
| | | if(Constants.equalsInteger(c.getType(),Constants.TWO) && StringUtils.contains(member.getFieldIds(),"["+c.getId()+"]")){ |
| | | //æ
é¿é¢å |
| | | member.getFieldList().add(c); |
| | | member.getFieldIdList().add(c.getId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public Member findDetailById(Integer id,String queryUserRole) { |