|
@@ -11,24 +11,16 @@
|
|
|
class="demo-dynamic"
|
|
class="demo-dynamic"
|
|
|
>
|
|
>
|
|
|
<div class="farm-card">
|
|
<div class="farm-card">
|
|
|
- <div class="card-title between">
|
|
|
|
|
|
|
+ <div class="card-title between common-inputs">
|
|
|
<div>{{ detailData?.name }}<span class="type-tag">标准农事</span></div>
|
|
<div>{{ detailData?.name }}<span class="type-tag">标准农事</span></div>
|
|
|
- <el-popover
|
|
|
|
|
- title=""
|
|
|
|
|
- v-if="isEdit"
|
|
|
|
|
- :popper-style="'min-width: 110px;'"
|
|
|
|
|
- :width="110"
|
|
|
|
|
- placement="left-start"
|
|
|
|
|
- trigger="click"
|
|
|
|
|
- >
|
|
|
|
|
- <div class="tag-list">
|
|
|
|
|
- <div class="tag-item">托管农事</div>
|
|
|
|
|
- <div class="tag-item active">特别关注</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <template #reference>
|
|
|
|
|
- <div class="title-tag add-tag">标记为</div>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-popover>
|
|
|
|
|
|
|
+ <el-select v-if="isEdit" size="small" v-model="tagName" placeholder="标记为" style="width: 94px">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="item in tagList"
|
|
|
|
|
+ :key="item.value"
|
|
|
|
|
+ :label="item.label"
|
|
|
|
|
+ :value="item.value"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
<div class="edit-tag tag-text" v-else>托管农事</div>
|
|
<div class="edit-tag tag-text" v-else>托管农事</div>
|
|
|
<!-- <el-tooltip
|
|
<!-- <el-tooltip
|
|
|
effect="dark"
|
|
effect="dark"
|
|
@@ -90,9 +82,53 @@
|
|
|
<div>农情互动</div>
|
|
<div>农情互动</div>
|
|
|
<!-- <span class="del-tag">删除互动</span> -->
|
|
<!-- <span class="del-tag">删除互动</span> -->
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="interact-content">
|
|
|
|
|
|
|
+ <div v-if="isEdit" class="interact-form">
|
|
|
|
|
+ <div class="interact-form-item">
|
|
|
|
|
+ <div class="form-label">
|
|
|
|
|
+ 互动时间
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-input-wrapper">
|
|
|
|
|
+ <el-select style="width: 100%" v-model="interactFormData.phenologyId" placeholder="请选择物候期" :editable="false">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="item in phenologyList"
|
|
|
|
|
+ :key="item.id"
|
|
|
|
|
+ :label="item.name"
|
|
|
|
|
+ :value="item.id"
|
|
|
|
|
+ ></el-option>
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="interact-form-item">
|
|
|
|
|
+ <div class="form-label">
|
|
|
|
|
+ 强制触发
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-input-wrapper">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="interactFormData.interactionTime"
|
|
|
|
|
+
|
|
|
|
|
+ style="width: 100%"
|
|
|
|
|
+ type="date"
|
|
|
|
|
+ placeholder="请选择日期"
|
|
|
|
|
+ :editable="false"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="interact-form-item">
|
|
|
|
|
+ <div class="form-label">
|
|
|
|
|
+ 互动问题
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="interactFormData.interactionQuestion"
|
|
|
|
|
+ type="textarea"
|
|
|
|
|
+ :rows="4"
|
|
|
|
|
+ placeholder="请设置互动问题"
|
|
|
|
|
+ class="question-textarea"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div v-else class="interact-content">
|
|
|
{{ detailData?.warmReminder }}
|
|
{{ detailData?.warmReminder }}
|
|
|
- <span class="edit-tag" @click="handleEditInteract(detailData)">点击编辑</span>
|
|
|
|
|
|
|
+ <!-- <span class="edit-tag" @click="handleEditInteract(detailData)">点击编辑</span> -->
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
@@ -496,6 +532,21 @@ const store = useStore();
|
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
|
|
|
|
|
|
|
|
+const tagList = ref([
|
|
|
|
|
+ { label: "托管农事", value: 2 },
|
|
|
|
|
+ { label: "特别关注", value: 1 },
|
|
|
|
|
+ { label: "取消关注", value: 0 },
|
|
|
|
|
+]);
|
|
|
|
|
+
|
|
|
|
|
+const tagName = ref("");
|
|
|
|
|
+
|
|
|
|
|
+// 互动表单数据
|
|
|
|
|
+const interactFormData = ref({
|
|
|
|
|
+ phenologyId: "",
|
|
|
|
|
+ interactionTime: "",
|
|
|
|
|
+ interactionQuestion: "",
|
|
|
|
|
+});
|
|
|
|
|
+const phenologyList = ref([]);
|
|
|
|
|
|
|
|
const isEdit = ref(true);
|
|
const isEdit = ref(true);
|
|
|
|
|
|
|
@@ -532,7 +583,7 @@ const showPriceSheetPopup = () => {
|
|
|
|
|
|
|
|
const detailData = ref({});
|
|
const detailData = ref({});
|
|
|
const getDetail = async () => {
|
|
const getDetail = async () => {
|
|
|
- const { data, code } = await VE_API.farm.getFarmWorkLib({ id: route.query.farmWorkId, farmId: route.query.farmId });
|
|
|
|
|
|
|
+ const { data, code } = await VE_API.farm.getFarmWorkLib({ id: route.query.farmWorkId, farmId: route.query.farmId, agriculturalId: route.query.agriculturalStoreId });
|
|
|
if(code === 0) {
|
|
if(code === 0) {
|
|
|
detailData.value = data;
|
|
detailData.value = data;
|
|
|
dynamicValidateForm.executeDate = data.executeDate;
|
|
dynamicValidateForm.executeDate = data.executeDate;
|
|
@@ -542,9 +593,22 @@ const getDetail = async () => {
|
|
|
usageMode: "",
|
|
usageMode: "",
|
|
|
pesticideFertilizerList: [],
|
|
pesticideFertilizerList: [],
|
|
|
};
|
|
};
|
|
|
- servicePricePerMu.value = detailData.value.farmWorkServiceCost || null;
|
|
|
|
|
|
|
+ servicePricePerMu.value = detailData.value.serviceMuPrice || null;
|
|
|
const pesticideFertilizerCodes = data.prescription.pesticideFertilizerList.map(item => item.code);
|
|
const pesticideFertilizerCodes = data.prescription.pesticideFertilizerList.map(item => item.code);
|
|
|
getPriceList(data.schemeId, pesticideFertilizerCodes);
|
|
getPriceList(data.schemeId, pesticideFertilizerCodes);
|
|
|
|
|
+
|
|
|
|
|
+ // 加载互动表单数据
|
|
|
|
|
+ if (data.id) {
|
|
|
|
|
+ // 重置互动表单数据
|
|
|
|
|
+ interactFormData.value = {
|
|
|
|
|
+ phenologyId: "",
|
|
|
|
|
+ interactionTime: "",
|
|
|
|
|
+ interactionQuestion: "",
|
|
|
|
|
+ };
|
|
|
|
|
+ // 按照 interactPopup.vue 的方式获取数据
|
|
|
|
|
+ await getPhenologyList(data.containerSpaceTimeId || route.query.containerSpaceTimeId);
|
|
|
|
|
+ await getFarmWorkArrangeDetail(route.query.id);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -653,11 +717,11 @@ const modeList = ref([
|
|
|
]);
|
|
]);
|
|
|
|
|
|
|
|
const handleExecutionMethodChange = (index, val) => {
|
|
const handleExecutionMethodChange = (index, val) => {
|
|
|
- if (val == 1) {
|
|
|
|
|
- servicePricePerMu.value = detailData.value.uavServicePrice;
|
|
|
|
|
- } else {
|
|
|
|
|
- servicePricePerMu.value = detailData.value.manualServicePrice;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // if (val == 1) {
|
|
|
|
|
+ // servicePricePerMu.value = detailData.value.uavServicePrice;
|
|
|
|
|
+ // } else {
|
|
|
|
|
+ // servicePricePerMu.value = detailData.value.manualServicePrice;
|
|
|
|
|
+ // }
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// 表单
|
|
// 表单
|
|
@@ -767,7 +831,8 @@ const handlePesticideFertilizerChange = (index) => {
|
|
|
name: obj.name || obj.defaultName,
|
|
name: obj.name || obj.defaultName,
|
|
|
typeName: obj.typeName,
|
|
typeName: obj.typeName,
|
|
|
unit: obj.unit,
|
|
unit: obj.unit,
|
|
|
- ratio: obj.defaultRatio || currentItem.ratio,
|
|
|
|
|
|
|
+ ratio: "", // 清空亩兑水量
|
|
|
|
|
+ dosage: "", // 清空单亩用量
|
|
|
executeStyle: obj.executionMethod || 1,
|
|
executeStyle: obj.executionMethod || 1,
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
@@ -806,8 +871,13 @@ const getServiceTotal = () => {
|
|
|
|
|
|
|
|
const submitForm = (formEl) => {
|
|
const submitForm = (formEl) => {
|
|
|
if (!formEl) return;
|
|
if (!formEl) return;
|
|
|
- formEl.validate((valid) => {
|
|
|
|
|
|
|
+ formEl.validate(async (valid) => {
|
|
|
if (valid) {
|
|
if (valid) {
|
|
|
|
|
+ // 校验农情互动,不通过,直接返回失败
|
|
|
|
|
+ if (!validateInteractForm()) return false;
|
|
|
|
|
+
|
|
|
|
|
+ // 保存报价信息前先校验是否填写完整
|
|
|
|
|
+ if (!validatePriceInfos()) return;
|
|
|
submit();
|
|
submit();
|
|
|
} else {
|
|
} else {
|
|
|
console.log("error submit!");
|
|
console.log("error submit!");
|
|
@@ -815,6 +885,26 @@ const submitForm = (formEl) => {
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+// 校验报价信息是否填写完整
|
|
|
|
|
+const validatePriceInfos = () => {
|
|
|
|
|
+ const list = dynamicValidateForm.prescription?.pesticideFertilizerList || [];
|
|
|
|
|
+ if (!list.length) return true; // 没有药肥就不校验
|
|
|
|
|
+
|
|
|
|
|
+ const invalid = list.some((item) => {
|
|
|
|
|
+ // 只要选择了药肥(有 id),就必须填写单价和品牌
|
|
|
|
|
+ if (!item.id) return true;
|
|
|
|
|
+ const hasPrice = item.price !== undefined && item.price !== null && item.price !== "";
|
|
|
|
|
+ const hasBrand = !!item.brand;
|
|
|
|
|
+ return !hasPrice || !hasBrand;
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ if (invalid) {
|
|
|
|
|
+ ElMessage.warning("请先完善报价信息");
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ return true;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
const submit = () => {
|
|
const submit = () => {
|
|
|
const data = {
|
|
const data = {
|
|
|
id: route.query.farmWorkId,
|
|
id: route.query.farmWorkId,
|
|
@@ -822,6 +912,8 @@ const submit = () => {
|
|
|
prescription: dynamicValidateForm.prescription
|
|
prescription: dynamicValidateForm.prescription
|
|
|
};
|
|
};
|
|
|
VE_API.monitor.saveFarmWorkLib(data);
|
|
VE_API.monitor.saveFarmWorkLib(data);
|
|
|
|
|
+
|
|
|
|
|
+ handleSaveInteract()
|
|
|
|
|
|
|
|
// 保存报价信息
|
|
// 保存报价信息
|
|
|
const priceList = {
|
|
const priceList = {
|
|
@@ -850,11 +942,7 @@ const submit = () => {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const handleSaveInteractSuccess = () => {
|
|
const handleSaveInteractSuccess = () => {
|
|
|
- // getDetail(route.query.id);
|
|
|
|
|
-};
|
|
|
|
|
-
|
|
|
|
|
-const handleDeleteInteract = () => {
|
|
|
|
|
- // getDetail(route.query.id);
|
|
|
|
|
|
|
+ getDetail();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const interactPopupRef = ref(null);
|
|
const interactPopupRef = ref(null);
|
|
@@ -863,6 +951,116 @@ const handleEditInteract = (item) => {
|
|
|
interactPopupRef.value.showPopup({...item, containerSpaceTimeId: route.query.containerSpaceTimeId,id:route.query.id});
|
|
interactPopupRef.value.showPopup({...item, containerSpaceTimeId: route.query.containerSpaceTimeId,id:route.query.id});
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
+
|
|
|
|
|
+// 获取物候期列表
|
|
|
|
|
+const getPhenologyList = async (containerSpaceTimeId) => {
|
|
|
|
|
+ if (!containerSpaceTimeId) {
|
|
|
|
|
+ phenologyList.value = [];
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ const res = await VE_API.monitor.listPhenology({ containerSpaceTimeId });
|
|
|
|
|
+ if (res.code === 0) {
|
|
|
|
|
+ phenologyList.value = res.data || [];
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 获取互动设置详情
|
|
|
|
|
+const getFarmWorkArrangeDetail = async (id) => {
|
|
|
|
|
+ if (!id) return;
|
|
|
|
|
+ const { data, code } = await VE_API.farm.getFarmWorkArrangeDetail({ id });
|
|
|
|
|
+ if(code === 0) {
|
|
|
|
|
+ interactFormData.value = {
|
|
|
|
|
+ phenologyId: data.phenologyId || "",
|
|
|
|
|
+ interactionTime: data.interactionTime || "",
|
|
|
|
|
+ interactionQuestion: data.interactionQuestion || "",
|
|
|
|
|
+ };
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 格式化日期
|
|
|
|
|
+const formatInteractDate = (date) => {
|
|
|
|
|
+ // 如果已经是字符串格式 YYYY-MM-DD,直接返回
|
|
|
|
|
+ if (typeof date === "string" && /^\d{4}-\d{2}-\d{2}$/.test(date)) {
|
|
|
|
|
+ return date;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 如果是 Date 对象,进行转换
|
|
|
|
|
+ if (date instanceof Date) {
|
|
|
|
|
+ let year = date.getFullYear();
|
|
|
|
|
+ let month = String(date.getMonth() + 1).padStart(2, "0");
|
|
|
|
|
+ let day = String(date.getDate()).padStart(2, "0");
|
|
|
|
|
+ return `${year}-${month}-${day}`;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 其他情况返回原值
|
|
|
|
|
+ return date;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 验证互动表单
|
|
|
|
|
+const validateInteractForm = () => {
|
|
|
|
|
+ if (!interactFormData.value.phenologyId) {
|
|
|
|
|
+ ElMessage.warning("请选择互动时间");
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!interactFormData.value.interactionTime) {
|
|
|
|
|
+ ElMessage.warning("请选择强制触发时间");
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!interactFormData.value.interactionQuestion?.trim()) {
|
|
|
|
|
+ ElMessage.warning("请设置互动问题");
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ return true;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 保存互动设置
|
|
|
|
|
+const handleSaveInteract = async () => {
|
|
|
|
|
+
|
|
|
|
|
+ const paramsObj = {
|
|
|
|
|
+ id: route.query.id,
|
|
|
|
|
+ ...interactFormData.value,
|
|
|
|
|
+ interactionTime: formatInteractDate(interactFormData.value.interactionTime),
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await VE_API.monitor.updateFarmWorkArrange(paramsObj);
|
|
|
|
|
+ if (res.code !== 0) {
|
|
|
|
|
+ ElMessage.error(res.message || "保存农情互动信息失败");
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ return true;
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error("保存互动设置失败:", error);
|
|
|
|
|
+ ElMessage.error("保存失败,请重试");
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 删除互动设置
|
|
|
|
|
+const handleDeleteInteract = () => {
|
|
|
|
|
+ ElMessageBox.confirm("确定要删除该互动设置吗?", "提示", {
|
|
|
|
|
+ confirmButtonText: "确定",
|
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
|
+ type: "warning",
|
|
|
|
|
+ })
|
|
|
|
|
+ .then(async () => {
|
|
|
|
|
+ if (!detailData.value.id) return;
|
|
|
|
|
+ const res = await VE_API.monitor.deleteFarmWorkArrange({ id: detailData.value.id });
|
|
|
|
|
+ if (res.code === 0) {
|
|
|
|
|
+ ElMessage.success("删除成功");
|
|
|
|
|
+ // 清空表单数据
|
|
|
|
|
+ interactFormData.value = {
|
|
|
|
|
+ phenologyId: "",
|
|
|
|
|
+ interactionTime: "",
|
|
|
|
|
+ interactionQuestion: "",
|
|
|
|
|
+ };
|
|
|
|
|
+ await getDetail(); // 重新获取详情
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ElMessage.error(res.message || "删除失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch(() => {
|
|
|
|
|
+ // 用户取消,不做任何操作
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
@@ -1393,6 +1591,107 @@ const handleEditInteract = (item) => {
|
|
|
color: #919191;
|
|
color: #919191;
|
|
|
font-size: 12px;
|
|
font-size: 12px;
|
|
|
}
|
|
}
|
|
|
|
|
+ .interact-form {
|
|
|
|
|
+ padding: 8px 0 20px 0px;
|
|
|
|
|
+
|
|
|
|
|
+ .interact-form-item {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: baseline;
|
|
|
|
|
+ margin-bottom: 12px;
|
|
|
|
|
+
|
|
|
|
|
+ &:last-child {
|
|
|
|
|
+ margin-bottom: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .form-label {
|
|
|
|
|
+ width: 70px;
|
|
|
|
|
+ color: rgba(0, 0, 0, 0.4);
|
|
|
|
|
+ font-weight: normal;
|
|
|
|
|
+ margin-right: 10px;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ flex: none;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .form-input-wrapper {
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ width: calc(100% - 70px);
|
|
|
|
|
+ ::v-deep {
|
|
|
|
|
+ .el-input__inner {
|
|
|
|
|
+ caret-color: transparent;
|
|
|
|
|
+ padding-right: 40px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .el-input__suffix {
|
|
|
|
|
+ display: none;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .question-textarea {
|
|
|
|
|
+ ::v-deep {
|
|
|
|
|
+ .el-textarea__inner {
|
|
|
|
|
+ resize: none;
|
|
|
|
|
+ line-height: 1.5;
|
|
|
|
|
+ min-height: 80px;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .interact-buttons {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+ padding-top: 16px;
|
|
|
|
|
+
|
|
|
|
|
+ .btn-delete,
|
|
|
|
|
+ .btn-save {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ padding: 8px;
|
|
|
|
|
+ border-radius: 25px;
|
|
|
|
|
+ font-size: 16px;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all 0.3s;
|
|
|
|
|
+ user-select: none;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .btn-delete {
|
|
|
|
|
+ background: #ffffff;
|
|
|
|
|
+ border: 1px solid #ff4d4f;
|
|
|
|
|
+ color: #ff4d4f;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ background: #fff5f5;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:active {
|
|
|
|
|
+ opacity: 0.8;
|
|
|
|
|
+ transform: scale(0.98);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .btn-save {
|
|
|
|
|
+ background: #2199f8;
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ border: none;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover:not(.disabled) {
|
|
|
|
|
+ background: #1a8ae6;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:active:not(.disabled) {
|
|
|
|
|
+ opacity: 0.9;
|
|
|
|
|
+ transform: scale(0.98);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &.disabled {
|
|
|
|
|
+ opacity: 0.6;
|
|
|
|
|
+ cursor: not-allowed;
|
|
|
|
|
+ pointer-events: none;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
.edit-tag {
|
|
.edit-tag {
|
|
|
padding-left: 4px;
|
|
padding-left: 4px;
|
|
|
color: #2199f8;
|
|
color: #2199f8;
|