| | |
| | | export function findAllCompanyList (data) { |
| | | return request.post('/business/company/findAllCompanyList', data) |
| | | } |
| | | |
| | | // åèµ·ç¾ç½² |
| | | export function getSignLink (id) { |
| | | return request.get(`/business/companySolution/getSignLink?id=${id}`) |
| | | } |
| | |
| | | export function updateById (data) { |
| | | return request.post('/business/companyUserApply/updateById', data) |
| | | } |
| | | |
| | | // æ ¹æ®IDæ¥è¯¢ |
| | | export function getById (id) { |
| | | return request.get(`business/companyUserApply/${id}`) |
| | | } |
| | | |
| | | // å é¤ |
| | | export function deleteById (id) { |
| | | return request.get(`/business/companyUserApply/delete/${id}`) |
| | | } |
| | | |
| | | // å®¡æ¹ |
| | | export function audit (data) { |
| | | return request.post('/business/companyUserApply/audit', data) |
| | | } |
| | | |
| | | // å页æ¥è¯¢ |
| | | export function page (data) { |
| | | return request.post('/business/companyUserApply/page', data) |
| | | } |
| | |
| | | } |
| | | |
| | | // åååæ¶ |
| | | export function cancel (data) { |
| | | return request.post('/business/contract/cancel', data) |
| | | export function cancel (id) { |
| | | return request.get(`/business/contract/cancel?id=${id}`) |
| | | } |
| | | |
| | | // åèµ·ç¾ç½² |
| | |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules">{{form.type}} |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="ä¸çº§ç»ç»" prop="parentId"> |
| | | <el-cascader |
| | | :options="organization" |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <div class="info" v-if="info"> |
| | | <div class="info_list"> |
| | | <div class="info_list_item" style="width: 100%;"> |
| | | <div class="info_list_item_label">ç³è¯·ææè´¦å·ï¼</div> |
| | | <div class="info_list_item_val">{{info.userName}}</div> |
| | | </div> |
| | | <div class="info_list_item" style="width: 100%;"> |
| | | <div class="info_list_item_label">ææç®¡çä¼ä¸ï¼</div> |
| | | <div class="info_list_item_val">{{info.companyNames}}</div> |
| | | </div> |
| | | <div class="info_list_item" style="width: 100%;"> |
| | | <div class="info_list_item_label">ç³è¯·è¯´æï¼</div> |
| | | <div class="info_list_item_val">{{info.content}}</div> |
| | | </div> |
| | | <div class="info_list_item" style="width: 100%;"> |
| | | <div class="info_list_item_label">ç³è¯·éä»¶ï¼</div> |
| | | <div class="info_list_item_val"> |
| | | <div class="info_list_item_val_cul"> |
| | | <u v-for="(item, index) in info.multifileList" :key="index" @click="openFile(item.fileurlFull)">{{item.name}}</u> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="æ¯å¦éè¿" prop="status"> |
| | | <el-radio-group v-model="form.status"> |
| | | <el-radio :label="1">å®¡æ ¸éè¿</el-radio> |
| | | <el-radio :label="2">å®¡æ ¸ä¸éè¿</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="驳åçç±" prop="checkInfo" :rules="form.status === 2 ? { required: true, message: '驳åçç±ä¸è½ä¸ºç©º', trigger: 'blur' } : { required: false } "> |
| | | <el-input |
| | | type="textarea" |
| | | placeholder="请è¾å
¥é©³åçç±" |
| | | v-model="form.checkInfo" |
| | | maxlength="300" |
| | | show-word-limit /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import UploadFile from '@/components/common/UploadFile' |
| | | import { audit, getById } from '@/api/business/companyUserApply' |
| | | export default { |
| | | name: 'OperaCompanyUserApplyCarefulWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow, UploadFile }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | status: 1, |
| | | checkInfo: '' |
| | | }, |
| | | info: null, |
| | | // éªè¯è§å |
| | | rules: {} |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title, id) { |
| | | this.title = title |
| | | this.form.checkInfo = '' |
| | | this.form.status = 1 |
| | | this.form.id = id |
| | | getById(id) |
| | | .then(res => { |
| | | this.info = res |
| | | this.visible = true |
| | | }) |
| | | }, |
| | | openFile(url) { |
| | | window.open(url) |
| | | }, |
| | | confirm() { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | // è°ç¨æ°å»ºæ¥å£ |
| | | this.isWorking = true |
| | | audit(this.form) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('å®¡æ ¸æå') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .info { |
| | | width: 100%; |
| | | .info_label { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | margin-bottom: 20px; |
| | | span { |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | color: #000000; |
| | | } |
| | | } |
| | | .info_list { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | .info_list_item { |
| | | width: 50%; |
| | | display: flex; |
| | | align-items: start; |
| | | margin-bottom: 20px; |
| | | .info_list_item_label { |
| | | font-size: 15px; |
| | | flex-shrink: 0; |
| | | } |
| | | .info_list_item_val { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 15px; |
| | | .info_list_item_val_cul { |
| | | display: flex; |
| | | flex-direction: column; |
| | | u { |
| | | font-size: 15px; |
| | | color: #2E68EC; |
| | | cursor: pointer; |
| | | margin-top: 5px; |
| | | &:first-child { |
| | | margin: 0; |
| | | } |
| | | } |
| | | } |
| | | .image { |
| | | width: 100px; |
| | | height: 100px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | overflow: hidden; |
| | | img { |
| | | width: 100%; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | <!-- <div style="display: flex; align-items: center;">--> |
| | | <!-- <el-input v-model="form.content" placeholder="请è¾å
¥å
容"></el-input>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="list">--> |
| | | <!-- <div class="list_label">å·²éä¼ä¸ï¼</div>--> |
| | | <!-- <div class="list_box">--> |
| | | <!-- <div class="list_box_row">--> |
| | | <!-- <span>XXXæé责任å
¬å¸</span>--> |
| | | <!-- <i class="el-icon-error"></i>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="list_box_row">--> |
| | | <!-- <span>XXXæé责任å
¬å¸</span>--> |
| | | <!-- <i class="el-icon-error"></i>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | </el-form-item> |
| | | <el-form-item label="ç³è¯·è¯´æ" prop="content"> |
| | | <el-input |
| | | type="textarea" |
| | | placeholder="请è¾å
¥ç³è¯·è¯´æ" |
| | | v-model="form.content" |
| | | maxlength="30" |
| | | maxlength="300" |
| | | show-word-limit /> |
| | | </el-form-item> |
| | | <el-form-item label="ææä¹¦" prop="multifileList"> |
| | | <UploadFile @remove="deleFile" :uploadData="{ folder: 'apply', fileType:'.pdf' }" :fileList="fileList" @uploadSuccess="editFanganFile" /> |
| | | <UploadFile @remove="deleFile" :limit="99" :uploadData="{ folder: 'apply', fileType:'.pdf' }" :fileList="fileList" @uploadSuccess="editFanganFile" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | |
| | | userId: '', |
| | | content: '', |
| | | companyIds: [], |
| | | multifileList: null |
| | | multifileList: [] |
| | | }, |
| | | // éªè¯è§å |
| | | rules: { |
| | |
| | | return |
| | | } |
| | | let obj = JSON.parse(JSON.stringify(this.form)) |
| | | obj.multifileList = [obj.multifileList] |
| | | obj.companyIds = obj.companyIds.join(',') |
| | | obj.companyNames = [] |
| | | this.form.companyIds.forEach(item => { |
| | |
| | | return |
| | | } |
| | | let obj = JSON.parse(JSON.stringify(this.form)) |
| | | obj.multifileList = [obj.multifileList] |
| | | obj.companyIds = obj.companyIds.join(',') |
| | | obj.companyNames = [] |
| | | this.form.companyIds.forEach(item => { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | deleFile () { |
| | | this.form.multifileList = null |
| | | deleFile (imgaddr) { |
| | | this.form.multifileList.forEach((item, index) => { |
| | | if (item.imgaddr === imgaddr) { |
| | | this.form.multifileList.splice(index, 1) |
| | | } |
| | | }) |
| | | }, |
| | | editFanganFile (data) { |
| | | this.form.multifileList = data |
| | | this.form.multifileList.push(data) |
| | | }, |
| | | getAccount() { |
| | | findUserList({}) |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :withFooter="false" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-table |
| | | :data="tableData" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="date" |
| | | label="è´¦å·"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="å§å"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="èç³»æ¹å¼"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="ææä¼ä¸åç§°"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="ææäºº"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="æææ¶é´"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="æä½"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { page } from '@/api/business/companyUserApply' |
| | | export default { |
| | | name: 'authorizedEnterprise', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | return { |
| | | model: {}, |
| | | tableData: [] |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | }, |
| | | getList() { |
| | | page({ |
| | | capacity: 10, |
| | | page: 1, |
| | | model: { |
| | | userId: '' |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :withFooter="false" |
| | | :visible.sync="visible" |
| | | > |
| | | <div class="info"> |
| | | <div class="info_label"> |
| | | <span>ç³è¯·è®°å½è¯¦æ
</span> |
| | | </div> |
| | | <div class="info_list"> |
| | | <div class="info_list_item"> |
| | | <div class="info_list_item_label">ç³è¯·äººï¼</div> |
| | | <div class="info_list_item_val">{{form.realName}}</div> |
| | | </div> |
| | | <div class="info_list_item"> |
| | | <div class="info_list_item_label">ç³è¯·æ¶é´ï¼</div> |
| | | <div class="info_list_item_val">{{form.createDate}}</div> |
| | | </div> |
| | | <div class="info_list_item" style="width: 100%;"> |
| | | <div class="info_list_item_label">ææè´¦å·ï¼</div> |
| | | <div class="info_list_item_val">{{form.userName}}</div> |
| | | </div> |
| | | <div class="info_list_item" style="width: 100%;"> |
| | | <div class="info_list_item_label">ææç®¡çä¼ä¸ï¼</div> |
| | | <div class="info_list_item_val">{{form.companyNames}}</div> |
| | | </div> |
| | | <div class="info_list_item" style="width: 100%;"> |
| | | <div class="info_list_item_label">ç³è¯·è¯´æï¼</div> |
| | | <div class="info_list_item_val">{{form.content}}</div> |
| | | </div> |
| | | <div class="info_list_item" style="width: 100%;"> |
| | | <div class="info_list_item_label">ç³è¯·éä»¶ï¼</div> |
| | | <div class="info_list_item_val"> |
| | | <div class="info_list_item_val_cul"> |
| | | <u v-for="(item, index) in form.multifileList" :key="index" @click="openFile(item.fileurlFull)">{{item.name}}</u> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="info"> |
| | | <div class="info_label"> |
| | | <span>å®¡æ¹æ
åµ</span> |
| | | </div> |
| | | <div class="info_list"> |
| | | <div class="info_list_item"> |
| | | <div class="info_list_item_label">审æ¹ç»æï¼</div> |
| | | <div class="info_list_item_val"> |
| | | <template v-if="form.status === 0">å¾
å®¡æ ¸</template> |
| | | <template v-if="form.status === 1">å®¡æ ¸éè¿</template> |
| | | <template v-if="form.status === 2">å®¡æ ¸ä¸éè¿</template> |
| | | </div> |
| | | </div> |
| | | <div class="info_list_item"> |
| | | <div class="info_list_item_label">å®¡æ ¸æ¶é´ï¼</div> |
| | | <div class="info_list_item_val">{{form.checkDate}}</div> |
| | | </div> |
| | | <div class="info_list_item" style="width: 100%;"> |
| | | <div class="info_list_item_label">å®¡æ ¸è¯´æï¼</div> |
| | | <div class="info_list_item_val">{{form.checkInfo}}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { getById } from '@/api/business/companyUserApply' |
| | | import { mapState } from 'vuex' |
| | | export default { |
| | | name: 'operaCompanyUserApplyDescWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | return { |
| | | form: {} |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapState(['userInfo']) |
| | | }, |
| | | methods: { |
| | | open (title, id) { |
| | | this.title = title |
| | | getById(id) |
| | | .then(res => { |
| | | console.log(res) |
| | | this.form = res |
| | | this.visible = true |
| | | }) |
| | | }, |
| | | openFile(url) { |
| | | window.open(url) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .info { |
| | | width: 100%; |
| | | .info_label { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | margin-bottom: 20px; |
| | | span { |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | color: #000000; |
| | | } |
| | | } |
| | | .info_list { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | .info_list_item { |
| | | width: 50%; |
| | | display: flex; |
| | | align-items: start; |
| | | margin-bottom: 20px; |
| | | .info_list_item_label { |
| | | font-size: 15px; |
| | | flex-shrink: 0; |
| | | } |
| | | .info_list_item_val { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 15px; |
| | | .info_list_item_val_cul { |
| | | display: flex; |
| | | flex-direction: column; |
| | | u { |
| | | font-size: 15px; |
| | | color: #2E68EC; |
| | | cursor: pointer; |
| | | margin-top: 5px; |
| | | &:first-child { |
| | | margin: 0; |
| | | } |
| | | } |
| | | } |
| | | .image { |
| | | width: 100px; |
| | | height: 100px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | overflow: hidden; |
| | | img { |
| | | width: 100%; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | class="upload-demo" |
| | | :accept="uploadData.fileType" |
| | | :action="uploadImgUrl" |
| | | :limit="1" |
| | | :limit="limit" |
| | | :before-remove="removes" |
| | | :on-exceed="handleExceed" |
| | | :on-success="handleFileSuccess" |
| | |
| | | type: String, |
| | | default: 'width: 190px; height: 190px;' |
| | | }, |
| | | uploadData: Object |
| | | uploadData: Object, |
| | | limit: { |
| | | type: Number, |
| | | default: () => 1 |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | removes() { |
| | | removes(e) { |
| | | this.uploaded=false |
| | | this.$emit('remove') |
| | | console.log(e.imgaddr) |
| | | this.$emit('remove', e.imgaddr) |
| | | }, |
| | | // ä¸ä¼ å¾ç |
| | | handleExceed(){ |
| | |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:companyuserapply:create']"> |
| | | <ul class="toolbar" v-permissions="['business:companyuserapply:create']" v-if="userInfo.type === 1"> |
| | | <li><el-button type="primary" @click="$refs.operaCompanyUserApplyWindow.open('æ°å»ºç³è¯·')" icon="el-icon-plus" v-permissions="['business:companyuserapply:create']">æ°å»º</el-button></li> |
| | | </ul> |
| | | <el-table |
| | |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaCompanyUserApplyWindow.open('ç³è¯·è®°å½è¯¦æ
', row)" icon="el-icon-view">æ¥ç</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:companyuserapply:delete']">å é¤</el-button> |
| | | <el-button type="text" @click="$refs.operaCompanyUserApplyDescWindow.open('ç³è¯·è®°å½è¯¦æ
', row.id)" icon="el-icon-view">æ¥ç</el-button> |
| | | <el-button type="text" v-if="userInfo.type === 0 && row.status === 0" @click="$refs.operaCompanyUserApplyCarefulWindow.open('éå¢ç³è¯·è®°å½å®¡æ ¸', row.id)">å®¡æ ¸</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-if="userInfo.type === 1" v-permissions="['business:companyuserapply:delete']">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaCompanyUserApplyWindow ref="operaCompanyUserApplyWindow" @success="handlePageChange"/> |
| | | <!-- æ¥ç --> |
| | | <operaCompanyUserApplyDescWindow ref="operaCompanyUserApplyDescWindow" /> |
| | | <!-- å®¡æ ¸ --> |
| | | <OperaCompanyUserApplyCarefulWindow ref="operaCompanyUserApplyCarefulWindow" @success="handlePageChange"/> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaCompanyUserApplyCarefulWindow from '@/components/business/OperaCompanyUserApplyCarefulWindow' |
| | | import OperaCompanyUserApplyWindow from '@/components/business/OperaCompanyUserApplyWindow' |
| | | import operaCompanyUserApplyDescWindow from '@/components/business/operaCompanyUserApplyDescWindow' |
| | | import { mapState } from 'vuex' |
| | | export default { |
| | | name: 'CompanyUserApply', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaCompanyUserApplyWindow }, |
| | | components: { TableLayout, Pagination, OperaCompanyUserApplyWindow, operaCompanyUserApplyDescWindow, OperaCompanyUserApplyCarefulWindow }, |
| | | computed: { |
| | | ...mapState(['userInfo']) |
| | | }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:contract:create']"> |
| | | <ul class="toolbar" v-permissions="['business:contract:create']" v-if="userInfo.type === 0"> |
| | | <li><el-button type="primary" @click="$refs.operaContractWindow.open('æ°å»ºååä¿¡æ¯è¡¨')" icon="el-icon-plus" v-permissions="['business:contract:create']">æ°å»º</el-button></li> |
| | | </ul> |
| | | <el-table |
| | |
| | | <template v-else-if="row.signType === 2">åæ·-ä¼ä¸</template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="companyName" label="对æ¹åç§°" min-width="100px"></el-table-column> |
| | | <el-table-column prop="companyName" label="对æ¹åç§°" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | {{ row.partyCompanyName }} / {{ row.companyName }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ååå¼å§æ¶é´" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | {{ row.startTime }} - {{ row.endTime }} |
| | |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaContractDescWindow.open('åå详æ
', row.id)" icon="el-icon-view">æ¥ç详æ
</el-button> |
| | | <el-button type="text" @click="sign(row)" icon="el-icon-document-checked" v-if="row.status !== 1 && row.status !== 4 && row.status !== 3">ç¾ç½²</el-button> |
| | | <template v-if="userInfo.type === 0"> |
| | | <template v-if="(row.signType === 0 && row.status === 0) || (row.signType === 1 && row.status === 0)"> |
| | | <el-button type="text" @click="sign(row)" icon="el-icon-document-checked">ç¾ç½²</el-button> |
| | | </template> |
| | | </template> |
| | | <template v-if="userInfo.type === 1"> |
| | | <template v-if="(row.signType === 1 && row.status === 1) || (row.signType === 2 && row.status === 1)"> |
| | | <el-button type="text" @click="sign(row)" icon="el-icon-document-checked">ç¾ç½²</el-button> |
| | | </template> |
| | | </template> |
| | | <template v-if="userInfo.type === 2"> |
| | | <template v-if="(row.signType === 0 && row.status === 1) || (row.signType === 2 && row.status === 0)"> |
| | | <el-button type="text" @click="sign(row)" icon="el-icon-document-checked">ç¾ç½²</el-button> |
| | | </template> |
| | | </template> |
| | | <el-button type="text" icon="el-icon-document-remove" v-if="row.status === 0" @click="cancelHT(row.id)">åæ¶</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:contract:delete']" v-if="row.status === 4">å é¤</el-button> |
| | | </template> |
| | |
| | | import OperaContractWindow from '@/components/business/OperaContractWindow' |
| | | import OperaContractDescWindow from '@/components/business/OperaContractDescWindow' |
| | | import { cancel, getSignLink } from '@/api/business/contract' |
| | | import { mapState } from 'vuex' |
| | | export default { |
| | | name: 'Contract', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaContractWindow, OperaContractDescWindow }, |
| | | computed: { |
| | | ...mapState(['userInfo']) |
| | | }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | cancel({ id }).then(res => { |
| | | cancel(id).then(res => { |
| | | this.search() |
| | | }) |
| | | }).catch(() => { |
| | |
| | | <el-form-item label="ä¿é©æ¹æ¡" prop="name"> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç¾ç½²ç¶æ" prop="signStatus"> |
| | | <el-select v-model="searchForm.signStatus" placeholder="è¯·éæ©"> |
| | | <el-option label="å¾
ç¾ç½²" :value="0"></el-option> |
| | | <el-option label="å·²ç¾ç½²" :value="1"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="åæ¹æ¡åç§°" min-width="150px"></el-table-column> |
| | | <el-table-column prop="solutionBaseName" label="ä¸»æ¹æ¡" min-width="100px"></el-table-column> |
| | | <el-table-column prop="name" label="åæ¹æ¡åç§°" min-width="150px" v-if="userInfo.type === 0"></el-table-column> |
| | | <el-table-column prop="name" label="æ¹æ¡åç§°" min-width="150px" v-if="userInfo.type === 1"></el-table-column> |
| | | <el-table-column prop="solutionBaseName" label="ä¸»æ¹æ¡" min-width="100px" v-if="userInfo.type === 0"></el-table-column> |
| | | <el-table-column label="æä¿ç±»å" min-width="120px" align="center"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.type === 0">ç´ä¿</span> |
| | |
| | | <span v-if="row.timeUnit === 5">å¹´</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="retrial" label="éè¦å¤å®¡"> |
| | | <el-table-column prop="retrial" label="éè¦å¤å®¡" v-if="userInfo.type === 0"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.retrial === 0">ä¸éè¦</span> |
| | | <span v-if="row.retrial === 1">éè¦</span> |
| | |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column prop="signDate" label="ç¾ç½²æ¶é´" min-width="100px"></el-table-column> |
| | | <el-table-column prop="signUserName" label="ç¾ç½²äºº" min-width="100px"></el-table-column> |
| | | <el-table-column label="ç¾ç½²ç¶æ" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.signStatus === 0">å¾
ç¾ç« </span> |
| | | <span v-else-if="!row.signStatus">å¾
ç¾ç« </span> |
| | | <span v-else-if="row.signStatus === 1">å·²ç¾ç« </span> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | v-if="containPermissions(['business:solutions:update', 'business:solutions:delete'])" |
| | | label="æä½" |
| | | min-width="150" |
| | | min-width="230" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.OperaSolutionsDescWindow.open('åæ¹æ¡è¯¦æ
', { id: row.id })" icon="el-icon-edit" v-permissions="['business:solutions:update']">æ¥ç详æ
</el-button> |
| | | <template v-if="userInfo.type !== 1"> |
| | | <el-button type="text" @click="$refs.operaSolutionsWindow.open('ç¼è¾åæ¹æ¡', { id: row.id })" icon="el-icon-edit" v-permissions="['business:solutions:update']">ä¿®æ¹</el-button> |
| | | </template> |
| | | <template v-if="userInfo.type === 1 && (!row.signStatus || row.signStatus === 0)"> |
| | | <el-button type="text" icon="el-icon-tickets" @click="sign(row.companySolutionId)">ç¾ç½²</el-button> |
| | | </template> |
| | | <template v-if="userInfo.type === 1 && row.signStatus === 1"> |
| | | <el-button type="text" icon="el-icon-tickets" @click="seeFleSignUrl(row.fileSignUrl)">æ¥çæ¹æ¡ç¡®è®¤ä¹¦</el-button> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | import OperaSolutionsWindow from '@/components/business/OperaSolutionsWindow' |
| | | import OperaSolutionsDescWindow from '@/components/business/OperaSolutionsDescWindow' |
| | | import { updateStatus } from '@/api/business/solutions' |
| | | import { getSignLink } from '@/api/business/company' |
| | | import { mapState } from 'vuex' |
| | | export default { |
| | | name: 'Solutions', |
| | |
| | | searchForm: { |
| | | name: '', |
| | | status: '', |
| | | type: '' |
| | | type: '', |
| | | signStatus: '' |
| | | } |
| | | } |
| | | }, |
| | |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | seeFleSignUrl(url) { |
| | | window.open(url) |
| | | }, |
| | | sign(id) { |
| | | getSignLink(id) |
| | | .then(res => { |
| | | window.open(res) |
| | | }) |
| | | }, |
| | | // ä¿®æ¹ç¶æ |
| | | changeStatus (status, row) { |
| | | updateStatus({ id: row.id, status }) |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['system:user:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline> |
| | | <el-form-item label="è´¦å·" prop="username"> |
| | | <el-input v-model="searchForm.username" v-trim placeholder="请è¾å
¥" @keypress.enter.native="search"/> |
| | | </el-form-item> |
| | | <el-form-item label="å§å" prop="realname"> |
| | | <el-input v-model="searchForm.realname" v-trim placeholder="请è¾å
¥" @keypress.enter.native="search"/> |
| | | </el-form-item> |
| | | <el-form-item label="èç³»æ¹å¼" prop="mobile"> |
| | | <el-input v-model="searchForm.mobile" v-trim placeholder="请è¾å
¥" @keypress.enter.native="search"/> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼ä¸åç§°" prop="companyName"> |
| | | <el-input v-model="searchForm.companyName" v-trim placeholder="请è¾å
¥" @keypress.enter.native="search"/> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" icon="el-icon-search" @click="search">æç´¢</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | :default-sort = "{prop: 'createTime', order: 'descending'}" |
| | | stripe |
| | | @sort-change="handleSortChange" |
| | | > |
| | | <el-table-column label="åºå·" width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="username" label="è´¦å·" min-width="120px"></el-table-column> |
| | | <el-table-column prop="realname" label="å§å" min-width="100px"></el-table-column> |
| | | <el-table-column prop="mobile" label="èç³»æ¹å¼" min-width="100px"></el-table-column> |
| | | <el-table-column prop="companyDepartmentPathName" label="å½å±å
¬å¸" min-width="100px"></el-table-column> |
| | | <el-table-column label="ææä¼ä¸" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span>{{row.authNum}}å®¶</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="roles" label="è§è²" min-width="160px" class-name="table-column-strings"> |
| | | <template slot-scope="{row}"> |
| | | <ul> |
| | | <li v-for="role in row.roles" :key="role.id">{{role.name}}</li> |
| | | </ul> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="å¯ç¨ç¶æ" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch |
| | | v-if="!row.fixed" |
| | | @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 |
| | | label="æä½" |
| | | width="100" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.authorizedEnterprise.open('ææä¼ä¸è®°å½', row.id)">ææä¼ä¸</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | ></pagination> |
| | | </template> |
| | | <authorizedEnterprise ref="authorizedEnterprise" /> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import Pagination from '@/components/common/Pagination' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import { updUserStatus } from '@/api/system/user' |
| | | import authorizedEnterprise from '@/components/business/authorizedEnterprise' |
| | | export default { |
| | | name: 'userManagement', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, authorizedEnterprise }, |
| | | data () { |
| | | return { |
| | | // æç´¢ |
| | | searchForm: { |
| | | username: '', |
| | | realname: '', |
| | | mobile: '', |
| | | companyName: '' |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'ç¨æ·', |
| | | api: '/system/user', |
| | | 'field.main': 'realname', |
| | | sorts: [{ |
| | | property: 'CREATE_TIME', |
| | | direction: 'DESC' |
| | | }] |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | changeStatus(status, row) { |
| | | updUserStatus({ |
| | | id: row.id, |
| | | status |
| | | }).then(res => { |
| | | this.search() |
| | | }).catch(err => { |
| | | row.status = row.status === 0 ? 1 : 0 |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | @import "@/assets/style/variables.scss"; |
| | | // å表头åå¤ç |
| | | .table-column-avatar { |
| | | img { |
| | | width: 48px; |
| | | } |
| | | } |
| | | </style> |