update new code

master
嘉祥 詹 2024-03-17 02:36:39 +08:00
parent 572e7ec1b7
commit 661bb705ae
11 changed files with 404 additions and 15 deletions

View File

@ -56,6 +56,188 @@ namespace Journeys_WantHome.Controllers
this._httpContextAccessor = httpContextAccessor;
}
[Route("kolProjectAddEditDelGet")]
public ActionResult KolProjectAddEditDelGet(IFormCollection obj) {
kolProjectResult ret = new kolProjectResult();
authToken token = new authToken(this._httpContextAccessor);
if (token.user_isLogin == false)
{
HttpContext.Response.Cookies.Delete("token_key");
ret.ret = "no";
ret.err_code = "99999";
ret.message = "非登入狀態!";
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
string method = obj["method"].ToString();
string project_uid = obj["project_uid"].ToString();
string kol_uid = obj["kol_uid"].ToString();
string kolProject_uid = obj["kolProject_uid"].ToString();
string cooperateTypeStr = obj["cooperateTypeStr"].ToString().TrimEnd(',');
string kolProjectPriceArrayJson = obj["kolProjectPriceArrayJson"].ToString().TrimEnd(',');
string kolProject_isExec = obj["kolProject_isExec"].ToString();
string kolProject_noExecReason = obj["kolProject_noExecReason"].ToString();
string kolProjectEvaluateStr = obj["kolProjectEvaluateStr"].ToString().TrimEnd(',');
string kolProjectLinkArrayJson = obj["kolProjectLinkArrayJson"].ToString().TrimEnd(',');
string kolProjectImageArrayJson = obj["kolProjectImageArrayJson"].ToString().TrimEnd(',');
string kolProject_memo = obj["kolProject_memo"].ToString();
if (method == "add") {
kolProject_uid = "kp_" + GlobalClass.CreateRandomCode(16);
kolProject kp = new kolProject();
kp.kolProject_uid = kolProject_uid;
kp.kol_uid = kol_uid;
kp.project_uid = project_uid;
kp.kolProject_isExec = kolProject_isExec;
kp.kolProject_noExecReason = kolProject_noExecReason;
kp.kolProject_memo = kolProject_memo;
kp.user_uid = token.user_id;
kp.user_name = token.user_name;
kp.kolProject_createdate = DateTime.Now;
kp.kolProject_modifydate = DateTime.Now;
string[] cooperateTypeArr = cooperateTypeStr.Split(',');
string[] kolProjectEvaluateArr = kolProjectEvaluateStr.Split(',');
List<kolCooperateType> kolCooperateTypes = new List<kolCooperateType>();
List<kolProjectEvaluate> kolProjectEvaluates = new List<kolProjectEvaluate>();
foreach (string cooperate in cooperateTypeArr)
{
kolCooperateType kct = new kolCooperateType();
kct.kolCooperateType_uid = "kct_" + GlobalClass.CreateRandomCode(16);
kct.project_uid = project_uid;
kct.kol_uid = kol_uid;
kct.option_uid = "cooperateType";
kct.optionItem_uid = cooperate;
kct.kolProject_uid = kolProject_uid;
kolCooperateTypes.Add(kct);
}
foreach (string evaluate in kolProjectEvaluateArr)
{
if (evaluate != "") {
kolProjectEvaluate kpe = new kolProjectEvaluate();
kpe.kol_uid = kol_uid;
kpe.project_uid = project_uid;
kpe.kolProject_uid = kolProject_uid;
kpe.kolProjectEvaluate_text = evaluate;
kolProjectEvaluates.Add(kpe);
}
}
dynamic kolProjectPriceJsonObj;
try
{
kolProjectPriceJsonObj = JsonConvert.DeserializeObject(kolProjectPriceArrayJson);
}
catch (Exception ex)
{
ret.ret = "no";
ret.err_code = "0003";
ret.message = "kolProjectPrice json error" + ex.Message;
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
List<kolProjectPrice> kolProjectPrices = new List<kolProjectPrice>();
foreach (dynamic item in kolProjectPriceJsonObj) {
kolProjectPrice kpp = new kolProjectPrice();
kpp.kolProjectPrice_uid = "kpp_" + GlobalClass.CreateRandomCode(16);
kpp.kolProject_uid = kolProject_uid;
kpp.optionItem_uid = item.optionItem_uid;
kpp.mediaItem_uid = item.mediaItem_uid;
kpp.kolProjectPrice_other = item.kolProjectPrice_other;
kpp.kolProjectPrice_num = item.kolProjectPrice_num;
kpp.kolProjectPrice_cost = item.kolProjectPrice_cost;
kpp.kolProjectPrice_date = item.kolProjectPrice_date;
kpp.kolProjectPrice_createdate = DateTime.Now;
kpp.kolProjectPrice_modifydate = DateTime.Now;
kolProjectPrices.Add(kpp);
}
dynamic kolProjectLinkJsonObj;
try
{
kolProjectLinkJsonObj = JsonConvert.DeserializeObject(kolProjectLinkArrayJson);
}
catch (Exception ex)
{
ret.ret = "no";
ret.err_code = "0003";
ret.message = "kolProjectPrice json error" + ex.Message;
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
List<kolProjectLink> kolProjectLinks = new List<kolProjectLink>();
foreach (dynamic item in kolProjectLinkJsonObj) {
kolProjectLink kpl = new kolProjectLink();
kpl.kolProjectLink_uid = "kpl_" + GlobalClass.CreateRandomCode(16);
kpl.kolProject_uid = kolProject_uid;
kpl.kolProjectLink_url = item.kolProjectLink_url;
kpl.kolProjectLink_text = item.kolProjectLink_text;
kpl.kolProjectLink_createdate = DateTime.Now;
kolProjectLinks.Add(kpl);
}
dynamic kolProjectImageJsonObj;
try
{
kolProjectImageJsonObj = JsonConvert.DeserializeObject(kolProjectImageArrayJson);
}
catch (Exception ex)
{
ret.ret = "no";
ret.err_code = "0003";
ret.message = "kolProjectImage json error" + ex.Message;
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
List<kolProjectImage> kolProjectImages = new List<kolProjectImage>();
foreach (dynamic item in kolProjectImageJsonObj) {
kolProjectImage kpi = new kolProjectImage();
kpi.kolProjectImage_uid = "kpi_" + GlobalClass.CreateRandomCode(16);
kpi.kolProjectImage_photo = item.kolProjectImage_photo;
kpi.kolProjectImage_desc = item.kolProjectImage_desc;
kpi.kolProject_uid = kolProject_uid;
kpi.kolProjectImage_createdate = DateTime.Now;
kolProjectImages.Add(kpi);
}
conn.Insert(kp);
conn.Insert(kolCooperateTypes);
conn.Insert(kolProjectEvaluates);
conn.Insert(kolProjectPrices);
conn.Insert(kolProjectLinks);
conn.Insert(kolProjectImages);
ret.data.kolProject = kp;
ret.data.kolProjectEvaluates = kolProjectEvaluates;
ret.data.kolProjectPrices = kolProjectPrices;
ret.data.kolProjectLinks = kolProjectLinks;
ret.data.kolProjectImages = kolProjectImages;
ret.data.kolCooperateTypes = kolCooperateTypes;
ret.data.project = conn.QueryFirst<project>("select * from project where project_uid = @project_uid ", new { project_uid = kp.project_uid });
ret.ret = "yes";
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
return Content(JsonConvert.SerializeObject(ret), "application/json;charset=utf-8");
}
[Route("mediaSpecList")]
public ActionResult MediaSpecList(IFormCollection obj) {
mediaSpecListResult ret = new mediaSpecListResult();
@ -1022,6 +1204,15 @@ namespace Journeys_WantHome.Controllers
}
public class kolProjectResult
{
public string ret { get; set; } = "no";
public string err_code { get; set; } = "0000";
public string message { get; set; } = "";
public kolProjectDetail data { get; set; } = new kolProjectDetail();
}
public class mediaSpecListResult {
public string ret { get; set; } = "no";
public string err_code { get; set; } = "0000";

View File

@ -8,6 +8,19 @@ using Newtonsoft.Json.Linq;
public class DbTableClass
{
[Table("kolProjectEvaluate")]
public class kolProjectEvaluate
{
[JsonIgnore]
[Key]
public int kolProjectEvaluate_sn { get; set; }
public string kol_uid { get; set; } = "";
public string project_uid { get; set; } = "";
public string kolProject_uid { get; set; } = "";
public string kolProjectEvaluate_text { get; set; } = "";
}
[Table("kolProjectPrice")]
public class kolProjectPrice
{
@ -249,6 +262,8 @@ public class DbTableClass
public string project_uid { get; set; } = "";
public string kolProject_uid { get; set; } = "";
public string option_uid { get; set; } = "";
public string optionItem_uid { get; set; } = "";

View File

@ -0,0 +1,37 @@
using Dapper;
using Dapper.Contrib.Extensions;
using NPOI.SS.Formula.Functions;
using System.Data.SqlClient;
using static DbTableClass;
public class kolProjectDetail
{
DbConn dbConn = new DbConn();
SqlConnection conn = new SqlConnection(GlobalClass.appsettings("ConnectionStrings:SQLConnectionString"));
public kolProject kolProject = new kolProject();
public List<kolProjectImage> kolProjectImages = new List<kolProjectImage>();
public List<kolProjectLink> kolProjectLinks = new List<kolProjectLink>();
public List<kolProjectPrice> kolProjectPrices = new List<kolProjectPrice>();
public List<kolProjectEvaluate> kolProjectEvaluates = new List<kolProjectEvaluate>();
public List<kolCooperateType> kolCooperateTypes = new List<kolCooperateType>();
public project project = new project();
public kolProjectDetail()
{
}
public kolProjectDetail(string kolProject_uid) {
kolProject = conn.QueryFirst("select * from kolProject where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid });
kolProjectImages = conn.Query<kolProjectImage>("select * from kolProjectImages where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList();
kolProjectLinks = conn.Query<kolProjectLink>("select * from kolProjectLink where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList();
kolProjectPrices = conn.Query<kolProjectPrice>("select * from kolProjectPrice where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList();
kolProjectEvaluates = conn.Query<kolProjectEvaluate>("select * from kolProjectEvaluate where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList();
kolCooperateTypes = conn.Query<kolCooperateType>("select * from kolCooperateType where kolProject_uid = @kolProject_uid", new { kolProject_uid = kolProject_uid }).ToList();
project = conn.QueryFirst<project>("select * from project where project_uid = @project_uid ", new { project_uid = kolProject.project_uid });
}
}

View File

@ -315,8 +315,8 @@
</div><!-- /.modal-header -->
<!-- .modal-body -->
<div class="modal-body">
<input type="hidden" id="method" />
<input type="hidden" id="kol_uid" />
<input type="hidden" id="kolProject_kol_uid" />
<!-- .page-section -->
<div class="page-section">
<button type="button" id="kolProjectNewBtn" class="btn btn-primary btn-floated position-absolute" title="Add new client"><i class="fa fa-plus"></i></button>
@ -325,7 +325,7 @@
<!-- .card-body -->
<div class="card-body">
<!-- .table -->
<table id="dt-responsive" class="table dt-responsive nowrap w-100">
<table id="dt-responsive-kolProject" class="table dt-responsive nowrap w-100">
<thead>
<tr>
<th> 專案名稱 </th>
@ -350,6 +350,8 @@
</div><!-- /.modal-dialog -->
</div>
</form><!-- /.modal -->
<!-- .modal -->
<form id="clientNewKolProjectForm" name="clientNewKolProjectForm">
<div class="modal fade" id="clientNewKolProjectModal" tabindex="-1" role="dialog" aria-labelledby="clientNewKolProjectLabel" data-backdrop="static"
@ -446,13 +448,13 @@
<div class="form-group">
<h2 class="card-title">確認合作</h2>
<div class="custom-control custom-radio mb-1">
<input type="radio" class="custom-control-input" name="rdGroup3" id="rd7"> <label class="custom-control-label" for="rd7">是</label>
<input type="radio" class="custom-control-input" name="kolProject_isExec" id="rd7" value="Y"> <label class="custom-control-label" for="rd7">是</label>
</div>
<div class="custom-control custom-radio mb-1">
<input type="radio" class="custom-control-input" name="rdGroup3" id="rd8" checked> <label class="custom-control-label" for="rd8">否</label>
<input type="radio" class="custom-control-input" name="kolProject_isExec" id="rd8" value="N" checked> <label class="custom-control-label" for="rd8">否</label>
<div class="custom-control-hint mt-1">
<input type="text" class="form-control" placeholder="原因(選填)">
<input id="kolProject_noExecReason" type="text" class="form-control" placeholder="原因(選填)">
</div>
</div>
</div><!-- /.form-group -->
@ -462,25 +464,25 @@
<div class="form-group">
<h2 class="card-title">評價</h2>
<div class="custom-control custom-control-inline custom-checkbox">
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb1"> <label class="custom-control-label" for="ckb1">好溝通</label>
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb1" value="好溝通"> <label class="custom-control-label" for="ckb1">好溝通</label>
</div>
<div class="custom-control custom-control-inline custom-checkbox">
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb2"> <label class="custom-control-label" for="ckb2">準時</label>
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb2" value="準時"> <label class="custom-control-label" for="ckb2">準時</label>
</div>
<div class="custom-control custom-control-inline custom-checkbox">
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb3"> <label class="custom-control-label" for="ckb3">品質好</label>
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb3" value="品質好"> <label class="custom-control-label" for="ckb3">品質好</label>
</div>
<div class="custom-control custom-control-inline custom-checkbox">
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb4"> <label class="custom-control-label" for="ckb4">CP質高</label>
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb4" value="CP質高"> <label class="custom-control-label" for="ckb4">CP質高</label>
</div>
<div class="custom-control custom-control-inline custom-checkbox">
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb5"> <label class="custom-control-label" for="ckb5">有雷</label>
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb5" value="有雷"> <label class="custom-control-label" for="ckb5">有雷</label>
</div>
<div class="custom-control custom-control-inline custom-checkbox">
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb6"> <label class="custom-control-label" for="ckb6">有大雷</label>
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb6" value="有大雷"> <label class="custom-control-label" for="ckb6">有大雷</label>
</div>
<div class="custom-control custom-control-inline custom-checkbox">
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb7"> <label class="custom-control-label" for="ckb7">有遲交狀況</label>
<input type="checkbox" name="quility[]" class="custom-control-input" id="ckb7" value="有遲交狀況"> <label class="custom-control-label" for="ckb7">有遲交狀況</label>
</div>
</div><!-- /.form-group -->
<div class="card-footer">&nbsp;</div>
@ -552,11 +554,13 @@
</div><!-- /.modal-body -->
<!-- .modal-footer -->
<div class="modal-footer">
<button type="button" id="kolSaveBtn" class="btn btn-primary">儲存</button> <button id="closeBtn" type="button" class="btn btn-light" data-dismiss="modal">關閉</button>
<button type="button" id="kolProjectSaveBtn" class="btn btn-primary">儲存</button> <button id="closeBtn" type="button" class="btn btn-light" data-dismiss="modal">關閉</button>
</div><!-- /.modal-footer -->
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>
</<div>
</div>
</form><!-- /.modal -->
<!-- .modal -->
<form id="clientKolProjectMediaPriceEditForm" name="clientKolProjectMediaPriceEditForm">

View File

@ -131,6 +131,7 @@ function clearChildren(element) {
switch (e.type) {
case "radio":
case "checkbox": break;
case "hidden": break;
case "button":
case "submit":
case "text": e.value = ''; break;

View File

@ -7,6 +7,10 @@ var mainPos;
var specTr;
var linkTr;
var photoTr;
var kolProjectTable;
var kolProjectRowID;
var kolProjectPos;
$(document).ready(function () {
delMedia = '';
loadTagsInput();
@ -273,6 +277,139 @@ $(document).ready(function () {
}
});
//專案合作狀況儲存
$('#kolProjectSaveBtn').on('click', function () {
var project_year = $('#project_year').val();
var project_month = $('#project_month').val();
var project_uid = $('#project_select').val();
var kol_uid = $('#kolProject_kol_uid').val();
var kolProject_uid = $('#kolProject_uid').val();
var method = $('#kolProject_method').val();
var cooperateTypeStr = "";
var kolProjectPriceArray = [];
var kolProject_isExec = $("input[type='radio'][name='kolProject_isExec']:checked").val();
var kolProject_noExecReason = '';
var kolProjectEvaluateStr = '';
var kolProjectLinkArray = [];
var kolProjectImageArray = [];
var kolProject_memo = $('#kolProject_memo').val();
if (kolProject_isExec == 'N') {
kolProject_noExecReason = $('#kolProject_noExecReason').val();
}
$.each($('input[name="cooperateType[]"]:checked'), function () {
cooperateTypeStr = cooperateTypeStr + $(this).val() + ",";
});
$('#price_table tbody tr').each(function () {
var item = {
optionItem_uid: $(this).find('td').eq(6).text().trim(),
mediaItem_uid: $(this).find('td').eq(7).text().trim(),
kolProjectPrice_other: $(this).find('td').eq(5).text().trim(),
kolProjectPrice_num: $(this).find('td').eq(2).text().trim(),
kolProjectPrice_cost: RemoveComma($(this).find('td').eq(3).text().trim()),
kolProjectPrice_date: $(this).find('td').eq(4).text().trim()
}
kolProjectPriceArray.push(item);
});
$.each($('input[name="quility[]"]:checked'), function () {
kolProjectEvaluateStr = kolProjectEvaluateStr + $(this).val() + ",";
});
$('#link_table tbody tr').each(function () {
var item = {
kolProjectLink_url: $(this).find('td').eq(1).text().trim(),
kolProjectLink_text: $(this).find('td').eq(2).text().trim()
}
kolProjectLinkArray.push(item);
});
$('#cut_table tbody tr').each(function () {
var tmpphoto_path = $(this).find('td').eq(0).find('img').prop('src').trim();
tmpphoto_path = tmpphoto_path.replace(origin, '');
var item = {
kolProjectImage_photo: tmpphoto_path,
kolProjectImage_desc: $(this).find('td').eq(1).text().trim()
}
kolProjectImageArray.push(item);
});
var kolProjectPriceArrayJson = JSON.stringify(kolProjectPriceArray);
var kolProjectLinkArrayJson = JSON.stringify(kolProjectLinkArray);
var kolProjectImageArrayJson = JSON.stringify(kolProjectImageArray);
var err_msg = "";
if (project_uid == "") {
err_msg += "請選擇合作的專案!\n";
}
if (cooperateTypeStr == "") {
err_msg += "請勾選合作刑式!\n";
}
if (kolProjectPriceArray.length == 0) {
err_msg += "請填寫至少一項報價!\n";
}
if (err_msg != "") {
alert(err_msg);
return;
}
var formData = {
method: method,
project_uid: project_uid,
kol_uid: kol_uid,
kolProject_uid: kolProject_uid,
cooperateTypeStr: cooperateTypeStr,
kolProjectPriceArrayJson: kolProjectPriceArrayJson,
kolProject_isExec: kolProject_isExec,
kolProject_noExecReason: kolProject_noExecReason,
kolProjectEvaluateStr: kolProjectEvaluateStr,
kolProjectLinkArrayJson: kolProjectLinkArrayJson,
kolProjectImageArrayJson: kolProjectImageArrayJson,
kolProject_memo: kolProject_memo
}
$.ajax({
url: "/Api/KolProjectAddEditDelGet",
type: "post",
data: formData,
success: function (data, textStatus, jqXHR) {
var obj = data.kol;
if (data.ret == "yes") {
if (method == "add") {
kolProjectTable.fnAddData(obj);
}
if (method == "edit") {
kolProjectTable.fnUpdate(obj, mainPos);
}
$('#clientNewKolProjectModal').modal('toggle');
} else {
alert(data.message);
if (data.err_code == "99999") {
location.href = "/Root/Login";
}
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert('網路或伺服器發生錯誤,請稍後重試!');
}
});
});
//截圖儲存
$('#clientCutPhotoSaveBtn').on('click', function () {
var method = $('#photo_method').val();
@ -953,7 +1090,7 @@ function buttonClick2(obj) {
mainPos = mainTable.fnGetPosition($('#' + uid)[0]);
if (type == "case") {
//$('#kol_uid').val(uid);
$('#kolProject_kol_uid').val(uid);
$('#clientProjectModal').modal('toggle');
}
@ -1422,6 +1559,10 @@ function clearKolProjectTable() {
$.each(trList, function (index, item) {
$(item).remove();
});
$("input[type=checkbox]").each(function (index, checkbox) {
checkbox.checked = false;
});
}
function initSubPhotoUpload() {

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB