Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-front into feature/ysCha

This commit is contained in:
ysCha 2025-05-13 13:03:59 +09:00
commit 555671ade7
5 changed files with 55 additions and 20 deletions

View File

@ -37,7 +37,7 @@ export default function CanvasLayout({ children }) {
<button <button
key={`plan-${plan.id}`} key={`plan-${plan.id}`}
className={`canvas-page-box ${plan.isCurrent === true ? 'on' : ''}`} className={`canvas-page-box ${plan.isCurrent === true ? 'on' : ''}`}
onClick={() => handleCurrentPlan(plan.id)} onClick={() => (plan.isCurrent ? '' : handleCurrentPlan(plan.id))}
> >
<span>{`Plan ${plan.planNo}`}</span> <span>{`Plan ${plan.planNo}`}</span>
{plans.length > 1 && !pathname.includes('/estimate') && !pathname.includes('/simulator') && ( {plans.length > 1 && !pathname.includes('/estimate') && !pathname.includes('/simulator') && (

View File

@ -180,8 +180,8 @@ const Placement = forwardRef((props, refs) => {
))} ))}
</thead> </thead>
<tbody> <tbody>
{selectedModules.itemList && {selectedModules?.itemList &&
selectedModules.itemList.map((item, index) => ( selectedModules?.itemList?.map((item, index) => (
<tr key={index}> <tr key={index}>
<td className="al-c"> <td className="al-c">
<div className="d-check-box no-text pop"> <div className="d-check-box no-text pop">
@ -329,7 +329,7 @@ const Placement = forwardRef((props, refs) => {
<tr> <tr>
<th rowSpan={2} style={{ width: '22%' }}></th> <th rowSpan={2} style={{ width: '22%' }}></th>
{selectedModules && {selectedModules &&
selectedModules.itemList.map((item) => ( selectedModules.itemList?.map((item) => (
// <th colSpan={colspan}> // <th colSpan={colspan}>
<th> <th>
<div className="color-wrap"> <div className="color-wrap">
@ -341,7 +341,8 @@ const Placement = forwardRef((props, refs) => {
{colspan > 1 && <th rowSpan={2}>{getMessage('modal.module.basic.setting.module.placement.max.rows.multiple')}</th>} {colspan > 1 && <th rowSpan={2}>{getMessage('modal.module.basic.setting.module.placement.max.rows.multiple')}</th>}
</tr> </tr>
<tr> <tr>
{selectedModules.itemList.map((item) => ( {selectedModules &&
selectedModules.itemList?.map((item) => (
<> <>
<th>{getMessage('modal.module.basic.setting.module.placement.max.row')}</th> <th>{getMessage('modal.module.basic.setting.module.placement.max.row')}</th>
{/* {colspan > 1 && <th>{getMessage('modal.module.basic.setting.module.placement.max.rows.multiple')}</th>} */} {/* {colspan > 1 && <th>{getMessage('modal.module.basic.setting.module.placement.max.rows.multiple')}</th>} */}

View File

@ -206,10 +206,18 @@ export function useCanvasEvent() {
selected.forEach((obj) => { selected.forEach((obj) => {
// if (obj.type === 'QPolygon' && currentMenu !== MENU.MODULE_CIRCUIT_SETTING.BASIC_SETTING) { // if (obj.type === 'QPolygon' && currentMenu !== MENU.MODULE_CIRCUIT_SETTING.BASIC_SETTING) {
if (obj.type === 'QPolygon') { if (obj.type === 'QPolygon') {
const originStroke = obj.stroke
obj.set({ stroke: 'red' }) obj.set({ stroke: 'red' })
if (obj.name === POLYGON_TYPE.MODULE && currentMenu === MENU.MODULE_CIRCUIT_SETTING.BASIC_SETTING) {
if (currentMenu === MENU.MODULE_CIRCUIT_SETTING.BASIC_SETTING) {
if (obj.name === POLYGON_TYPE.MODULE) {
obj.set({ strokeWidth: 3 }) obj.set({ strokeWidth: 3 })
} }
if (obj.name === POLYGON_TYPE.ROOF) {
canvas.discardActiveObject()
obj.set({ stroke: originStroke })
}
}
} }
}) })
canvas.renderAll() canvas.renderAll()

View File

@ -31,6 +31,8 @@ export function useEstimate() {
* @param {Object} estimateParam - 견적서 저장 데이터 * @param {Object} estimateParam - 견적서 저장 데이터
*/ */
const saveEstimate = async (estimateParam) => { const saveEstimate = async (estimateParam) => {
console.log('managementState', managementState)
const userId = loginUserState.userId const userId = loginUserState.userId
const saleStoreId = managementState.saleStoreId const saleStoreId = managementState.saleStoreId
const objectNo = currentCanvasPlan.objectNo const objectNo = currentCanvasPlan.objectNo

View File

@ -407,12 +407,21 @@ export function usePlan(params = {}) {
} }
}) })
} else { } else {
if (!currentCanvasPlan || currentCanvasPlan.id !== newCurrentId) { swalFire({
text: getMessage('plan.message.confirm.save'),
type: 'confirm',
confirmFn: async () => {
//저장 전에 플랜이 이동되어 state가 변경되는 이슈가 있음
await saveCanvas(true) await saveCanvas(true)
clearRecoilState() clearRecoilState()
}
setCurrentCanvasPlan(plans.find((plan) => plan.id === newCurrentId)) setCurrentCanvasPlan(plans.find((plan) => plan.id === newCurrentId))
setPlans((plans) => plans.map((plan) => ({ ...plan, isCurrent: plan.id === newCurrentId }))) setPlans((plans) => plans.map((plan) => ({ ...plan, isCurrent: plan.id === newCurrentId })))
},
denyFn: async () => {
setCurrentCanvasPlan(plans.find((plan) => plan.id === newCurrentId))
setPlans((plans) => plans.map((plan) => ({ ...plan, isCurrent: plan.id === newCurrentId })))
},
})
} }
} }
@ -447,9 +456,25 @@ export function usePlan(params = {}) {
* @param {string} objectNo - 물건번호 * @param {string} objectNo - 물건번호
*/ */
const handleAddPlan = async (userId, objectNo) => { const handleAddPlan = async (userId, objectNo) => {
let isSelected = false
if (currentCanvasPlan?.id) { if (currentCanvasPlan?.id) {
await saveCanvas(false) swalFire({
text: getMessage('plan.message.confirm.save'),
type: 'confirm',
confirmFn: async () => {
//저장 전에 플랜이 이동되어 state가 변경되는 이슈가 있음
await saveCanvas(true)
handleAddPlanCopyConfirm(userId, objectNo)
},
denyFn: async () => {
handleAddPlanCopyConfirm(userId, objectNo)
},
})
} }
}
const handleAddPlanCopyConfirm = async (userId, objectNo) => {
if (JSON.parse(currentCanvasData()).objects.length > 0) { if (JSON.parse(currentCanvasData()).objects.length > 0) {
swalFire({ swalFire({
text: `Plan ${currentCanvasPlan.planNo} ` + getMessage('plan.message.confirm.copy'), text: `Plan ${currentCanvasPlan.planNo} ` + getMessage('plan.message.confirm.copy'),
@ -471,7 +496,6 @@ export function usePlan(params = {}) {
setIsGlobalLoading(false) setIsGlobalLoading(false)
} }
} }
/** /**
* 물건번호(object) plan 삭제 (canvas 삭제 planNo 삭제) * 물건번호(object) plan 삭제 (canvas 삭제 planNo 삭제)
* *