| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:contract:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="åååç§°" prop="name"> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥åååç§°" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ååç±»å" prop="signType"> |
| | | <el-select v-model="searchForm.signType" placeholder="è¯·éæ©" @change="search"> |
| | | <el-option label="å¹³å°-åæ·" :value="0"></el-option> |
| | | <el-option label="å¹³å°-ä¼ä¸" :value="1"></el-option> |
| | | <el-option label="åæ·-ä¼ä¸" :value="2"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶æ" prop="queryStatus"> |
| | | <el-select v-model="searchForm.queryStatus" placeholder="è¯·éæ©" @change="search"> |
| | | <el-option label="å¾
å¹³å°ç¾ç½²" :value="0"></el-option> |
| | | <el-option label="å¾
åæ·ç¾ç½²" :value="1"></el-option> |
| | | <el-option label="å¾
ä¼ä¸ç¾ç½²" :value="2"></el-option> |
| | | <el-option label="已宿" :value="3"></el-option> |
| | | <el-option label="已忶" :value="4"></el-option> |
| | | <el-option label="å·²å
³é" :value="5"></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:contract:create']" v-if="[0,2].includes(userInfo.type)"> |
| | | <li><el-button type="primary" @click="$refs.operaContractWindow.open('æ°å»ºååä¿¡æ¯è¡¨', null, userInfo.type)" icon="el-icon-plus" v-permissions="['business:contract:create']">æ°å»º</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | > |
| | | <el-table-column label="åºå·" width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.$index + 1}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="åååç§°" min-width="100px"></el-table-column> |
| | | <el-table-column label="ååç±»å" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="row.signType === 0">å¹³å°-åæ·</template> |
| | | <template v-else-if="row.signType === 1">å¹³å°-ä¼ä¸</template> |
| | | <template v-else-if="row.signType === 2">åæ·-ä¼ä¸</template> |
| | | </template> |
| | | </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> |
| | | </el-table-column> |
| | | <el-table-column label="ç¶æ" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="row.queryStatus === 0">å¾
å¹³å°ç¾ç½²</template> |
| | | <template v-else-if="row.queryStatus === 1">å¾
åæ·ç¾ç½²</template> |
| | | <template v-else-if="row.queryStatus === 2">å¾
ä¼ä¸ç¾ç½²</template> |
| | | <template v-else-if="row.queryStatus === 3">已宿</template> |
| | | <template v-else-if="row.queryStatus === 4">已忶</template> |
| | | <template v-else-if="row.queryStatus === 5">å·²å
³é</template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æä½" |
| | | min-width="150" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaContractDescWindow.open('åå详æ
', row.id)" icon="el-icon-view">æ¥ç详æ
</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> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaContractWindow ref="operaContractWindow" @success="handlePageChange"/> |
| | | <!-- 详æ
--> |
| | | <OperaContractDescWindow ref="operaContractDescWindow" /> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseTable from '@/components/base/BaseTable' |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | 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 { |
| | | // æç´¢ |
| | | searchForm: { |
| | | name: '', |
| | | signType: '', |
| | | queryStatus: '' |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: 'ååä¿¡æ¯è¡¨', |
| | | api: '/business/contract', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | // ç¾ç½² |
| | | sign(row) { |
| | | getSignLink(row.id) |
| | | .then(res => { |
| | | window.open(res) |
| | | }) |
| | | }, |
| | | // åæ¶åå |
| | | cancelHT(id) { |
| | | this.$confirm('ç¡®è®¤åæ¶å½åååå?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | cancel(id).then(res => { |
| | | this.search() |
| | | }) |
| | | }).catch(() => { |
| | | |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | </script> |