Полмесяца после школы. Бизнес компании также менее понятен, и в этот период не так много задач, организация работы не очень идеальна.
Прежде всего, я хотел бы поблагодарить своего руководителя группы за помощь в решении многих проблем. Это также руководитель группы, который привел меня в этот день, еще раз спасибо.
Компания делает приложения для iPad, когда я начинал, проект был уже наполовину разработан, и технология использовала vue+element UI.
Как уже было сказано ранее, эффекты реализованы, и эти функции оттачивались почти полмесяца.Я никогда раньше не касался UI элементов, думал, что это вопрос копирования и вставки, но это не так, и их еще много детали, которые необходимо сделать. Испытайте это на себе.
В проекте встречаются следующие проблемы. Вот резюме, я считаю, что это резюме будет полезно.
вопрос:
При использовании всплывающего окна dailog элемента пользовательского интерфейса всплывающее окно не находится в приложении, смонтированном vue, и пользовательский стиль не может переопределить стиль по умолчанию.
решить:
Пользовательский стиль прописывается в глобале и оборачивается родительским элементом, стиль вступает в силу.
вопрос:
Обратитесь к всплывающему диалоговому окну в пользовательском интерфейсе элемента, Dom внутри будет загружен, когда появится всплывающее окно, js уже начал выполняться до Dom и не может получать и управлять элементами Dom.
решить:
-
Не используйте UI элемента для перехода к диалоговому окну, рукописным html элементам и исправлению структуры Dom, чтобы сначала загружался Dom, а затем выполнялся элемент операции js.
-
Во всплывающем окне журнала раскопок пользовательского интерфейса элемента используется обратный вызов open.После динамического создания Dom выполняется метод в open.Метод в open выполняется немедленно.
-
Вместо того, чтобы писать js в родительском компоненте, вы можете отделить его как дочерний компонент, Нажмите на всплывающее окно, чтобы напрямую загрузить дочерний компонент, и проблем с выполнением не будет.
вопрос:
элемент ui добавляет валидацию в форму и добавляет ее в тег el-col
решить:
- Сначала добавьте :model, :rules ко всей большой форме, которая требует проверки формы.
- Затем добавьте пакет тега el-form-item в поле ввода, которое необходимо проверить, и добавьте реквизит
- Затем добавьте правила rules в данные vue, а правила — это определенные реквизиты.
- Затем напишите логику в методах (при нажатии кнопки «Отправить», вызовите выполнение метода) this.$refs['inHosForm'].validate((valid) будет судить, заполнена ли форма в соответствии с реквизитом
1. <el-form ref="inHosForm" label-width="80px" label-position="left" class="form" :model="inHosData" :rules="rules">
// :model 是定义v-model表单可输入的字段,:rules 是验证规则
2. <el-col :span="12" class="collabel">
<el-form-item label="可靠程度" prop="reliable">
<el-input size="mini" class="inputWidth1" placeholder="请填写" v-if="!previewMode" v-model="inHosData.reliable"></el-input>
</el-form-item>
<span v-if="previewMode">{{inHosData.reliable}}</span>
</el-col>
3. data () {
return {
rules: {
reliable: [
{ required: true, message: '请输入可靠程度', trigger: 'blur' }
// required为小红星标,意思是必填项
//message为表单未填时出来的提示红字
//trigger是element ui 里 的方法,输入框时用 blur ,isSlect多选框时用到change
],
methods:{
4. saveMedical () {
// $refs['这里的一定是:model中定义的']
this.$refs['inHosForm'].validate((valid) => {
if (valid) {} // valid 表单未填写为false,填写为true
}
}
}
вопрос:
Для всплывающего диалогового окна в пользовательском интерфейсе элемента, когда содержимого слишком много, требуется полоса прокрутки. В глобальном масштабе добавьте overflow: hidden в настройку .el-dialog__body. Полоса прокрутки не будет отображаться, а скрытый контент не может отображаться.
решить:
Всплывающее диалоговое окно в пользовательском интерфейсе элемента, когда содержимого слишком много, глобально установите для overflow:auto значение .el-dialog__body;
вопрос:
Некоторые стили по умолчанию в пользовательском интерфейсе элементов не очень хороши. Вам нужно определить некоторые стили самостоятельно. Самостоятельное определение стилей не может охватывать исходные стили.
решить:
Определяйте стили в тегах, пишите встроенные стили
<el-col :span=24 style="margin:20px"></el-col>
вопрос:
el-botton в элементе ui, когда он отключен, установите атрибут disabled, он не работает при установке
<el-button :disabled="false">默认按钮</el-button>
решить:
disabled принимает логические значения, не ставьте кавычки после =
<el-button :disabled=false>默认按钮</el-button>
другие проблемы:
вопрос:
Положение рисования холста неточное, отклоняющееся от нормального положения, base64 не может быть преобразовано в изображение img в обычном режиме, это указывает на текущий экземпляр холста, а не на экземпляр vue, вам нужно изменить эту точку и убедиться, что она указывает на экземпляр холста перед
решить:
Извлеките холст и инкапсулируйте его как компонент, вводите вызовы компонентов и не подвергайтесь воздействию
вопрос:
Обнаружено, что функция проверки формы выполнена не на 100%, и она неисправна.После заполнения формы на текущей странице ее невозможно провести.Обнаружено, что это указывает на экземпляр vue и должно указывать на экземпляр swiper. В настоящее время соответствующий экземпляр swiper не подключен.
Вам нужно изменить эту точку и убедиться, что предыдущая точка указывает на экземпляр vue.
решить:
Прочтите документацию по API swiper.
Проблема: base64 конвертируется в образ, это не может указывать на проблему с img
решить:
Преобразуйте base64 в изображение, это указывает на конструктор и не может указывать на экземпляр vue, преобразуйте это, определите переменную let that = this, преобразуйте это и завершите функцию онлайн-подписи.
Суммировать:
1. Всплывающее диалоговое окно элемента пользовательского интерфейса не должно быть написано в метке, а должно быть написано в корневом элементе, а не в оболочке, можно сослаться на следующую структуру
</el-col>
</el-row>
<el-dialog
title="签名"
:visible.sync="centerDialogVisible"
width="85%"
center>
<sign @draw_save="getSignImg"></sign>
</el-dialog>
</div>
2. Если вы хотите щелкнуть элемент, чтобы появилось диалоговое окно, добавьте событие щелчка (), предоставленное элементом, к элементу, а затем определение в диалоговом окне (:visible.sync) также должно быть согласованным.
3. Перед введением компонента код js пишется в родительском компоненте, потому что при появлении всплывающего диалогового окна будет загружен dom во всплывающем окне, и js будет выполняться немедленно. не идеально использовать предоставляемый им открытый метод. Код js всегда выполняется на один шаг раньше, чем dom. Я также поместил его в таймер, чтобы js выполнялся медленно, а затем очистка таймера снова становится проблемой, поэтому я дал разработал этот метод записи и представил его как компонент.
4. Если элемент привязан к событию щелчка, предоставленному элементом, и вы хотите связать другое событие щелчка, напишите предоставленный метод в своем собственном методе.
<div class="canva" @click="isShow">
methods:{
isShow(){
this.centerDialogVisible = true
//...
}
}
5. Передайте параметры в фоновый режим, используйте значение, чтобы принять значение, которое будет передано
6. Данные, возвращаемые res.data в фоновом режиме, могут быть обработаны циклом forEach, а данные могут быть настроены и обработаны в соответствии с полями.
API.diseaseByTod(params).then((res) => {
this.isSerthe = []
res.data.forEach(item => {
this.isSerthe.push({
chapter: item.fields.icd_code,
chapter_icd: item.fields.icd_code,
illness_name: item.fields.illness,
level: 4
})
})
console.log(res.data)
})
Когда массиву необходимо хранить данные нескольких интерфейсов, а данные в массиве необходимо использовать в четырех местах, вы можете сначала просмотреть данные в цикле, а затем передать объект в соответствии с полем, настроить данные в объекте, а затем зациклить следующее нажатие данных интерфейса. Прежде чем очистить исходный массив и определить пустой массив для хранения данных интерфейса.
Параметры, передаваемые в фон, каждый раз являются значением isSlect.chapter.
<li v-for="(isSlect,index) in isSerthe" :key="index" class="lilists" @click="diseaseByCod(isSlect.chapter,isSlect.level)">
<span class="fontSize">{{isSlect.chapter_icd}}</span><span class="fontSizes">{{isSlect.illness_name}}<span class="el-icon-arrow-right" v-if="isShow"></span>
<input type="checkbox" v-if="isShaow" name="1" value="isSlect" class="radio"/>
</span>
</li>
Цикл li отображает данные четырех интерфейсов, реализует переключение уровней и сокращает объем кода.
diseaseCoding () {
API.diseaseCoding().then((res) => {
this.isShaow = false
this.isShow = true
this.isSerthe = []
res.data.forEach(item => {
this.isSerthe.push({
chapter: item.fields.chapter,
chapter_icd: item.fields.chapter_range,
illness_name: item.fields.illnessname,
level: 1
})
})
console.log(this.isSerthe)
})
},
diseaseByCod (value, number) {
if (number === 1) {
this.isShaow = false
this.isShow = true
this.centerDialogVisible = true
let params = {
chapter: value
}
API.diseaseByCod(params).then((res) => {
this.isSerthe = []
res.data.forEach(item => {
this.isSerthe.push({
chapter: item.fields.chapter_range,
chapter_icd: item.fields.chapter_range,
illness_name: item.fields.illnessname,
level: 2
})
console.log(item.fields.chapter_range)
})
console.log(res.data)
})
} else if (number === 2) {
this.isShaow = false
this.isShow = true
let params = {
chapter_range: value
}
API.diseaseByDod(params).then((res) => {
this.isSerthe = []
res.data.forEach(item => {
this.isSerthe.push({
chapter: item.fields.icd_code,
chapter_icd: item.fields.icd_code,
illness_name: item.fields.illness,
level: 3
})
})
console.log(res.data)
})
} else if (number === 3) {
this.isShaow = true
this.isShow = false
let params = {
icd_code: value
}
console.log(value)
API.diseaseByTod(params).then((res) => {
this.isSerthe = []
res.data.forEach(item => {
this.isSerthe.push({
chapter: item.fields.icd_code,
chapter_icd: item.fields.icd_code,
illness_name: item.fields.illness,
level: 4
})
})
console.log(res.data)
})
}
}
Предварительный просмотр в сети в консоли браузера для просмотра полных данных в фоновом режиме, а в заголовке запроса Headers проверьте, передаются ли параметры в фоновый режим.
Устранение неполадок: анализировать ошибки, просматривать сообщения об ошибках, проверять, воспроизводить проблемы и удалять
console.log(_) alert(...) В методе отладки отладчика предупреждение используется, чтобы увидеть, выполняется ли оно, порядок выполнения кода, синхронный и асинхронный процесс выполнения, выполнялся ли js при загрузке элемент Dom, и переменная не может получить значение.. .
Нет необходимости писать шаг за шагом, чтобы увидеть эффект от одного шага. Просто напишите строчку кода и посмотрите на эффект, у вас в сердце должна появиться картина, каким будет следующий эффект. Таким образом, эффективность не будет медленной, и она не будет соответствовать ожиданиям других людей.
Что ж, вышесказанное подводит итог проблемам, возникшим в проекте.
Я тоже считаю, что шаг за шагом ровный и неуклонный, и успехи будут.Никто ни из чего не выйдет, это только вопрос времени.
Продолжение следует. . .