form和table组件的应用

 

<template>
  <div class="container"> 
        <div class="center-content">
              <el-form :rules="formRules" ref="form" :inline="true" :model="formInline" class="demo-form-inline">

                <el-row>
                  <el-col :span="12">
                        <el-form-item label="设备名称" prop="user">
                          <el-input v-model="formInline.user" placeholder="请输入设备名称" clearable />
                        </el-form-item>
                  </el-col>
                  <el-col :span="12">
                        <el-form-item label="所属部门" prop="region">
                          <el-select
                            v-model="formInline.region"
                            placeholder="请选择所属部门"
                            clearable
                          >
                            <el-option label="资讯科" value="资讯科" />
                            <el-option label="行政部" value="行政部" />
                          </el-select>
                        </el-form-item>
                  </el-col>
                </el-row>

                <el-row class="row-right">
                  <el-col :span="12">
                        <el-form-item label="归属人" prop="persion">
                            <el-select
                              v-model="formInline.persion"
                              placeholder="请选择归属人"
                              clearable 
                            >
                              <el-option label="吴德章" value="吴德章" />
                              <el-option label="田登响" value="田登响" />
                          </el-select>
                        </el-form-item>
                  </el-col>
                  <el-col :span="12">
                        <el-form-item label="设备状况" prop="state">
                          <el-select
                            v-model="formInline.state"
                            placeholder="请选择设备状态"
                            clearable
                          >
                            <el-option label="租用" value="租用" />
                            <el-option label="待归还" value="待归还" />
                          </el-select>
                        </el-form-item>
                  </el-col>
                </el-row>

                <el-row>
                  <el-col :span="12">
                          <el-form-item label="是否可租借">
                            <el-switch v-model="formInline.delivery" inline-prompt active-text="可以"></el-switch>
                          </el-form-item>
                  </el-col>
                  <el-col :span="12">
                    <el-form-item label="购买时间" prop="date">
                      <el-date-picker
                        v-model="formInline.date"
                        type="date"
                        placeholder="请选择购买时间"
                        clearable
                      />
                    </el-form-item>
                  </el-col>
                </el-row>

                <el-row>
                  <el-col :span="12">
                          <el-form-item label="设备情况" prop="states">
                            <el-select
                              v-model="formInline.states"
                              placeholder="请选择设备情况"
                              clearable 
                            >
                              <el-option label="可用" value="可用" />
                              <el-option label="故障" value="故障" />
                            </el-select>
                          </el-form-item>
                  </el-col>
                  <el-col :span="12">
                          <el-form-item label="设备类型" prop="type">
                            <el-select
                              v-model="formInline.type"
                              placeholder="请选择设备类型"
                              clearable
                            >
                              <el-option label="支架" value="支架" />
                              <el-option label="电脑" value="电脑" />
                            </el-select>
                          </el-form-item>
                  </el-col>
                </el-row>


                <el-row style="padding-left: 10px;">
                  <el-col :span="12">
                 <!-- 上传照片 -->
                            <el-form-item label="设备图片">

                              <el-upload
                                class="avatar-uploader"
                                action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
                                :show-file-list="false"
                                :on-success="handleAvatarSuccess"
                                :before-upload="beforeAvatarUpload"
                              >
                                <img v-if="imageUrl" :src="imageUrl" class="avatar" />
                                <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
                              </el-upload>
                            </el-form-item>
                  </el-col>
                  <el-col :span="12">
                          <el-form-item label="设备描述">
                            <el-input :autosize="{ minRows: 5, maxRows: 3 }" style="width: 220px;" placeholder="请描述设备详情" v-model="formInline.desc" type="textarea" />
                          </el-form-item>
                  </el-col>
                </el-row>

                <el-row>
                  <el-col :span="12">
                    <el-form-item label="配件来源"> 
                      <el-button style="color: white; background-color: #2FBBC2;"  text @click="showAddAccessoriesDialog">添加配件</el-button>
                      <el-button style="color: white; background-color: #2FBBC2;" >添加闲置配件</el-button> 
                    </el-form-item>
                  </el-col>
                </el-row>
             
                <el-row>
                  <el-col :span="30">
                    <el-form-item label="设备列表"> 
                      <el-table 
                      :data="tableData"
                      :header-cell-style="{
                        'text-align': 'center',
                        'font-size': '16px',
                        'background-color': '#f5f5f5 !important',
                        'border': '1px solid #EBEEF5 !important'
                      }"
                       style="width:560px;" >
                          <el-table-column prop="date" label="配件名" width="115" />
                          <el-table-column prop="name" label="配件情况" width="115" />
                          <el-table-column prop="state" label="购买时间" width="115" />
                          <el-table-column prop="city" label="配件说明" width="115" />
                          <el-table-column prop="zip" label="配件描述" width="120" />
                          <el-table-column fixed="right" label="操作" width="80">
                            <template #default>
                              <el-button link type="primary" size="small" @click="handleClick"
                                >删除</el-button>
                            </template>
                          </el-table-column>
                      </el-table>
                    </el-form-item>
                  </el-col>
                </el-row>

                 <el-row class="row-button">
                   <el-col :span="30">
                    <el-form-item>
                      <el-button @click="onReset">取消</el-button>
                      <el-button style="color: white; background-color: #2FBBC2;" @click="onSubmit">确认</el-button>
                    </el-form-item>
                  </el-col>
                 </el-row>
                



            </el-form>

            <!-- 弹框 -->
            <el-dialog
                title="添加配件"
                v-model="dialogFormVisible"
                width="20%"
              >
              <el-form :model="forms" :rules="fromsRules"  ref="formDialog">
                <el-row >
                      <el-col :span="60">
                        <el-form-item label="配件名称"  prop="name">
                            <el-input class="inputop" placeholder="请输入配件名"  v-model="forms.name" autocomplete="off" />
                        </el-form-item>

                        <el-form-item label="配件状态"  prop="region">
                            <el-select class="inputop" v-model="forms.region" placeholder="请选择配件状态">
                                  <el-option label="租用" value="租用" />
                                  <el-option label="待归还" value="待归还" />
                            </el-select>
                        </el-form-item>

                        <el-form-item label="购买时间" prop="date">
                          <el-date-picker
                          class="inputop"
                          v-model="forms.date"
                            type="date"
                            value-format="YYYY-MM-DD"
                            placeholder="请选择购买时间"
                            clearable
                          />
                        </el-form-item>

                        <el-form-item label="配件标签"  prop="them">
                            <el-select class="inputop" v-model="forms.them" placeholder="请选择配件标签">
                                  <el-option label="标签1" value="标签1" />
                                  <el-option label="标签2" value="标签2" />
                            </el-select>
                        </el-form-item>

                        <el-form-item class="texta" label="配件描述">
                            <el-input  class="inputop" placeholder="请对配件进行描述" v-model="forms.desc" type="textarea" />
                        </el-form-item>

                      </el-col>
                </el-row>

            </el-form>
              <template #footer>
                <span class="dialog-footer">
                  <el-button @click="dialogFormVisible = false">取消</el-button>
                  <el-button  style="color: white; background-color: #2FBBC2;"  @click="handleAddAccessories">
                    确认
                  </el-button>
                </span>
              </template>
              

            </el-dialog>

      </div>
  </div>
</template>

<script setup>
import { reactive, ref} from 'vue'
import { Plus } from '@element-plus/icons-vue'  


const dialogFormVisible = ref(false);  // 控制弹窗显示和隐藏
const showAddAccessoriesDialog = () => {
dialogFormVisible.value = true;
};
const forms = reactive({
name: '',
region: '',
date: '',
them: '',
desc: '',
})
const fromsRules = {
name: [{ required: true, message: '请输入配件名', trigger: 'blur' }],
region:[{required: true, message: '请选择配件状态', trigger: 'change' }],
date:[{required: true, message: '请选择购买时间', trigger: 'change'}],
them:[{required: true, message: '请选择配件标签', trigger: 'change'}],
}


// table
const tableData = ref([
{ date: '推土机', name: '租用', state: '2023-11-16', city: '标签1',zip:'1212' },

]);
const handleClick = () => {
console.log('click')
}
const handleAddAccessories = () => {
// 将 el-dialog 中的数据添加到 tableData 中
  tableData.value.push({
    date: forms.name,
    name: forms.region,
    state: forms.date,
    city: forms.them,
    zip:forms.desc,
});

// 关闭 el-dialog
dialogFormVisible.value = false;
};

const formRef = ref(null)
const formRules = {
user: [{ required: true, message: '请输入设备名称', trigger: 'blur' }],
region: [{ required: true, message: '请选择所属部门', trigger: 'change' }],
persion:[{required: true, message: '请选择归属人', trigger: 'change' }],
date:[{required: true, message: '请选择购买时间', trigger: 'change'}],
state:[{required: true, message: '请选择设备状态', trigger: 'change'}],
states:[{required: true, message: '请选择设备情况', trigger: 'change'}],
type:[{required: true, message: '请请选择设备类型', trigger: 'change'}]
}

const formInline = reactive({
user: '',
region: '',
persion:'',
date: '',
delivery:true,
states:'',
state:'',
type:'',
desc:''
})
const onSubmit = () => {
formRef.value.validate((valid) => {
  if (valid) {
    console.log('submit!')
  } else {
    console.log('error submit!')
    return false
  }
})
}

const onReset = () => {
formRef.value.resetFields()
}


</script>
<style>

.el-dialog__body{
  border-top: 1px solid #8c939d;
  border-bottom: 1px solid #8c939d;
}

.texta{

  padding-left:10px;
}
.inputop{
width: 220px;
}
.container {
display: grid;
place-items: center;
/* height: 100vh;  */

}

.center-content {
 width: 40%;
 /* height: 40%; */
/* background-color:bisque ; */
display: flex;
justify-content: center;
align-items: center;
padding-top: 20px;
}

.avatar-uploader .avatar {
width: 178px;
height: 178px;
display: block;


}
.avatar-uploader .el-upload {
/* border: 1px dashed var(--el-border-color); */
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
transition: var(--el-transition-duration-fast);
}

.avatar-uploader .el-upload:hover {
border-color: var(--el-color-primary);
}

.el-icon.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 150px;
height: 120px;
text-align: center;
}
.demo-form-inline .el-input {
--el-input-width: 220px;

}
.row-right{
text-align: right;
}
/* .el-row{
background-color: #8c939d;
}
.el-col{
background-color:saddlebrown;
} */
.row-button{
/* text-align: right; */
display: flex;
justify-content: flex-end;
align-items: center;
/* background-color: #8c939d; */
}
</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值