| | |
| | | <a-row :gutter="24"> |
| | | |
| | | <a-col :md="6" :sm="8"> |
| | | <a-form-item label="职务编码"> |
| | | <a-input placeholder="请输入职务编码" v-model="queryParam.code"></a-input> |
| | | <a-form-item label="岗位编码"> |
| | | <j-input placeholder="请输入岗位编码" v-model="queryParam.code"></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="6" :sm="8"> |
| | | <a-form-item label="职务名称"> |
| | | <a-input placeholder="请输入职务名称" v-model="queryParam.name"></a-input> |
| | | <a-form-item label="岗位名称"> |
| | | <j-input placeholder="请输入岗位名称" v-model="queryParam.name"></j-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | <template v-if="toggleSearchStatus"> |
| | | <a-col :md="6" :sm="8"> |
| | | <a-form-item label="职级"> |
| | | <j-dict-select-tag v-model="queryParam.postRank" placeholder="请选择职级" dictCode="position_rank"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | |
| | | </template> |
| | | <a-col :md="6" :sm="8"> |
| | | <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> |
| | | <a-button type="primary" @click="searchQuery" icon="search">查询</a-button> |
| | | <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
| | | <a @click="handleToggleSearch" style="margin-left: 8px"> |
| | | {{ toggleSearchStatus ? '收起' : '展开' }} |
| | | <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> |
| | | </a> |
| | | <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button> |
| | | </span> |
| | | </a-col> |
| | | |
| | |
| | | <!-- 操作按钮区域 --> |
| | | <div class="table-operator"> |
| | | <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> |
| | | <a-button type="primary" icon="download" @click="handleExportXls('职务表')">导出</a-button> |
| | | <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> |
| | | <a-button type="primary" icon="import">导入</a-button> |
| | | </a-upload> |
| | | <!-- <a-button type="primary" icon="download" @click="handleExportXls('职务表')">导出</a-button>--> |
| | | <!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">--> |
| | | <!-- <a-button type="primary" icon="import">导入</a-button>--> |
| | | <!-- </a-upload>--> |
| | | <a-dropdown v-if="selectedRowKeys.length > 0"> |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item key="1" @click="batchDel"> |
| | |
| | | } |
| | | }, |
| | | { |
| | | title: '职务编码', |
| | | title: '岗位编码', |
| | | align: 'center', |
| | | dataIndex: 'code' |
| | | }, |
| | | { |
| | | title: '职务名称', |
| | | title: '岗位名称', |
| | | align: 'center', |
| | | dataIndex: 'name' |
| | | }, |
| | | { |
| | | title: '职级', |
| | | align: 'center', |
| | | dataIndex: 'postRank_dictText' |
| | | }, |
| | | // { |
| | | // title: '职级', |
| | | // align: 'center', |
| | | // dataIndex: 'postRank_dictText' |
| | | // }, |
| | | // { |
| | | // title: '公司id', |
| | | // align: 'center', |
| | |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | prop="code" |
| | | required |
| | | label="职务编码"> |
| | | <a-input placeholder="请输入职务编码" v-model="model.code" :read-only="readOnly"/> |
| | | label="岗位编码"> |
| | | <a-input placeholder="岗位编码自动生成" v-model="model.code" disabled /> |
| | | </a-form-model-item> |
| | | <a-form-model-item |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | prop="name" |
| | | required |
| | | label="职务名称"> |
| | | <a-input placeholder="请输入职务名称" v-model="model.name"/> |
| | | label="岗位名称"> |
| | | <a-input placeholder="请输入岗位名称" v-model="model.name" /> |
| | | </a-form-model-item> |
| | | <a-form-model-item |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | prop="postRank" |
| | | required |
| | | label="职级" |
| | | > |
| | | <j-dict-select-tag |
| | | placeholder="请选择职级" |
| | | dictCode="position_rank" |
| | | v-model="model.postRank" |
| | | /> |
| | | </a-form-model-item> |
| | | |
| | | </a-form-model> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import pick from 'lodash.pick' |
| | | import { httpAction } from '@/api/manage' |
| | | import { duplicateCheck } from '@/api/api' |
| | | import JDictSelectTag from '@/components/dict/JDictSelectTag' |
| | | import { httpAction } from '@/api/manage' |
| | | |
| | | let validatorCodeTimer = null |
| | | |
| | | export default { |
| | | name: 'SysPositionModal', |
| | | components: { JDictSelectTag }, |
| | | data() { |
| | | return { |
| | | title: '操作', |
| | | visible: false, |
| | | model: {}, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 }, |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 16 }, |
| | | }, |
| | | confirmLoading: false, |
| | | validatorRules: { |
| | | code: [ |
| | | { required: true, message: '请输入职务编码' }, |
| | | { |
| | | validator: (rule, value, callback) => { |
| | | // 函数消抖的简单实现,防止一段时间内发送多次请求 |
| | | if (validatorCodeTimer) { |
| | | // 停止上次开启的定时器 |
| | | clearTimeout(validatorCodeTimer) |
| | | } |
| | | validatorCodeTimer = setTimeout(() => { |
| | | duplicateCheck({ |
| | | tableName: 'sys_position', |
| | | fieldName: 'code', |
| | | fieldVal: value, |
| | | dataId: this.model.id |
| | | }).then((res) => { |
| | | if (res.success) { |
| | | callback() |
| | | } else { |
| | | callback(res.message) |
| | | } |
| | | }).catch(console.error) |
| | | }, 300) |
| | | } |
| | | } |
| | | ], |
| | | name: [{ required: true, message: '请输入职务名称' }] , |
| | | postRank: [{ required: true, message: '请选择职级' }] , |
| | | }, |
| | | url: { |
| | | add: '/sys/position/add', |
| | | edit: '/sys/position/edit', |
| | | }, |
| | | readOnly:false |
| | | export default { |
| | | name: 'SysPositionModal', |
| | | data() { |
| | | return { |
| | | title: '操作', |
| | | visible: false, |
| | | model: {}, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 16 } |
| | | }, |
| | | confirmLoading: false, |
| | | validatorRules: { |
| | | name: [{ required: true, message: '请输入岗位名称' }] |
| | | }, |
| | | url: { |
| | | add: '/sys/position/add', |
| | | edit: '/sys/position/edit' |
| | | }, |
| | | readOnly: false |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | methods: { |
| | | add() { |
| | | this.edit({}) |
| | | }, |
| | | edit(record) { |
| | | this.model = Object.assign({}, record) |
| | | this.visible = true |
| | | if (record.id) { |
| | | this.readOnly = true |
| | | } else { |
| | | this.readOnly = false |
| | | } |
| | | }, |
| | | created() { |
| | | close() { |
| | | this.$emit('close') |
| | | this.visible = false |
| | | this.$refs.form.resetFields() |
| | | }, |
| | | methods: { |
| | | add() { |
| | | this.edit({}) |
| | | }, |
| | | edit(record) { |
| | | this.model = Object.assign({}, record) |
| | | this.visible = true |
| | | if(record.id){ |
| | | this.readOnly=true |
| | | }else{ |
| | | this.readOnly=false |
| | | } |
| | | }, |
| | | close() { |
| | | this.$emit('close') |
| | | this.visible = false |
| | | this.$refs.form.resetFields(); |
| | | }, |
| | | handleOk() { |
| | | const that = this |
| | | // 触发表单验证 |
| | | this.$refs.form.validate(valid => { |
| | | if (valid) { |
| | | that.confirmLoading = true |
| | | let httpurl = '' |
| | | let method = '' |
| | | if (!this.model.id) { |
| | | httpurl += this.url.add |
| | | method = 'post' |
| | | } else { |
| | | httpurl += this.url.edit |
| | | method = 'put' |
| | | } |
| | | |
| | | httpAction(httpurl, this.model, method).then((res) => { |
| | | if (res.success) { |
| | | that.$message.success(res.message) |
| | | that.$emit('ok') |
| | | } else { |
| | | that.$message.warning(res.message) |
| | | } |
| | | }).finally(() => { |
| | | that.confirmLoading = false |
| | | that.close() |
| | | }) |
| | | }else{ |
| | | return false; |
| | | handleOk() { |
| | | const that = this |
| | | // 触发表单验证 |
| | | this.$refs.form.validate(valid => { |
| | | if (valid) { |
| | | that.confirmLoading = true |
| | | let httpurl = '' |
| | | let method = '' |
| | | if (!this.model.id) { |
| | | httpurl += this.url.add |
| | | method = 'post' |
| | | } else { |
| | | httpurl += this.url.edit |
| | | method = 'put' |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel() { |
| | | this.close() |
| | | }, |
| | | |
| | | |
| | | httpAction(httpurl, this.model, method).then((res) => { |
| | | if (res.success) { |
| | | that.$message.success(res.message) |
| | | that.$emit('ok') |
| | | } else { |
| | | that.$message.warning(res.message) |
| | | } |
| | | }).finally(() => { |
| | | that.confirmLoading = false |
| | | that.close() |
| | | }) |
| | | } else { |
| | | return false |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel() { |
| | | this.close() |
| | | } |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |