#include "syscontact.h" #include <QGraphicsDropShadowEffect> #include <QResizeEvent> #include <QSize> #include <QToolBar> #include <tbaseutil/tdataresponse.h> #include <tbaseutil/tdataparse.h> #include <tbaseutil/ttheme.h> #include <tbaseutil/tenumlist.h> #include <tbaseutil/tresource.h> #include <tbaseutil/tlogger.h> #include <tbaseutil/tfileio.h> #include <tbaseutil/tlogitem.h> #include <tdatabaseutil/tsqlselectorv2.h> #include <topcore/topcore.h> #include <topcore/topclasssqlthread.h> #include <topcore/topenummanager.h> #include <toputil/t.h> #include <twidget/tuiloader.h> #include <twidget/ttableview.h> #include <twidget/tmessagebar.h> #include <twidget/tmessagebox.h> #include <twidget/ttableviewdialog.h> #include <twidget/tpushbutton.h> #include <twidget/tuiloaderdialog.h> #include <twidget/tformlayout.h> #include <twidget/tfiledialog.h> #include "syscontactthread.h" #include "pubcombolinecouplewideget.h" SysContact::SysContact(const QString &iModuleNameStr, const QVariantMap iUrlPars, QWidget *iParent) : TopClassAbs(iParent) { this->setLicenseKey("pub_common"); this->initModule(iModuleNameStr, iUrlPars); QWidget *centerWgt = new QWidget(this); this->setCentralWidget(centerWgt); QVBoxLayout *centerLayout = new QVBoxLayout(centerWgt); centerLayout->setMargin(0); centerLayout->setSpacing(0); if (QToolBar *toolbar = qobject_cast<QToolBar*>(uim()->getWidget("MAIN_TOOLBAR"))){ toolbar->setWindowTitle(ttr("ToolBar")); centerLayout->addWidget(toolbar,0); } mBodyLayout = new QVBoxLayout(); centerLayout->addLayout(mBodyLayout, 1); mBodyLayout->setMargin(TTHEME_DP(16)); mBodyLayout->setSpacing(0); mUiLoader = new TUiLoader(this); mUiLoader->setProperty("SS_BG", "BODY"); mUiLoader->setScriptEngine(APP->scriptEngine()); mUiLoader->setSelf(this); mUiLoader->setMaximumWidth(800); mUiLoader->setCreateCallback(this,SysContact::newDataItem); mUiLoader->setProperty("SS_BG", "PANEL"); mUiLoader->setProperty("SS_BORDER", 1); mBodyLayout->addStretch(1); mBodyLayout->addWidget(mUiLoader, 99999); mBodyLayout->addStretch(1); mUiLoader->setUiStr(ui("contact-info").toString()); mRelatedTableView = qobject_cast<TTableView*>(mUiLoader->getObject("CONTACT_RELATED_LIST")); if (mRelatedTableView != nullptr) { mRelatedTableView->verticalHeader()->setVisible(false); mRelatedTableView->setSelectionMode(TTableView::ExtendedSelection); mRelatedTableView->horizontalHeader()->setMinimumSectionSize(75); connect(mRelatedTableView->selectionModel(), &QItemSelectionModel::selectionChanged, [this](){mUiLoader->refreshState();}); } if (QToolBar *toolbar = qobject_cast<QToolBar *>(uim()->getWidget("MAIN_TOOLBAR"))) { mBodyLayout->insertWidget(0, toolbar); } initSearchEntry(); initUiItemMode(); connect(mUiLoader, SIGNAL(dataChanged()), this, SLOT(setDataModified())); connect(this, SIGNAL(countChanged()), this, SLOT(setDataModified())); //恢复窗体尺寸及布局; restoreSizeState(); //当URL传入包含UID时, 在initModule()中会自动赋值给UID; //在界面初始化完成后执行uidChangeEvent, 填充界面数据; uidChangeEvent(this->uid()); //刷新Action状态; refreshActionState(); } SysContact::~SysContact() { saveSizeState(); } void SysContact::setObjectState(QStringList iObjNames, QString iStateStr) { if (iObjNames.isEmpty() || iStateStr.isEmpty()) { return; } if (mUiLoader != nullptr) { for (QString name: iObjNames) { mUiLoader->setState(name, iStateStr); } } } QObject *SysContact::newDataItem(QObject *iObj, const QString &iTypeStr, const QVariant &iParamVar) { Q_UNUSED(iParamVar); if (iTypeStr.toUpper() == "COMBOLINECOUPLEWIDGET") { TopClassAbs *parent = qobject_cast<TopClassAbs *>(iObj); if (parent != nullptr) { return new PubComboLineCoupleWideget(parent); } else { return nullptr; } } return nullptr; } void SysContact::reload() { QString uidStr = lastUid().isEmpty() ? uid() : lastUid(); setUid(uidStr, true); } void SysContact::copy() { setLastUid(this->uid()); setUid(0, false); mUiLoader->setValue(QString("id"), QVariant("")); mUiLoader->setValue(QString("name"), QVariant("")); setTitle(ttr("New Contact")); setDataModified(true); } void SysContact::create() { setLastUid(this->uid()); setUid(0, true); // 新建时可通过配置设置默认值 if (!mDefaultSource.isEmpty()) { QVariantMap dataMap; dataMap.insert("source", mDefaultSource); setData(dataMap); } setDataModified(true); } void SysContact::clearData() { if (mRelatedTableView != nullptr) { mRelatedTableView->loadData(QVariantList()); } mUiLoader->loadValues(QVariantMap(), true); //mHeadPortraitBtn->setIcon(APP->getResIcon("add_person.$BODY_ICON_TAB")); //mHeadPortraitInfo.clear(); } void SysContact::setData(const QVariantMap &iDataMap) { QVariantMap dataMap = iDataMap; dataMap.insert("CONTACT_RELATED_LIST", getTransferedTableData(iDataMap.value("CONTACT_RELATED_LIST").toList())); if (isHookExists("handleDetailData")) { dataMap = callHooksQuick("handleDetailData", QVariantList()<<dataMap).toVariant().toMap(); } mUiLoader->loadValues(dataMap, false); if (iDataMap.contains("name")) { setTitle(ttr("Contact-%1").arg(iDataMap.value("name").toString())); } /* if(!iDataMap.value("head_portrait").toByteArray().isEmpty()) { mHeadPortraitInfo = iDataMap.value("head_portrait").toByteArray(); QImage img = QImage::fromData(qUncompress(QByteArray::fromBase64(mHeadPortraitInfo))); QPixmap pixmap = QPixmap::fromImage(img); mHeadPortraitBtn->setIcon(pixmap); } else { mHeadPortraitBtn->setIcon(APP->getResIcon("add_person.$BODY_ICON_TAB")); } */ } QVariantMap SysContact::getData() const { QVariantMap dataMap = mUiLoader->getAllValues().toVariant().toMap(); QStringList saveFieds = config("save_fields").toStringList(); if (saveFieds.isEmpty()) { saveFieds = QStringList()<<"name"<<"sex"<<"status"<<"source"<<"source_serial"<<"company" <<"department"<<"title"<<"remark"<<"nick_name"<<"address"<<"phone" <<"mail"<<"fax"<<"other_mail"<<"idcard"<<"birth_date"<<"hobby"<<"other_contact" <<"category"<<"security_level"<<"head_portrait"<<"tags"; } dataMap = TDataParse::fetchVariantMapField(dataMap, saveFieds); if (uid().toInt() > 0) { dataMap.insert("id", uid()); } if (mRelatedTableView != nullptr) { dataMap.insert("CONTACT_RELATED_LIST", mRelatedTableView->allDataMap()); } dataMap = TDataParse::replaceVariantMapEmptyItem(dataMap); QString category = dataMap["category"].toString(); dataMap["category"] = QStringList() << category; return dataMap; } void SysContact::saveData() { QVariantList errLst = mUiLoader->validateAll("COMMIT", true, "ERROR"); if (!errLst.isEmpty()) { QStringList errStrLst; for (QVariant err: errLst) { errStrLst.append(err.toMap().value("text").toString()); } TMessageBox::error(this, ttr("Saving data failed!"), errStrLst.join("\n")); return ; } t::saving(this); QVariantMap dataMap = getData(); QVariant data = doThreadWork(new SysContactThread(this), "SAVE_DATA", dataMap); unloading(); TDataResponse dataRes(data.toMap()); if (dataRes.hasError()) { if (dataRes.errCode() == "ALREADY_EXISTS") { alertError(ttr("Save data failed!"), ttr("Contact [%1] already exists!").arg(dataMap.value("name").toString())); } else { alertError(ttr("Save data failed!"), dataRes.errText()); } } else { setUid(dataRes.data().toInt()); emit dataSaved(this->uid()); alertOk(ttr("Data saved")); } } TUiLoader *SysContact::uiLoader() { return mUiLoader; } void SysContact::setDefaultSource(const QString &iSource) { if (iSource != mDefaultSource) { mDefaultSource = iSource; } } void SysContact::addRelevantContacts() { if (mRelatedTableView == nullptr) { return; } TTableViewDialog *dialog = new TTableViewDialog(this); dialog->setTitle(ttr("Add Contact")); dialog->setButtons(QStringList() << ttr("Ok")+":Ok:Yes" << ttr("Cancel")+":Cancel:Cancel" << ttr("Clear All")+":UnselectAll:ResetRole"); QVariantList headeritems; headeritems << QVariant(); QVariantMap col1; col1.insert("name","id"); col1.insert("display",ttr("Id")); col1.insert("resizeMode","Interactive"); col1.insert("size",100); col1.insert("displayRole","$id"); headeritems.append(col1); QVariantMap col2; col2.insert("name","name"); col2.insert("display",ttr("Name")); col2.insert("resizeMode","Interactive"); col2.insert("size",100); col2.insert("displayRole","$name"); headeritems.append(col2); QVariantMap col0; col0.insert("name","sex"); col0.insert("display",ttr("Sex")); col0.insert("resizeMode","Interactive"); col0.insert("size",100); col0.insert("displayRole","$sex.text"); col0.insert("decorationRole","$sex.icon"); headeritems.append(col0); QVariantMap col3; col3.insert("name","status"); col3.insert("display",ttr("Status")); col3.insert("resizeMode","Interactive"); col3.insert("size",100); col3.insert("displayRole","$status"); headeritems.append(col3); QVariantMap col4; col4.insert("name","source"); col4.insert("display",ttr("Source")); col4.insert("resizeMode","Interactive"); col4.insert("size",100); col4.insert("displayRole","$source"); headeritems.append(col4); QVariantMap col5; col5.insert("name","source_serial"); col5.insert("display",ttr("Source Serial")); col5.insert("resizeMode","Interactive"); col5.insert("size",100); col5.insert("displayRole","$source"); headeritems.append(col5); QVariantMap col6; col6.insert("name","company"); col6.insert("display",ttr("Company")); col6.insert("resizeMode","Interactive"); col6.insert("size",150); col6.insert("displayRole","$company"); headeritems.append(col6); QVariantMap col7; col7.insert("name","department"); col7.insert("display",ttr("Department")); col7.insert("resizeMode","Interactive"); col7.insert("size",150); col7.insert("displayRole","$department"); headeritems.append(col7); QVariantMap col8; col8.insert("name","title"); col8.insert("display",ttr("Title")); col8.insert("resizeMode","Interactive"); col8.insert("size",120); col8.insert("displayRole","$title"); headeritems.append(col8); QVariantMap col9; col9.insert("name","remark"); col9.insert("display",ttr("Remark")); col9.insert("resizeMode","Stretch"); col9.insert("displayRole","$remark"); headeritems.append(col9); dialog->setPrimaryKey("id"); dialog->setDataKeyList(QStringList() << "related_id" << "id" << "name" << "status" << "sex" << "source" << "source_serial" << "company" << "department" << "title" << "remark" << "sex.text" << "sex.icon"); dialog->setHeaderItem(headeritems); dialog->setSearchKeys(QStringList() << "name" << "company"); dialog->setSelectionMode(QAbstractItemView::ExtendedSelection); dialog->searchEntry()->setPlaceholderText(ttr("Search %1")); QVariantList table_data; QVariantList exists = mRelatedTableView->allPrimaryKey(); QVariantList allDbData = getAllContactList(exists); for (QVariant row: allDbData) { QVariantMap rowMap = row.toMap(); //filter self if (rowMap.value("id").toString() == uid()) { continue; } rowMap.insert("related_id",rowMap.value("id")); table_data.append(rowMap); } dialog->loadData(getTransferedTableData(table_data)); dialog->resize(760, 560); QVariantList selLst = dialog->run(); QModelIndexList indexs = mRelatedTableView->appendRows(selLst); mRelatedTableView->unselectAll(); mRelatedTableView->selectRows(indexs); mRelatedTableView->scrollToBottom(); } void SysContact::setContactRelation() { QVariantList lst = mRelatedTableView->selectedRowDataMaps(true); if (lst.isEmpty()) { return; } // QVariant datamap = list.first(); QString items = "[{ "\ "name : 'Widget', "\ "type : 'Widget',"\ "property : {},"\ "pack : {},"\ "child : {"\ "name : 'fayout',"\ "type : 'FormLayout',"\ "property : {spacing:10},"\ "child : ["\ "{"\ "name : 'relation'," \ "type : 'EditableComboBox'," \ "title : 'Relation'," \ "property : {item_list:self.getEditableComboBoxList(\"sys-contact-relation\")},\n"\ "pack : {label: self.ttr(\"Relation\")}," \ "validate: function(obj,val,title,moment,self){"\ "if (val.trim() == ''){"\ "return [title + self.ttr(\" cannot be null!\"),'Error'];"\ "}"\ "return;"\ "}"\ "},"\ "]"\ "},"\ "},]"; TUiloaderDialog *dlg = new TUiloaderDialog(this); dlg->setSelf(this); dlg->setTitle(ttr("Set Contact Relation")); dlg->resize(250, 150); dlg->setButtons(QStringList() << ttr("Setting") + ":Ok:Yes" << ttr("Cancel") + ":Close:Reject"); dlg->uiLoader()->setScriptEngine(APP->scriptEngine()); dlg->setUiStr(items); QVariantMap res = dlg->run(); if (res.isEmpty()) { return; } QString relation = res.value("relation").toString(); TTableModel* model = qobject_cast<TTableModel *>(mRelatedTableView->model()); for (QModelIndex index: mRelatedTableView->selectedIndexes()) { QVariantMap rowMap = model->rowDataMap(index); rowMap.insert("relation", relation); mRelatedTableView->setRowData(index, QVariant(rowMap), true); } } void SysContact::OnHeadPortraitBtnClicked() { /* QString imageFile = TFileDialog::getOpenFileName(this); if(imageFile.isEmpty()) return; QByteArray headPortraitInfo; if (imageFile.endsWith(".svg", Qt::CaseInsensitive)) { QString str = TFileIo::readFileString(imageFile); if (!str.startsWith("<?xml", Qt::CaseInsensitive)) { str = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" + str; } headPortraitInfo = qCompress(str.toUtf8(), 9).toBase64(); } else { headPortraitInfo = TFileIo::readFileBase64(imageFile, 9); } mHeadPortraitInfo = headPortraitInfo; mHeadPortraitBtn->setIcon(QIcon(QPixmap(imageFile))); */ } void SysContact::OnCompanyBtnClicked(QString pSource) { TTableViewDialog *dialog = new TTableViewDialog(this); dialog->resize(800,400); dialog->setTitle( ttr("Select")); dialog->setButtons(QStringList() << ttr("Ok") + ":Ok:Yes" << ttr("Cancel") + ":Cancel:Cancel"); QVariantList headeritems; headeritems << QVariant(); QVariantMap col; col.insert("name","source"); col.insert("display",ttr("Source")); col.insert("resizeMode","Interactive"); col.insert("size",100); col.insert("displayRole","$source"); headeritems.append(col); QVariantMap col1; col1.insert("name","id"); col1.insert("display",ttr("ID")); col1.insert("resizeMode","Interactive"); col1.insert("size",100); col1.insert("displayRole","$id"); headeritems.append(col1); QVariantMap col2; col2.insert("name","code"); col2.insert("display",ttr("Code")); col2.insert("resizeMode","Interactive"); col2.insert("size",100); col2.insert("displayRole","$code"); headeritems.append(col2); QVariantMap col3; col3.insert("name","short_name"); col3.insert("display",ttr("Short Name")); col3.insert("resizeMode","Interactive"); col3.insert("size",100); col3.insert("displayRole","$short_name"); headeritems.append(col3); QVariantMap col4; col4.insert("name","fullname"); col4.insert("display",ttr("Full Name")); col4.insert("resizeMode","Interactive"); col4.insert("size",100); col4.insert("displayRole","$fullname"); headeritems.append(col4); QVariantMap col5; col5.insert("name","fullname_en"); col5.insert("display",ttr("Full Name(En)")); col5.insert("resizeMode","Interactive"); col5.insert("size",100); col5.insert("displayRole","$fullname_en"); headeritems.append(col5); QVariantMap col0; col0.insert("name","status"); col0.insert("display",ttr("Status")); col0.insert("resizeMode","Interactive"); col0.insert("size",150); col0.insert("displayRole","$status"); headeritems.append(col0); QVariantMap col6; col6.insert("name","category"); col6.insert("display",ttr("Category")); col6.insert("resizeMode","Interactive"); col6.insert("size",150); col6.insert("displayRole","$category"); headeritems.append(col6); QVariantMap col8; col8.insert("name","region"); col8.insert("display",ttr("Region")); col8.insert("resizeMode","Interactive"); col8.insert("size",120); col8.insert("displayRole","$region"); headeritems.append(col8); QVariantMap col10; col10.insert("name","remark"); col10.insert("display",ttr("Remark")); col10.insert("resizeMode","Stretch"); col10.insert("displayRole","$remark"); headeritems.append(col10); QStringList dbdatalist; dbdatalist << "id" << "code" << "short_name" << "fullname" << "fullname_en" << "status" << "category" << "region" << "remark"; QStringList table_key_list = dbdatalist; table_key_list.append("source"); dialog->setPrimaryKey("fullname"); dialog->setDataKeyList(table_key_list); dialog->setHeaderItem(headeritems); dialog->searchEntry()->setPlaceholderText(ttr("Search")); dialog->searchEntry()->setSearchDelayTime(1); dialog->setSearchKeys(QStringList() << "code" << "short_name" << "fullname"); dialog->tableView()->verticalHeader()->setVisible(false); dialog->setSearchText(""); dialog->setSelectionMode(QAbstractItemView::SingleSelection); QVariantList table_data; QVariantList supplier_db_data,customer_db_data; if (pSource.compare("customer") == 0) { customer_db_data = getAllCustomerList(); if (!customer_db_data.isEmpty()) { for (QVariant row: customer_db_data){ QVariantMap rowmap = row.toMap(); if (!rowmap.value("status").toString().isEmpty()) { rowmap.insert("status",TOPENM->enumList("pub-customer-status")->itemText(rowmap.value("status").toString())); } rowmap.insert("source",ttr("Customer")); table_data.append(QVariant(rowmap)); } } } else if(pSource.compare("supplier") == 0) { supplier_db_data = getAllSupplierList(); if (!supplier_db_data.isEmpty()) { for (QVariant row: supplier_db_data) { QVariantMap rowmap = row.toMap(); if (!rowmap.value("status").toString().isEmpty()) { rowmap.insert("status",TOPENM->enumList("pub-supplier-status")->itemText(rowmap.value("status").toString())); } rowmap.insert("source",ttr("Supplier")); table_data.append(QVariant(rowmap)); } } } dialog->loadData(table_data); QVariantList selLst = dialog->run(); if (selLst.isEmpty()) { return; } QVariantMap map = selLst.first().toMap(); if (!map.value("fullname").toString().isEmpty()) { mUiLoader->setValue("company",QScriptValue(map.value("fullname").toString())); } } void SysContact::moveRowsUpOrDown(bool iIsUp) { if (mRelatedTableView != nullptr) { if (iIsUp) { mRelatedTableView->moveSelectedRowsUp(); } else { mRelatedTableView->moveSelectedRowsDown(); } } } void SysContact::removeSelectedRows() { if (mRelatedTableView != nullptr) { mRelatedTableView->removeSelectedRows(); } } QStringList SysContact::getEditableComboBoxList(const QString &iEnumName) { QStringList res; for (QVariant enumItem: TOPENM->enumList(iEnumName)->toComboList()) { QVariantMap enumMap = enumItem.toMap(); res << enumMap.value("text").toString(); } return res; } void SysContact::uidChangeEvent(const QString &iUidStr) { if (iUidStr.toInt() == 0) { setTitle(ttr("New Contact")); clearData(); } else { t::loading(this); QVariantMap argMap; argMap.insert("id",this->uid()); QVariant data = doThreadWork(new SysContactThread(this), "LOAD_DATA",argMap); unloading(); TDataResponse dataRes(data.toMap()); if (dataRes.hasError()) { alertError(ttr("Load data failed!"), dataRes.errText()); } else { QVariantMap dataMap = dataRes.data().toMap(); clearData(); setData(dataMap); alertOk(ttr("Data loaded")); } } setDataModified(false); } void SysContact::resizeEvent(QResizeEvent *iEvent) { QSize size = iEvent->size(); if (size.width() > this->perfectSize().width()) { mBodyLayout->setMargin(0); mUiLoader->setProperty("SS_BORDER", 1); mUiLoader->setStyleSheet(".Q{}"); } else { mBodyLayout->setMargin(0); mUiLoader->setProperty("SS_BORDER", 0); mUiLoader->setStyleSheet(".Q{}"); } } void SysContact::onDoSearch(const QString &iSearchStr, const QVariant &iOptions) { if (mRelatedTableView) { QRegExp rx(iSearchStr); rx.setPatternSyntax(QRegExp::Wildcard); rx.setCaseSensitivity(Qt::CaseInsensitive); QStringList searchlist = iOptions.toStringList(); if (searchlist.isEmpty()) { searchlist = mSearchKey; } mRelatedTableView->findRows(rx,searchlist,1); alertOk(ttr("Data loaded")); } } QVariantList SysContact::getTransferedTableData(const QVariantList &iDataLst) { QVariantList dataLst; //枚举转换 TEnumList *enumPeopleSex = TOPENM->enumList("sys-sex"); TEnumList *enumContactStatus = TOPENM->enumList("sys-contact-status"); TEnumList *enumContactDepartment = TOPENM->enumList("sys-contact-department"); TEnumList *enumContactTitle = TOPENM->enumList("sys-contact-title"); TEnumList *enumContactCategory = TOPENM->enumList("sys-contact-category"); TEnumList *enumContactSource = TOPENM->enumList("sys-contact-source"); for (QVariant row: iDataLst) { QVariantMap rowMap = row.toMap(); if (enumPeopleSex != nullptr) { QString sexStr = rowMap.value("sex").toString(); rowMap.insert("sex.icon", enumPeopleSex->itemIcon(sexStr)); rowMap.insert("sex.text", enumPeopleSex->itemText(sexStr)); } if (enumContactSource != nullptr) { QString sourceStr = rowMap.value("source").toString(); rowMap.insert("source", enumContactSource->itemText(sourceStr)); } if (enumContactStatus != nullptr) { QString statusStr = rowMap.value("status").toString(); rowMap.insert("status", enumContactStatus->itemText(statusStr)); } if (enumContactDepartment != nullptr) { QString departmentStr = rowMap.value("department").toString(); rowMap.insert("department", enumContactDepartment->itemText(departmentStr)); } if (enumContactTitle != nullptr) { QString titleStr = rowMap.value("title").toString(); rowMap.insert("title", enumContactTitle->itemText(titleStr)); } if (enumContactCategory != nullptr) { QString categoryStr = rowMap.value("category").toString(); rowMap.insert("category", enumContactCategory->itemText(categoryStr)); } dataLst.append(rowMap); } return dataLst; } void SysContact::initSearchEntry() { if (TSearchEntry *searchentry = qobject_cast<TSearchEntry *>(mUiLoader->getObject("search"))) { QVariantList searchOptionLst; QVariantMap option; option.insert("name", "relation"); option.insert("text", ttr("Relation")); searchOptionLst.append(option); QVariantMap option2; option2.insert("name", "name"); option2.insert("text", ttr("Name")); searchOptionLst.append(option2); searchentry->setPlaceholderText(ttr("Search %1")); searchentry->setSearchDelayTime(1); searchentry->setOptionList(searchOptionLst); mSearchKey << "relation" << "name"; connect(searchentry, SIGNAL(search(QString,QVariant)), this, SLOT(onDoSearch(QString,QVariant))); } } void SysContact::initUiItemMode() { QVariantMap item_map = config("itemMode").toMap(); QStringList keyLst = item_map.uniqueKeys(); for (QString key: keyLst) { if (item_map.value(key).toString().compare("hide", Qt::CaseInsensitive) == 0) { mUiLoader->setState(key, "HIDE"); } else if(item_map.value(key).toString().compare("disable", Qt::CaseInsensitive) == 0) { mUiLoader->setState(key, "DISABLE"); } else if(item_map.value(key).toString().compare("show", Qt::CaseInsensitive) == 0) { mUiLoader->setState(key, "SHOW"); } } } QVariantList SysContact::getAllCustomerList() { TSqlSelectorV2 selector; selector.setTable("pub_customer"); selector.fieldRef() << "id" << "code" << "short_name" << "fullname" << "fullname_en" << "status" << "category" << "region" << "remark"; selector.addOrder("id",Qt::AscendingOrder); QVariant data = doThreadWork(new TopClassSqlThread(this), TOPSQLTHREAD_SELECT_ARRAYMAP, QVariant::fromValue(selector)); TDataResponse customerdataRes(data.toMap()); if (customerdataRes.hasError()) { TLOG_ERROR(customerdataRes.errText()); return QVariantList(); } QVariantList customerData = customerdataRes.data().toList(); return customerData; } QVariantList SysContact::getAllSupplierList() { TSqlSelectorV2 selector; selector.setTable("pub_supplier"); selector.fieldRef() << "id" << "code" << "short_name" << "fullname" << "fullname_en" << "status" << "category" << "region" << "remark"; selector.addOrder("id",Qt::AscendingOrder); QVariant data = doThreadWork(new TopClassSqlThread(this), TOPSQLTHREAD_SELECT_ARRAYMAP, QVariant::fromValue(selector)); TDataResponse supplierdataRes(data.toMap()); if (supplierdataRes.hasError()) { TLOG_ERROR(supplierdataRes.errText()); return QVariantList(); } QVariantList supplierData = supplierdataRes.data().toList(); return supplierData; } QVariantList SysContact::getAllContactList(QVariantList iExistIdLst) { TSqlSelectorV2 selector; selector.setTable("pub_contacts"); selector.fieldRef() << "id" << "name" << "status" << "sex" << "source" << "source_serial" << "company" << "department" << "title" << "remark"; selector.addWhere("id",iExistIdLst,"!="); selector.addOrder("id",Qt::DescendingOrder); QVariant data = doThreadWork(new TopClassSqlThread(this), TOPSQLTHREAD_SELECT_ARRAYMAP, QVariant::fromValue(selector)); TDataResponse contactdataRes(data.toMap()); if (contactdataRes.hasError()) { TLOG_ERROR(contactdataRes.errText()); return QVariantList(); } QVariantList contactData = contactdataRes.data().toList(); return contactData; } QString SysContact::getLogRemarkInfo(QVariantMap iOldData, QVariantMap iNewData) { QStringList newKeyLst = iNewData.uniqueKeys(); QStringList lst; for (QString keyEle: newKeyLst) { if(iNewData.value(keyEle).toString() != iOldData.value(keyEle).toString()) { QString str = QString("%1 : %2 -> %3").arg(keyEle).arg(iOldData.value(keyEle).toString()).arg(iNewData.value(keyEle).toString()); lst.append(str); } } return lst.join(" ; "); }