123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- <template>
- <div>
- <el-card>
- <div slot="header" class="clearfix">
- <span style="font-weight:bold">评估关系</span>
- <div style="float: right; padding: 3px 0" type="text">
- <el-button size="mini" plain @click="btnBack">返回</el-button>
- <el-button size="mini" plain @click="btnPreviou">上一个</el-button>
- <el-button size="mini" plain @click="btnNext">下一个</el-button>
- </div>
- </div>
- <div v-loading="loading">
- <el-descriptions :column="6 ">
- <el-descriptions-item label="员工编号">{{form.staff}}</el-descriptions-item>
- <el-descriptions-item label="员工姓名">{{form.staffName}}</el-descriptions-item>
- </el-descriptions>
- <el-table size="mini" :data="form.psnrelationItem" v-if="pageState == 'see'">
- <el-table-column width="50" label="序号" align="center" type="index" />
- <el-table-column width="300" label="评估人编码" align="center" prop="staff" />
- <el-table-column width="300" label="评估人名称" align="center" prop="staffName" />
- </el-table>
- <div style="float:right" v-if="pageState != 'see'">
- <el-button type="primary" size="mini" @click="btnAddRow">新增</el-button>
- </div>
- <el-table size="mini" :data="form.psnrelationItem" v-if="pageState != 'see'">
- <el-table-column width="50" label="序号" align="center" type="index" />
- <el-table-column width="300" label="评估人编码" align="center" prop="staff" />
- <el-table-column width="300" label="评估人名称" align="center">
- <template slot-scope="scope">
- <el-popover-select-v2 size="mini" v-model="form.psnrelationItem[scope.$index].staffName" title="员工" valueKey="name"
- referName="CONTACTS_PARAM" :dataMapping="{staff:'code',staffName: 'name'}"
- :source.sync="form.psnrelationItem[scope.$index]">
- </el-popover-select-v2>
- </template>
- </el-table-column>
- <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
- <template slot-scope="scope">
- <el-button size="mini" type="text" @click="btnMoveUp(scope.row, scope.$index)">上移</el-button>
- <el-button size="mini" type="text" @click="btnMoveDown(scope.row, scope.$index)">下移</el-button>
- <el-button size="mini" type="text" @click="btnDelete(scope.$index, scope.row)">删行</el-button>
- </template>
- </el-table-column>
- </el-table>
- </div>
- <div class="footer">
- <el-button type="primary" size="mini" @click="btnEdit" v-if="pageState == 'see'">修改</el-button>
- <el-button size="mini" plain @click="btnCancel" v-if="pageState != 'see'">取消</el-button>
- <el-button type="primary" size="mini" @click="btnSave" v-if="pageState != 'see'">保存</el-button>
- </div>
- </el-card>
- </div>
- </template>
- <script>
- import { getPsnrelation,savePsnrelation} from "@/api/business/ehr/pm/psnrelation";
- import ElPopoverSelectV2 from "@/components/popover-select-v2"
- export default {
- name: 'detail',
- dicts: ['ehr_pm_aspect','ehr_pm_role'],
- props: ['enterState','rowId',"ids"],
- components: { ElPopoverSelectV2},
- model: {
- prop: 'isList',
- event: 'jugislist'
- },
- data() {
- return {
- //id
- id:null,
- //表单
- form:{},
- //删除的子表数据
- delItems:[],
- //表单校验规则
- formRules:{
- },
- //遮罩
- loading: false,
- //页面状态
- pageState: null,
- }
- },
- async created() {
- this.pageState = this.enterState;
- this.id = this.rowId;
- this.fetchPsnrelation(this.id);
- if(this.enterState == 'add'){
- }
- if(this.enterState == 'edit' || this.enterState == 'see') {
- }
- },
- watch: {
- },
- methods: {
- //返回
- btnBack(){
- this.$emit('jugislist', true)
- this.$emit('refresh')
- },
- //查询详情
- async fetchPsnrelation(id){
- this.loading = true;
- await getPsnrelation(id).then(res => {
- if (res.code === 200) {
- this.form = res.data;
- this.id = res.data.id;
- }
- this.loading = false;
- })
- },
- //新增
- btnAddRow(){
- this.form.psnrelationItem.push({psnrelationId: this.id,delFlag: 0});
- },
- //上移
- btnMoveUp(row, index){
- if (index > 0) {
- let upData = this.form.psnrelationItem[index - 1];
- this.form.psnrelationItem.splice(index - 1, 1);
- this.form.psnrelationItem.splice(index, 0, upData);
- } else {
- this.$message({
- message: '已经是第一条,上移失败',
- type: 'warning'
- });
- }
- },
- //下移
- btnMoveDown(row, index){
- if ((index + 1) == this.form.psnrelationItem.length) {
- this.$message({
- message: '已经是最后一条,下移失败',
- type: 'warning'
- });
- } else {
- let downData = this.form.psnrelationItem[index + 1];
- this.form.psnrelationItem.splice(index + 1, 1);
- this.form.psnrelationItem.splice(index, 0, downData);
- }
- },
- //删除
- btnDelete(index){
- console.log('index',index);
- this.form.psnrelationItem[index].delFlag = '2';
- console.log('this.form.psnrelationItem',this.form.psnrelationItem);
- if(this.form.psnrelationItem[index].id){
- this.delItems.push(this.form.psnrelationItem[index]);
- }
- console.log('this.delItems',this.delItems);
- this.form.psnrelationItem.splice(index, 1);
- },
- //修改
- btnEdit(){
- this.pageState = "edit";
- },
- //取消
- btnCancel(){
- if(this.enterState == 'add'){
- this.btnBack();
- }else{
- this.fetchPsnrelation(this.id);
- this.pageState = "see";
- }
- },
- //保存
- btnSave(){
- this.form.psnrelationItem.push(...this.delItems);
- this.form.psnrelationItem = this.form.psnrelationItem.filter(e => e.staff);
- savePsnrelation(this.form).then(response => {
- this.$modal.msgSuccess("保存成功");
- this.fetchPsnrelation(this.id);
- this.pageState = "see";
- });
- },
- //上一个
- btnPreviou(){
- let i = this.ids.indexOf(this.id) - 1;
- if(i > -1){
- let id = this.ids[i];
- this.fetchPsnrelation(id);
- }else{
- this.$modal.msgSuccess("已经是当前页第一条了!");
- }
- },
- //下一个
- btnNext(){
- let i = this.ids.indexOf(this.id) + 1;
- if(i < this.ids.length){
- let id = this.ids[i];
- this.fetchPsnrelation(id);
- }else{
- this.$modal.msgSuccess("已经是当前页最后一条了!");
- }
- },
- }
- }
- </script>
- <style lang="scss" scoped>
- .footer {
- z-index: 500;
- position: fixed;
- bottom: 10px;
- right: 10px;
- width: 100%;
- line-height: var(--footer-height);
- text-align: right;
- }
- .hang ::v-deep .el-form-item__content {
- margin-left: 0px !important;
- }
- </style>
|