Skip to content

Blog Công Nghệ

MENUMENU
  • Trang chủ
  • Giới Thiệu
  • Lập Trình
    • Lập Trình Website
      • Laravel
        • Phân Tích Dự Án
      • PHP
      • SQL
      • HTML
      • CSS
      • Javascipt
      • My Project
      • Wordpress
    • Luyện Skill
    • Lập trình winform
    • CSDL
    • Lập Trình Android
    • Trí tuệ nhân tạo
    • Khai Khoáng Dữ Liệu
    • Arduino
    • Khác
    • Đồ án
  • Phần Mềm
    • Powerpoint
    • Tool
  • Cuộc sống và Giải trí
    • Hợp âm
    • web5ngay - youtube
    • Công Giáo
    • Kỹ Năng Sống
    • Street Workout
  • Danh sách bài viết
  • Guide line
    • Guild line phỏng vấn
    • Guide lines Laravel
    • Guide line Module Frontend
  • Tóm tắt sách
  • Fanpage

Blog Công Nghệ

Nơi chia sẻ kiến thức

Element UI

24 Tháng Mười Hai, 2021 by admin
Lượt xem: 30

Contents

  • 0. Element UI có những gì?
    • 0.1 Transiton
    • 0.2 Typography
    • 0.3 Cascader
    • 0.4 Upload
    • 0.5 Rate
    • 0.6 Transfer
    • 0.7 Progress
    • 0.8 Tree
    • 0.9 Pagination
    • 0.10 Skeleton
    • 0.11 Step
    • 0.12 Timeline
    • 0.13 Divider
    • 0.14 Calendar
    • 0.15 Backtop
    • 0.16 Infinite Scroll
    • 0.17 Avatar
    • 0.18 Drawer
  • 1. Change locale của một page cụ thể
  • 2. Datepicker
  • 3. CDN Element ui
  • 4. Popup
    • 4.1 Popup Confirm
    • 4.2 Alert
  • 5. Upload File
    • 5.1 Drag or clip upload file
      • 5.1.1 Xử lý khi change file
      • 5.1.2 Xử lý remove
      • 5.1.3 Function validate type file
      • 5.1.4 File list dạng:
      • 5.1.5 Xử lý backend khi send file:
        • 5.1.5.1 Ví dụ về xử lý upload file
      • 5.1.6 Lưu ý

0. Element UI có những gì?

0.1 Transiton

Transition khá ít, chỉ gồm 3 hiệu ứng

0.2 Typography

Chữ to như viết báo.

0.3 Cascader

Select dạng menu.

0.4 Upload

Upload element-ui custom lại.

0.5 Rate

Đánh giá dạng sao.

0.6 Transfer

Chuyển qua lại giữa hai khung dữ liêu.

0.7 Progress

Thanh tiến trình.

0.8 Tree

Cây thư mục.

0.9 Pagination

Phân trang dữ liệu

0.10 Skeleton

Dạng dữ liệu đang load.

0.11 Step

Thanh tiến trình dạng step by step.

0.12 Timeline

Dòng thời gian.

0.13 Divider

Thanh ngang phân cách nội dung.

0.14 Calendar

Lịch.

0.15 Backtop

Di chuyển lên trên.

0.16 Infinite Scroll

Scroll xuống tự động load thêm nội dung.

0.17 Avatar

Avatar.

0.18 Drawer

Dạng popup nhưng một phần bên phải. Kiểu notify của windows 10.

1. Change locale của một page cụ thể

Add vào html

<script src="//unpkg.com/element-ui"></script>
<script src="//unpkg.com/element-ui/lib/umd/locale/en.js"></script>
<script>
  ELEMENT.locale(ELEMENT.lang.en)
</script>

2. Datepicker

let param = {
    v_model: 'datePicker',
    placeholder: 'Please select datepicker'
};

let data = `
<el-date-picker
    v-model="MODEL"
    type="date"
    placeholder="PLACEHOLDER">
</el-date-picker>

data() {
    return {
        MODEL: '',
    };
}
`;

data = data.replaceAll('MODEL', param.v_model);
data = data.replaceAll('PLACEHOLDER', param.placeholder);


console.log(data);

3. CDN Element ui

// import sau file vuejs
<script src="https://cdnjs.cloudflare.com/ajax/libs/element-ui/2.3.4/index.js"></script>

4. Popup

4.1 Popup Confirm

let param = {
    textMessage: 'Số lượng CV vượt quá giới hạn không thể tạo thêm mới!',
    title: 'Thông báo',
    textButtonOK: 'OK',
    textButtonCancel: 'Cancel',
    typeAlert: 'warning' //success, error, info and warning
}

let data = `
this.$confirm('TEXT_MESSAGE', 'TITLE', {
    confirmButtonText: 'TEXT_BUTTON_OK',
    cancelButtonText: 'TEXT_BUTTON_CANCEL',
    type: 'TYPE_ALERT'
}).then(() => {
    
}).catch(() => {

});
`;

data = data.replaceAll('TEXT_MESSAGE', param.textMessage);
data = data.replaceAll('TITLE', param.title);
data = data.replaceAll('TEXT_BUTTON_OK', param.textButtonOK);
data = data.replaceAll('TEXT_BUTTON_CANCEL', param.textButtonCancel);
data = data.replaceAll('TYPE_ALERT', param.typeAlert);

console.log(data);

4.2 Alert

let param = {
    textMessage: 'Số lượng CV vượt quá giới hạn không thể tạo thêm mới!',
    title: 'Thông báo',
    textButtonOK: 'OK',
}

let data = `
this.$alert('TEXT_MESSAGE', 'TITLE', {
    confirmButtonText: 'TEXT_BUTTON_OK',
    callback: action => {

    }
});
`;

data = data.replaceAll('TEXT_MESSAGE', param.textMessage);
data = data.replaceAll('TITLE', param.title);
data = data.replaceAll('TEXT_BUTTON_OK', param.textButtonOK);

console.log(data);

5. Upload File

Demo: https://element.eleme.io/#/en-US/component/upload#upload

5.1 Drag or clip upload file

 <el-upload
   class="upload-demo"
   drag
   action="#"
   accept="application/pdf"  // sử dụng tương tự như accept của thẻ input html  accept="image/*,.pdf,.doc,.docx,.xls,.xlsx,.zip"
   :on-remove="handleRemoveCV"
   :file-list="fileList.cv"
   :on-change="handleChangeUploadCV"
>
     <i class="el-icon-upload"></i>
     <div class="el-upload__text">Drop file here or <em>click to upload</em></div>
</el-upload>

5.1.1 Xử lý khi change file

handleChangeUploadCV(file, fileList) {
  // trả về file, chứa thông tin name, size, ... của file
},

5.1.2 Xử lý remove

handleRemoveCV(file, fileList) {
   // trả về file, chứa thông tin name, size, ... của file
},

// tham khảo thêm, check uid file
handleRemoveOther(file, fileList) {
  let indexFile = -1;
  this.fileList.other.forEach( (item, index) => {
    if (file.name == item.name && file.uid == item.uid) {
      indexFile = index;
    }
  });
  this.fileList.other.splice(indexFile, 1);
},

5.1.3 Function validate type file

validateTypeFile(arrayType, fileName) {

  if (fileName.length > 4) {
    fileName = fileName.split('.');
    let extension = fileName[fileName.length - 1];

    let blnValid = false;
    for (let j = 0; j < arrayType.length; j++) {
      let sCurExtension = arrayType[j];
      if (extension == sCurExtension) {
        blnValid = true;
        break;
      }
    }

    return blnValid;
  }
  return false;
}

// sử dụng
let arrayType = ['jpg', 'jpeg', 'png', 'pdf', 'doc', 'docx', 'xls', 'xlsx', 'zip'];
this.validateTypeFile(arrayType, file.name)

5.1.4 File list dạng:

data() {
      return {
        fileList: [{
          name: 'food.jpeg',
          url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'
        }, {
          name: 'food2.jpeg',
          url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'
        }]
      };
    },

5.1.5 Xử lý backend khi send file:

Khi send file hãy truyển qua backend thuộc tính raw trong file (lấy dữ liệu lúc change file)

file: {
  name: '',
  size: ...,
  uid: ...,
  raw: ....  // => thuộc tính này như thẻ input file của html
}

Như vậy khi gửi qua backend sẽ xử lý như xử lý file thông thường.

5.1.5.1 Ví dụ về xử lý upload file
let formData = new FormData();
formData.append('filecv', this.fileList.cv[0].file.raw);
this.$axios.post('/api', formData, { 'Content-Type' : 'multipart/form-data' })
  .then(res => {
   	// code
  })
  .catch((err) => {
    // code
  })
    
    
 // === backend ===
 if ($request->hasFile('filecv')) {
   		$file = $request->file('filecv');
   		$nameUser = "xxxxxx";
        // set path
        $dayCurrent = Carbon::now()->day; //
        $monthCurrent = Carbon::now()->month; //
        $yearCurrent = Carbon::now()->year; //
        $pathSaveFileInServer = "/uploads/files/member-cv/$yearCurrent/$monthCurrent/$dayCurrent/";
        
        // check path if not exist => create
        if (!\File::exists(public_path($pathSaveFileInServer))) {
            \File::makeDirectory(public_path($pathSaveFileInServer), $mode = 0777, true, true);
        }

        // save file
        $fileName = strSlugUpperCase($nameUser) . '-' . strtotime(date("Y-m-d H:i:s")) . '-' . $file->getClientOriginalName();
        $file->move(public_path($pathSaveFileInServer), $fileName);
        
 }

5.1.6 Lưu ý

  1. Gửi qua backend phải gửi thuộc tính raw của object file
  2. Gửi qua backend phải bao gồm { ‘Content-Type’ : ‘multipart/form-data’ } là tham số thứ ba của axios
  3. accept trong element el-upload sử dụng tương tự như accept của thẻ input html

Related posts:

  1. Owl Carousel
  2. Kinh nghiệm VueJS

Post navigation

Previous Post:

Những bài học hay từ các anh chị TVU

Next Post:

My module – cắm vào là xài

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Ẩn sidebar

Tìm kiếm

Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages

Blog Công Nghệ

Bài viết mới

  • Master typescript
  • Sendmail trong Laravel sử dụng dịch vụ SES, SQS của Amazon
  • Install SSL in Nginx Ubuntu
  • Docker study
  • Bảo vệ: Hướng dẫn code bot Telegram easy game

Lượng truy cập

0074479
Visit Today : 75
Visit Yesterday : 178
This Month : 750
Who's Online : 5
© 2025 Blog Công Nghệ | WordPress Theme by Superbthemes